From 88c2b60251e09dd81640d5517a9c080bcfd6e1d4 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Thu, 7 Apr 2016 16:02:13 -0400 Subject: [PATCH 01/13] Replace react globals with calls to require --- src/js/orb.ui.pgridwidget.js | 27 ++++++++-------- src/js/react/orb.react.Chart.jsx | 10 +++--- src/js/react/orb.react.Dialog.jsx | 10 +++--- src/js/react/orb.react.DragManager.jsx | 18 +++++------ src/js/react/orb.react.DropIndicator.jsx | 4 +-- src/js/react/orb.react.DropTarget.jsx | 10 +++--- src/js/react/orb.react.DropTargetVertical.jsx | 8 ++--- src/js/react/orb.react.Dropdown.jsx | 4 +-- src/js/react/orb.react.FilterPanel.jsx | 32 +++++++++---------- src/js/react/orb.react.Grid.jsx | 6 ++-- src/js/react/orb.react.PivotButton.jsx | 18 +++++------ src/js/react/orb.react.PivotCell.jsx | 14 ++++---- src/js/react/orb.react.PivotChart.jsx | 22 ++++++------- src/js/react/orb.react.PivotRow.jsx | 10 +++--- .../orb.react.PivotTable.ColumnButtons.jsx | 4 +-- .../orb.react.PivotTable.ColumnHeaders.jsx | 8 ++--- .../react/orb.react.PivotTable.DataCells.jsx | 6 ++-- .../react/orb.react.PivotTable.RowButtons.jsx | 4 +-- .../react/orb.react.PivotTable.RowHeaders.jsx | 10 +++--- .../orb.react.PivotTable.SizingManager.jsx | 12 +++---- .../orb.react.PivotTable.UpperButtons.jsx | 6 ++-- src/js/react/orb.react.PivotTable.jsx | 26 +++++++-------- src/js/react/orb.react.ScrollBars.jsx | 16 +++++----- src/js/react/orb.react.Toolbar.jsx | 22 ++++++------- 24 files changed, 154 insertions(+), 153 deletions(-) diff --git a/src/js/orb.ui.pgridwidget.js b/src/js/orb.ui.pgridwidget.js index 631ca5c..3c51213 100644 --- a/src/js/orb.ui.pgridwidget.js +++ b/src/js/orb.ui.pgridwidget.js @@ -5,10 +5,11 @@ 'use strict'; -/* global module, require, React, window */ +/* global module, require, window */ /*jshint eqnull: true*/ -var ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var ReactDOM = require('react-dom'), + React = require('react'), axe = require('./orb.axe'), pgrid = require('./orb.pgrid'), uiheaders = require('./orb.ui.header'), @@ -94,12 +95,12 @@ module.exports = function(config) { height: null } }; - + this.expandRow = function(cell) { cell.expand(); this.render(); }; - + this.collapseRow = function(cell) { cell.subtotalHeader.collapse(); this.render(); @@ -131,7 +132,7 @@ module.exports = function(config) { if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) { self.render(); - } + } }; this.toggleSubtotals = function(axetype) { @@ -156,7 +157,7 @@ module.exports = function(config) { this.render = function(element) { renderElement = element || renderElement; - if(renderElement) { + if(renderElement) { var pivotTableFactory = React.createFactory( self.pgrid.config.chartMode.enabled ? PivotChart : @@ -195,7 +196,7 @@ module.exports = function(config) { title: title, comp: { type: Grid, - props: { + props: { headers: self.pgrid.config.getDataSourceFieldCaptions(), data: data, theme: self.pgrid.config.theme @@ -206,13 +207,13 @@ module.exports = function(config) { }); } }; - + function init() { self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender); self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender); self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender); - - buildUi(); + + buildUi(); } function buildUi() { @@ -224,7 +225,7 @@ module.exports = function(config) { var rowsHeaders = self.rows.headers; var columnsLeafHeaders = self.columns.leafsHeaders; - // set control layout infos + // set control layout infos self.layout = { rowHeaders: { width: (self.pgrid.rows.fields.length || 1) + @@ -267,11 +268,11 @@ module.exports = function(config) { } self.dataRows = dataRows; } - + function buildUiAndRender() { buildUi(); self.render(); } - + init(); }; diff --git a/src/js/react/orb.react.Chart.jsx b/src/js/react/orb.react.Chart.jsx index 4e1acf5..83f3f0d 100644 --- a/src/js/react/orb.react.Chart.jsx +++ b/src/js/react/orb.react.Chart.jsx @@ -2,8 +2,8 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM; +var React = require('react'), + ReactDOM = require('react-dom'); module.exports = React.createClass({ getInitialState: function() { @@ -19,8 +19,8 @@ module.exports = React.createClass({ drawChart: function() { if(this.canRender()) { var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData(); - var data = new google.visualization.DataTable(); - + var data = new google.visualization.DataTable(); + data.addColumn('string', chartData.hAxisLabel); for(var ri=0; ri < chartData.colNames.length; ri++) { data.addColumn('number', chartData.colNames[ri]); @@ -59,4 +59,4 @@ module.exports = React.createClass({ } return null; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.Dialog.jsx b/src/js/react/orb.react.Dialog.jsx index f6bab0d..31263f1 100644 --- a/src/js/react/orb.react.Dialog.jsx +++ b/src/js/react/orb.react.Dialog.jsx @@ -2,14 +2,14 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), utils = require('../orb.utils'); function createOverlay() { var overlayElement = document.createElement('div'); overlayElement.className = 'orb-overlay orb-overlay-hidden'; - document.body.appendChild(overlayElement); + document.body.appendChild(overlayElement); return overlayElement; } @@ -64,7 +64,7 @@ var Dialog = module.exports = React.createClass({ var comp = React.createElement(this.props.comp.type, this.props.comp.props); var classes = this.props.theme.getDialogClasses(); - return
+ return
{ this.props.title }
@@ -74,4 +74,4 @@ var Dialog = module.exports = React.createClass({
; } } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.DragManager.jsx b/src/js/react/orb.react.DragManager.jsx index ccabc27..1a32895 100644 --- a/src/js/react/orb.react.DragManager.jsx +++ b/src/js/react/orb.react.DragManager.jsx @@ -3,13 +3,13 @@ 'use strict'; -var ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var ReactDOM = require('react-dom'), utils = require('../orb.utils'); module.exports = (function() { - + var _pivotComp = null; - + var _currDragElement = null; var _currDropTarget = null; var _currDropIndicator = null; @@ -19,9 +19,9 @@ module.exports = (function() { var _dropIndicators = []; function doElementsOverlap(elem1Rect, elem2Rect) { - return !(elem1Rect.right < elem2Rect.left || - elem1Rect.left > elem2Rect.right || - elem1Rect.bottom < elem2Rect.top || + return !(elem1Rect.right < elem2Rect.left || + elem1Rect.left > elem2Rect.right || + elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom); } @@ -89,7 +89,7 @@ module.exports = (function() { _pivotComp = pivotComp; }, setDragElement: function(elem) { - + var prevDragElement = _currDragElement; _currDragElement = elem; if(_currDragElement != prevDragElement) { @@ -176,7 +176,7 @@ module.exports = (function() { indicator.component.props.position === _currDragElement.props.position; var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype; - if(targetIndicator && !elementOwnIndicator) { + if(targetIndicator && !elementOwnIndicator) { var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect(); var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect); if(isOverlap) { @@ -201,4 +201,4 @@ module.exports = (function() { } } }; -}()); \ No newline at end of file +}()); diff --git a/src/js/react/orb.react.DropIndicator.jsx b/src/js/react/orb.react.DropIndicator.jsx index 2d60ff3..42a5e9c 100644 --- a/src/js/react/orb.react.DropIndicator.jsx +++ b/src/js/react/orb.react.DropIndicator.jsx @@ -3,7 +3,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), DragManager = require('./orb.react.DragManager.jsx'); module.exports = React.createClass({ @@ -53,4 +53,4 @@ module.exports = React.createClass({ return
; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.DropTarget.jsx b/src/js/react/orb.react.DropTarget.jsx index cc853d2..b8aa6b3 100644 --- a/src/js/react/orb.react.DropTarget.jsx +++ b/src/js/react/orb.react.DropTarget.jsx @@ -3,9 +3,9 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), DragManager = require('./orb.react.DragManager.jsx'), - DropIndicator = require('./orb.react.DropIndicator.jsx'), + DropIndicator = require('./orb.react.DropIndicator.jsx'), axe = require('../orb.axe'), dtid = 0; @@ -40,10 +40,10 @@ module.exports = React.createClass({ callback(); } }, - render: function() { + render: function() { var self = this; - var buttons = this.props.buttons.map(function(button, index) { + var buttons = this.props.buttons.map(function(button, index) { if(index < self.props.buttons.length - 1) { return [ , @@ -70,4 +70,4 @@ module.exports = React.createClass({
; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.DropTargetVertical.jsx b/src/js/react/orb.react.DropTargetVertical.jsx index 67c9d69..43ee12b 100644 --- a/src/js/react/orb.react.DropTargetVertical.jsx +++ b/src/js/react/orb.react.DropTargetVertical.jsx @@ -3,7 +3,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), DragManager = require('./orb.react.DragManager.jsx'), DropIndicator = require('./orb.react.DropIndicator.jsx'), dtid = 0; @@ -39,10 +39,10 @@ module.exports = React.createClass({ callback(); } }, - render: function() { + render: function() { var self = this; - var buttons = this.props.buttons.map(function(button, index) { + var buttons = this.props.buttons.map(function(button, index) { var currButton = [ , { button } @@ -65,4 +65,4 @@ module.exports = React.createClass({
; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.Dropdown.jsx b/src/js/react/orb.react.Dropdown.jsx index fac92a8..e99d646 100644 --- a/src/js/react/orb.react.Dropdown.jsx +++ b/src/js/react/orb.react.Dropdown.jsx @@ -3,7 +3,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), utils = require('../orb.utils'); module.exports = React.createClass({ @@ -74,4 +74,4 @@ module.exports = React.createClass({
; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.FilterPanel.jsx b/src/js/react/orb.react.FilterPanel.jsx index f78a747..e444882 100644 --- a/src/js/react/orb.react.FilterPanel.jsx +++ b/src/js/react/orb.react.FilterPanel.jsx @@ -3,8 +3,8 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), Dropdown = require('./orb.react.Dropdown.jsx'), utils = require('../orb.utils'), filtering = require('../orb.filtering'), @@ -41,7 +41,7 @@ module.exports = React.createClass({ this.destroy(); }, onMouseWheel: function(e) { - var valuesTable = this.refs.valuesTable; + var valuesTable = this.refs.valuesTable; var target = e.target || e.srcElement; while(target != null) { if(target == valuesTable) { @@ -124,7 +124,7 @@ module.exports = React.createClass({
x
- + @@ -228,9 +228,9 @@ function FilterManager(reactComp, initialFilterObject) { toExclude: initialFilterObject.excludeStatic }; - if(initialFilterObject.term) { + if(initialFilterObject.term) { isSearchMode = true; - + operator = initialFilterObject.operator; self.toggleRegexpButtonVisibility(); @@ -261,12 +261,12 @@ function FilterManager(reactComp, initialFilterObject) { utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged); utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox); - - utils.addEventListener(elems.okButton, 'click', function() { + + utils.addEventListener(elems.okButton, 'click', function() { var checkedObj = self.getCheckedValues(); - reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude); + reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude); }); - utils.addEventListener(elems.cancelButton, 'click', function() { reactComp.destroy(); }); + utils.addEventListener(elems.cancelButton, 'click', function() { reactComp.destroy(); }); } function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) { @@ -353,7 +353,7 @@ function FilterManager(reactComp, initialFilterObject) { if(operator.regexpSupported) { utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged); domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden'); - + } else { utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged); domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden'); @@ -369,7 +369,7 @@ function FilterManager(reactComp, initialFilterObject) { } }; - this.regexpActiveChanged = function() { + this.regexpActiveChanged = function() { isRegexMode = !isRegexMode; self.toggleRegexpButtonState(); self.searchChanged('regexModeChanged'); @@ -386,7 +386,7 @@ function FilterManager(reactComp, initialFilterObject) { } }; - this.applyFilterTerm = function(operator, term) { + this.applyFilterTerm = function(operator, term) { var defaultVisible = term ? false : true; var opterm = operator.regexpSupported && isSearchMode ? (isRegexMode ? term : utils.escapeRegex(term)) : term; checkboxVisible(elems.allCheckbox, defaultVisible); @@ -403,7 +403,7 @@ function FilterManager(reactComp, initialFilterObject) { var search = (elems.searchBox.value || '').trim(); if(e === 'operatorChanged' || (e === 'regexModeChanged' && search) || search != lastSearchTerm) { lastSearchTerm = search; - + var previousIsSearchMode = isSearchMode; isSearchMode = search !== ''; @@ -434,7 +434,7 @@ function FilterManager(reactComp, initialFilterObject) { var staticValue; var i, val, - checkbox; + checkbox; var valuesCount = 0, checkedCount = 0; @@ -482,7 +482,7 @@ function FilterManager(reactComp, initialFilterObject) { null : (values == null || values === filtering.ALL ? true : - (values === filtering.NONE ? + (values === filtering.NONE ? false : !!values ) diff --git a/src/js/react/orb.react.Grid.jsx b/src/js/react/orb.react.Grid.jsx index 2d7c14c..00d481f 100644 --- a/src/js/react/orb.react.Grid.jsx +++ b/src/js/react/orb.react.Grid.jsx @@ -2,7 +2,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), utils = require('../orb.utils'); @@ -21,7 +21,7 @@ module.exports = React.createClass({ } rows.push({ headerRow }); } - + if(data && data.length > 0) { for(var i = 0; i < data.length; i++) { var row = []; @@ -46,4 +46,4 @@ module.exports = React.createClass({ ; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotButton.jsx b/src/js/react/orb.react.PivotButton.jsx index fb778d0..0be93c8 100644 --- a/src/js/react/orb.react.PivotButton.jsx +++ b/src/js/react/orb.react.PivotButton.jsx @@ -3,8 +3,8 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), FilterPanel = require('./orb.react.FilterPanel.jsx'), DragManager = require('./orb.react.DragManager.jsx'), utils = require('../orb.utils'), @@ -80,7 +80,7 @@ module.exports = React.createClass({ var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this)); var mousePageXY = utils.getMousePageXY(e); - + // inform mousedown, save start pos this.setState({ mousedown: true, @@ -94,13 +94,13 @@ module.exports = React.createClass({ } }); } - + // prevent event bubbling (to prevent text selection while dragging for example) utils.stopPropagation(e); utils.preventDefault(e); }, onMouseUp: function(e) { - + var isdragged = this.state.dragging; this.setState({ @@ -112,7 +112,7 @@ module.exports = React.createClass({ y: 0 } }); - + if(!e.ctrlKey && !isdragged) { // if button was not dragged, proceed as a click this.props.pivotTableComp.sort(this.props.axetype, this.props.field); @@ -165,7 +165,7 @@ module.exports = React.createClass({ divstyle.width = self.state.size.width + 'px'; } - var sortDirectionClass = self.props.field.sort.order === 'asc' ? + var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' : //' \u2191' : (self.props.field.sort.order === 'desc' ? @@ -178,7 +178,7 @@ module.exports = React.createClass({ fieldAggFunc = {' (' + self.props.field.aggregateFuncName + ')' }; } - return
; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotCell.jsx b/src/js/react/orb.react.PivotCell.jsx index 58501f0..1fa32f4 100644 --- a/src/js/react/orb.react.PivotCell.jsx +++ b/src/js/react/orb.react.PivotCell.jsx @@ -3,8 +3,8 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), uiheaders = require('../orb.ui.header'), domUtils = require('../orb.utils.dom'), _paddingLeft = null, @@ -153,18 +153,18 @@ function getClassname(compProps) { var isEmpty = cell.template === 'cell-template-empty'; if(!cell.visible()) { - classname += ' cell-hidden'; + classname += ' cell-hidden'; } if(cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) { - classname += ' header-st-exp'; + classname += ' header-st-exp'; } if(cell.type === uiheaders.HeaderType.GRAND_TOTAL) { if(cell.dim.depth === 1) { - classname += ' header-nofields'; + classname += ' header-nofields'; } else if(cell.dim.depth > 2) { - classname += ' header-gt-exp'; + classname += ' header-gt-exp'; } } @@ -177,4 +177,4 @@ function getClassname(compProps) { } return classname; -} \ No newline at end of file +} diff --git a/src/js/react/orb.react.PivotChart.jsx b/src/js/react/orb.react.PivotChart.jsx index 8cf9415..b415f56 100644 --- a/src/js/react/orb.react.PivotChart.jsx +++ b/src/js/react/orb.react.PivotChart.jsx @@ -2,17 +2,17 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), DragManager = require('./orb.react.DragManager.jsx'), SizingManager = require('./orb.react.PivotTable.SizingManager.jsx'), Toolbar = require('./orb.react.Toolbar.jsx'), UpperButtons = require('./orb.react.PivotTable.UpperButtons.jsx'), ColumnButtons = require('./orb.react.PivotTable.ColumnButtons.jsx'), RowButtons = require('./orb.react.PivotTable.RowButtons.jsx'), - Chart = require('./orb.react.Chart.jsx'), + Chart = require('./orb.react.Chart.jsx'), domUtils = require('../orb.utils.dom'), - + pivotId = 1, themeChangeCallbacks = {}; @@ -23,7 +23,7 @@ module.exports = React.createClass({ fontStyle: null, getInitialState: function() { DragManager.init(this); - + themeChangeCallbacks[this.id] = []; this.registerThemeChanged(this.updateClasses); @@ -61,17 +61,17 @@ module.exports = React.createClass({ }, updateClasses: function() { var thisnode = ReactDOM.findDOMNode(this); - var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); + var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); thisnode.className = classes.container; thisnode.children[1].className = classes.table; }, - componentDidUpdate: function() { + componentDidUpdate: function() { this.synchronizeWidths(); }, componentDidMount: function() { var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true); this.fontStyle = { - fontFamily: fontInfos[0], + fontFamily: fontInfos[0], fontSize: fontInfos[1] }; @@ -92,7 +92,7 @@ module.exports = React.createClass({ var self = this; var config = this.pgridwidget.pgrid.config; - var classes = config.theme.getPivotClasses(); + var classes = config.theme.getPivotClasses(); var tblStyle = {}; if(config.width) { tblStyle.width = config.width; } @@ -107,7 +107,7 @@ module.exports = React.createClass({ - + @@ -128,4 +128,4 @@ module.exports = React.createClass({ ); } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotRow.jsx b/src/js/react/orb.react.PivotRow.jsx index c32cacd..94fc909 100644 --- a/src/js/react/orb.react.PivotRow.jsx +++ b/src/js/react/orb.react.PivotRow.jsx @@ -2,14 +2,14 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), PivotCell = require('./orb.react.PivotCell.jsx'), axe = require('../orb.axe'); module.exports = React.createClass({ render: function() { var self = this; - + var lastCellIndex = this.props.row.length - 1; var cell0 = this.props.row[0]; var leftmostCellFound = false; @@ -25,7 +25,7 @@ module.exports = React.createClass({ var isleftmost = false; // If current cells are column/data headers and left most cell is not found yet - // and last row left most cell does not span vertically over the current one and current one is visible + // and last row left most cell does not span vertically over the current one and current one is visible // then mark IT as the left most cell if(cell.visible() && layoutInfos) { if(cell.dim) { @@ -45,7 +45,7 @@ module.exports = React.createClass({ } } - return ); } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.ColumnButtons.jsx b/src/js/react/orb.react.PivotTable.ColumnButtons.jsx index 379a98d..4579eb8 100644 --- a/src/js/react/orb.react.PivotTable.ColumnButtons.jsx +++ b/src/js/react/orb.react.PivotTable.ColumnButtons.jsx @@ -2,7 +2,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), axe = require('../orb.axe'), PivotButton = require('./orb.react.PivotButton.jsx'), DropTarget = require('./orb.react.DropTarget.jsx'); @@ -24,4 +24,4 @@ module.exports = React.createClass({ return ; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.ColumnHeaders.jsx b/src/js/react/orb.react.PivotTable.ColumnHeaders.jsx index b9f8ec2..a0047e7 100644 --- a/src/js/react/orb.react.PivotTable.ColumnHeaders.jsx +++ b/src/js/react/orb.react.PivotTable.ColumnHeaders.jsx @@ -2,7 +2,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), axe = require('../orb.axe'), PivotRow = require('./orb.react.PivotRow.jsx'); @@ -12,7 +12,7 @@ module.exports = React.createClass({ var pgridwidget = this.props.pivotTableComp.pgridwidget; var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr'; - var layoutInfos = { + var layoutInfos = { lastLeftMostCellVSpan: 0, topMostCells: {} }; @@ -24,7 +24,7 @@ module.exports = React.createClass({ pivotTableComp={self.props.pivotTableComp} layoutInfos={layoutInfos}> ; - }); + }); return
@@ -36,4 +36,4 @@ module.exports = React.createClass({
; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.DataCells.jsx b/src/js/react/orb.react.PivotTable.DataCells.jsx index e8279f9..ea8df86 100644 --- a/src/js/react/orb.react.PivotTable.DataCells.jsx +++ b/src/js/react/orb.react.PivotTable.DataCells.jsx @@ -2,7 +2,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), axe = require('../orb.axe'), PivotRow = require('./orb.react.PivotRow.jsx'); @@ -10,7 +10,7 @@ module.exports = React.createClass({ render: function() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; - var layoutInfos = { + var layoutInfos = { lastLeftMostCellVSpan: 0, topMostCells: {} }; @@ -34,4 +34,4 @@ module.exports = React.createClass({ ; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.RowButtons.jsx b/src/js/react/orb.react.PivotTable.RowButtons.jsx index 46c55b3..e61691d 100644 --- a/src/js/react/orb.react.PivotTable.RowButtons.jsx +++ b/src/js/react/orb.react.PivotTable.RowButtons.jsx @@ -2,7 +2,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), PivotButton = require('./orb.react.PivotButton.jsx'), DropTarget = require('./orb.react.DropTarget.jsx'), DropTargetVertical = require('./orb.react.DropTargetVertical.jsx'), @@ -30,4 +30,4 @@ module.exports = React.createClass({ ; } } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.RowHeaders.jsx b/src/js/react/orb.react.PivotTable.RowHeaders.jsx index e9c857b..208cea5 100644 --- a/src/js/react/orb.react.PivotTable.RowHeaders.jsx +++ b/src/js/react/orb.react.PivotTable.RowHeaders.jsx @@ -2,8 +2,8 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), PivotRow = require('./orb.react.PivotRow.jsx'), axe = require('../orb.axe'); @@ -25,8 +25,8 @@ module.exports = React.createClass({ var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr'; - - var layoutInfos = { + + var layoutInfos = { lastLeftMostCellVSpan: 0, topMostCells: {} }; @@ -50,4 +50,4 @@ module.exports = React.createClass({ ; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.SizingManager.jsx b/src/js/react/orb.react.PivotTable.SizingManager.jsx index 26ab5dc..3fb046b 100644 --- a/src/js/react/orb.react.PivotTable.SizingManager.jsx +++ b/src/js/react/orb.react.PivotTable.SizingManager.jsx @@ -2,7 +2,7 @@ 'use strict'; -var ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var ReactDOM = require('react-dom'), domUtils = require('../orb.utils.dom'); var SizingManager = module.exports = { @@ -57,7 +57,7 @@ var SizingManager = module.exports = { dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w), pivotHeight = pivotComp.pgridwidget.pgrid.config.height, - dataCellsRemHeight = !pivotHeight ? null : (pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h)), + dataCellsRemHeight = !pivotHeight ? null : (pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h)), dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h)); @@ -110,7 +110,7 @@ function ComponentSizeInfo(component, isWrapper, childType) { size = domUtils.getSize(this.node); this.w = size.width; this.h = size.height; - + this.setStyle = function(styleProp, value) { self.node.style[styleProp] = value + 'px'; }; @@ -245,7 +245,7 @@ function setTableWidths(tblObject, colWidths) { // for each row, set its cells width for(var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) { - + // current row var currRow = tbl.rows[rowIndex]; // index in colWidths @@ -254,7 +254,7 @@ function setTableWidths(tblObject, colWidths) { // set width of each cell for(var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) { - + // current cell var currCell = currRow.cells[cellIndex]; if(currCell.__orb._visible) { @@ -311,4 +311,4 @@ function setTableWidths(tblObject, colWidths) { } } } -} \ No newline at end of file +} diff --git a/src/js/react/orb.react.PivotTable.UpperButtons.jsx b/src/js/react/orb.react.PivotTable.UpperButtons.jsx index cefebe9..cf382ac 100644 --- a/src/js/react/orb.react.PivotTable.UpperButtons.jsx +++ b/src/js/react/orb.react.PivotTable.UpperButtons.jsx @@ -2,7 +2,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), PivotButton = require('./orb.react.PivotButton.jsx'), DropTarget = require('./orb.react.DropTarget.jsx'), axe = require('../orb.axe'); @@ -11,7 +11,7 @@ module.exports = React.createClass({ render: function() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; - + var fieldsDropTarget; if(config.canMoveFields) { var fieldsButtons = config.availablefields().map(function(field, index) { @@ -61,4 +61,4 @@ module.exports = React.createClass({ ; } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.PivotTable.jsx b/src/js/react/orb.react.PivotTable.jsx index 4b0ac63..72dee7f 100644 --- a/src/js/react/orb.react.PivotTable.jsx +++ b/src/js/react/orb.react.PivotTable.jsx @@ -2,14 +2,14 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), DragManager = require('./orb.react.DragManager.jsx'), SizingManager = require('./orb.react.PivotTable.SizingManager.jsx'), Toolbar = require('./orb.react.Toolbar.jsx'), UpperButtons = require('./orb.react.PivotTable.UpperButtons.jsx'), ColumnButtons = require('./orb.react.PivotTable.ColumnButtons.jsx'), - RowButtons = require('./orb.react.PivotTable.RowButtons.jsx'), + RowButtons = require('./orb.react.PivotTable.RowButtons.jsx'), RowHeaders = require('./orb.react.PivotTable.RowHeaders.jsx'), ColumnHeaders = require('./orb.react.PivotTable.ColumnHeaders.jsx'), DataCells = require('./orb.react.PivotTable.DataCells.jsx'), @@ -30,7 +30,7 @@ module.exports = React.createClass({ fontStyle: null, getInitialState: function() { DragManager.init(this); - + themeChangeCallbacks[this.id] = []; this.registerThemeChanged(this.updateClasses); @@ -74,17 +74,17 @@ module.exports = React.createClass({ }, updateClasses: function() { var thisnode = ReactDOM.findDOMNode(this); - var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); + var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); thisnode.className = classes.container; thisnode.children[1].className = classes.table; }, - componentDidUpdate: function() { + componentDidUpdate: function() { this.synchronizeWidths(); }, componentDidMount: function() { var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true); this.fontStyle = { - fontFamily: fontInfos[0], + fontFamily: fontInfos[0], fontSize: fontInfos[1] }; @@ -96,7 +96,7 @@ module.exports = React.createClass({ this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) { var scrollAmount = Math.ceil( scrollPercent * ( - domUtils.getSize(dataCellsTableNode).width - + domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width ) ); @@ -107,7 +107,7 @@ module.exports = React.createClass({ this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) { var scrollAmount = Math.ceil( scrollPercent * ( - domUtils.getSize(dataCellsTableNode).height - + domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height ) ); @@ -146,7 +146,7 @@ module.exports = React.createClass({ var self = this; var config = this.pgridwidget.pgrid.config; - var classes = config.theme.getPivotClasses(); + var classes = config.theme.getPivotClasses(); var tblStyle = {}; if(config.width) { tblStyle.width = config.width; } @@ -167,7 +167,7 @@ module.exports = React.createClass({ - + @@ -182,7 +182,7 @@ module.exports = React.createClass({ - + @@ -211,4 +211,4 @@ module.exports = React.createClass({ ); } -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.ScrollBars.jsx b/src/js/react/orb.react.ScrollBars.jsx index c6d22e3..be617b0 100644 --- a/src/js/react/orb.react.ScrollBars.jsx +++ b/src/js/react/orb.react.ScrollBars.jsx @@ -3,8 +3,8 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, - ReactDOM = typeof window === 'undefined' ? require('react-dom') : window.ReactDOM, +var React = require('react'), + ReactDOM = require('react-dom'), utils = require('../orb.utils'), domUtils = require('../orb.utils.dom'); @@ -95,7 +95,7 @@ var scrollBarMixin = { this.scrollEvent.callback = scrollCallback; }, getScrollPercent: function() { - var maxOffset = this.getScrollSize() - this.state.size; + var maxOffset = this.getScrollSize() - this.state.size; return maxOffset <= 0 ? 0 : this.state.thumbOffset/maxOffset; }, refresh: function() { @@ -107,7 +107,7 @@ var scrollBarMixin = { var scrollBarContainerSize = this.getScrollSize(); var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : (clientSize[this.sizeProp]/elementSize[this.sizeProp]) * scrollBarContainerSize; - + this.setState( { containerSize: scrollBarContainerSize, @@ -134,7 +134,7 @@ var scrollBarMixin = { this.scrollEvent.raise ); return true; - } + } } return false; }, @@ -145,7 +145,7 @@ var scrollBarMixin = { }, render: function() { var self = this; - + var thumbStyle = {padding: 0}; thumbStyle[this.sizeProp] = this.state.size; thumbStyle[this.offsetCssProp] = this.state.thumbOffset; @@ -156,7 +156,7 @@ var scrollBarMixin = { var thumbClass = "orb-scrollthumb " + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar; var scrollThumb = this.state.size <= 0 ? - null : + null :
@@ -195,4 +195,4 @@ module.exports.VerticalScrollBar = React.createClass({ sizeProp: 'height', offsetCssProp: 'top', cssClass: 'orb-v-scrollbar' -}); \ No newline at end of file +}); diff --git a/src/js/react/orb.react.Toolbar.jsx b/src/js/react/orb.react.Toolbar.jsx index b3669d5..117599d 100644 --- a/src/js/react/orb.react.Toolbar.jsx +++ b/src/js/react/orb.react.Toolbar.jsx @@ -3,7 +3,7 @@ 'use strict'; -var React = typeof window === 'undefined' ? require('react') : window.React, +var React = require('react'), axe = require('../orb.axe'), domUtils = require('../orb.utils.dom'); @@ -12,13 +12,13 @@ module.exports = React.createClass({ componentDidMount: function() { for(var i = 0; i < this._toInit.length; i++){ var btn = this._toInit[i]; - btn.init(this.props.pivotTableComp, this.refs[btn.ref]); + btn.init(this.props.pivotTableComp, this.refs[btn.ref]); } }, componentDidUpdate: function() { for(var i = 0; i < this._toInit.length; i++){ var btn = this._toInit[i]; - btn.init(this.props.pivotTableComp, this.refs[btn.ref]); + btn.init(this.props.pivotTableComp, this.refs[btn.ref]); } }, createCallback: function(action) { @@ -35,7 +35,7 @@ module.exports = React.createClass({ var config = this.props.pivotTableComp.pgridwidget.pgrid.config; if(config.toolbar && config.toolbar.visible) { - + var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons; @@ -105,7 +105,7 @@ var defaultToolbarConfig = { classToAdd = 'subtotals-hidden'; classToRemove = 'subtotals-visible'; } - + domUtils.removeClass(button, classToRemove); domUtils.addClass(button, classToAdd); }, @@ -135,7 +135,7 @@ var defaultToolbarConfig = { classToAdd = 'grndtotal-hidden'; classToRemove = 'grndtotal-visible'; } - + domUtils.removeClass(button, classToRemove); domUtils.addClass(button, classToAdd); }, @@ -158,19 +158,19 @@ defaultToolbarConfig.buttons = [ { type: 'label', text: 'Rows:'}, { type: 'button', tooltip: 'Expand all rows', cssClass: 'expand-all', action: defaultToolbarConfig.expandAllRows}, { type: 'button', tooltip: 'Collapse all rows', cssClass: 'collapse-all', action: defaultToolbarConfig.collapseAllRows}, - { type: 'button', tooltip: 'Toggle rows sub totals', init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS), + { type: 'button', tooltip: 'Toggle rows sub totals', init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS), action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)}, - { type: 'button', tooltip: 'Toggle rows grand total', init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS), + { type: 'button', tooltip: 'Toggle rows grand total', init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS), action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)}, { type: 'separator'}, { type: 'label', text: 'Columns:'}, { type: 'button', tooltip: 'Expand all columns', cssClass: 'expand-all', action: defaultToolbarConfig.expandAllColumns}, { type: 'button', tooltip: 'Collapse all columns', cssClass: 'collapse-all', action: defaultToolbarConfig.collapseAllColumns}, - { type: 'button', tooltip: 'Toggle columns sub totals', init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS), + { type: 'button', tooltip: 'Toggle columns sub totals', init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS), action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)}, - { type: 'button', tooltip: 'Toggle columns grand total', init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS), + { type: 'button', tooltip: 'Toggle columns grand total', init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS), action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)}, { type: 'separator'}, { type: 'label', text: 'Export:'}, { type: 'button', tooltip: 'Export to Excel', cssClass: 'export-xls', action: defaultToolbarConfig.exportToExcel} -]; \ No newline at end of file +]; From be39df804c714a6ed80f39fab17aec1c5a16ef08 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Thu, 7 Apr 2016 16:02:24 -0400 Subject: [PATCH 02/13] Rebuild --- dist/orb.css | 2 +- dist/orb.js | 1463 ++++++++++++++++++++++-------- dist/orb.min.css | 2 +- dist/orb.min.js | 10 +- dist/orb.min.js.map | 2 +- dist/v1.1.0/orb-1.1.0.css | 2 +- dist/v1.1.0/orb-1.1.0.js | 1463 ++++++++++++++++++++++-------- dist/v1.1.0/orb-1.1.0.min.css | 2 +- dist/v1.1.0/orb-1.1.0.min.js | 10 +- dist/v1.1.0/orb-1.1.0.min.js.map | 2 +- 10 files changed, 2150 insertions(+), 808 deletions(-) diff --git a/dist/orb.css b/dist/orb.css index 8118661..0a0d979 100644 --- a/dist/orb.css +++ b/dist/orb.css @@ -1,7 +1,7 @@ /** * orb v1.1.0, Pivot table javascript library. * - * Copyright (c) 2014-2015 Najmeddine Nouri . + * Copyright (c) 2014-2016 Najmeddine Nouri . * * @version v1.1.0 * @link http://orbjs.net/ diff --git a/dist/orb.js b/dist/orb.js index 02dddee..00c7cd4 100644 --- a/dist/orb.js +++ b/dist/orb.js @@ -1,7 +1,7 @@ /** * orb v1.1.0, Pivot table javascript library. * - * Copyright (c) 2014-2015 Najmeddine Nouri . + * Copyright (c) 2014-2016 Najmeddine Nouri . * * @version v1.1.0 * @link http://orbjs.net/ @@ -57,9 +57,655 @@ return s })({ 1: [function(_dereq_, module, exports) { + module.exports = { + "default": _dereq_("core-js/library/fn/json/stringify"), + __esModule: true + }; + }, { + "core-js/library/fn/json/stringify": 4 + }], + 2: [function(_dereq_, module, exports) { + module.exports = { + "default": _dereq_("core-js/library/fn/symbol"), + __esModule: true + }; + }, { + "core-js/library/fn/symbol": 5 + }], + 3: [function(_dereq_, module, exports) { + + var _Symbol = _dereq_("babel-runtime/core-js/symbol")["default"]; + + exports["default"] = function(obj) { + return obj && obj.constructor === _Symbol ? "symbol" : typeof obj; + }; + + exports.__esModule = true; + }, { + "babel-runtime/core-js/symbol": 2 + }], + 4: [function(_dereq_, module, exports) { + var core = _dereq_('../../modules/$.core'); + module.exports = function stringify(it) { // eslint-disable-line no-unused-vars + return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments); + }; + }, { + "../../modules/$.core": 9 + }], + 5: [function(_dereq_, module, exports) { + _dereq_('../../modules/es6.symbol'); + _dereq_('../../modules/es6.object.to-string'); + module.exports = _dereq_('../../modules/$.core').Symbol; + }, { + "../../modules/$.core": 9, + "../../modules/es6.object.to-string": 33, + "../../modules/es6.symbol": 34 + }], + 6: [function(_dereq_, module, exports) { + module.exports = function(it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; + }; + }, {}], + 7: [function(_dereq_, module, exports) { + var isObject = _dereq_('./$.is-object'); + module.exports = function(it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; + }; + }, { + "./$.is-object": 22 + }], + 8: [function(_dereq_, module, exports) { + var toString = {}.toString; + + module.exports = function(it) { + return toString.call(it).slice(8, -1); + }; + }, {}], + 9: [function(_dereq_, module, exports) { + var core = module.exports = { + version: '1.2.6' + }; + if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + }, {}], + 10: [function(_dereq_, module, exports) { + // optional / simple context binding + var aFunction = _dereq_('./$.a-function'); + module.exports = function(fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: + return function(a) { + return fn.call(that, a); + }; + case 2: + return function(a, b) { + return fn.call(that, a, b); + }; + case 3: + return function(a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function() { + return fn.apply(that, arguments); + }; + }; + }, { + "./$.a-function": 6 + }], + 11: [function(_dereq_, module, exports) { + // 7.2.1 RequireObjectCoercible(argument) + module.exports = function(it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; + }; + }, {}], + 12: [function(_dereq_, module, exports) { + // Thank's IE8 for his funny defineProperty + module.exports = !_dereq_('./$.fails')(function() { + return Object.defineProperty({}, 'a', { + get: function() { + return 7; + } + }).a != 7; + }); + }, { + "./$.fails": 15 + }], + 13: [function(_dereq_, module, exports) { + // all enumerable object keys, includes symbols + var $ = _dereq_('./$'); + module.exports = function(it) { + var keys = $.getKeys(it), + getSymbols = $.getSymbols; + if (getSymbols) { + var symbols = getSymbols(it), + isEnum = $.isEnum, + i = 0, + key; + while (symbols.length > i) + if (isEnum.call(it, key = symbols[i++])) keys.push(key); + } + return keys; + }; + }, { + "./$": 23 + }], + 14: [function(_dereq_, module, exports) { + var global = _dereq_('./$.global'), + core = _dereq_('./$.core'), + ctx = _dereq_('./$.ctx'), + PROTOTYPE = 'prototype'; + + var $export = function(type, name, source) { + var IS_FORCED = type & $export.F, + IS_GLOBAL = type & $export.G, + IS_STATIC = type & $export.S, + IS_PROTO = type & $export.P, + IS_BIND = type & $export.B, + IS_WRAP = type & $export.W, + exports = IS_GLOBAL ? core : core[name] || (core[name] = {}), + target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE], + key, own, out; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && key in target; + if (own && key in exports) continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function(C) { + var F = function(param) { + return this instanceof C ? new C(param) : C(param); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out; + } + }; + // type bitmap + $export.F = 1; // forced + $export.G = 2; // global + $export.S = 4; // static + $export.P = 8; // proto + $export.B = 16; // bind + $export.W = 32; // wrap + module.exports = $export; + }, { + "./$.core": 9, + "./$.ctx": 10, + "./$.global": 17 + }], + 15: [function(_dereq_, module, exports) { + module.exports = function(exec) { + try { + return !!exec(); + } catch (e) { + return true; + } + }; + }, {}], + 16: [function(_dereq_, module, exports) { + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + var toIObject = _dereq_('./$.to-iobject'), + getNames = _dereq_('./$').getNames, + toString = {}.toString; + + var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function(it) { + try { + return getNames(it); + } catch (e) { + return windowNames.slice(); + } + }; + + module.exports.get = function getOwnPropertyNames(it) { + if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it); + return getNames(toIObject(it)); + }; + }, { + "./$": 23, + "./$.to-iobject": 30 + }], + 17: [function(_dereq_, module, exports) { + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); + if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + }, {}], + 18: [function(_dereq_, module, exports) { + var hasOwnProperty = {}.hasOwnProperty; + module.exports = function(it, key) { + return hasOwnProperty.call(it, key); + }; + }, {}], + 19: [function(_dereq_, module, exports) { + var $ = _dereq_('./$'), + createDesc = _dereq_('./$.property-desc'); + module.exports = _dereq_('./$.descriptors') ? function(object, key, value) { + return $.setDesc(object, key, createDesc(1, value)); + } : function(object, key, value) { + object[key] = value; + return object; + }; + }, { + "./$": 23, + "./$.descriptors": 12, + "./$.property-desc": 26 + }], + 20: [function(_dereq_, module, exports) { + // fallback for non-array-like ES3 and non-enumerable old V8 strings + var cof = _dereq_('./$.cof'); + module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) { + return cof(it) == 'String' ? it.split('') : Object(it); + }; + }, { + "./$.cof": 8 + }], + 21: [function(_dereq_, module, exports) { + // 7.2.2 IsArray(argument) + var cof = _dereq_('./$.cof'); + module.exports = Array.isArray || function(arg) { + return cof(arg) == 'Array'; + }; + }, { + "./$.cof": 8 + }], + 22: [function(_dereq_, module, exports) { + module.exports = function(it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + }, {}], + 23: [function(_dereq_, module, exports) { + var $Object = Object; + module.exports = { + create: $Object.create, + getProto: $Object.getPrototypeOf, + isEnum: {}.propertyIsEnumerable, + getDesc: $Object.getOwnPropertyDescriptor, + setDesc: $Object.defineProperty, + setDescs: $Object.defineProperties, + getKeys: $Object.keys, + getNames: $Object.getOwnPropertyNames, + getSymbols: $Object.getOwnPropertySymbols, + each: [].forEach + }; + }, {}], + 24: [function(_dereq_, module, exports) { + var $ = _dereq_('./$'), + toIObject = _dereq_('./$.to-iobject'); + module.exports = function(object, el) { + var O = toIObject(object), + keys = $.getKeys(O), + length = keys.length, + index = 0, + key; + while (length > index) + if (O[key = keys[index++]] === el) return key; + }; + }, { + "./$": 23, + "./$.to-iobject": 30 + }], + 25: [function(_dereq_, module, exports) { + module.exports = true; + }, {}], + 26: [function(_dereq_, module, exports) { + module.exports = function(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + }, {}], + 27: [function(_dereq_, module, exports) { + module.exports = _dereq_('./$.hide'); + }, { + "./$.hide": 19 + }], + 28: [function(_dereq_, module, exports) { + var def = _dereq_('./$').setDesc, + has = _dereq_('./$.has'), + TAG = _dereq_('./$.wks')('toStringTag'); + + module.exports = function(it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { + configurable: true, + value: tag + }); + }; + }, { + "./$": 23, + "./$.has": 18, + "./$.wks": 32 + }], + 29: [function(_dereq_, module, exports) { + var global = _dereq_('./$.global'), + SHARED = '__core-js_shared__', + store = global[SHARED] || (global[SHARED] = {}); + module.exports = function(key) { + return store[key] || (store[key] = {}); + }; + }, { + "./$.global": 17 + }], + 30: [function(_dereq_, module, exports) { + // to indexed object, toObject with fallback for non-array-like ES3 strings + var IObject = _dereq_('./$.iobject'), + defined = _dereq_('./$.defined'); + module.exports = function(it) { + return IObject(defined(it)); + }; + }, { + "./$.defined": 11, + "./$.iobject": 20 + }], + 31: [function(_dereq_, module, exports) { + var id = 0, + px = Math.random(); + module.exports = function(key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); + }; + }, {}], + 32: [function(_dereq_, module, exports) { + var store = _dereq_('./$.shared')('wks'), + uid = _dereq_('./$.uid'), + Symbol = _dereq_('./$.global').Symbol; + module.exports = function(name) { + return store[name] || (store[name] = + Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name)); + }; + }, { + "./$.global": 17, + "./$.shared": 29, + "./$.uid": 31 + }], + 33: [function(_dereq_, module, exports) { + + }, {}], + 34: [function(_dereq_, module, exports) { + + // ECMAScript 6 symbols shim + var $ = _dereq_('./$'), + global = _dereq_('./$.global'), + has = _dereq_('./$.has'), + DESCRIPTORS = _dereq_('./$.descriptors'), + $export = _dereq_('./$.export'), + redefine = _dereq_('./$.redefine'), + $fails = _dereq_('./$.fails'), + shared = _dereq_('./$.shared'), + setToStringTag = _dereq_('./$.set-to-string-tag'), + uid = _dereq_('./$.uid'), + wks = _dereq_('./$.wks'), + keyOf = _dereq_('./$.keyof'), + $names = _dereq_('./$.get-names'), + enumKeys = _dereq_('./$.enum-keys'), + isArray = _dereq_('./$.is-array'), + anObject = _dereq_('./$.an-object'), + toIObject = _dereq_('./$.to-iobject'), + createDesc = _dereq_('./$.property-desc'), + getDesc = $.getDesc, + setDesc = $.setDesc, + _create = $.create, + getNames = $names.get, + $Symbol = global.Symbol, + $JSON = global.JSON, + _stringify = $JSON && $JSON.stringify, + setter = false, + HIDDEN = wks('_hidden'), + isEnum = $.isEnum, + SymbolRegistry = shared('symbol-registry'), + AllSymbols = shared('symbols'), + useNative = typeof $Symbol == 'function', + ObjectProto = Object.prototype; + + // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 + var setSymbolDesc = DESCRIPTORS && $fails(function() { + return _create(setDesc({}, 'a', { + get: function() { + return setDesc(this, 'a', { + value: 7 + }).a; + } + })).a != 7; + }) ? function(it, key, D) { + var protoDesc = getDesc(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + setDesc(it, key, D); + if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc); + } : setDesc; + + var wrap = function(tag) { + var sym = AllSymbols[tag] = _create($Symbol.prototype); + sym._k = tag; + DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, { + configurable: true, + set: function(value) { + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + } + }); + return sym; + }; + + var isSymbol = function(it) { + return typeof it == 'symbol'; + }; + + var $defineProperty = function defineProperty(it, key, D) { + if (D && has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { + enumerable: createDesc(0, false) + }); + } + return setSymbolDesc(it, key, D); + } + return setDesc(it, key, D); + }; + var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)), + i = 0, + l = keys.length, + key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; + }; + var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); + }; + var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key); + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; + }; + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + var D = getDesc(it = toIObject(it), key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; + }; + var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = getNames(toIObject(it)), + result = [], + i = 0, + key; + while (names.length > i) + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key); + return result; + }; + var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var names = getNames(toIObject(it)), + result = [], + i = 0, + key; + while (names.length > i) + if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]); + return result; + }; + var $stringify = function stringify(it) { + if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + var args = [it], + i = 1, + $$ = arguments, + replacer, $replacer; + while ($$.length > i) args.push($$[i++]); + replacer = args[1]; + if (typeof replacer == 'function') $replacer = replacer; + if ($replacer || !isArray(replacer)) replacer = function(key, value) { + if ($replacer) value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + }; + var buggyJSON = $fails(function() { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ + a: S + }) != '{}' || _stringify(Object(S)) != '{}'; + }); + + // 19.4.1.1 Symbol([description]) + if (!useNative) { + $Symbol = function Symbol() { + if (isSymbol(this)) throw TypeError('Symbol is not a constructor'); + return wrap(uid(arguments.length > 0 ? arguments[0] : undefined)); + }; + redefine($Symbol.prototype, 'toString', function toString() { + return this._k; + }); + + isSymbol = function(it) { + return it instanceof $Symbol; + }; + + $.create = $create; + $.isEnum = $propertyIsEnumerable; + $.getDesc = $getOwnPropertyDescriptor; + $.setDesc = $defineProperty; + $.setDescs = $defineProperties; + $.getNames = $names.get = $getOwnPropertyNames; + $.getSymbols = $getOwnPropertySymbols; + + if (DESCRIPTORS && !_dereq_('./$.library')) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + } + + var symbolStatics = { + // 19.4.2.1 Symbol.for(key) + 'for': function(key) { + return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(key) { + return keyOf(SymbolRegistry, key); + }, + useSetter: function() { + setter = true; + }, + useSimple: function() { + setter = false; + } + }; + // 19.4.2.2 Symbol.hasInstance + // 19.4.2.3 Symbol.isConcatSpreadable + // 19.4.2.4 Symbol.iterator + // 19.4.2.6 Symbol.match + // 19.4.2.8 Symbol.replace + // 19.4.2.9 Symbol.search + // 19.4.2.10 Symbol.species + // 19.4.2.11 Symbol.split + // 19.4.2.12 Symbol.toPrimitive + // 19.4.2.13 Symbol.toStringTag + // 19.4.2.14 Symbol.unscopables + $.each.call(( + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' + + 'species,split,toPrimitive,toStringTag,unscopables' + ).split(','), function(it) { + var sym = wks(it); + symbolStatics[it] = useNative ? sym : wrap(sym); + }); + + setter = true; + + $export($export.G + $export.W, { + Symbol: $Symbol + }); + + $export($export.S, 'Symbol', symbolStatics); + + $export($export.S + $export.F * !useNative, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols + }); + + // 24.3.2 JSON.stringify(value [, replacer [, space]]) + $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', { + stringify: $stringify + }); + + // 19.4.3.5 Symbol.prototype[@@toStringTag] + setToStringTag($Symbol, 'Symbol'); + // 20.2.1.9 Math[@@toStringTag] + setToStringTag(Math, 'Math', true); + // 24.3.3 JSON[@@toStringTag] + setToStringTag(global.JSON, 'JSON', true); + }, { + "./$": 23, + "./$.an-object": 7, + "./$.descriptors": 12, + "./$.enum-keys": 13, + "./$.export": 14, + "./$.fails": 15, + "./$.get-names": 16, + "./$.global": 17, + "./$.has": 18, + "./$.is-array": 21, + "./$.keyof": 24, + "./$.library": 25, + "./$.property-desc": 26, + "./$.redefine": 27, + "./$.set-to-string-tag": 28, + "./$.shared": 29, + "./$.to-iobject": 30, + "./$.uid": 31, + "./$.wks": 32 + }], + 35: [function(_dereq_, module, exports) { var Aggregations = module.exports = { - toAggregateFunc: function(func) { + toAggregateFunc: function toAggregateFunc(func) { if (func) { if (typeof func === 'string' && Aggregations[func]) { return Aggregations[func]; @@ -72,17 +718,17 @@ return Aggregations.sum; } }, - count: function(datafield, intersection, datasource) { + count: function count(datafield, intersection, datasource) { return intersection === 'all' ? datasource.length : intersection.length; }, - sum: function(datafield, intersection, datasource) { + sum: function sum(datafield, intersection, datasource) { var sum = 0; forEachIntersection(datafield, intersection, datasource, function(val) { sum += val; }); return sum; }, - min: function(datafield, intersection, datasource) { + min: function min(datafield, intersection, datasource) { var min = null; forEachIntersection(datafield, intersection, datasource, function(val) { if (min == null || val < min) { @@ -91,7 +737,7 @@ }); return min; }, - max: function(datafield, intersection, datasource) { + max: function max(datafield, intersection, datasource) { var max = null; forEachIntersection(datafield, intersection, datasource, function(val) { if (max == null || val > max) { @@ -100,7 +746,7 @@ }); return max; }, - avg: function(datafield, intersection, datasource) { + avg: function avg(datafield, intersection, datasource) { var avg = 0; var len = (intersection === 'all' ? datasource : intersection).length; if (len > 0) { @@ -111,7 +757,7 @@ } return avg; }, - prod: function(datafield, intersection, datasource) { + prod: function prod(datafield, intersection, datasource) { var prod; var len = (intersection === 'all' ? datasource : intersection).length; if (len > 0) { @@ -122,16 +768,16 @@ } return prod; }, - stdev: function(datafield, intersection, datasource) { + stdev: function stdev(datafield, intersection, datasource) { return Math.sqrt(calcVariance(datafield, intersection, datasource, false)); }, - stdevp: function(datafield, intersection, datasource) { + stdevp: function stdevp(datafield, intersection, datasource) { return Math.sqrt(calcVariance(datafield, intersection, datasource, true)); }, - 'var': function(datafield, intersection, datasource) { + 'var': function _var(datafield, intersection, datasource) { return calcVariance(datafield, intersection, datasource, false); }, - varp: function(datafield, intersection, datasource) { + varp: function varp(datafield, intersection, datasource) { return calcVariance(datafield, intersection, datasource, true); } }; @@ -168,7 +814,7 @@ } }, {}], - 2: [function(_dereq_, module, exports) { + 36: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); var Dimension = _dereq_('./orb.dimension'); @@ -193,7 +839,7 @@ this.type = type; - this.fields = (function() { + this.fields = function() { switch (type) { case AxeType.COLUMNS: return self.pgrid.config.columnFields; @@ -204,7 +850,7 @@ default: return []; } - })(); + }(); this.dimensionsCount = null; @@ -327,10 +973,10 @@ module.exports.Type = AxeType; }, { - "./orb.dimension": 4, - "./orb.utils": 19 + "./orb.dimension": 38, + "./orb.utils": 53 }], - 3: [function(_dereq_, module, exports) { + 37: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); var axe = _dereq_('./orb.axe'); @@ -626,7 +1272,7 @@ this.availablefields = function() { return self.allFields.filter(function(field) { - var notequalfield = function(otherfield) { + var notequalfield = function notequalfield(otherfield) { return field.name !== otherfield.name; }; @@ -802,13 +1448,13 @@ }; }, { - "./orb.aggregation": 1, - "./orb.axe": 2, - "./orb.filtering": 6, - "./orb.themes": 12, - "./orb.utils": 19 + "./orb.aggregation": 35, + "./orb.axe": 36, + "./orb.filtering": 40, + "./orb.themes": 46, + "./orb.utils": 53 }], - 4: [function(_dereq_, module, exports) { + 38: [function(_dereq_, module, exports) { module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) { @@ -853,7 +1499,7 @@ }; }, {}], - 5: [function(_dereq_, module, exports) { + 39: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); var uiheaders = _dereq_('./orb.ui.header'); @@ -907,7 +1553,7 @@ var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length)); - var columnHeaders = (function() { + var columnHeaders = function() { var str = ''; var j; for (var i = 0; i < pgridwidget.columns.headers.length; i++) { @@ -930,9 +1576,9 @@ str += rowStr + ''; } return str; - })(); + }(); - var rowHeadersAndDataCells = (function() { + var rowHeadersAndDataCells = function() { var str = ''; var j; for (var i = 0; i < pgridwidget.rows.headers.length; i++) { @@ -950,7 +1596,7 @@ str += rowStr + ''; } return str; - })(); + }(); function toBase64(str) { return utils.btoa(unescape(encodeURIComponent(str))); @@ -960,11 +1606,11 @@ }; }, { - "./orb.themes": 12, - "./orb.ui.header": 15, - "./orb.utils": 19 + "./orb.themes": 46, + "./orb.ui.header": 49, + "./orb.utils": 53 }], - 6: [function(_dereq_, module, exports) { + 40: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); @@ -1013,7 +1659,7 @@ }; var ops = filtering.Operators = { - get: function(opname) { + get: function get(opname) { switch (opname) { case ops.MATCH.name: return ops.MATCH; @@ -1038,7 +1684,7 @@ NONE: null, MATCH: { name: 'Matches', - func: function(value, term) { + func: function func(value, term) { if (value) { return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0; } else { @@ -1049,7 +1695,7 @@ }, NOTMATCH: { name: 'Does Not Match', - func: function(value, term) { + func: function func(value, term) { if (value) { return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0; } else { @@ -1060,42 +1706,42 @@ }, EQ: { name: '=', - func: function(value, term) { + func: function func(value, term) { return value == term; }, regexpSupported: false }, NEQ: { name: '<>', - func: function(value, term) { + func: function func(value, term) { return value != term; }, regexpSupported: false }, GT: { name: '>', - func: function(value, term) { + func: function func(value, term) { return value > term; }, regexpSupported: false }, GTE: { name: '>=', - func: function(value, term) { + func: function func(value, term) { return value >= term; }, regexpSupported: false }, LT: { name: '<', - func: function(value, term) { + func: function func(value, term) { return value < term; }, regexpSupported: false }, LTE: { name: '<=', - func: function(value, term) { + func: function func(value, term) { return value <= term; }, regexpSupported: false @@ -1103,9 +1749,9 @@ }; }, { - "./orb.utils": 19 + "./orb.utils": 53 }], - 7: [function(_dereq_, module, exports) { + 41: [function(_dereq_, module, exports) { module.exports.utils = _dereq_('./orb.utils'); module.exports.pgrid = _dereq_('./orb.pgrid'); @@ -1114,13 +1760,13 @@ module.exports['export'] = _dereq_('./orb.export.excel'); }, { - "./orb.export.excel": 5, - "./orb.pgrid": 8, - "./orb.query": 10, - "./orb.ui.pgridwidget": 16, - "./orb.utils": 19 + "./orb.export.excel": 39, + "./orb.pgrid": 42, + "./orb.query": 44, + "./orb.ui.pgridwidget": 50, + "./orb.utils": 53 }], - 8: [function(_dereq_, module, exports) { + 42: [function(_dereq_, module, exports) { var PubSub = _dereq_('./orb.pubsub'), axe = _dereq_('./orb.axe'), @@ -1527,14 +2173,14 @@ pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed'; }, { - "./orb.axe": 2, - "./orb.config": 3, - "./orb.filtering": 6, - "./orb.pubsub": 9, - "./orb.query": 10, - "./orb.utils": 19 + "./orb.axe": 36, + "./orb.config": 37, + "./orb.filtering": 40, + "./orb.pubsub": 43, + "./orb.query": 44, + "./orb.utils": 53 }], - 9: [function(_dereq_, module, exports) { + 43: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); @@ -1558,15 +2204,25 @@ }; }, { - "./orb.utils": 19 + "./orb.utils": 53 }], - 10: [function(_dereq_, module, exports) { + 44: [function(_dereq_, module, exports) { + + var _typeof2 = _dereq_('babel-runtime/helpers/typeof'); + + var _typeof3 = _interopRequireDefault(_typeof2); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } var utils = _dereq_('./orb.utils'); var axe = _dereq_('./orb.axe'); var aggregation = _dereq_('./orb.aggregation'); - var queryBase = function(source, query, filters) { + var queryBase = function queryBase(source, query, filters) { var self = this; @@ -1618,7 +2274,7 @@ }; }; - var pgridQuery = function(pgrid) { + var pgridQuery = function pgridQuery(pgrid) { queryBase.call(this, pgrid, {}, {}); @@ -1634,7 +2290,7 @@ }; if (outerArgs.multi === true) { - if (options && typeof options === 'object') { + if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') { opts.aggregateFunc = options.aggregateFunc; opts.multiFieldNames = options.fields; } else { @@ -1769,7 +2425,7 @@ }; }; - var arrayQuery = function(array) { + var arrayQuery = function arrayQuery(array) { queryBase.call(this, array, {}, []); @@ -1790,7 +2446,7 @@ }; if (outerArgs.multi === true) { - if (options && typeof options === 'object') { + if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') { opts.aggregateFunc = options.aggregateFunc; opts.multiFieldNames = options.fields; } else { @@ -1900,11 +2556,12 @@ }; }, { - "./orb.aggregation": 1, - "./orb.axe": 2, - "./orb.utils": 19 + "./orb.aggregation": 35, + "./orb.axe": 36, + "./orb.utils": 53, + "babel-runtime/helpers/typeof": 3 }], - 11: [function(_dereq_, module, exports) { + 45: [function(_dereq_, module, exports) { module.exports = function() { var states = {}; @@ -1919,9 +2576,9 @@ }; }, {}], - 12: [function(_dereq_, module, exports) { + 46: [function(_dereq_, module, exports) { - module.exports = (function() { + module.exports = function() { var currentTheme = 'blue'; var themeManager = {}; @@ -2007,7 +2664,7 @@ }; var utils = themeManager.utils = { - hexToRgb: function(hex) { + hexToRgb: function hexToRgb(hex) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), @@ -2015,7 +2672,7 @@ b: parseInt(result[3], 16) } : null; }, - rgbaToHex: function(rgba) { + rgbaToHex: function rgbaToHex(rgba) { var matches = rgba.match(/rgba\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+(?:\.\d+)?)\s*\)/); if (matches) { var alpha = parseFloat(matches[4]); @@ -2023,7 +2680,7 @@ } return null; }, - rgbaToHexA: function(rgba) { + rgbaToHexA: function rgbaToHexA(rgba) { var matches = rgba.match(/rgba\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+(?:\.\d+)?)\s*\)/); if (matches) { var alpha = parseFloat(matches[4]); @@ -2031,20 +2688,20 @@ } return null; }, - applyAlphaAndToHex: function(value, alpha) { + applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) { return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2); }, - fadeoutColor: function(color, alpha) { + fadeoutColor: function fadeoutColor(color, alpha) { color = utils.hexToRgb(color); return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha); } }; return themeManager; - })(); + }(); }, {}], - 13: [function(_dereq_, module, exports) { + 47: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'); var uiheaders = _dereq_('./orb.ui.header'); @@ -2102,10 +2759,10 @@ }; }, { - "./orb.axe": 2, - "./orb.ui.header": 15 + "./orb.axe": 36, + "./orb.ui.header": 49 }], - 14: [function(_dereq_, module, exports) { + 48: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'); var axeUi = _dereq_('./orb.ui.axe'); @@ -2257,11 +2914,11 @@ }; }, { - "./orb.axe": 2, - "./orb.ui.axe": 13, - "./orb.ui.header": 15 + "./orb.axe": 36, + "./orb.ui.axe": 47, + "./orb.ui.header": 49 }], - 15: [function(_dereq_, module, exports) { + 49: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'), state = new(_dereq_('./orb.state'))(); @@ -2275,7 +2932,7 @@ WRAPPER: 6, SUB_TOTAL: 7, GRAND_TOTAL: 8, - getHeaderClass: function(headerType, axetype) { + getHeaderClass: function getHeaderClass(headerType, axetype) { var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : ''; switch (headerType) { case HeaderType.EMPTY: @@ -2298,7 +2955,7 @@ return cssclass; }, - getCellClass: function(rowHeaderType, colHeaderType) { + getCellClass: function getCellClass(rowHeaderType, colHeaderType) { var cssclass = ''; switch (rowHeaderType) { case HeaderType.GRAND_TOTAL: @@ -2529,7 +3186,7 @@ }); }; - module.exports.emptyCell = function(hspan, vspan) { + module.exports.emptyCell = function(_hspan, _vspan) { CellBase.call(this, { axetype: null, @@ -2537,22 +3194,23 @@ template: 'cell-template-empty', value: null, cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY), - hspan: function() { - return hspan; + hspan: function hspan() { + return _hspan; }, - vspan: function() { - return vspan; + vspan: function vspan() { + return _vspan; } }); }; }, { - "./orb.axe": 2, - "./orb.state": 11 + "./orb.axe": 36, + "./orb.state": 45 }], - 16: [function(_dereq_, module, exports) { + 50: [function(_dereq_, module, exports) { - var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var ReactDOM = _dereq_('react-dom'), + React = _dereq_('react'), axe = _dereq_('./orb.axe'), pgrid = _dereq_('./orb.pgrid'), uiheaders = _dereq_('./orb.ui.header'), @@ -2723,7 +3381,7 @@ var rowsHeaders = self.rows.headers; var columnsLeafHeaders = self.columns.leafsHeaders; - // set control layout infos + // set control layout infos self.layout = { rowHeaders: { width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0), @@ -2774,18 +3432,19 @@ }; }, { - "./orb.axe": 2, - "./orb.pgrid": 8, - "./orb.ui.cols": 14, - "./orb.ui.header": 15, - "./orb.ui.rows": 17, - "./react/orb.react.Dialog.jsx": 21, - "./react/orb.react.Grid.jsx": 28, - "./react/orb.react.PivotChart.jsx": 31, - "./react/orb.react.PivotTable.jsx": 40, + "./orb.axe": 36, + "./orb.pgrid": 42, + "./orb.ui.cols": 48, + "./orb.ui.header": 49, + "./orb.ui.rows": 51, + "./react/orb.react.Dialog.jsx": 55, + "./react/orb.react.Grid.jsx": 62, + "./react/orb.react.PivotChart.jsx": 65, + "./react/orb.react.PivotTable.jsx": 74, + "react": "react", "react-dom": "react-dom" }], - 17: [function(_dereq_, module, exports) { + 51: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'); var axeUi = _dereq_('./orb.ui.axe'); @@ -2890,11 +3549,11 @@ }; }, { - "./orb.axe": 2, - "./orb.ui.axe": 13, - "./orb.ui.header": 15 + "./orb.axe": 36, + "./orb.ui.axe": 47, + "./orb.ui.header": 49 }], - 18: [function(_dereq_, module, exports) { + 52: [function(_dereq_, module, exports) { module.exports.removeClass = function(element, classname) { if (element && classname) { @@ -2972,13 +3631,13 @@ var currStyle, f, fixProp; if (element.currentStyle) { currStyle = element.currentStyle; - f = function(prop) { + f = function f(prop) { return currStyle[prop]; }; fixProp = true; } else if (window && window.getComputedStyle) { currStyle = window.getComputedStyle(element, null); - f = function(prop) { + f = function f(prop) { return currStyle.getPropertyValue(prop); }; } @@ -3019,12 +3678,22 @@ }; }, {}], - 19: [function(_dereq_, module, exports) { + 53: [function(_dereq_, module, exports) { (function(global) { + var _stringify = _dereq_('babel-runtime/core-js/json/stringify'); + + var _stringify2 = _interopRequireDefault(_stringify); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + module.exports = { - ns: function(identifier, parent) { + ns: function ns(identifier, parent) { var parts = identifier.split('.'); var i = 0; parent = parent || window; @@ -3036,7 +3705,7 @@ return parent; }, - ownProperties: function(obj) { + ownProperties: function ownProperties(obj) { var arr = []; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { @@ -3046,7 +3715,7 @@ return arr; }, - forEach: function(list, callback, forceContinue) { + forEach: function forEach(list, callback, forceContinue) { var ret; if (list) { for (var i = 0, l = list.length; i < l; i++) { @@ -3059,35 +3728,35 @@ return ret; }, - isArray: function(obj) { + isArray: function isArray(obj) { return Object.prototype.toString.apply(obj) === '[object Array]'; }, - isNumber: function(obj) { + isNumber: function isNumber(obj) { return Object.prototype.toString.apply(obj) === '[object Number]'; }, - isDate: function(obj) { + isDate: function isDate(obj) { return Object.prototype.toString.apply(obj) === '[object Date]'; }, - isString: function(obj) { + isString: function isString(obj) { return Object.prototype.toString.apply(obj) === '[object String]'; }, - isRegExp: function(obj) { + isRegExp: function isRegExp(obj) { return Object.prototype.toString.apply(obj) === '[object RegExp]'; }, - isFunction: function(obj) { + isFunction: function isFunction(obj) { return Object.prototype.toString.apply(obj) === '[object Function]'; }, - escapeRegex: function(re) { + escapeRegex: function escapeRegex(re) { return re.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); }, - findInArray: function(array, predicate) { + findInArray: function findInArray(array, predicate) { if (this.isArray(array) && predicate) { for (var i = 0; i < array.length; i++) { var item = array[i]; @@ -3099,13 +3768,13 @@ return undefined; }, - jsonStringify: function(obj, censorKeywords) { + jsonStringify: function jsonStringify(obj, censorKeywords) { function censor(key, value) { return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value; } - return JSON.stringify(obj, censor, 2); + return (0, _stringify2.default)(obj, censor, 2); }, - addEventListener: function(element, eventName, handler) { + addEventListener: function addEventListener(element, eventName, handler) { if (element.addEventListener) { element.addEventListener(eventName, handler, false); } else if (element.attachEvent) { @@ -3114,7 +3783,7 @@ element["on" + eventName] = handler; } }, - removeEventListener: function(element, eventName, handler) { + removeEventListener: function removeEventListener(element, eventName, handler) { if (element.removeEventListener) { element.removeEventListener(eventName, handler, false); } else if (element.detachEvent) { @@ -3123,7 +3792,7 @@ element["on" + eventName] = null; } }, - preventDefault: function(e) { + preventDefault: function preventDefault(e) { e = e || window.event; if (e.preventDefault) { @@ -3132,7 +3801,7 @@ e.returnValue = false; } }, - stopPropagation: function(e) { + stopPropagation: function stopPropagation(e) { e = e || window.event; if (e.stopPropagation) { @@ -3141,7 +3810,7 @@ e.cancelBubble = true; } }, - getEventButton: function(e) { + getEventButton: function getEventButton(e) { var button = e.button; if ('which' in e) { return button; @@ -3151,7 +3820,7 @@ button === 4 ? 1 : // middle 2; // right }, - getMousePageXY: function(e) { + getMousePageXY: function getMousePageXY(e) { e = e || window.event; var pageX = e.pageX; @@ -3228,24 +3897,26 @@ })(module.exports); }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - }, {}], - 20: [function(_dereq_, module, exports) { + }, { + "babel-runtime/core-js/json/stringify": 1 + }], + 54: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM; + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'); module.exports = React.createClass({ displayName: 'exports', - getInitialState: function() { + getInitialState: function getInitialState() { return { canRender: false }; }, - canRender: function() { + canRender: function canRender() { return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function'; }, - drawChart: function() { + drawChart: function drawChart() { if (this.canRender()) { var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData(); var data = new google.visualization.DataTable(); @@ -3276,13 +3947,13 @@ } } }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.drawChart(); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.drawChart(); }, - render: function() { + render: function render() { if (this.canRender()) { return React.createElement('div', { className: 'chart', @@ -3297,10 +3968,10 @@ "react": "react", "react-dom": "react-dom" }], - 21: [function(_dereq_, module, exports) { + 55: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), utils = _dereq_('../orb.utils'); function createOverlay() { @@ -3314,22 +3985,22 @@ displayName: 'exports', statics: { - create: function() { + create: function create() { var dialogFactory = React.createFactory(Dialog); var overlay = createOverlay(); return { - show: function(props) { + show: function show(props) { ReactDOM.render(dialogFactory(props), overlay); } }; } }, overlayElement: null, - setOverlayClass: function(visible) { + setOverlayClass: function setOverlayClass(visible) { this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.overlayElement = ReactDOM.findDOMNode(this).parentNode; this.setOverlayClass(true); utils.addEventListener(this.overlayElement, 'click', this.close); @@ -3350,7 +4021,7 @@ dialogBodyElement.style.width = dWidth + 'px'; dialogBodyElement.style.height = dHeight - 45 + 'px'; }, - close: function(e) { + close: function close(e) { var target = e.target || e.srcElement; if (target == this.overlayElement || target.className === 'button-close') { utils.removeEventListener(this.overlayElement, 'click', this.close); @@ -3358,7 +4029,7 @@ this.setOverlayClass(false); } }, - render: function() { + render: function render() { if (this.props.comp) { var comp = React.createElement(this.props.comp.type, this.props.comp.props); var classes = this.props.theme.getDialogClasses(); @@ -3400,16 +4071,16 @@ }); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react": "react", "react-dom": "react-dom" }], - 22: [function(_dereq_, module, exports) { + 56: [function(_dereq_, module, exports) { - var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var ReactDOM = _dereq_('react-dom'), utils = _dereq_('../orb.utils'); - var dragManager = module.exports = (function() { + module.exports = function() { var _pivotComp = null; @@ -3484,11 +4155,11 @@ var _initialized = false; return { - init: function(pivotComp) { + init: function init(pivotComp) { _initialized = true; _pivotComp = pivotComp; }, - setDragElement: function(elem) { + setDragElement: function setDragElement(elem) { var prevDragElement = _currDragElement; _currDragElement = elem; @@ -3508,7 +4179,7 @@ } } }, - registerTarget: function(target, axetype, dragOverHandler, dargEndHandler) { + registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) { _dropTargets.push({ component: target, axetype: axetype, @@ -3516,7 +4187,7 @@ onDragEnd: dargEndHandler }); }, - unregisterTarget: function(target) { + unregisterTarget: function unregisterTarget(target) { var tindex; for (var i = 0; i < _dropTargets.length; i++) { if (_dropTargets[i].component == target) { @@ -3528,7 +4199,7 @@ _dropTargets.splice(tindex, 1); } }, - registerIndicator: function(indicator, axetype, position, dragOverHandler, dargEndHandler) { + registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) { _dropIndicators.push({ component: indicator, axetype: axetype, @@ -3537,7 +4208,7 @@ onDragEnd: dargEndHandler }); }, - unregisterIndicator: function(indicator) { + unregisterIndicator: function unregisterIndicator(indicator) { var iindex; for (var i = 0; i < _dropIndicators.length; i++) { if (_dropIndicators[i].component == indicator) { @@ -3549,7 +4220,7 @@ _dropIndicators.splice(iindex, 1); } }, - elementMoved: function() { + elementMoved: function elementMoved() { if (_currDragElement != null) { var dragNodeRect = _dragNode.getBoundingClientRect(); var foundTarget; @@ -3599,29 +4270,29 @@ } } }; - })(); + }(); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react-dom": "react-dom" }], - 23: [function(_dereq_, module, exports) { + 57: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), DragManager = _dereq_('./orb.react.DragManager.jsx'); module.exports = React.createClass({ displayName: 'DropIndicator', - getInitialState: function() { + getInitialState: function getInitialState() { DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd); return { isover: false }; }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { DragManager.unregisterIndicator(this); }, - onDragOver: function(callback) { + onDragOver: function onDragOver(callback) { if (this.isMounted()) { this.setState({ isover: true @@ -3630,7 +4301,7 @@ callback(); } }, - onDragEnd: function(callback) { + onDragEnd: function onDragEnd(callback) { if (this.isMounted()) { this.setState({ isover: false @@ -3639,7 +4310,7 @@ callback(); } }, - render: function() { + render: function render() { var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : ''); if (this.props.isFirst) { @@ -3663,12 +4334,12 @@ }); }, { - "./orb.react.DragManager.jsx": 22, + "./orb.react.DragManager.jsx": 56, "react": "react" }], - 24: [function(_dereq_, module, exports) { + 58: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), DragManager = _dereq_('./orb.react.DragManager.jsx'), DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'), axe = _dereq_('../orb.axe'), @@ -3677,19 +4348,19 @@ module.exports = React.createClass({ displayName: 'exports', - getInitialState: function() { + getInitialState: function getInitialState() { this.dtid = ++dtid; return { isover: false }; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { DragManager.unregisterTarget(this); }, - onDragOver: function(callback) { + onDragOver: function onDragOver(callback) { if (this.isMounted()) { this.setState({ isover: true @@ -3698,7 +4369,7 @@ callback(); } }, - onDragEnd: function(callback) { + onDragEnd: function onDragEnd(callback) { if (this.isMounted()) { this.setState({ isover: false @@ -3707,7 +4378,7 @@ callback(); } }, - render: function() { + render: function render() { var self = this; var buttons = this.props.buttons.map(function(button, index) { @@ -3779,14 +4450,14 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DragManager.jsx": 22, - "./orb.react.DropIndicator.jsx": 23, + "../orb.axe": 36, + "./orb.react.DragManager.jsx": 56, + "./orb.react.DropIndicator.jsx": 57, "react": "react" }], - 25: [function(_dereq_, module, exports) { + 59: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), DragManager = _dereq_('./orb.react.DragManager.jsx'), DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'), dtid = 0; @@ -3794,19 +4465,19 @@ module.exports = React.createClass({ displayName: 'exports', - getInitialState: function() { + getInitialState: function getInitialState() { this.dtid = ++dtid; return { isover: false }; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { DragManager.unregisterTarget(this); }, - onDragOver: function(callback) { + onDragOver: function onDragOver(callback) { if (this.isMounted()) { this.setState({ isover: true @@ -3815,7 +4486,7 @@ callback(); } }, - onDragEnd: function(callback) { + onDragEnd: function onDragEnd(callback) { if (this.isMounted()) { this.setState({ isover: false @@ -3824,7 +4495,7 @@ callback(); } }, - render: function() { + render: function render() { var self = this; var buttons = this.props.buttons.map(function(button, index) { @@ -3889,19 +4560,19 @@ }); }, { - "./orb.react.DragManager.jsx": 22, - "./orb.react.DropIndicator.jsx": 23, + "./orb.react.DragManager.jsx": 56, + "./orb.react.DropIndicator.jsx": 57, "react": "react" }], - 26: [function(_dereq_, module, exports) { + 60: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), utils = _dereq_('../orb.utils'); module.exports = React.createClass({ displayName: 'exports', - openOrClose: function(e) { + openOrClose: function openOrClose(e) { var valueNode = this.refs.valueElement; var valuesListNode = this.refs.valuesList; var target = e.target || e.srcElement; @@ -3912,21 +4583,21 @@ valuesListNode.style.display = 'none'; } }, - onMouseEnter: function() { + onMouseEnter: function onMouseEnter() { var valueNode = this.refs.valueElement; valueNode.className = "orb-tgl-btn-down"; valueNode.style.backgroundPosition = 'right center'; }, - onMouseLeave: function() { + onMouseLeave: function onMouseLeave() { this.refs.valueElement.className = ""; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { utils.addEventListener(document, 'click', this.openOrClose); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { utils.removeEventListener(document, 'click', this.openOrClose); }, - selectValue: function(e) { + selectValue: function selectValue(e) { var listNode = this.refs.valuesList; var target = e.target || e.srcElement; var isli = false; @@ -3949,7 +4620,7 @@ } } }, - render: function() { + render: function render() { function createSelectValueFunc(value) { return function() { this.selectValue(value); @@ -3993,13 +4664,13 @@ }); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react": "react" }], - 27: [function(_dereq_, module, exports) { + 61: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), Dropdown = _dereq_('./orb.react.Dropdown.jsx'), utils = _dereq_('../orb.utils'), filtering = _dereq_('../orb.filtering'), @@ -4011,20 +4682,20 @@ pgridwidget: null, values: null, filterManager: null, - getInitialState: function() { + getInitialState: function getInitialState() { this.pgridwidget = this.props.pivotTableComp.pgridwidget; return {}; }, - destroy: function() { + destroy: function destroy() { var container = ReactDOM.findDOMNode(this).parentNode; ReactDOM.unmountComponentAtNode(container); container.parentNode.removeChild(container); }, - onFilter: function(operator, term, staticValue, excludeStatic) { + onFilter: function onFilter(operator, term, staticValue, excludeStatic) { this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic); this.destroy(); }, - onMouseDown: function(e) { + onMouseDown: function onMouseDown(e) { var container = ReactDOM.findDOMNode(this).parentNode; var target = e.target || e.srcElement; while (target != null) { @@ -4036,7 +4707,7 @@ this.destroy(); }, - onMouseWheel: function(e) { + onMouseWheel: function onMouseWheel(e) { var valuesTable = this.refs.valuesTable; var target = e.target || e.srcElement; while (target != null) { @@ -4052,20 +4723,20 @@ this.destroy(); }, - componentWillMount: function() { + componentWillMount: function componentWillMount() { utils.addEventListener(document, 'mousedown', this.onMouseDown); utils.addEventListener(document, 'wheel', this.onMouseWheel); utils.addEventListener(window, 'resize', this.destroy); }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.filterManager.init(ReactDOM.findDOMNode(this)); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { utils.removeEventListener(document, 'mousedown', this.onMouseDown); utils.removeEventListener(document, 'wheel', this.onMouseWheel); utils.removeEventListener(window, 'resize', this.destroy); }, - render: function() { + render: function render() { var checkboxes = []; this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field)); @@ -4611,22 +5282,22 @@ } }, { - "../orb.filtering": 6, - "../orb.utils": 19, - "../orb.utils.dom": 18, - "./orb.react.Dropdown.jsx": 26, + "../orb.filtering": 40, + "../orb.utils": 53, + "../orb.utils.dom": 52, + "./orb.react.Dropdown.jsx": 60, "react": "react", "react-dom": "react-dom" }], - 28: [function(_dereq_, module, exports) { + 62: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), utils = _dereq_('../orb.utils'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var data = this.props.data; var headers = this.props.headers; var tableClasses = this.props.theme.getGridClasses(); @@ -4698,13 +5369,13 @@ }); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react": "react" }], - 29: [function(_dereq_, module, exports) { + 63: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'), DragManager = _dereq_('./orb.react.DragManager.jsx'), utils = _dereq_('../orb.utils'), @@ -4714,7 +5385,7 @@ module.exports = React.createClass({ displayName: 'PivotButton', - getInitialState: function() { + getInitialState: function getInitialState() { this.pbid = ++pbid; // initial state, all zero. @@ -4731,7 +5402,7 @@ dragging: false }; }, - onFilterMouseDown: function(e) { + onFilterMouseDown: function onFilterMouseDown(e) { // left mouse button only if (e.button !== 0) return; @@ -4756,7 +5427,7 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { if (this.props.pivotTableComp.pgrid.config.canMoveFields) { if (!this.state.mousedown) { // mouse not down, don't care about mouse up/move events. @@ -4769,14 +5440,14 @@ } } }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.props.pivotTableComp.registerThemeChanged(this.updateClasses); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses); utils.removeEventListener(document, 'mousemove', this.onMouseMove); }, - onMouseDown: function(e) { + onMouseDown: function onMouseDown(e) { // drag/sort with left mouse button if (e.button !== 0) return; @@ -4805,7 +5476,7 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - onMouseUp: function(e) { + onMouseUp: function onMouseUp(e) { var isdragged = this.state.dragging; @@ -4824,7 +5495,7 @@ this.props.pivotTableComp.sort(this.props.axetype, this.props.field); } }, - onMouseMove: function(e) { + onMouseMove: function onMouseMove(e) { // if the mouse is not down while moving, return (no drag) if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return; @@ -4855,10 +5526,10 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - updateClasses: function() { + updateClasses: function updateClasses() { ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton; }, - render: function() { + render: function render() { var self = this; var divstyle = { left: self.state.pos.x + 'px', @@ -4935,18 +5606,18 @@ }); }, { - "../orb.axe": 2, - "../orb.utils": 19, - "../orb.utils.dom": 18, - "./orb.react.DragManager.jsx": 22, - "./orb.react.FilterPanel.jsx": 27, + "../orb.axe": 36, + "../orb.utils": 53, + "../orb.utils.dom": 52, + "./orb.react.DragManager.jsx": 56, + "./orb.react.FilterPanel.jsx": 61, "react": "react", "react-dom": "react-dom" }], - 30: [function(_dereq_, module, exports) { + 64: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), uiheaders = _dereq_('../orb.ui.header'), domUtils = _dereq_('../orb.utils.dom'), _paddingLeft = null, @@ -4955,13 +5626,13 @@ module.exports = React.createClass({ displayName: 'exports', - expand: function() { + expand: function expand() { this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell); }, - collapse: function() { + collapse: function collapse() { this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell); }, - updateCellInfos: function() { + updateCellInfos: function updateCellInfos() { var node = ReactDOM.findDOMNode(this); var cell = this.props.cell; node.__orb = node.__orb || {}; @@ -5012,20 +5683,20 @@ node.__orb._borderRightWidth = 0; } }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.updateCellInfos(); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.updateCellInfos(); }, - shouldComponentUpdate: function(nextProps, nextState) { + shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) { if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) { return false; } return true; }, _latestVisibleState: false, - render: function() { + render: function render() { var self = this; var cell = this.props.cell; var divcontent = []; @@ -5085,7 +5756,7 @@ break; case 'cell-template-datavalue': value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value; - cellClick = function() { + cellClick = function cellClick() { self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id); }; break; @@ -5167,15 +5838,15 @@ } }, { - "../orb.ui.header": 15, - "../orb.utils.dom": 18, + "../orb.ui.header": 49, + "../orb.utils.dom": 52, "react": "react", "react-dom": "react-dom" }], - 31: [function(_dereq_, module, exports) { + 65: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), DragManager = _dereq_('./orb.react.DragManager.jsx'), SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'), Toolbar = _dereq_('./orb.react.Toolbar.jsx'), @@ -5194,7 +5865,7 @@ pgrid: null, pgridwidget: null, fontStyle: null, - getInitialState: function() { + getInitialState: function getInitialState() { DragManager.init(this); themeChangeCallbacks[this.id] = []; @@ -5204,27 +5875,27 @@ this.pgrid = this.pgridwidget.pgrid; return {}; }, - sort: function(axetype, field) { + sort: function sort(axetype, field) { this.pgridwidget.sort(axetype, field); }, - moveButton: function(button, newAxeType, position) { + moveButton: function moveButton(button, newAxeType, position) { this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position); }, - applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) { + applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) { this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic); }, - registerThemeChanged: function(compCallback) { + registerThemeChanged: function registerThemeChanged(compCallback) { if (compCallback) { themeChangeCallbacks[this.id].push(compCallback); } }, - unregisterThemeChanged: function(compCallback) { + unregisterThemeChanged: function unregisterThemeChanged(compCallback) { var i; if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) { themeChangeCallbacks[this.id].splice(i, 1); } }, - changeTheme: function(newTheme) { + changeTheme: function changeTheme(newTheme) { if (this.pgridwidget.pgrid.config.setTheme(newTheme)) { // notify self/sub-components of the theme change for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) { @@ -5232,16 +5903,16 @@ } } }, - updateClasses: function() { + updateClasses: function updateClasses() { var thisnode = ReactDOM.findDOMNode(this); var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); thisnode.className = classes.container; thisnode.children[1].className = classes.table; }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.synchronizeWidths(); }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true); this.fontStyle = { fontFamily: fontInfos[0], @@ -5250,7 +5921,7 @@ this.synchronizeWidths(); }, - synchronizeWidths: function() { + synchronizeWidths: function synchronizeWidths() { var chartStyle = SizingManager.synchronizeWidths(this); chartStyle.fontFamily = this.fontStyle.fontFamily; chartStyle.fontSize = this.fontStyle.fontSize; @@ -5260,7 +5931,7 @@ chartStyle: chartStyle }); }, - render: function() { + render: function render() { var self = this; @@ -5360,27 +6031,27 @@ }); }, { - "../orb.utils.dom": 18, - "./orb.react.Chart.jsx": 20, - "./orb.react.DragManager.jsx": 22, - "./orb.react.PivotTable.ColumnButtons.jsx": 33, - "./orb.react.PivotTable.RowButtons.jsx": 36, - "./orb.react.PivotTable.SizingManager.jsx": 38, - "./orb.react.PivotTable.UpperButtons.jsx": 39, - "./orb.react.Toolbar.jsx": 42, + "../orb.utils.dom": 52, + "./orb.react.Chart.jsx": 54, + "./orb.react.DragManager.jsx": 56, + "./orb.react.PivotTable.ColumnButtons.jsx": 67, + "./orb.react.PivotTable.RowButtons.jsx": 70, + "./orb.react.PivotTable.SizingManager.jsx": 72, + "./orb.react.PivotTable.UpperButtons.jsx": 73, + "./orb.react.Toolbar.jsx": 76, "react": "react", "react-dom": "react-dom" }], - 32: [function(_dereq_, module, exports) { + 66: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), PivotCell = _dereq_('./orb.react.PivotCell.jsx'), axe = _dereq_('../orb.axe'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var lastCellIndex = this.props.row.length - 1; @@ -5441,13 +6112,13 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotCell.jsx": 30, + "../orb.axe": 36, + "./orb.react.PivotCell.jsx": 64, "react": "react" }], - 33: [function(_dereq_, module, exports) { + 67: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), PivotButton = _dereq_('./orb.react.PivotButton.jsx'), DropTarget = _dereq_('./orb.react.DropTarget.jsx'); @@ -5455,7 +6126,7 @@ module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -5477,21 +6148,21 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DropTarget.jsx": 24, - "./orb.react.PivotButton.jsx": 29, + "../orb.axe": 36, + "./orb.react.DropTarget.jsx": 58, + "./orb.react.PivotButton.jsx": 63, "react": "react" }], - 34: [function(_dereq_, module, exports) { + 68: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), PivotRow = _dereq_('./orb.react.PivotRow.jsx'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr'; @@ -5532,20 +6203,20 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotRow.jsx": 32, + "../orb.axe": 36, + "./orb.react.PivotRow.jsx": 66, "react": "react" }], - 35: [function(_dereq_, module, exports) { + 69: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), PivotRow = _dereq_('./orb.react.PivotRow.jsx'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var layoutInfos = { @@ -5584,13 +6255,13 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotRow.jsx": 32, + "../orb.axe": 36, + "./orb.react.PivotRow.jsx": 66, "react": "react" }], - 36: [function(_dereq_, module, exports) { + 70: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), PivotButton = _dereq_('./orb.react.PivotButton.jsx'), DropTarget = _dereq_('./orb.react.DropTarget.jsx'), DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'), @@ -5599,7 +6270,7 @@ module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -5628,23 +6299,23 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DropTarget.jsx": 24, - "./orb.react.DropTargetVertical.jsx": 25, - "./orb.react.PivotButton.jsx": 29, + "../orb.axe": 36, + "./orb.react.DropTarget.jsx": 58, + "./orb.react.DropTargetVertical.jsx": 59, + "./orb.react.PivotButton.jsx": 63, "react": "react" }], - 37: [function(_dereq_, module, exports) { + 71: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), PivotRow = _dereq_('./orb.react.PivotRow.jsx'), axe = _dereq_('../orb.axe'); module.exports = React.createClass({ displayName: 'exports', - setColGroup: function(widths) { + setColGroup: function setColGroup(widths) { var node = ReactDOM.findDOMNode(this); var colGroupNode = this.refs.colgroup; node.style.tableLayout = 'auto'; @@ -5657,7 +6328,7 @@ } node.style.tableLayout = 'fixed'; }, - render: function() { + render: function render() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr'; @@ -5700,25 +6371,25 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotRow.jsx": 32, + "../orb.axe": 36, + "./orb.react.PivotRow.jsx": 66, "react": "react", "react-dom": "react-dom" }], - 38: [function(_dereq_, module, exports) { + 72: [function(_dereq_, module, exports) { - var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var ReactDOM = _dereq_('react-dom'), domUtils = _dereq_('../orb.utils.dom'); var SizingManager = module.exports = { - synchronizeWidths: function(pivotComp) { + synchronizeWidths: function synchronizeWidths(pivotComp) { if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) { return SizingManager.synchronizePivotChartWidths(pivotComp); } else { SizingManager.synchronizePivotTableWidths(pivotComp); } }, - synchronizePivotChartWidths: function(pivotComp) { + synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) { var pivotWrapperTable = pivotComp.refs.pivotWrapperTable, pivot = new ComponentSizeInfo(pivotComp.refs.pivot), topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons), @@ -5738,7 +6409,7 @@ height: chartHeight }; }, - synchronizePivotTableWidths: function(pivotComp) { + synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) { var pivotWrapperTable = pivotComp.refs.pivotWrapperTable, pivot = new ComponentSizeInfo(pivotComp.refs.pivot), @@ -5992,12 +6663,12 @@ } }, { - "../orb.utils.dom": 18, + "../orb.utils.dom": 52, "react-dom": "react-dom" }], - 39: [function(_dereq_, module, exports) { + 73: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), PivotButton = _dereq_('./orb.react.PivotButton.jsx'), DropTarget = _dereq_('./orb.react.DropTarget.jsx'), axe = _dereq_('../orb.axe'); @@ -6005,7 +6676,7 @@ module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -6096,15 +6767,15 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DropTarget.jsx": 24, - "./orb.react.PivotButton.jsx": 29, + "../orb.axe": 36, + "./orb.react.DropTarget.jsx": 58, + "./orb.react.PivotButton.jsx": 63, "react": "react" }], - 40: [function(_dereq_, module, exports) { + 74: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), DragManager = _dereq_('./orb.react.DragManager.jsx'), SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'), Toolbar = _dereq_('./orb.react.Toolbar.jsx'), @@ -6129,7 +6800,7 @@ pgrid: null, pgridwidget: null, fontStyle: null, - getInitialState: function() { + getInitialState: function getInitialState() { DragManager.init(this); themeChangeCallbacks[this.id] = []; @@ -6139,33 +6810,33 @@ this.pgrid = this.pgridwidget.pgrid; return {}; }, - sort: function(axetype, field) { + sort: function sort(axetype, field) { this.pgridwidget.sort(axetype, field); }, - moveButton: function(button, newAxeType, position) { + moveButton: function moveButton(button, newAxeType, position) { this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position); }, - toggleSubtotals: function(axetype) { + toggleSubtotals: function toggleSubtotals(axetype) { this.pgridwidget.toggleSubtotals(axetype); }, - toggleGrandtotal: function(axetype) { + toggleGrandtotal: function toggleGrandtotal(axetype) { this.pgridwidget.toggleGrandtotal(axetype); }, - applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) { + applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) { this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic); }, - registerThemeChanged: function(compCallback) { + registerThemeChanged: function registerThemeChanged(compCallback) { if (compCallback) { themeChangeCallbacks[this.id].push(compCallback); } }, - unregisterThemeChanged: function(compCallback) { + unregisterThemeChanged: function unregisterThemeChanged(compCallback) { var i; if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) { themeChangeCallbacks[this.id].splice(i, 1); } }, - changeTheme: function(newTheme) { + changeTheme: function changeTheme(newTheme) { if (this.pgridwidget.pgrid.config.setTheme(newTheme)) { // notify self/sub-components of the theme change for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) { @@ -6173,16 +6844,16 @@ } } }, - updateClasses: function() { + updateClasses: function updateClasses() { var thisnode = ReactDOM.findDOMNode(this); var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); thisnode.className = classes.container; thisnode.children[1].className = classes.table; }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.synchronizeWidths(); }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true); this.fontStyle = { fontFamily: fontInfos[0], @@ -6208,7 +6879,7 @@ this.synchronizeWidths(); }, - onWheel: function(e) { + onWheel: function onWheel(e) { var elem; var scrollbar; var amount; @@ -6226,12 +6897,12 @@ utils.preventDefault(e); } }, - synchronizeWidths: function() { + synchronizeWidths: function synchronizeWidths() { SizingManager.synchronizeWidths(this); this.refs.horizontalScrollBar.refresh(); this.refs.verticalScrollBar.refresh(); }, - render: function() { + render: function render() { var self = this; @@ -6403,32 +7074,32 @@ }); }, { - "../orb.utils": 19, - "../orb.utils.dom": 18, - "./orb.react.DragManager.jsx": 22, - "./orb.react.PivotTable.ColumnButtons.jsx": 33, - "./orb.react.PivotTable.ColumnHeaders.jsx": 34, - "./orb.react.PivotTable.DataCells.jsx": 35, - "./orb.react.PivotTable.RowButtons.jsx": 36, - "./orb.react.PivotTable.RowHeaders.jsx": 37, - "./orb.react.PivotTable.SizingManager.jsx": 38, - "./orb.react.PivotTable.UpperButtons.jsx": 39, - "./orb.react.ScrollBars.jsx": 41, - "./orb.react.Toolbar.jsx": 42, + "../orb.utils": 53, + "../orb.utils.dom": 52, + "./orb.react.DragManager.jsx": 56, + "./orb.react.PivotTable.ColumnButtons.jsx": 67, + "./orb.react.PivotTable.ColumnHeaders.jsx": 68, + "./orb.react.PivotTable.DataCells.jsx": 69, + "./orb.react.PivotTable.RowButtons.jsx": 70, + "./orb.react.PivotTable.RowHeaders.jsx": 71, + "./orb.react.PivotTable.SizingManager.jsx": 72, + "./orb.react.PivotTable.UpperButtons.jsx": 73, + "./orb.react.ScrollBars.jsx": 75, + "./orb.react.Toolbar.jsx": 76, "react": "react", "react-dom": "react-dom" }], - 41: [function(_dereq_, module, exports) { + 75: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), utils = _dereq_('../orb.utils'), domUtils = _dereq_('../orb.utils.dom'); var scrollBarMixin = { scrollEvent: null, scrollClient: null, - getInitialState: function() { + getInitialState: function getInitialState() { // initial state, all zero. return { size: 16, @@ -6436,10 +7107,10 @@ thumbOffset: 0 }; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.scrollEvent = new ScrollEvent(this); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { if (!this.state.mousedown) { // mouse not down, don't care about mouse up/move events. utils.removeEventListener(document, 'mousemove', this.onMouseMove); @@ -6450,11 +7121,11 @@ utils.addEventListener(document, 'mouseup', this.onMouseUp); } }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { utils.removeEventListener(document, 'mousemove', this.onMouseMove); utils.removeEventListener(document, 'mouseup', this.onMouseUp); }, - onMouseDown: function(e) { + onMouseDown: function onMouseDown(e) { // drag with left mouse button if (e.button !== 0) return; @@ -6475,7 +7146,7 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - onMouseUp: function() { + onMouseUp: function onMouseUp() { if (this.state.mousedown) { var thumbElem = this.refs.scrollThumb; @@ -6486,7 +7157,7 @@ mousedown: false }); }, - onMouseMove: function(e) { + onMouseMove: function onMouseMove(e) { // if the mouse is not down while moving, return (no drag) if (!this.state.mousedown) return; @@ -6500,22 +7171,22 @@ this.scroll(amount); }, - getScrollSize: function() { + getScrollSize: function getScrollSize() { if (this.scrollClient != null) { return domUtils.getSize(this.scrollClient)[this.sizeProp]; } else { return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp]; } }, - setScrollClient: function(scrollClient, scrollCallback) { + setScrollClient: function setScrollClient(scrollClient, scrollCallback) { this.scrollClient = scrollClient; this.scrollEvent.callback = scrollCallback; }, - getScrollPercent: function() { + getScrollPercent: function getScrollPercent() { var maxOffset = this.getScrollSize() - this.state.size; return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset; }, - refresh: function() { + refresh: function refresh() { if (this.scrollClient) { var scrolledElement = this.scrollClient.children[0]; @@ -6532,7 +7203,7 @@ }, this.scrollEvent.raise); } }, - scroll: function(amount, mode) { + scroll: function scroll(amount, mode) { if (this.state.size > 0) { if (mode == 1) amount *= 8; @@ -6550,12 +7221,12 @@ } return false; }, - onWheel: function(e) { + onWheel: function onWheel(e) { this.scroll(e.deltaY, e.deltaMode); utils.stopPropagation(e); utils.preventDefault(e); }, - render: function() { + render: function render() { var self = this; var thumbStyle = { @@ -6621,14 +7292,14 @@ }); }, { - "../orb.utils": 19, - "../orb.utils.dom": 18, + "../orb.utils": 53, + "../orb.utils.dom": 52, "react": "react", "react-dom": "react-dom" }], - 42: [function(_dereq_, module, exports) { + 76: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), domUtils = _dereq_('../orb.utils.dom'); @@ -6636,19 +7307,19 @@ displayName: 'exports', _toInit: [], - componentDidMount: function() { + componentDidMount: function componentDidMount() { for (var i = 0; i < this._toInit.length; i++) { var btn = this._toInit[i]; btn.init(this.props.pivotTableComp, this.refs[btn.ref]); } }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { for (var i = 0; i < this._toInit.length; i++) { var btn = this._toInit[i]; btn.init(this.props.pivotTableComp, this.refs[btn.ref]); } }, - createCallback: function(action) { + createCallback: function createCallback(action) { if (action != null) { var pgridComponent = this.props.pivotTableComp; return function(e) { @@ -6657,7 +7328,7 @@ } return null; }, - render: function() { + render: function render() { var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -6714,7 +7385,7 @@ var excelExport = _dereq_('../orb.export.excel'); var defaultToolbarConfig = { - exportToExcel: function(pgridComponent, button) { + exportToExcel: function exportToExcel(pgridComponent, button) { var a = document.createElement('a'); a.download = "orbpivotgrid.xls"; a.href = excelExport(pgridComponent.props.pgridwidget); @@ -6722,19 +7393,19 @@ a.click(); document.body.removeChild(a); }, - expandAllRows: function(pgridComponent, button) { + expandAllRows: function expandAllRows(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true); }, - collapseAllRows: function(pgridComponent, button) { + collapseAllRows: function collapseAllRows(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false); }, - expandAllColumns: function(pgridComponent, button) { + expandAllColumns: function expandAllColumns(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true); }, - collapseAllColumns: function(pgridComponent, button) { + collapseAllColumns: function collapseAllColumns(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false); }, - updateSubtotalsButton: function(axetype, pgridComponent, button) { + updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) { var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype); button.style.display = subTotalsState === null ? 'none' : ''; @@ -6751,20 +7422,20 @@ domUtils.removeClass(button, classToRemove); domUtils.addClass(button, classToAdd); }, - initSubtotals: function(axetype) { + initSubtotals: function initSubtotals(axetype) { var self = this; return function(pgridComponent, button) { self.updateSubtotalsButton(axetype, pgridComponent, button); }; }, - toggleSubtotals: function(axetype) { + toggleSubtotals: function toggleSubtotals(axetype) { var self = this; return function(pgridComponent, button) { pgridComponent.toggleSubtotals(axetype); self.updateSubtotalsButton(axetype, pgridComponent, button); }; }, - updateGrandtotalButton: function(axetype, pgridComponent, button) { + updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) { var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype); button.style.display = subTotalsState === null ? 'none' : ''; @@ -6781,13 +7452,13 @@ domUtils.removeClass(button, classToRemove); domUtils.addClass(button, classToAdd); }, - initGrandtotal: function(axetype) { + initGrandtotal: function initGrandtotal(axetype) { var self = this; return function(pgridComponent, button) { self.updateGrandtotalButton(axetype, pgridComponent, button); }; }, - toggleGrandtotal: function(axetype) { + toggleGrandtotal: function toggleGrandtotal(axetype) { var self = this; return function(pgridComponent, button) { pgridComponent.toggleGrandtotal(axetype); @@ -6857,10 +7528,10 @@ }]; }, { - "../orb.axe": 2, - "../orb.export.excel": 5, - "../orb.utils.dom": 18, + "../orb.axe": 36, + "../orb.export.excel": 39, + "../orb.utils.dom": 52, "react": "react" }] - }, {}, [7])(7) -}); + }, {}, [41])(41) +}); \ No newline at end of file diff --git a/dist/orb.min.css b/dist/orb.min.css index f9d24b8..dade630 100644 --- a/dist/orb.min.css +++ b/dist/orb.min.css @@ -1 +1 @@ -.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:right}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700} \ No newline at end of file +.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:100%}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700} \ No newline at end of file diff --git a/dist/orb.min.js b/dist/orb.min.js index 7ad9ae2..3572945 100644 --- a/dist/orb.min.js +++ b/dist/orb.min.js @@ -1,15 +1,15 @@ /** * orb v1.1.0, Pivot table javascript library. * - * Copyright (c) 2014-2015 Najmeddine Nouri . + * Copyright (c) 2014-2016 Najmeddine Nouri . * * @version v1.1.0 * @link http://orbjs.net/ * @license MIT */ -"use strict";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.orb=e()}}(function(){return function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[i]={exports:{}};t[i][0].call(u.exports,function(e){var n=t[i][1][e];return o(n?n:e)},u,u.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i0&&(r||s>1?(o(e,t,n,function(e){i+=e}),i/=s,o(e,t,n,function(e){a+=(e-i)*(e-i)}),a/=r?s:s-1):a=NaN),a}function o(e,t,n,r){var o="all"===t;if(t=o?n:t,t.length>0)for(var a=0;ae)&&(r=e)}),r},max:function(e,t,n){var r=null;return o(e,t,n,function(e){(null==r||e>r)&&(r=e)}),r},avg:function(e,t,n){var r=0,a=("all"===t?n:t).length;return a>0&&(o(e,t,n,function(e){r+=e}),r/=a),r},prod:function(e,t,n){var r,a=("all"===t?n:t).length;return a>0&&(r=1,o(e,t,n,function(e){r*=e})),r},stdev:function(e,t,n){return Math.sqrt(r(e,t,n,!1))},stdevp:function(e,t,n){return Math.sqrt(r(e,t,n,!0))},"var":function(e,t,n){return r(e,t,n,!1)},varp:function(e,t,n){return r(e,t,n,!0)}}},{}],2:[function(e,t,n){var r=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function n(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&r.isArray(e)&&e.length>0)for(var t=0,n=e.length;n>t;t++)for(var a=e[t],i=s.root,c=0;ct.name?1:0})})},t.exports.Type=a},{"./orb.dimension":4,"./orb.utils":19}],3:[function(e,t,n){function r(e,t,n){for(var r=0;r-1?e[n]:null}function r(e,t){for(var n=0;n=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,n(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,n(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,n(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return n(o.allFields,e)},this.getRowField=function(e){return n(o.rowFields,e)},this.getColumnField=function(e){return n(o.columnFields,e)},this.getDataField=function(e){return n(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=u.ownProperties(e),n=[],r=0;r',l="";t.exports=function(e){function t(e){return"'+e+""}function n(e,n,r,o){var a,i=o||"";for(a=0;n>a;a++)i+="";for(i+=e.reduce(function(e,n){return e+=t(n.caption)},""),a=0;r>a;a++)i+="";return i+""}function c(e){return r.btoa(unescape(encodeURIComponent(e)))}var u=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',v='style="background-color: '+g+';" bgcolor="'+g+'"',b=Math.max(u.dataFields.length+1,e.layout.pivotTable.width),y=n(u.dataFields,0,b-u.dataFields.length,'Data'),x='',w=n(u.columnFields,e.layout.rowHeaders.width,b-(e.layout.rowHeaders.width+u.columnFields.length)),T=function(){for(var n,r="",a=0;a";if(a";else s+=u.rowFields.reduce(function(e,n){return e+=t(n.caption)},"");s+=i.reduce(function(e,t){var n=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+n+""},""),r+=s+""}return r}(),C=function(){for(var t="",n=0;n";o+=r.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[n];o+=a.reduce(function(e,t,n){var r=u.dataFields[n%=u.dataFields.length].formatFunc,o=null==t.value?"":r?r()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+c(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":12,"./orb.ui.header":15,"./orb.utils":19}],6:[function(e,t,n){var r=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,n,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&r.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=n,this.excludeStatic=i,this.test=function(e){if(r.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue===!1||s.staticValue===o.NONE?!1:!0},this.isAlwaysTrue=function(){return!(s.term||r.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(r.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(r.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":19}],7:[function(e,t,n){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":5,"./orb.pgrid":8,"./orb.query":10,"./orb.ui.pgridwidget":16,"./orb.utils":19}],8:[function(e,t,n){var r=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),c=t.exports=function(e){function t(e){e!==!1&&n(),f.rows.update(),f.columns.update(),p(),f.publish(c.EVENT_UPDATED)}function n(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var c=t.indexOf(l);c>=0&&(e[s]=0-(l+2),i.push(l))}}}var u,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(r)for(var h=0;h0)for(var r=0,o=[f.columns.root];rp&&(h[c].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,r++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],n=0;n1){l.isNumber(n[0])||l.isDate(n[0])?n.sort(function(e,t){return e?t?e-t:1:t?-1:0}):n.sort();for(var c=0;c0?" - ":"")+e[n].caption;return t}for(var t=f.config,n=e(t.columnFields),r=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var n,r=[],a=!0,i=0;i0){for(n=0;n0){var n=i.headers[i.headers.length-1],r=n[0];if(r){for(var o,s=r.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),n(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(r.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(r.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":2,"./orb.ui.axe":13,"./orb.ui.header":15}],15:[function(e,t,n){function r(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var n=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:n="empty";break;case i.INNER:n="header "+n;break;case i.WRAPPER:n="header "+n;break;case i.SUB_TOTAL:n="header header-st "+n;break;case i.GRAND_TOTAL:n="header header-gt "+n; -}return n},getCellClass:function(e,t){var n="";switch(e){case i.GRAND_TOTAL:n="cell-gt";break;case i.SUB_TOTAL:n=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:n=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return n}};t.exports.header=function(e,t,n,a,s,l){function c(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var n=f.parent;null!=n&&(!n.dim.field.subTotal.visible||null!=n.subtotalHeader&&n.subtotalHeader.expanded);)n=n.parent;return null==n||null==n.subtotalHeader?t:n.subtotalHeader.expanded}function u(e){var t,n=0,r=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?n.value:o.value:e.config.dataFields[0],r.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){r.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){r.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":2,"./orb.state":11}],16:[function(e,t,n){var r="undefined"==typeof window?e("react-dom"):window.ReactDOM,o=e("./orb.axe"),a=e("./orb.pgrid"),i=e("./orb.ui.header"),s=e("./orb.ui.rows"),l=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),u=e("./react/orb.react.PivotChart.jsx"),d=e("./react/orb.react.PivotTable.jsx"),p=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){m.pgrid.subscribe(a.EVENT_UPDATED,h),m.pgrid.subscribe(a.EVENT_SORT_CHANGED,h),m.pgrid.subscribe(a.EVENT_CONFIG_CHANGED,h),n()}function n(){function e(e,t){return function(){return e()&&t()}}m.rows=new s(m.pgrid.rows),m.columns=new l(m.pgrid.columns);var t=m.rows.headers,n=m.columns.leafsHeaders;m.layout={rowHeaders:{width:(m.pgrid.rows.fields.length||1)+("rows"===m.pgrid.config.dataHeadersLocation&&m.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:m.columns.leafsHeaders.length,height:(m.pgrid.columns.fields.length||1)+("columns"===m.pgrid.config.dataHeadersLocation&&m.pgrid.config.dataFieldsCount>1?1:0)}},m.layout.pivotTable={width:m.layout.rowHeaders.width+m.layout.columnHeaders.width,height:m.layout.rowHeaders.height+m.layout.columnHeaders.height};var r,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return m.pgrid.filteredDataSource[e]});n=e.rowType===i.HeaderType.GRAND_TOTAL&&e.colType===i.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===i.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===i.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:n,comp:{type:p,props:{headers:m.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:m.pgrid.config.theme}},theme:m.pgrid.config.theme,style:g.fontStyle})}},t()}},{"./orb.axe":2,"./orb.pgrid":8,"./orb.ui.cols":14,"./orb.ui.header":15,"./orb.ui.rows":17,"./react/orb.react.Dialog.jsx":21,"./react/orb.react.Grid.jsx":28,"./react/orb.react.PivotChart.jsx":31,"./react/orb.react.PivotTable.jsx":40,"react-dom":"react-dom"}],17:[function(e,t,n){var r=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var n=e[e.length-1],r=0;r0)for(var s=e.length-1,l=e[s],c=l.length>0?l[l.length-1]:null,u=0;u0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(n(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),n(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(r.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(r.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":2,"./orb.ui.axe":13,"./orb.ui.header":15}],18:[function(e,t,n){function r(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),n=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-n.left,y:t.top-n.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,n){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(r=t(e[o],o),!r||n===!0);o++);return r},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var n=0;n-1?void 0:n}return JSON.stringify(e,n,2)},addEventListener:function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},removeEventListener:function(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,n=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:n}}},function(t){function n(e){this.message=e}var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.name="InvalidCharacterError",t.btoa=e&&e.btoa?function(t){return e.btoa(t)}:function(e){for(var t,o,a=String(e),i=0,s=r,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&t>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new n("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");t=t<<8|o}return l},t.atob=e&&e.atob?function(t){return e.atob(t)}:function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new n("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=t.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=r.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM;t.exports=r.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var n=0;no?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(r>l?(r-l)/2:0)+"px",e.style.left=(n>s?(n-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;(t==this.overlayElement||"button-close"===t.className)&&(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":19,react:"react","react-dom":"react-dom"}],22:[function(e,t,n){var r="undefined"==typeof window?e("react-dom"):window.ReactDOM,o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){c?i(c,function(){c=e,a(e,t)}):(c=e,a(e,t))}function n(e){u?i(u,function(){u=e,a(e)}):(u=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,c=null,u=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(c){var a=null!=u?u.position:null;s.moveButton(o,c.component.props.axetype,a)}d=null,t(null),n(null)}else d=r.findDOMNode(l)},registerTarget:function(e,t,n,r){p.push({component:e,axetype:t,onDragOver:n,onDragEnd:r})},unregisterTarget:function(e){for(var t,n=0;n0&&(t=s[s.length-1])}n(t)})}}}}()},{"../orb.utils":19,"react-dom":"react-dom"}],23:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.DragManager.jsx");t.exports=r.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),r.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":22,react:"react"}],24:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=r.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,n){return n=h&&c.pageX=f&&c.pageY=r&&(e.style.width=m+"px"),v>=o&&(e.style.height=v+"px",t.tBodies[0].style.height=p.bottom-p.top+g.y+"px"),s.stopPropagation(l),s.preventDefault(l)}},s.addEventListener(n,"mousedown",this.resizeMouseDown),s.addEventListener(document,"mouseup",this.resizeMouseUp),s.addEventListener(document,"mousemove",this.resizeMouseMove)}var i,u,d=this,p="indeterminate",h=!1,f=!1,g=l.Operators.MATCH,m="",v={filterContainer:null,checkboxes:{},searchBox:null,operatorBox:null,allCheckbox:null,addCheckbox:null,enableRegexButton:null,clearSearchButton:null,okButton:null,cancelButton:null,resizeGrip:null};this.init=function(e){v.filterContainer=e,v.checkboxes={},v.searchBox=v.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0],v.clearSearchButton=v.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0],v.operatorBox=v.filterContainer.rows[0].cells[0].children[0],v.okButton=v.filterContainer.rows[2].cells[0].children[0],v.cancelButton=v.filterContainer.rows[2].cells[0].children[1],v.resizeGrip=v.filterContainer.rows[2].cells[1].children[0];for(var t=v.filterContainer.rows[1].cells[0].children[0].rows,n=0;ni/2+1,r=0;r=0;c.checked=t.toExclude?!u:u}}},this.updateAllCheckbox=function(){if(!h){for(var t=null,n=0;n0){for(var i=[],s=0;s0)for(var l=0;l2&&(n+=" header-gt-exp")),e.leftmost&&(n+=" "+("cell-template-datavalue"===t.template?"cell":"header")+"-leftmost"),e.topmost&&(n+=" cell-topmost"),n}var o="undefined"==typeof window?e("react"):window.React,a="undefined"==typeof window?e("react-dom"):window.ReactDOM,i=e("../orb.ui.header"),s=e("../orb.utils.dom"),l=null,c=null;t.exports=o.createClass({displayName:"exports",expand:function(){this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell)},collapse:function(){this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell)},updateCellInfos:function(){var e=a.findDOMNode(this),t=this.props.cell;if(e.__orb=e.__orb||{},t.visible()){var n=this.refs.cellContent,r=[],o=null==l,i=!this.props.leftmost&&null==c,u=e.textContent||e.innerText;if(o&&r.push("padding-left"),i&&r.push("border-left-width"),r.length>0){var d=s.getStyle(e,r,!0);o&&(l=parseFloat(d[0])),i&&(c=parseFloat(d[o?1:0]))}s.removeClass(e,"cell-hidden"),e.__orb._visible=!0,u==e.__orb._lastText&&e.__orb._textWidth||(e.__orb._lastText=u,e.__orb._textWidth=s.getSize(n).width),e.__orb._colSpan=this.props.cell.hspan(!0)||1,e.__orb._rowSpan=this.props.cell.vspan(!0)||1,e.__orb._paddingLeft=l,e.__orb._paddingRight=l,e.__orb._borderLeftWidth=this.props.leftmost?0:c,e.__orb._borderRightWidth=0}else e.__orb._visible=!1},componentDidMount:function(){this.updateCellInfos()},componentDidUpdate:function(){this.updateCellInfos()},shouldComponentUpdate:function(e,t){return!e.cell||e.cell!=this.props.cell||this._latestVisibleState||e.cell.visible()?!0:!1},_latestVisibleState:!1,render:function(){var e,t,n=this,a=this.props.cell,s=[],l=!1;switch(this._latestVisibleState=a.visible(),a.template){case"cell-template-row-header":case"cell-template-column-header":var c=a.type===i.HeaderType.WRAPPER&&a.dim.field.subTotal.visible&&a.dim.field.subTotal.collapsible,u=a.type===i.HeaderType.SUB_TOTAL&&!a.expanded;c||u?(l=!0,s.push(o.createElement("table",{key:"header-value",ref:"cellContent"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"orb-tgl-btn"},o.createElement("div",{className:"orb-tgl-btn-"+(c?"down":"right"),onClick:c?this.collapse:this.expand})),o.createElement("td",{className:"hdr-val"},o.createElement("div",{dangerouslySetInnerHTML:{__html:a.value||" "}}))))))):e=(a.value||" ")+(a.type===i.HeaderType.SUB_TOTAL?" Total":"");break;case"cell-template-dataheader":e=a.value.caption;break;case"cell-template-datavalue":e=a.datafield&&a.datafield.formatFunc?a.datafield.formatFunc()(a.value):a.value,t=function(){n.props.pivotTableComp.pgridwidget.drilldown(a,n.props.pivotTableComp.id)}}if(!l){var d;switch(a.template){case"cell-template-datavalue":d="cell-data";break;default:"cell-template-dataheader"!=a.template&&a.type!==i.HeaderType.GRAND_TOTAL&&(d="hdr-val")}s.push(o.createElement("div",{key:"cell-value",ref:"cellContent",className:d},o.createElement("div",{dangerouslySetInnerHTML:{__html:e||" "}})))}return o.createElement("td",{className:r(this.props),onDoubleClick:t,colSpan:a.hspan(),rowSpan:a.vspan()},o.createElement("div",null,s))}})},{"../orb.ui.header":15,"../orb.utils.dom":18,react:"react","react-dom":"react-dom"}],31:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM,a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=(e("./orb.react.Toolbar.jsx"),e("./orb.react.PivotTable.UpperButtons.jsx")),l=e("./orb.react.PivotTable.ColumnButtons.jsx"),c=e("./orb.react.PivotTable.RowButtons.jsx"),u=e("./orb.react.Chart.jsx"),d=e("../orb.utils.dom"),p=1,h={};t.exports=r.createClass({displayName:"exports",id:p++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),h[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,n){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,n)},applyFilter:function(e,t,n,r,o){this.pgridwidget.applyFilter(e,t,n,r,o)},registerThemeChanged:function(e){e&&h[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=h[this.id].indexOf(e))>=0&&h[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t0&&!n&&i.lastLeftMostCellVSpan--,r.createElement("tr",{style:s},e)}})},{"../orb.axe":2,"./orb.react.PivotCell.jsx":30,react:"react"}],33:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("./orb.react.PivotButton.jsx"),i=e("./orb.react.DropTarget.jsx");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,n=t.columnFields.map(function(t,n){return r.createElement(a,{key:t.name,field:t,axetype:o.Type.COLUMNS,position:n,pivotTableComp:e.props.pivotTableComp})});return r.createElement(i,{buttons:n,axetype:o.Type.COLUMNS})}})},{"../orb.axe":2,"./orb.react.DropTarget.jsx":24,"./orb.react.PivotButton.jsx":29,react:"react"}],34:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,n=0===t.columns.headers.length?"":" columns-cntr",i={lastLeftMostCellVSpan:0,topMostCells:{}},s=t.columns.headers.map(function(t,n){return r.createElement(a,{key:n,row:t,axetype:o.Type.COLUMNS,pivotTableComp:e.props.pivotTableComp,layoutInfos:i})});return r.createElement("div",{className:"inner-table-container"+n,onWheel:this.props.pivotTableComp.onWheel},r.createElement("table",{className:"inner-table"},r.createElement("colgroup",null),r.createElement("tbody",null,s)))}})},{"../orb.axe":2,"./orb.react.PivotRow.jsx":32,react:"react"}],35:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,n={lastLeftMostCellVSpan:0,topMostCells:{}},i=t.dataRows.map(function(t,i){return r.createElement(a,{key:i,row:t,axetype:o.Type.DATA,layoutInfos:n,pivotTableComp:e.props.pivotTableComp})});return r.createElement("div",{className:"inner-table-container data-cntr",onWheel:this.props.pivotTableComp.onWheel},r.createElement("table",{className:"inner-table"},r.createElement("colgroup",null),r.createElement("tbody",null,i)))}})},{"../orb.axe":2,"./orb.react.PivotRow.jsx":32,react:"react"}],36:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("./orb.react.DropTargetVertical.jsx"),s=e("../orb.axe");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,n=t.rowFields.map(function(t,n){return r.createElement(o,{key:t.name,field:t,axetype:s.Type.ROWS,position:n,pivotTableComp:e.props.pivotTableComp})});return t.chartMode.enabled?r.createElement(i,{buttons:n,axetype:s.Type.ROWS}):r.createElement(a,{buttons:n,axetype:s.Type.ROWS})}})},{"../orb.axe":2,"./orb.react.DropTarget.jsx":24,"./orb.react.DropTargetVertical.jsx":25,"./orb.react.PivotButton.jsx":29,react:"react"}],37:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM,a=e("./orb.react.PivotRow.jsx"),i=e("../orb.axe");t.exports=r.createClass({displayName:"exports",setColGroup:function(e){var t=o.findDOMNode(this),n=this.refs.colgroup;t.style.tableLayout="auto",n.innerHTML="";for(var r=0;r0&&(s.w+=e,s.colWidths[s.colWidths.length-1]+=e)},"table"===n&&o(this)}function o(e){if(e&&e.node){for(var t=e.node,n=[],r=0;r1&&l.__orb._rowSpan>=t.rows.length-r,0);u0;)i.inhibit--,a++,i=n[a];n.length-1n[a].width&&(n[a].width=c),n[a].inhibit=l.__orb._rowSpan-1,a++}}for(i=n[a];i;)i.inhibit>0&&i.inhibit--,a++,i=n[a]}e.w=0,e.colWidths=n.map(function(t,n){return e.w+=t.width,t.width})}}var a="undefined"==typeof window?e("react-dom"):window.ReactDOM,i=e("../orb.utils.dom"),s=t.exports={synchronizeWidths:function(e){return e.pgridwidget.pgrid.config.chartMode.enabled?s.synchronizePivotChartWidths(e):void s.synchronizePivotTableWidths(e)},synchronizePivotChartWidths:function(e){var t=e.refs.pivotWrapperTable,n=new r(e.refs.pivot),o=new r(e.refs.upperButtons),a=new r(e.refs.colButtons),s=new r(e.refs.rowButtons),l=(new r(e.refs.chart),Math.max(s.w,67)),c=n.w-l,u=e.pgridwidget.pgrid.config.height,d=u?u-(o.h+a.h):null;return i.updateTableColGroup(t,[l,c]),{width:c,height:d}},synchronizePivotTableWidths:function(e){var t=e.refs.pivotWrapperTable,n=new r(e.refs.pivot),o=new r(e.refs.toolbar),a=new r(e.refs.colHeaders,!0,"table"),s=new r(e.refs.rowHeaders,!0,"table"),l=new r(e.refs.dataCells,!0,"table"),c=new r(e.refs.upperButtons),u=new r(e.refs.colButtons),d=new r(e.refs.rowButtons,!0),p=new r(e.refs.horizontalScrollBar),h=new r(e.refs.verticalScrollBar),f=l.getLargestWidths(a),g=Math.max(s.w,d.w,67),m=Math.min(f.total+1,n.w-g-h.w),v=e.pgridwidget.pgrid.config.height,b=v?v-(o?o.h+17:0)-(c.h+u.h+a.h+p.h):null,y=b?Math.ceil(Math.min(b,l.h)):null;s.addToWidth(g-s.w),i.updateTableColGroup(l.node,f.max),i.updateTableColGroup(a.node,f.max),i.updateTableColGroup(s.node,s.colWidths),l.setStyle("width",f.total),a.setStyle("width",f.total),s.setStyle("width",g),l.setParentStyle("width",m),a.setParentStyle("width",m),y&&(l.setParentStyle("height",y),s.setParentStyle("height",y)),i.updateTableColGroup(t,[g,m,h.w,Math.max(n.w-(g+m+h.w),0)]),e.refs.horizontalScrollBar.refresh(),e.refs.verticalScrollBar.refresh()}}},{"../orb.utils.dom":18,"react-dom":"react-dom"}],39:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("../orb.axe");t.exports=r.createClass({displayName:"exports",render:function(){var e,t=this,n=this.props.pivotTableComp.pgridwidget.pgrid.config;if(n.canMoveFields){var s=n.availablefields().map(function(e,n){return r.createElement(o,{key:e.name,field:e,axetype:null,position:n,pivotTableComp:t.props.pivotTableComp})});e=r.createElement("tr",null,r.createElement("td",{className:"flds-grp-cap av-flds text-muted"},r.createElement("div",null,"Fields")),r.createElement("td",{className:"av-flds"},r.createElement(a,{buttons:s,axetype:null})))}else e=null;var l=n.dataFields.map(function(e,n){return r.createElement(o,{key:e.name,field:e,axetype:i.Type.DATA,position:n,pivotTableComp:t.props.pivotTableComp})}),c=r.createElement("tr",null,r.createElement("td",{className:"flds-grp-cap text-muted"},r.createElement("div",null,"Data")),r.createElement("td",{className:"empty"},r.createElement(a,{buttons:l,axetype:i.Type.DATA})));return r.createElement("table",{className:"inner-table upper-buttons"},r.createElement("tbody",null,e,c))}})},{"../orb.axe":2,"./orb.react.DropTarget.jsx":24,"./orb.react.PivotButton.jsx":29,react:"react"}],40:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM,a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=e("./orb.react.Toolbar.jsx"),l=e("./orb.react.PivotTable.UpperButtons.jsx"),c=e("./orb.react.PivotTable.ColumnButtons.jsx"),u=e("./orb.react.PivotTable.RowButtons.jsx"),d=e("./orb.react.PivotTable.RowHeaders.jsx"),p=e("./orb.react.PivotTable.ColumnHeaders.jsx"),h=e("./orb.react.PivotTable.DataCells.jsx"),f=e("./orb.react.ScrollBars.jsx"),g=f.HorizontalScrollBar,m=f.VerticalScrollBar,v=e("../orb.utils"),b=e("../orb.utils.dom"),y=1,x={};t.exports=r.createClass({displayName:"exports",id:y++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),x[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,n){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,n)},toggleSubtotals:function(e){this.pgridwidget.toggleSubtotals(e)},toggleGrandtotal:function(e){this.pgridwidget.toggleGrandtotal(e)},applyFilter:function(e,t,n,r,o){this.pgridwidget.applyFilter(e,t,n,r,o)},registerThemeChanged:function(e){e&&x[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=x[this.id].indexOf(e))>=0&&x[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),n=s.getSize(e),r=this.getScrollSize(),o=t[this.sizeProp]>=n[this.sizeProp]?0:t[this.sizeProp]/n[this.sizeProp]*r;this.setState({containerSize:r,size:o,thumbOffset:Math.min(this.state.thumbOffset,r-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var n=this.getScrollSize()-this.state.size,r=this.state.thumbOffset+e;if(0>r&&(r=0),r>n&&(r=n),this.state.thumbOffset!=r)return this.setState({thumbOffset:r},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var n="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,r=this.state.size<=0?null:o.createElement("div",{className:n,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},r)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":19,"../orb.utils.dom":18,react:"react","react-dom":"react-dom"}],42:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=r.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;es;)i.call(e,o=a[s++])&&t.push(o);return t}},{"./$":23}],14:[function(e,t,r){var n=e("./$.global"),o=e("./$.core"),a=e("./$.ctx"),i="prototype",s=function(e,t,r){var l,u,c,d=e&s.F,p=e&s.G,h=e&s.S,f=e&s.P,g=e&s.B,m=e&s.W,b=p?o:o[t]||(o[t]={}),v=p?n:h?n[t]:(n[t]||{})[i];p&&(r=t);for(l in r)u=!d&&v&&l in v,u&&l in b||(c=u?v[l]:r[l],b[l]=p&&"function"!=typeof v[l]?r[l]:g&&u?a(c,n):m&&v[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[i]=e[i],t}(c):f&&"function"==typeof c?a(Function.call,c):c,f&&((b[i]||(b[i]={}))[l]=c))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},{"./$.core":9,"./$.ctx":10,"./$.global":17}],15:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],16:[function(e,t,r){var n=e("./$.to-iobject"),o=e("./$").getNames,a={}.toString,i="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(t){return i.slice()}};t.exports.get=function(e){return i&&"[object Window]"==a.call(e)?s(e):o(n(e))}},{"./$":23,"./$.to-iobject":30}],17:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],18:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],19:[function(e,t,r){var n=e("./$"),o=e("./$.property-desc");t.exports=e("./$.descriptors")?function(e,t,r){return n.setDesc(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./$":23,"./$.descriptors":12,"./$.property-desc":26}],20:[function(e,t,r){var n=e("./$.cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./$.cof":8}],21:[function(e,t,r){var n=e("./$.cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./$.cof":8}],22:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],23:[function(e,t,r){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},{}],24:[function(e,t,r){var n=e("./$"),o=e("./$.to-iobject");t.exports=function(e,t){for(var r,a=o(e),i=n.getKeys(a),s=i.length,l=0;s>l;)if(a[r=i[l++]]===t)return r}},{"./$":23,"./$.to-iobject":30}],25:[function(e,t,r){t.exports=!0},{}],26:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],27:[function(e,t,r){t.exports=e("./$.hide")},{"./$.hide":19}],28:[function(e,t,r){var n=e("./$").setDesc,o=e("./$.has"),a=e("./$.wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},{"./$":23,"./$.has":18,"./$.wks":32}],29:[function(e,t,r){var n=e("./$.global"),o="__core-js_shared__",a=n[o]||(n[o]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./$.global":17}],30:[function(e,t,r){var n=e("./$.iobject"),o=e("./$.defined");t.exports=function(e){return n(o(e))}},{"./$.defined":11,"./$.iobject":20}],31:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],32:[function(e,t,r){var n=e("./$.shared")("wks"),o=e("./$.uid"),a=e("./$.global").Symbol;t.exports=function(e){return n[e]||(n[e]=a&&a[e]||(a||o)("Symbol."+e))}},{"./$.global":17,"./$.shared":29,"./$.uid":31}],33:[function(e,t,r){},{}],34:[function(e,t,r){var n=e("./$"),o=e("./$.global"),a=e("./$.has"),i=e("./$.descriptors"),s=e("./$.export"),l=e("./$.redefine"),u=e("./$.fails"),c=e("./$.shared"),d=e("./$.set-to-string-tag"),p=e("./$.uid"),h=e("./$.wks"),f=e("./$.keyof"),g=e("./$.get-names"),m=e("./$.enum-keys"),b=e("./$.is-array"),v=e("./$.an-object"),y=e("./$.to-iobject"),x=e("./$.property-desc"),w=n.getDesc,T=n.setDesc,C=n.create,E=g.get,S=o.Symbol,N=o.JSON,F=N&&N.stringify,M=!1,D=h("_hidden"),O=n.isEnum,A=c("symbol-registry"),L=c("symbols"),R="function"==typeof S,_=Object.prototype,k=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=w(_,t);n&&delete _[t],T(e,t,r),n&&e!==_&&T(_,t,n)}:T,P=function(e){var t=L[e]=C(S.prototype);return t._k=e,i&&M&&k(_,e,{configurable:!0,set:function(t){a(this,D)&&a(this[D],e)&&(this[D][e]=!1),k(this,e,x(1,t))}}),t},B=function(e){return"symbol"==typeof e},j=function(e,t,r){return r&&a(L,t)?(r.enumerable?(a(e,D)&&e[D][t]&&(e[D][t]=!1),r=C(r,{enumerable:x(0,!1)})):(a(e,D)||T(e,D,x(1,{})),e[D][t]=!0),k(e,t,r)):T(e,t,r)},H=function(e,t){v(e);for(var r,n=m(t=y(t)),o=0,a=n.length;a>o;)j(e,r=n[o++],t[r]);return e},W=function(e,t){return void 0===t?C(e):H(C(e),t)},$=function(e){var t=O.call(this,e);return t||!a(this,e)||!a(L,e)||a(this,D)&&this[D][e]?t:!0},z=function(e,t){var r=w(e=y(e),t);return!r||!a(L,t)||a(e,D)&&e[D][t]||(r.enumerable=!0),r},U=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])||t==D||n.push(t);return n},I=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])&&n.push(L[t]);return n},G=function(e){if(void 0!==e&&!B(e)){for(var t,r,n=[e],o=1,a=arguments;a.length>o;)n.push(a[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&b(t)||(t=function(e,t){return r&&(t=r.call(this,e,t)),B(t)?void 0:t}),n[1]=t,F.apply(N,n)}},V=u(function(){var e=S();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))});R||(S=function(){if(B(this))throw TypeError("Symbol is not a constructor");return P(p(arguments.length>0?arguments[0]:void 0))},l(S.prototype,"toString",function(){return this._k}),B=function(e){return e instanceof S},n.create=W,n.isEnum=$,n.getDesc=z,n.setDesc=j,n.setDescs=H,n.getNames=g.get=U,n.getSymbols=I,i&&!e("./$.library")&&l(_,"propertyIsEnumerable",$,!0));var q={"for":function(e){return a(A,e+="")?A[e]:A[e]=S(e)},keyFor:function(e){return f(A,e)},useSetter:function(){M=!0},useSimple:function(){M=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(e){var t=h(e);q[e]=R?t:P(t)}),M=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",q),s(s.S+s.F*!R,"Object",{create:W,defineProperty:j,defineProperties:H,getOwnPropertyDescriptor:z,getOwnPropertyNames:U,getOwnPropertySymbols:I}),N&&s(s.S+s.F*(!R||V),"JSON",{stringify:G}),d(S,"Symbol"),d(Math,"Math",!0),d(o.JSON,"JSON",!0)},{"./$":23,"./$.an-object":7,"./$.descriptors":12,"./$.enum-keys":13,"./$.export":14,"./$.fails":15,"./$.get-names":16,"./$.global":17,"./$.has":18,"./$.is-array":21,"./$.keyof":24,"./$.library":25,"./$.property-desc":26,"./$.redefine":27,"./$.set-to-string-tag":28,"./$.shared":29,"./$.to-iobject":30,"./$.uid":31,"./$.wks":32}],35:[function(e,t,r){function n(e,t,r,n){var a=0,i=0,s=("all"===t?r:t).length;return s>0&&(n||s>1?(o(e,t,r,function(e){i+=e}),i/=s,o(e,t,r,function(e){a+=(e-i)*(e-i)}),a/=n?s:s-1):a=NaN),a}function o(e,t,r,n){var o="all"===t;if(t=o?r:t,t.length>0)for(var a=0;ae)&&(s=e)}),s},max:function l(e,t,r){var l=null;return o(e,t,r,function(e){(null==l||e>l)&&(l=e)}),l},avg:function u(e,t,r){var u=0,n=("all"===t?r:t).length;return n>0&&(o(e,t,r,function(e){u+=e}),u/=n),u},prod:function c(e,t,r){var c,n=("all"===t?r:t).length;return n>0&&(c=1,o(e,t,r,function(e){c*=e})),c},stdev:function(e,t,r){return Math.sqrt(n(e,t,r,!1))},stdevp:function(e,t,r){return Math.sqrt(n(e,t,r,!0))},"var":function(e,t,r){return n(e,t,r,!1)},varp:function(e,t,r){return n(e,t,r,!0)}}},{}],36:[function(e,t,r){var n=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function r(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&n.isArray(e)&&e.length>0)for(var t=0,r=e.length;r>t;t++)for(var a=e[t],i=s.root,u=0;ut.name?1:0})})},t.exports.Type=a},{"./orb.dimension":38,"./orb.utils":53}],37:[function(e,t,r){function n(e,t,r){for(var n=0;n-1?e[r]:null}function n(e,t){for(var r=0;r=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,r(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,r(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,r(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return r(o.allFields,e)},this.getRowField=function(e){return r(o.rowFields,e)},this.getColumnField=function(e){return r(o.columnFields,e)},this.getDataField=function(e){return r(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=c.ownProperties(e),r=[],n=0;n',l="";t.exports=function(e){function t(e){return"'+e+""}function r(e,r,n,o){var a,i=o||"";for(a=0;r>a;a++)i+="";for(i+=e.reduce(function(e,r){return e+=t(r.caption)},""),a=0;n>a;a++)i+="";return i+""}function u(e){return n.btoa(unescape(encodeURIComponent(e)))}var c=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',b='style="background-color: '+g+';" bgcolor="'+g+'"',v=Math.max(c.dataFields.length+1,e.layout.pivotTable.width),y=r(c.dataFields,0,v-c.dataFields.length,'Data'),x='',w=r(c.columnFields,e.layout.rowHeaders.width,v-(e.layout.rowHeaders.width+c.columnFields.length)),T=function(){for(var r,n="",a=0;a";if(a";else s+=c.rowFields.reduce(function(e,r){return e+=t(r.caption)},"");s+=i.reduce(function(e,t){var r=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+r+""},""),n+=s+""}return n}(),C=function(){for(var t="",r=0;r";o+=n.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[r];o+=a.reduce(function(e,t,r){var n=c.dataFields[r%=c.dataFields.length].formatFunc,o=null==t.value?"":n?n()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+u(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":46,"./orb.ui.header":49,"./orb.utils":53}],40:[function(e,t,r){var n=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,r,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&n.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=r,this.excludeStatic=i,this.test=function(e){if(n.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue!==!1&&s.staticValue!==o.NONE},this.isAlwaysTrue=function(){return!(s.term||n.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":53}],41:[function(e,t,r){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":39,"./orb.pgrid":42,"./orb.query":44,"./orb.ui.pgridwidget":50,"./orb.utils":53}],42:[function(e,t,r){var n=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),u=t.exports=function(e){function t(e){e!==!1&&r(),f.rows.update(),f.columns.update(),p(),f.publish(u.EVENT_UPDATED)}function r(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var u=t.indexOf(l);u>=0&&(e[s]=0-(l+2),i.push(l))}}}var c,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(n)for(var h=0;h0)for(var n=0,o=[f.columns.root];np&&(h[u].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,n++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],r=0;r1){l.isNumber(r[0])||l.isDate(r[0])?r.sort(function(e,t){return e?t?e-t:1:t?-1:0}):r.sort();for(var u=0;u0?" - ":"")+e[r].caption;return t}for(var t=f.config,r=e(t.columnFields),n=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var r,n=[],a=!0,i=0;i0){for(r=0;r0){var r=i.headers[i.headers.length-1],n=r[0];if(n){for(var o,s=n.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),r(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(n.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(n.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],49:[function(e,t,r){function n(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var r=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:r="empty";break;case i.INNER:r="header "+r;break;case i.WRAPPER:r="header "+r;break;case i.SUB_TOTAL:r="header header-st "+r;break;case i.GRAND_TOTAL:r="header header-gt "+r}return r},getCellClass:function(e,t){var r="";switch(e){case i.GRAND_TOTAL:r="cell-gt";break;case i.SUB_TOTAL:r=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:r=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return r}};t.exports.header=function(e,t,r,a,s,l){function u(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var r=f.parent;null!=r&&(!r.dim.field.subTotal.visible||null!=r.subtotalHeader&&r.subtotalHeader.expanded);)r=r.parent;return null==r||null==r.subtotalHeader?t:r.subtotalHeader.expanded}function c(e){var t,r=0,n=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?r.value:o.value:e.config.dataFields[0],n.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){n.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){n.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":36,"./orb.state":45}],50:[function(e,t,r){var n=e("react-dom"),o=e("react"),a=e("./orb.axe"),i=e("./orb.pgrid"),s=e("./orb.ui.header"),l=e("./orb.ui.rows"),u=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),d=e("./react/orb.react.PivotChart.jsx"),p=e("./react/orb.react.PivotTable.jsx"),h=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){b.pgrid.subscribe(i.EVENT_UPDATED,f),b.pgrid.subscribe(i.EVENT_SORT_CHANGED,f),b.pgrid.subscribe(i.EVENT_CONFIG_CHANGED,f),r()}function r(){function e(e,t){return function(){return e()&&t()}}b.rows=new l(b.pgrid.rows),b.columns=new u(b.pgrid.columns);var t=b.rows.headers,r=b.columns.leafsHeaders;b.layout={rowHeaders:{width:(b.pgrid.rows.fields.length||1)+("rows"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:b.columns.leafsHeaders.length,height:(b.pgrid.columns.fields.length||1)+("columns"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0)}},b.layout.pivotTable={width:b.layout.rowHeaders.width+b.layout.columnHeaders.width,height:b.layout.rowHeaders.height+b.layout.columnHeaders.height};var n,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return b.pgrid.filteredDataSource[e]});r=e.rowType===s.HeaderType.GRAND_TOTAL&&e.colType===s.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===s.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===s.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:r,comp:{type:h,props:{headers:b.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:b.pgrid.config.theme}},theme:b.pgrid.config.theme,style:m.fontStyle})}},t()}},{"./orb.axe":36,"./orb.pgrid":42,"./orb.ui.cols":48,"./orb.ui.header":49,"./orb.ui.rows":51,"./react/orb.react.Dialog.jsx":55,"./react/orb.react.Grid.jsx":62,"./react/orb.react.PivotChart.jsx":65,"./react/orb.react.PivotTable.jsx":74,react:"react","react-dom":"react-dom"}],51:[function(e,t,r){var n=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var r=e[e.length-1],n=0;n0)for(var s=e.length-1,l=e[s],u=l.length>0?l[l.length-1]:null,c=0;c0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(r(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),r(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(n.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(n.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],52:[function(e,t,r){function n(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),r=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-r.left,y:t.top-r.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,r){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(n=t(e[o],o),!n||r===!0);o++);return n},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var r=0;r-1?void 0:r}return(0,a["default"])(e,r,2)},addEventListener:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):e["on"+t]=r},removeEventListener:function(e,t,r){e.removeEventListener?e.removeEventListener(t,r,!1):e.detachEvent?e.detachEvent("on"+t,r):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,r=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,r=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:r}}},function(e){function t(e){this.message=e}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.name="InvalidCharacterError",e.btoa=r&&r.btoa?function(e){return r.btoa(e)}:function(e){for(var r,o,a=String(e),i=0,s=n,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&r>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new t("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|o}return l},e.atob=r&&r.atob?function(e){return r.atob(e)}:function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=r.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=n.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/json/stringify":1}],54:[function(e,t,r){var n=e("react"),o=e("react-dom");t.exports=n.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var r=0;ro?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(n>l?(n-l)/2:0)+"px",e.style.left=(r>s?(r-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;t!=this.overlayElement&&"button-close"!==t.className||(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":53,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){var n=e("react-dom"),o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){u?i(u,function(){u=e,a(e,t)}):(u=e,a(e,t))}function r(e){c?i(c,function(){c=e,a(e)}):(c=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,u=null,c=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(u){var a=null!=c?c.position:null;s.moveButton(o,u.component.props.axetype,a)}d=null,t(null),r(null)}else d=n.findDOMNode(l)},registerTarget:function(e,t,r,n){p.push({component:e,axetype:t,onDragOver:r,onDragEnd:n})},unregisterTarget:function(e){for(var t,r=0;r0&&(t=s[s.length-1])}r(t)})}}}}()},{"../orb.utils":53,"react-dom":"react-dom"}],57:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx");t.exports=n.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),n.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":56,react:"react"}],58:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=n.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,r){return r=h&&u.pageX=f&&u.pageY=n&&(e.style.width=m+"px"),b>=o&&(e.style.height=b+"px",t.tBodies[0].style.height=p.bottom-p.top+g.y+"px"),s.stopPropagation(l),s.preventDefault(l)}},s.addEventListener(r,"mousedown",this.resizeMouseDown),s.addEventListener(document,"mouseup",this.resizeMouseUp),s.addEventListener(document,"mousemove",this.resizeMouseMove)}var i,c,d=this,p="indeterminate",h=!1,f=!1,g=l.Operators.MATCH,m="",b={filterContainer:null,checkboxes:{},searchBox:null,operatorBox:null,allCheckbox:null,addCheckbox:null,enableRegexButton:null,clearSearchButton:null,okButton:null,cancelButton:null,resizeGrip:null};this.init=function(e){b.filterContainer=e,b.checkboxes={},b.searchBox=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0],b.clearSearchButton=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0],b.operatorBox=b.filterContainer.rows[0].cells[0].children[0],b.okButton=b.filterContainer.rows[2].cells[0].children[0],b.cancelButton=b.filterContainer.rows[2].cells[0].children[1],b.resizeGrip=b.filterContainer.rows[2].cells[1].children[0];for(var t=b.filterContainer.rows[1].cells[0].children[0].rows,r=0;ri/2+1,n=0;n=0;u.checked=t.toExclude?!c:c}}},this.updateAllCheckbox=function(){if(!h){for(var t=null,r=0;r0){for(var i=[],s=0;s0)for(var l=0;l2&&(r+=" header-gt-exp")),e.leftmost&&(r+=" "+("cell-template-datavalue"===t.template?"cell":"header")+"-leftmost"),e.topmost&&(r+=" cell-topmost"),r}var o=e("react"),a=e("react-dom"),i=e("../orb.ui.header"),s=e("../orb.utils.dom"),l=null,u=null;t.exports=o.createClass({displayName:"exports",expand:function(){this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell)},collapse:function(){this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell)},updateCellInfos:function(){var e=a.findDOMNode(this),t=this.props.cell;if(e.__orb=e.__orb||{},t.visible()){var r=this.refs.cellContent,n=[],o=null==l,i=!this.props.leftmost&&null==u,c=e.textContent||e.innerText;if(o&&n.push("padding-left"),i&&n.push("border-left-width"),n.length>0){var d=s.getStyle(e,n,!0);o&&(l=parseFloat(d[0])),i&&(u=parseFloat(d[o?1:0]))}s.removeClass(e,"cell-hidden"),e.__orb._visible=!0,c==e.__orb._lastText&&e.__orb._textWidth||(e.__orb._lastText=c,e.__orb._textWidth=s.getSize(r).width),e.__orb._colSpan=this.props.cell.hspan(!0)||1,e.__orb._rowSpan=this.props.cell.vspan(!0)||1,e.__orb._paddingLeft=l,e.__orb._paddingRight=l,e.__orb._borderLeftWidth=this.props.leftmost?0:u,e.__orb._borderRightWidth=0}else e.__orb._visible=!1},componentDidMount:function(){this.updateCellInfos()},componentDidUpdate:function(){this.updateCellInfos()},shouldComponentUpdate:function(e,t){return!(e.cell&&e.cell==this.props.cell&&!this._latestVisibleState&&!e.cell.visible())},_latestVisibleState:!1,render:function(){var e,t,r=this,a=this.props.cell,s=[],l=!1;switch(this._latestVisibleState=a.visible(),a.template){case"cell-template-row-header":case"cell-template-column-header":var u=a.type===i.HeaderType.WRAPPER&&a.dim.field.subTotal.visible&&a.dim.field.subTotal.collapsible,c=a.type===i.HeaderType.SUB_TOTAL&&!a.expanded;u||c?(l=!0,s.push(o.createElement("table",{key:"header-value",ref:"cellContent"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"orb-tgl-btn"},o.createElement("div",{className:"orb-tgl-btn-"+(u?"down":"right"),onClick:u?this.collapse:this.expand})),o.createElement("td",{className:"hdr-val"},o.createElement("div",{dangerouslySetInnerHTML:{__html:a.value||" "}}))))))):e=(a.value||" ")+(a.type===i.HeaderType.SUB_TOTAL?" Total":"");break;case"cell-template-dataheader":e=a.value.caption;break;case"cell-template-datavalue":e=a.datafield&&a.datafield.formatFunc?a.datafield.formatFunc()(a.value):a.value,t=function(){r.props.pivotTableComp.pgridwidget.drilldown(a,r.props.pivotTableComp.id)}}if(!l){var d;switch(a.template){case"cell-template-datavalue":d="cell-data";break;default:"cell-template-dataheader"!=a.template&&a.type!==i.HeaderType.GRAND_TOTAL&&(d="hdr-val")}s.push(o.createElement("div",{key:"cell-value",ref:"cellContent",className:d},o.createElement("div",{dangerouslySetInnerHTML:{__html:e||" "}})))}return o.createElement("td",{className:n(this.props),onDoubleClick:t,colSpan:a.hspan(),rowSpan:a.vspan()},o.createElement("div",null,s))}})},{"../orb.ui.header":49,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],65:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=(e("./orb.react.Toolbar.jsx"),e("./orb.react.PivotTable.UpperButtons.jsx")),l=e("./orb.react.PivotTable.ColumnButtons.jsx"),u=e("./orb.react.PivotTable.RowButtons.jsx"),c=e("./orb.react.Chart.jsx"),d=e("../orb.utils.dom"),p=1,h={};t.exports=n.createClass({displayName:"exports",id:p++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),h[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&h[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=h[this.id].indexOf(e))>=0&&h[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t0&&!r&&i.lastLeftMostCellVSpan--,n.createElement("tr",{style:s},e)}})},{"../orb.axe":36,"./orb.react.PivotCell.jsx":64,react:"react"}],67:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotButton.jsx"),i=e("./orb.react.DropTarget.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.columnFields.map(function(t,r){return n.createElement(a,{key:t.name,field:t,axetype:o.Type.COLUMNS,position:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement(i,{buttons:r,axetype:o.Type.COLUMNS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],68:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r=0===t.columns.headers.length?"":" columns-cntr",i={lastLeftMostCellVSpan:0,topMostCells:{}},s=t.columns.headers.map(function(t,r){return n.createElement(a,{key:r,row:t,axetype:o.Type.COLUMNS,pivotTableComp:e.props.pivotTableComp,layoutInfos:i})});return n.createElement("div",{className:"inner-table-container"+r,onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,s)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],69:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r={lastLeftMostCellVSpan:0,topMostCells:{}},i=t.dataRows.map(function(t,i){return n.createElement(a,{key:i,row:t,axetype:o.Type.DATA,layoutInfos:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement("div",{className:"inner-table-container data-cntr",onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,i)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],70:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("./orb.react.DropTargetVertical.jsx"),s=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.rowFields.map(function(t,r){return n.createElement(o,{key:t.name,field:t,axetype:s.Type.ROWS,position:r,pivotTableComp:e.props.pivotTableComp})});return t.chartMode.enabled?n.createElement(i,{buttons:r,axetype:s.Type.ROWS}):n.createElement(a,{buttons:r,axetype:s.Type.ROWS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.DropTargetVertical.jsx":59,"./orb.react.PivotButton.jsx":63,react:"react"}],71:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.PivotRow.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",setColGroup:function(e){var t=o.findDOMNode(this),r=this.refs.colgroup;t.style.tableLayout="auto",r.innerHTML="";for(var n=0;n0&&(s.w+=e,s.colWidths[s.colWidths.length-1]+=e)},"table"===r&&o(this)}function o(e){if(e&&e.node){for(var t=e.node,r=[],n=0;n1&&l.__orb._rowSpan>=t.rows.length-n,0);c0;)i.inhibit--,a++,i=r[a];r.length-1r[a].width&&(r[a].width=u),r[a].inhibit=l.__orb._rowSpan-1,a++}}for(i=r[a];i;)i.inhibit>0&&i.inhibit--,a++,i=r[a]}e.w=0,e.colWidths=r.map(function(t,r){return e.w+=t.width,t.width})}}var a=e("react-dom"),i=e("../orb.utils.dom"),s=t.exports={synchronizeWidths:function(e){return e.pgridwidget.pgrid.config.chartMode.enabled?s.synchronizePivotChartWidths(e):void s.synchronizePivotTableWidths(e)},synchronizePivotChartWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.upperButtons),a=new n(e.refs.colButtons),s=new n(e.refs.rowButtons),l=(new n(e.refs.chart),Math.max(s.w,67)),u=r.w-l,c=e.pgridwidget.pgrid.config.height,d=c?c-(o.h+a.h):null;return i.updateTableColGroup(t,[l,u]),{width:u,height:d}},synchronizePivotTableWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.toolbar),a=new n(e.refs.colHeaders,!0,"table"),s=new n(e.refs.rowHeaders,!0,"table"),l=new n(e.refs.dataCells,!0,"table"),u=new n(e.refs.upperButtons),c=new n(e.refs.colButtons),d=new n(e.refs.rowButtons,!0),p=new n(e.refs.horizontalScrollBar),h=new n(e.refs.verticalScrollBar),f=l.getLargestWidths(a),g=Math.max(s.w,d.w,67),m=Math.min(f.total+1,r.w-g-h.w),b=e.pgridwidget.pgrid.config.height,v=b?b-(o?o.h+17:0)-(u.h+c.h+a.h+p.h):null,y=v?Math.ceil(Math.min(v,l.h)):null;s.addToWidth(g-s.w),i.updateTableColGroup(l.node,f.max),i.updateTableColGroup(a.node,f.max),i.updateTableColGroup(s.node,s.colWidths),l.setStyle("width",f.total),a.setStyle("width",f.total),s.setStyle("width",g),l.setParentStyle("width",m),a.setParentStyle("width",m),y&&(l.setParentStyle("height",y),s.setParentStyle("height",y)),i.updateTableColGroup(t,[g,m,h.w,Math.max(r.w-(g+m+h.w),0)]),e.refs.horizontalScrollBar.refresh(),e.refs.verticalScrollBar.refresh()}}},{"../orb.utils.dom":52,"react-dom":"react-dom"}],73:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e,t=this,r=this.props.pivotTableComp.pgridwidget.pgrid.config;if(r.canMoveFields){var s=r.availablefields().map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:null,position:r,pivotTableComp:t.props.pivotTableComp})});e=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap av-flds text-muted"},n.createElement("div",null,"Fields")),n.createElement("td",{className:"av-flds"},n.createElement(a,{buttons:s,axetype:null})))}else e=null;var l=r.dataFields.map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:i.Type.DATA,position:r,pivotTableComp:t.props.pivotTableComp})}),u=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap text-muted"},n.createElement("div",null,"Data")),n.createElement("td",{className:"empty"},n.createElement(a,{buttons:l,axetype:i.Type.DATA})));return n.createElement("table",{className:"inner-table upper-buttons"},n.createElement("tbody",null,e,u))}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],74:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=e("./orb.react.Toolbar.jsx"),l=e("./orb.react.PivotTable.UpperButtons.jsx"),u=e("./orb.react.PivotTable.ColumnButtons.jsx"),c=e("./orb.react.PivotTable.RowButtons.jsx"),d=e("./orb.react.PivotTable.RowHeaders.jsx"),p=e("./orb.react.PivotTable.ColumnHeaders.jsx"),h=e("./orb.react.PivotTable.DataCells.jsx"),f=e("./orb.react.ScrollBars.jsx"),g=f.HorizontalScrollBar,m=f.VerticalScrollBar,b=e("../orb.utils"),v=e("../orb.utils.dom"),y=1,x={};t.exports=n.createClass({displayName:"exports",id:y++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),x[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},toggleSubtotals:function(e){this.pgridwidget.toggleSubtotals(e)},toggleGrandtotal:function(e){this.pgridwidget.toggleGrandtotal(e)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&x[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=x[this.id].indexOf(e))>=0&&x[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),r=s.getSize(e),n=this.getScrollSize(),o=t[this.sizeProp]>=r[this.sizeProp]?0:t[this.sizeProp]/r[this.sizeProp]*n;this.setState({containerSize:n,size:o,thumbOffset:Math.min(this.state.thumbOffset,n-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var r=this.getScrollSize()-this.state.size,n=this.state.thumbOffset+e;if(0>n&&(n=0),n>r&&(n=r),this.state.thumbOffset!=n)return this.setState({thumbOffset:n},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var r="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,n=this.state.size<=0?null:o.createElement("div",{className:r,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},n)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":53,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],76:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=n.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;e.\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 2: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = (function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n })();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 4,\n \"./orb.utils\": 19\n }],\n 3: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, null)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc || defaultFormatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 1,\n \"./orb.axe\": 2,\n \"./orb.filtering\": 6,\n \"./orb.themes\": 12,\n \"./orb.utils\": 19\n }],\n 4: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 5: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = (function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n })();\n\n var rowHeadersAndDataCells = (function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n })();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 12,\n \"./orb.ui.header\": 15,\n \"./orb.utils\": 19\n }],\n 6: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 19\n }],\n 7: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 5,\n \"./orb.pgrid\": 8,\n \"./orb.query\": 10,\n \"./orb.ui.pgridwidget\": 16,\n \"./orb.utils\": 19\n }],\n 8: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.config\": 3,\n \"./orb.filtering\": 6,\n \"./orb.pubsub\": 9,\n \"./orb.query\": 10,\n \"./orb.utils\": 19\n }],\n 9: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 19\n }],\n 10: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && typeof options === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && typeof options === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 1,\n \"./orb.axe\": 2,\n \"./orb.utils\": 19\n }],\n 11: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 12: [function(_dereq_, module, exports) {\n\n module.exports = (function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n })();\n\n }, {}],\n 13: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.ui.header\": 15\n }],\n 14: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.ui.axe\": 13,\n \"./orb.ui.header\": 15\n }],\n 15: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(hspan, vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function() {\n return hspan;\n },\n vspan: function() {\n return vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.state\": 11\n }],\n 16: [function(_dereq_, module, exports) {\n\n var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\t\t\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.pgrid\": 8,\n \"./orb.ui.cols\": 14,\n \"./orb.ui.header\": 15,\n \"./orb.ui.rows\": 17,\n \"./react/orb.react.Dialog.jsx\": 21,\n \"./react/orb.react.Grid.jsx\": 28,\n \"./react/orb.react.PivotChart.jsx\": 31,\n \"./react/orb.react.PivotTable.jsx\": 40,\n \"react-dom\": \"react-dom\"\n }],\n 17: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.ui.axe\": 13,\n \"./orb.ui.header\": 15\n }],\n 18: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 19: [function(_dereq_, module, exports) {\n (function(global) {\n\n module.exports = {\n\n ns: function(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return JSON.stringify(obj, censor, 2);\n },\n addEventListener: function(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {}],\n 20: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function() {\n return {\n canRender: false\n };\n },\n canRender: function() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function() {\n this.drawChart();\n },\n componentDidUpdate: function() {\n this.drawChart();\n },\n render: function() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 21: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 22: [function(_dereq_, module, exports) {\n\n var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n utils = _dereq_('../orb.utils');\n\n var dragManager = module.exports = (function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n })();\n\n }, {\n \"../orb.utils\": 19,\n \"react-dom\": \"react-dom\"\n }],\n 23: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 22,\n \"react\": \"react\"\n }],\n 24: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.DropIndicator.jsx\": 23,\n \"react\": \"react\"\n }],\n 25: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.DropIndicator.jsx\": 23,\n \"react\": \"react\"\n }],\n 26: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"react\": \"react\"\n }],\n 27: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 6,\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"./orb.react.Dropdown.jsx\": 26,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 28: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"react\": \"react\"\n }],\n 29: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.FilterPanel.jsx\": 27,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 30: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function() {\n this.updateCellInfos();\n },\n componentDidUpdate: function() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 15,\n \"../orb.utils.dom\": 18,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 31: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function() {\n this.synchronizeWidths();\n },\n componentDidMount: function() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 18,\n \"./orb.react.Chart.jsx\": 20,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 33,\n \"./orb.react.PivotTable.RowButtons.jsx\": 36,\n \"./orb.react.PivotTable.SizingManager.jsx\": 38,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 39,\n \"./orb.react.Toolbar.jsx\": 42,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 32: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotCell.jsx\": 30,\n \"react\": \"react\"\n }],\n 33: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DropTarget.jsx\": 24,\n \"./orb.react.PivotButton.jsx\": 29,\n \"react\": \"react\"\n }],\n 34: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotRow.jsx\": 32,\n \"react\": \"react\"\n }],\n 35: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotRow.jsx\": 32,\n \"react\": \"react\"\n }],\n 36: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DropTarget.jsx\": 24,\n \"./orb.react.DropTargetVertical.jsx\": 25,\n \"./orb.react.PivotButton.jsx\": 29,\n \"react\": \"react\"\n }],\n 37: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotRow.jsx\": 32,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 38: [function(_dereq_, module, exports) {\n\n var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 18,\n \"react-dom\": \"react-dom\"\n }],\n 39: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DropTarget.jsx\": 24,\n \"./orb.react.PivotButton.jsx\": 29,\n \"react\": \"react\"\n }],\n 40: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function() {\n this.synchronizeWidths();\n },\n componentDidMount: function() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 33,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 34,\n \"./orb.react.PivotTable.DataCells.jsx\": 35,\n \"./orb.react.PivotTable.RowButtons.jsx\": 36,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 37,\n \"./orb.react.PivotTable.SizingManager.jsx\": 38,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 39,\n \"./orb.react.ScrollBars.jsx\": 41,\n \"./orb.react.Toolbar.jsx\": 42,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 41: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 42: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 2,\n \"../orb.export.excel\": 5,\n \"../orb.utils.dom\": 18,\n \"react\": \"react\"\n }]\n }, {}, [7])(7)\n});\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["orb.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","orb","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","default","__esModule","core-js/library/fn/json/stringify",2,"core-js/library/fn/symbol",3,"_Symbol","obj","constructor","babel-runtime/core-js/symbol",4,"core","it","JSON","stringify","apply","arguments","../../modules/$.core",5,"Symbol","../../modules/es6.object.to-string","../../modules/es6.symbol",6,"TypeError",7,"isObject","./$.is-object",8,"toString","slice",9,"version","__e",10,"aFunction","fn","that","undefined","b","c","./$.a-function",11,12,"Object","defineProperty","get","./$.fails",13,"$","keys","getKeys","getSymbols","key","symbols","isEnum","push","./$",14,"ctx","PROTOTYPE","$export","type","name","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","target","C","param","Function","./$.core","./$.ctx","./$.global",15,"exec",16,"toIObject","getNames","windowNames","getOwnPropertyNames","getWindowNames","./$.to-iobject",17,"Math","__g",18,"hasOwnProperty",19,"createDesc","object","value","setDesc","./$.descriptors","./$.property-desc",20,"cof","propertyIsEnumerable","split","./$.cof",21,"Array","isArray","arg",22,23,"$Object","create","getProto","getPrototypeOf","getDesc","getOwnPropertyDescriptor","setDescs","defineProperties","getOwnPropertySymbols","each","forEach",24,"el","O","index",25,26,"bitmap","enumerable","configurable","writable",27,"./$.hide",28,"def","has","TAG","tag","stat","prototype","./$.has","./$.wks",29,"SHARED","store",30,"IObject","defined","./$.defined","./$.iobject",31,"id","px","random","concat",32,"uid","./$.shared","./$.uid",33,34,"DESCRIPTORS","redefine","$fails","shared","setToStringTag","wks","keyOf","$names","enumKeys","anObject","_create","$Symbol","$JSON","_stringify","setter","HIDDEN","SymbolRegistry","AllSymbols","useNative","ObjectProto","setSymbolDesc","D","protoDesc","wrap","sym","_k","set","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","result","$getOwnPropertySymbols","$stringify","replacer","$replacer","args","$$","buggyJSON","symbolStatics","for","keyFor","useSetter","useSimple","./$.an-object","./$.enum-keys","./$.export","./$.get-names","./$.is-array","./$.keyof","./$.library","./$.redefine","./$.set-to-string-tag",35,"calcVariance","datafield","intersection","datasource","population","variance","avg","len","forEachIntersection","val","NaN","callback","all","Aggregations","toAggregateFunc","func","sum","count","min","max","prod","stdev","sqrt","stdevp","var","varp",36,"utils","Dimension","AxeType","COLUMNS","ROWS","DATA","pgrid","getfieldindex","field","fields","fill","filteredDataSource","dimensionsCount","rowIndex","dataLength","row","dim","root","findex","depth","subfield","subvalue","subdimvals","values","dimid","rowIndexes","dimensionsByDepth","config","columnFields","rowFields","dataFields","update","ffield","sort","order","donottoggle","parents","customfunc","reverse","flattenValues","map","currDim","isRoot","parent","Type","./orb.dimension","./orb.utils",37,"getpropertyvalue","property","configs","defaultvalue","mergefieldconfigs","merged","sorts","subtotals","functions","nnconfig","subTotal","aggregateFuncName","aggregateFunc","formatFunc","createfield","rootconfig","axetype","fieldconfig","defaultfieldconfig","axeconfig","fieldAxeconfig","axe","rowSettings","columnSettings","dataSettings","Field","caption","visible","collapsible","collapsed","aggregation","GrandTotalConfig","options","rowsvisible","columnsvisible","SubTotalConfig","setdefaults","defaults","SortConfig","ChartConfig","enabled","filtering","themeManager","createSubOptions","defaultFormatFunc","_aggregatefunc","_formatfunc","isString","ensureFieldConfig","captionToName","getfield","axefields","fieldname","fieldindex","fi","dataSource","canMoveFields","dataHeadersLocation","grandTotal","width","height","toolbar","theme","chartMode","current","dataSourceFieldNames","dataSourceFieldCaptions","fcaptionIndex","indexOf","nameToCaption","fnameIndex","setTheme","newTheme","allFields","rows","columns","data","dataFieldsCount","runtimeVisibility","getField","getRowField","getColumnField","getDataField","availablefields","filter","notequalfield","otherfield","every","getDataSourceFieldCaptions","row0","fieldNames","ownProperties","headers","getPreFilters","prefilters","preFilters","filteredField","prefilterConfig","expressionFilter","opname","moveField","oldaxetype","newaxetype","position","oldaxe","oldposition","newaxe","fieldConfig","defaultFieldConfig","newAxeSubtotalsState","areSubtotalsVisible","splice","toggleSubtotals","axeFields","newState","toggleGrandtotal","isGrandtotalVisible","./orb.aggregation","./orb.axe","./orb.filtering","./orb.themes",38,"isLeaf","getRowIndexes","j",39,"uiheaders","uriHeader","docHeader","docFooter","pgridwidget","createButtonCell","buttonStyle","buttonTextColor","createButtons","buttons","cellsCountBefore","cellsCountAfter","prefix","str","reduce","tr","toBase64","btoa","unescape","encodeURIComponent","currTheme","override","themeColor","themes","themeFadeout","fadeoutColor","headerStyle","cellsHorizontalCount","layout","pivotTable","sep","rowHeaders","columnHeaders","currRow","rowStr","header","HeaderType","DATA_HEADER","hspan","vspan","rowHeadersAndDataCells","dataRow","dataRows","dataCell","./orb.ui.header",40,"ALL","NONE","BLANK","operator","term","staticValue","excludeStatic","ops","regexpMode","regexpSupported","isRegExp","ignoreCase","RegExp","test","found","isAlwaysTrue","Operators","MATCH","NOTMATCH","EQ","NEQ","GT","GTE","LT","LTE","search",41,"query","./orb.export.excel","./orb.pgrid","./orb.query","./orb.ui.pgridwidget",42,"PubSub","configuration","refresh","refreshFilters","refreshFilteredDataSource","computeValues","publish","EVENT_UPDATED","filterFields","filters","exclude","fieldFilter","computeValue","colIndexes","origRowIndexes","res","ri","rowindex","colrowindex","emptyIntersection","datafields","fieldnameIndex","datafieldIndex","defaultfield","dfi","computeRowValues","rowDim","rid","_iCache","p","rowindexes","subdim","cid","ur","vr","dataMatrix","EVENT_SORT_CHANGED","applyFilter","refreshData","EVENT_CONFIG_CHANGED","getFieldValues","filterFunc","values1","containsBlank","isNumber","isDate","vi","unshift","getFieldFilter","isFieldFiltered","getData","rowdim","coldim","datafieldName","calcAggregation","getChartData","getAxisLabel","axisFields","ti","hAxisLabel","vAxisLabel","legendsLabel","rowLeafDimensions","colLeafDimensions","ci","cdim","currData","rri","title","colNames","d","dataTable","./orb.config","./orb.pubsub",43,"_topics","subscribe","topic","isFunction",44,"_interopRequireDefault","_typeof2","_typeof3","queryBase","extractResult","aggs","outerArgs","multi","ai","multiFieldNames","getCaptionName","datafieldname","measureFunc","fieldsConfig","cleanOptions","compute","setDefaultAggFunctions","valname","aggFunctions","funcIndex","funcName","pgridQuery","filterDimensions","upperDims","some","upperDim","innerArgs","opts","setup","parameters","fIndex","colFields","df","dfname","dfcaption","applyFilters","sortedFilters","f1","f2","currAxe","filterIndex","filtered","rowdims","coldims","rdi","cdi","arrayQuery","array","setCaptionName","fname","fcaption","toAggregate","include","aggFunc","babel-runtime/helpers/typeof",45,"states","state",46,"isBootstrap","currentTheme","red","blue","green","orange","flower","gray","black","white","validateTheme","themeName","trim","getPivotClasses","container","table","getButtonClasses","pivotButton","orbButton","scrollBar","getFilterClasses","getGridClasses","getDialogClasses","classes","overlay","dialog","content","body","hexToRgb","hex","parseInt","rgbaToHex","rgba","matches","match","alpha","parseFloat","applyAlphaAndToHex","rgbaToHexA","floor","substr","color",47,"axeModel","isMultiDataFields","toggleFieldExpansion","hIndex","toToggle","allExpanded","SUB_TOTAL","expanded","collapse","expand",48,"axeUi","columnsAxe","generateLeafsHeaders","pushsubtotal","pheader","leafsHeaders","subtotalHeader","infos","currparent","prevpar","grandpar","prevgrandpar","leafIndex","datafieldindex","dataHeader","getUiInfo","pi","parentDim","di","build","GRAND_TOTAL","INNER","./orb.ui.axe",49,"CellBase","template","cssclass","isvisible","getState","setState","EMPTY","DATA_VALUE","FIELD_BUTTON","WRAPPER","getHeaderClass","headerType","getCellClass","rowHeaderType","colHeaderType","datafieldscount","isParentExpanded","hparent","isexpanded","par","calcSpan","ignoreVisibility","subSpan","tspan","addone","isRowsAxe","subheaders","subheader","rowinfo","colinfo","rowDimension","columnDimension","rowType","colType","buttonCell","emptyCell","_hspan","_vspan","./orb.state",50,"ReactDOM","React","uirows","uicols","Dialog","PivotChart","PivotTable","Grid","init","buildUiAndRender","buildUi","createVisibleFunc","rowvisible","colvisible","rowsHeaders","columnsLeafHeaders","arr","rowHeadersRow","rowLeafHeader","colHeaderIndex","columnLeafHeader","render","renderElement","pivotComponent","expandRow","cell","collapseRow","oldAxeType","newAxeType","axeToExpand","changeTheme","element","pivotTableFactory","createFactory","pivottable","drilldown","pivotId","show","comp","props","style","fontStyle","./orb.ui.cols","./orb.ui.rows","./react/orb.react.Dialog.jsx","./react/orb.react.Grid.jsx","./react/orb.react.PivotChart.jsx","./react/orb.react.PivotTable.jsx","react","react-dom",51,"rowsAxe","addDataHeaders","lastInfosArray","dimension","infosMaxIndex","valIndex","subTotalHeader","newHeader","grandtotalHeader","lastrow",52,"replaceHyphenByUcase","replace","reHyphenToUcase","m","m1","toUpperCase","removeClass","classname","className","addClass","getOffset","rect","getBoundingClientRect","x","left","y","top","getParentOffset","rectParent","parentNode","getSize","right","bottom","getStyle","styleProps","keepString","currStyle","fixProp","currentStyle","prop","getComputedStyle","getPropertyValue","ceil","isVisible","display","offsetWidth","offsetHeight","updateTableColGroup","tableNode","widths","colGroupNode","firstChild","nodeName","tableLayout","removeChild","col","document","createElement","appendChild",53,"_stringify2","ns","identifier","parts","list","forceContinue","ret","escapeRegex","re","findInArray","predicate","item","jsonStringify","censorKeywords","censor","addEventListener","eventName","handler","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","stopPropagation","cancelBubble","getEventButton","button","getMousePageXY","pageX","pageY","clientX","scrollLeft","documentElement","clientY","scrollTop","InvalidCharacterError","message","chars","input","block","charCode","String","idx","output","charAt","charCodeAt","atob","bs","buffer","bc","fromCharCode","babel-runtime/core-js/json/stringify",54,"createClass","displayName","getInitialState","canRender","google","visualization","drawChart","chartData","pivotTableComp","DataTable","addColumn","addRows","fontName","chartStyle","fontFamily","fontSize","hAxis","vAxis","chart","findDOMNode","draw","componentDidMount","componentDidUpdate",55,"createOverlay","overlayElement","statics","dialogFactory","setOverlayClass","close","dialogElement","children","dialogBodyElement","screenWidth","clientWidth","innerWidth","screenHeight","clientHeight","innerHeight","maxHeight","dWidth","dHeight","srcElement","unmountComponentAtNode","onClick","../orb.utils",56,"doElementsOverlap","elem1Rect","elem2Rect","setCurrDropTarget","dropTarget","_currDropTarget","signalDragEnd","signalDragOver","setCurrDropIndicator","dropIndicator","_currDropIndicator","onDragOver","onDragEnd","_pivotComp","_currDragElement","_dragNode","_dropTargets","_dropIndicators","_initialized","pivotComp","setDragElement","elem","prevDragElement","moveButton","component","registerTarget","dragOverHandler","dargEndHandler","unregisterTarget","tindex","registerIndicator","indicator","unregisterIndicator","iindex","elementMoved","foundTarget","dragNodeRect","tnodeRect","isOverlap","foundIndicator","elementOwnIndicator","targetIndicator","axeIndicators",57,"DragManager","isover","componentWillUnmount","isMounted","isVertical","isFirst","isLast","./orb.react.DragManager.jsx",58,"DropIndicator","dtid","../orb.axe","./orb.react.DropIndicator.jsx",59,"currButton",60,"openOrClose","valueNode","refs","valueElement","valuesListNode","valuesList","onMouseEnter","backgroundPosition","onMouseLeave","selectValue","listNode","isli","textContent","onValueChanged","dangerouslySetInnerHTML","__html","ref","selectedValue",61,"FilterManager","reactComp","initialFilterObject","checkboxVisible","checkbox","applyInitialFilterObject","staticInfos","toExclude","isSearchMode","toggleRegexpButtonVisibility","isRegexMode","toggleRegexpButtonState","lastSearchTerm","elems","searchBox","applyFilterTerm","savedCheckedValues","updateCheckboxes","updateAllCheckbox","addEventListeners","filterContainer","valueChecked","searchChanged","clearSearchButton","clearSearchBox","okButton","checkedObj","getCheckedValues","onFilter","cancelButton","destroy","ResizeManager","outerContainerElem","valuesTableElem","resizeGripElem","minContainerWidth","minContainerHeight","mousedownpos","isMouseDown","resizeMouseDown","mousePageXY","cursor","resizeMouseUp","resizeMouseMove","resizeGripSize","outerContainerSize","valuesTableSize","tBodies","outerContainerWidth","outerContainerHeight","offset","newContainerWidth","newContainerHeight","resizeManager","INDETERMINATE","checkboxes","operatorBox","allCheckbox","addCheckbox","enableRegexButton","resizeGrip","filterContainerElement","cells","blanckCheckbox","onOperatorChanged","newOperator","regexpActiveChanged","domUtils","checked","defaultVisible","opterm","previousIsSearchMode","indeterminate","valuesCount","checkedCount","excludeUnchecked","checkedList","allchecked","valInList","Dropdown","filterManager","onMouseDown","onMouseWheel","valuesTable","scrollHeight","componentWillMount","addCheckboxRow","text","defaultChecked","buttonClass","currentFilter","placeholder","clearFilter","colSpan","float","../orb.filtering","../orb.utils.dom","./orb.react.Dropdown.jsx",62,"tableClasses","headerRow","h",63,"FilterPanel","pbid","pos","startpos","mousedown","dragging","onFilterMouseDown","filterButton","filterButtonPos","filterPanelFactory","filterPanel","onMouseMove","registerThemeChanged","updateClasses","unregisterThemeChanged","ctrlKey","thispos","mouseoffset","onMouseUp","isdragged","size","newpos","divstyle","zIndex","sortDirectionClass","filterClass","fieldAggFunc","./orb.react.FilterPanel.jsx",64,"getClassname","compProps","leftmost","topmost","_paddingLeft","_borderLeft","updateCellInfos","node","__orb","cellContentNode","cellContent","propList","retPaddingLeft","retBorderLeft","innerText","nodeStyle","_visible","_lastText","_textWidth","_colSpan","_rowSpan","_paddingRight","_borderLeftWidth","_borderRightWidth","shouldComponentUpdate","nextProps","nextState","_latestVisibleState","cellClick","divcontent","headerPushed","isWrapper","isSubtotal","headerClassName","onDoubleClick","rowSpan","../orb.ui.header",65,"SizingManager","UpperButtons","ColumnButtons","RowButtons","Chart","themeChangeCallbacks","compCallback","thisnode","synchronizeWidths","fontInfos","tblStyle","padding","./orb.react.Chart.jsx","./orb.react.PivotTable.ColumnButtons.jsx","./orb.react.PivotTable.RowButtons.jsx","./orb.react.PivotTable.SizingManager.jsx","./orb.react.PivotTable.UpperButtons.jsx","./orb.react.Toolbar.jsx",66,"PivotCell","leftmostCellFound","layoutInfos","rowstyle","istopmost","isleftmost","topMostCells","lastLeftMostCellVSpan","./orb.react.PivotCell.jsx",67,"PivotButton","DropTarget","columnButtons","./orb.react.DropTarget.jsx","./orb.react.PivotButton.jsx",68,"PivotRow","cntrClass","onWheel","./orb.react.PivotRow.jsx",69,"dataCells",70,"DropTargetVertical","rowButtons","./orb.react.DropTargetVertical.jsx",71,"setColGroup","colgroup","innerHTML",72,"ComponentSizeInfo","childType","w","setStyle","styleProp","setParentStyle","getLargestWidths","otherCompInfo","total","colWidths","addToWidth","getAllColumnsWidth","tblObject","tbl","arrayIndex","currWidth","cellIndex","currCell","cellwidth","cspan","inhibit","synchronizePivotChartWidths","synchronizePivotTableWidths","pivotWrapperTable","pivot","topBtns","upperButtons","cBtns","colButtons","rBtnsTbl","rBtnsWidth","chartWidth","pivotHeight","chartHeight","cHeadersTbl","colHeaders","rHeadersTbl","dataCellsTbl","hScroll","horizontalScrollBar","vScroll","verticalScrollBar","dataCellsWidths","rHeadersWidth","dataCellsContainerWidth","dataCellsRemHeight","dataCellsTableHeight",73,"fieldsDropTarget","fieldsButtons","dataButtons","dataDropTarget",74,"Toolbar","RowHeaders","ColumnHeaders","DataCells","ScrollBars","HorizontalScrollBar","VerticalScrollBar","dataCellsNode","dataCellsTableNode","colHeadersNode","rowHeadersNode","setScrollClient","scrollPercent","scrollAmount","scrollbar","amount","currentTarget","deltaX","deltaY","scroll","deltaMode","./orb.react.PivotTable.ColumnHeaders.jsx","./orb.react.PivotTable.DataCells.jsx","./orb.react.PivotTable.RowHeaders.jsx","./orb.react.ScrollBars.jsx",75,"ScrollEvent","scrollBarComp","raise","getScrollPercent","scrollBarMixin","scrollEvent","scrollClient","thumbOffset","thumbElem","scrollThumb","thumbposInParent","mousePosProp","posProp","getScrollSize","sizeProp","scrollCallback","maxOffset","scrolledElement","clientSize","elementSize","scrollBarContainerSize","newSize","containerSize","mode","newOffset","thumbStyle","offsetCssProp","thisStyle","thumbClass","cssClass","mixins",76,"_toInit","btn","createCallback","action","pgridComponent","configButtons","defaultToolbarConfig","btnConfig","refName","tooltip","excelExport","exportToExcel","download","href","click","expandAllRows","collapseAllRows","expandAllColumns","collapseAllColumns","updateSubtotalsButton","subTotalsState","classToAdd","classToRemove","initSubtotals","updateGrandtotalButton","initGrandtotal","../orb.export.excel"],"mappings":"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","file":"orb.min.js","sourcesContent":["/**\n * orb v1.1.0, Pivot table javascript library.\n *\n * Copyright (c) 2014-2016 Najmeddine Nouri .\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/json/stringify\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/json/stringify\": 4\n }],\n 2: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/symbol\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/symbol\": 5\n }],\n 3: [function(_dereq_, module, exports) {\n\n var _Symbol = _dereq_(\"babel-runtime/core-js/symbol\")[\"default\"];\n\n exports[\"default\"] = function(obj) {\n return obj && obj.constructor === _Symbol ? \"symbol\" : typeof obj;\n };\n\n exports.__esModule = true;\n }, {\n \"babel-runtime/core-js/symbol\": 2\n }],\n 4: [function(_dereq_, module, exports) {\n var core = _dereq_('../../modules/$.core');\n module.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments);\n };\n }, {\n \"../../modules/$.core\": 9\n }],\n 5: [function(_dereq_, module, exports) {\n _dereq_('../../modules/es6.symbol');\n _dereq_('../../modules/es6.object.to-string');\n module.exports = _dereq_('../../modules/$.core').Symbol;\n }, {\n \"../../modules/$.core\": 9,\n \"../../modules/es6.object.to-string\": 33,\n \"../../modules/es6.symbol\": 34\n }],\n 6: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n }, {}],\n 7: [function(_dereq_, module, exports) {\n var isObject = _dereq_('./$.is-object');\n module.exports = function(it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n }, {\n \"./$.is-object\": 22\n }],\n 8: [function(_dereq_, module, exports) {\n var toString = {}.toString;\n\n module.exports = function(it) {\n return toString.call(it).slice(8, -1);\n };\n }, {}],\n 9: [function(_dereq_, module, exports) {\n var core = module.exports = {\n version: '1.2.6'\n };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n }, {}],\n 10: [function(_dereq_, module, exports) {\n // optional / simple context binding\n var aFunction = _dereq_('./$.a-function');\n module.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n };\n }, {\n \"./$.a-function\": 6\n }],\n 11: [function(_dereq_, module, exports) {\n // 7.2.1 RequireObjectCoercible(argument)\n module.exports = function(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n }, {}],\n 12: [function(_dereq_, module, exports) {\n // Thank's IE8 for his funny defineProperty\n module.exports = !_dereq_('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {\n get: function() {\n return 7;\n }\n }).a != 7;\n });\n }, {\n \"./$.fails\": 15\n }],\n 13: [function(_dereq_, module, exports) {\n // all enumerable object keys, includes symbols\n var $ = _dereq_('./$');\n module.exports = function(it) {\n var keys = $.getKeys(it),\n getSymbols = $.getSymbols;\n if (getSymbols) {\n var symbols = getSymbols(it),\n isEnum = $.isEnum,\n i = 0,\n key;\n while (symbols.length > i)\n if (isEnum.call(it, key = symbols[i++])) keys.push(key);\n }\n return keys;\n };\n }, {\n \"./$\": 23\n }],\n 14: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n core = _dereq_('./$.core'),\n ctx = _dereq_('./$.ctx'),\n PROTOTYPE = 'prototype';\n\n var $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && key in target;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n };\n // type bitmap\n $export.F = 1; // forced\n $export.G = 2; // global\n $export.S = 4; // static\n $export.P = 8; // proto\n $export.B = 16; // bind\n $export.W = 32; // wrap\n module.exports = $export;\n }, {\n \"./$.core\": 9,\n \"./$.ctx\": 10,\n \"./$.global\": 17\n }],\n 15: [function(_dereq_, module, exports) {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n }, {}],\n 16: [function(_dereq_, module, exports) {\n // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n var toIObject = _dereq_('./$.to-iobject'),\n getNames = _dereq_('./$').getNames,\n toString = {}.toString;\n\n var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\n\n var getWindowNames = function(it) {\n try {\n return getNames(it);\n } catch (e) {\n return windowNames.slice();\n }\n };\n\n module.exports.get = function getOwnPropertyNames(it) {\n if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it);\n return getNames(toIObject(it));\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 17: [function(_dereq_, module, exports) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n }, {}],\n 18: [function(_dereq_, module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n module.exports = function(it, key) {\n return hasOwnProperty.call(it, key);\n };\n }, {}],\n 19: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n createDesc = _dereq_('./$.property-desc');\n module.exports = _dereq_('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n }, {\n \"./$\": 23,\n \"./$.descriptors\": 12,\n \"./$.property-desc\": 26\n }],\n 20: [function(_dereq_, module, exports) {\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n var cof = _dereq_('./$.cof');\n module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n };\n }, {\n \"./$.cof\": 8\n }],\n 21: [function(_dereq_, module, exports) {\n // 7.2.2 IsArray(argument)\n var cof = _dereq_('./$.cof');\n module.exports = Array.isArray || function(arg) {\n return cof(arg) == 'Array';\n };\n }, {\n \"./$.cof\": 8\n }],\n 22: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n }, {}],\n 23: [function(_dereq_, module, exports) {\n var $Object = Object;\n module.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n };\n }, {}],\n 24: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n toIObject = _dereq_('./$.to-iobject');\n module.exports = function(object, el) {\n var O = toIObject(object),\n keys = $.getKeys(O),\n length = keys.length,\n index = 0,\n key;\n while (length > index)\n if (O[key = keys[index++]] === el) return key;\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 25: [function(_dereq_, module, exports) {\n module.exports = true;\n }, {}],\n 26: [function(_dereq_, module, exports) {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n }, {}],\n 27: [function(_dereq_, module, exports) {\n module.exports = _dereq_('./$.hide');\n }, {\n \"./$.hide\": 19\n }],\n 28: [function(_dereq_, module, exports) {\n var def = _dereq_('./$').setDesc,\n has = _dereq_('./$.has'),\n TAG = _dereq_('./$.wks')('toStringTag');\n\n module.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n };\n }, {\n \"./$\": 23,\n \"./$.has\": 18,\n \"./$.wks\": 32\n }],\n 29: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\n module.exports = function(key) {\n return store[key] || (store[key] = {});\n };\n }, {\n \"./$.global\": 17\n }],\n 30: [function(_dereq_, module, exports) {\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n var IObject = _dereq_('./$.iobject'),\n defined = _dereq_('./$.defined');\n module.exports = function(it) {\n return IObject(defined(it));\n };\n }, {\n \"./$.defined\": 11,\n \"./$.iobject\": 20\n }],\n 31: [function(_dereq_, module, exports) {\n var id = 0,\n px = Math.random();\n module.exports = function(key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n }, {}],\n 32: [function(_dereq_, module, exports) {\n var store = _dereq_('./$.shared')('wks'),\n uid = _dereq_('./$.uid'),\n Symbol = _dereq_('./$.global').Symbol;\n module.exports = function(name) {\n return store[name] || (store[name] =\n Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n };\n }, {\n \"./$.global\": 17,\n \"./$.shared\": 29,\n \"./$.uid\": 31\n }],\n 33: [function(_dereq_, module, exports) {\n\n }, {}],\n 34: [function(_dereq_, module, exports) {\n\n // ECMAScript 6 symbols shim\n var $ = _dereq_('./$'),\n global = _dereq_('./$.global'),\n has = _dereq_('./$.has'),\n DESCRIPTORS = _dereq_('./$.descriptors'),\n $export = _dereq_('./$.export'),\n redefine = _dereq_('./$.redefine'),\n $fails = _dereq_('./$.fails'),\n shared = _dereq_('./$.shared'),\n setToStringTag = _dereq_('./$.set-to-string-tag'),\n uid = _dereq_('./$.uid'),\n wks = _dereq_('./$.wks'),\n keyOf = _dereq_('./$.keyof'),\n $names = _dereq_('./$.get-names'),\n enumKeys = _dereq_('./$.enum-keys'),\n isArray = _dereq_('./$.is-array'),\n anObject = _dereq_('./$.an-object'),\n toIObject = _dereq_('./$.to-iobject'),\n createDesc = _dereq_('./$.property-desc'),\n getDesc = $.getDesc,\n setDesc = $.setDesc,\n _create = $.create,\n getNames = $names.get,\n $Symbol = global.Symbol,\n $JSON = global.JSON,\n _stringify = $JSON && $JSON.stringify,\n setter = false,\n HIDDEN = wks('_hidden'),\n isEnum = $.isEnum,\n SymbolRegistry = shared('symbol-registry'),\n AllSymbols = shared('symbols'),\n useNative = typeof $Symbol == 'function',\n ObjectProto = Object.prototype;\n\n // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n var setSymbolDesc = DESCRIPTORS && $fails(function() {\n return _create(setDesc({}, 'a', {\n get: function() {\n return setDesc(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n }) ? function(it, key, D) {\n var protoDesc = getDesc(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n setDesc(it, key, D);\n if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc);\n } : setDesc;\n\n var wrap = function(tag) {\n var sym = AllSymbols[tag] = _create($Symbol.prototype);\n sym._k = tag;\n DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: function(value) {\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n }\n });\n return sym;\n };\n\n var isSymbol = function(it) {\n return typeof it == 'symbol';\n };\n\n var $defineProperty = function defineProperty(it, key, D) {\n if (D && has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n return setSymbolDesc(it, key, D);\n }\n return setDesc(it, key, D);\n };\n var $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P)),\n i = 0,\n l = keys.length,\n key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n };\n var $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n };\n var $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key);\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n };\n var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n var D = getDesc(it = toIObject(it), key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n };\n var $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key);\n return result;\n };\n var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]);\n return result;\n };\n var $stringify = function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it],\n i = 1,\n $$ = arguments,\n replacer, $replacer;\n while ($$.length > i) args.push($$[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function(key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n };\n var buggyJSON = $fails(function() {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n });\n\n // 19.4.1.1 Symbol([description])\n if (!useNative) {\n $Symbol = function Symbol() {\n if (isSymbol(this)) throw TypeError('Symbol is not a constructor');\n return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));\n };\n redefine($Symbol.prototype, 'toString', function toString() {\n return this._k;\n });\n\n isSymbol = function(it) {\n return it instanceof $Symbol;\n };\n\n $.create = $create;\n $.isEnum = $propertyIsEnumerable;\n $.getDesc = $getOwnPropertyDescriptor;\n $.setDesc = $defineProperty;\n $.setDescs = $defineProperties;\n $.getNames = $names.get = $getOwnPropertyNames;\n $.getSymbols = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_('./$.library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n }\n\n var symbolStatics = {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n return keyOf(SymbolRegistry, key);\n },\n useSetter: function() {\n setter = true;\n },\n useSimple: function() {\n setter = false;\n }\n };\n // 19.4.2.2 Symbol.hasInstance\n // 19.4.2.3 Symbol.isConcatSpreadable\n // 19.4.2.4 Symbol.iterator\n // 19.4.2.6 Symbol.match\n // 19.4.2.8 Symbol.replace\n // 19.4.2.9 Symbol.search\n // 19.4.2.10 Symbol.species\n // 19.4.2.11 Symbol.split\n // 19.4.2.12 Symbol.toPrimitive\n // 19.4.2.13 Symbol.toStringTag\n // 19.4.2.14 Symbol.unscopables\n $.each.call((\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +\n 'species,split,toPrimitive,toStringTag,unscopables'\n ).split(','), function(it) {\n var sym = wks(it);\n symbolStatics[it] = useNative ? sym : wrap(sym);\n });\n\n setter = true;\n\n $export($export.G + $export.W, {\n Symbol: $Symbol\n });\n\n $export($export.S, 'Symbol', symbolStatics);\n\n $export($export.S + $export.F * !useNative, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n });\n\n // 24.3.2 JSON.stringify(value [, replacer [, space]])\n $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {\n stringify: $stringify\n });\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag]\n setToStringTag($Symbol, 'Symbol');\n // 20.2.1.9 Math[@@toStringTag]\n setToStringTag(Math, 'Math', true);\n // 24.3.3 JSON[@@toStringTag]\n setToStringTag(global.JSON, 'JSON', true);\n }, {\n \"./$\": 23,\n \"./$.an-object\": 7,\n \"./$.descriptors\": 12,\n \"./$.enum-keys\": 13,\n \"./$.export\": 14,\n \"./$.fails\": 15,\n \"./$.get-names\": 16,\n \"./$.global\": 17,\n \"./$.has\": 18,\n \"./$.is-array\": 21,\n \"./$.keyof\": 24,\n \"./$.library\": 25,\n \"./$.property-desc\": 26,\n \"./$.redefine\": 27,\n \"./$.set-to-string-tag\": 28,\n \"./$.shared\": 29,\n \"./$.to-iobject\": 30,\n \"./$.uid\": 31,\n \"./$.wks\": 32\n }],\n 35: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function toAggregateFunc(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function count(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function sum(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function min(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function max(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function avg(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function prod(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function stdev(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function stdevp(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function _var(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function varp(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 36: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n }();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 38,\n \"./orb.utils\": 53\n }],\n 37: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, null)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc || defaultFormatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function notequalfield(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.filtering\": 40,\n \"./orb.themes\": 46,\n \"./orb.utils\": 53\n }],\n 38: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 39: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n var rowHeadersAndDataCells = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 46,\n \"./orb.ui.header\": 49,\n \"./orb.utils\": 53\n }],\n 40: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function get(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function func(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function func(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function func(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function func(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function func(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function func(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 41: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 39,\n \"./orb.pgrid\": 42,\n \"./orb.query\": 44,\n \"./orb.ui.pgridwidget\": 50,\n \"./orb.utils\": 53\n }],\n 42: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.config\": 37,\n \"./orb.filtering\": 40,\n \"./orb.pubsub\": 43,\n \"./orb.query\": 44,\n \"./orb.utils\": 53\n }],\n 43: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 44: [function(_dereq_, module, exports) {\n\n var _typeof2 = _dereq_('babel-runtime/helpers/typeof');\n\n var _typeof3 = _interopRequireDefault(_typeof2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function queryBase(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function pgridQuery(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function arrayQuery(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.utils\": 53,\n \"babel-runtime/helpers/typeof\": 3\n }],\n 45: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 46: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function rgbaToHex(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function rgbaToHexA(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function fadeoutColor(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n }();\n\n }, {}],\n 47: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.header\": 49\n }],\n 48: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 49: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function getHeaderClass(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function getCellClass(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(_hspan, _vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function hspan() {\n return _hspan;\n },\n vspan: function vspan() {\n return _vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.state\": 45\n }],\n 50: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n React = _dereq_('react'),\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.pgrid\": 42,\n \"./orb.ui.cols\": 48,\n \"./orb.ui.header\": 49,\n \"./orb.ui.rows\": 51,\n \"./react/orb.react.Dialog.jsx\": 55,\n \"./react/orb.react.Grid.jsx\": 62,\n \"./react/orb.react.PivotChart.jsx\": 65,\n \"./react/orb.react.PivotTable.jsx\": 74,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 51: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 52: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function f(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function f(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 53: [function(_dereq_, module, exports) {\n (function(global) {\n\n var _stringify = _dereq_('babel-runtime/core-js/json/stringify');\n\n var _stringify2 = _interopRequireDefault(_stringify);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n module.exports = {\n\n ns: function ns(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function ownProperties(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function forEach(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function isArray(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function isNumber(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function isDate(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function isString(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function isRegExp(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function escapeRegex(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function findInArray(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function jsonStringify(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return (0, _stringify2.default)(obj, censor, 2);\n },\n addEventListener: function addEventListener(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function removeEventListener(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function preventDefault(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function getEventButton(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function getMousePageXY(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {\n \"babel-runtime/core-js/json/stringify\": 1\n }],\n 54: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n return {\n canRender: false\n };\n },\n canRender: function canRender() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function drawChart() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.drawChart();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.drawChart();\n },\n render: function render() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 55: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function create() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function show(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function setOverlayClass(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function componentDidMount() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function close(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function render() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 56: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n module.exports = function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function init(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function setDragElement(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function unregisterTarget(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function unregisterIndicator(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function elementMoved() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n }();\n\n }, {\n \"../orb.utils\": 53,\n \"react-dom\": \"react-dom\"\n }],\n 57: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function getInitialState() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"react\": \"react\"\n }],\n 58: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 59: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 60: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function openOrClose(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function onMouseEnter() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function onMouseLeave() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function componentDidMount() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function selectValue(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function render() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 61: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function getInitialState() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function destroy() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function onFilter(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function onMouseDown(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function onMouseWheel(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function componentWillMount() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function componentDidMount() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function render() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 40,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.Dropdown.jsx\": 60,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 62: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 63: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function getInitialState() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function onFilterMouseDown(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function onMouseDown(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function onMouseMove(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function updateClasses() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function render() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.FilterPanel.jsx\": 61,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 64: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function expand() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function collapse() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function updateCellInfos() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function componentDidMount() {\n this.updateCellInfos();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function render() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function cellClick() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 49,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 65: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function synchronizeWidths() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 52,\n \"./orb.react.Chart.jsx\": 54,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 66: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotCell.jsx\": 64,\n \"react\": \"react\"\n }],\n 67: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 68: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 69: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 70: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.DropTargetVertical.jsx\": 59,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 71: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function setColGroup(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 72: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function synchronizeWidths(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 52,\n \"react-dom\": \"react-dom\"\n }],\n 73: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 74: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function onWheel(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function synchronizeWidths() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 68,\n \"./orb.react.PivotTable.DataCells.jsx\": 69,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 71,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.ScrollBars.jsx\": 75,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 75: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function getInitialState() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function componentDidMount() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function onMouseDown(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function onMouseMove(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function getScrollSize() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function setScrollClient(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function getScrollPercent() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function refresh() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function scroll(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function onWheel(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function render() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 76: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function componentDidMount() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function createCallback(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function render() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function exportToExcel(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function expandAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function collapseAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function expandAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function collapseAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function initSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function initGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.export.excel\": 39,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\"\n }]\n }, {}, [41])(41)\n});"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/v1.1.0/orb-1.1.0.css b/dist/v1.1.0/orb-1.1.0.css index 8118661..0a0d979 100644 --- a/dist/v1.1.0/orb-1.1.0.css +++ b/dist/v1.1.0/orb-1.1.0.css @@ -1,7 +1,7 @@ /** * orb v1.1.0, Pivot table javascript library. * - * Copyright (c) 2014-2015 Najmeddine Nouri . + * Copyright (c) 2014-2016 Najmeddine Nouri . * * @version v1.1.0 * @link http://orbjs.net/ diff --git a/dist/v1.1.0/orb-1.1.0.js b/dist/v1.1.0/orb-1.1.0.js index 02dddee..00c7cd4 100644 --- a/dist/v1.1.0/orb-1.1.0.js +++ b/dist/v1.1.0/orb-1.1.0.js @@ -1,7 +1,7 @@ /** * orb v1.1.0, Pivot table javascript library. * - * Copyright (c) 2014-2015 Najmeddine Nouri . + * Copyright (c) 2014-2016 Najmeddine Nouri . * * @version v1.1.0 * @link http://orbjs.net/ @@ -57,9 +57,655 @@ return s })({ 1: [function(_dereq_, module, exports) { + module.exports = { + "default": _dereq_("core-js/library/fn/json/stringify"), + __esModule: true + }; + }, { + "core-js/library/fn/json/stringify": 4 + }], + 2: [function(_dereq_, module, exports) { + module.exports = { + "default": _dereq_("core-js/library/fn/symbol"), + __esModule: true + }; + }, { + "core-js/library/fn/symbol": 5 + }], + 3: [function(_dereq_, module, exports) { + + var _Symbol = _dereq_("babel-runtime/core-js/symbol")["default"]; + + exports["default"] = function(obj) { + return obj && obj.constructor === _Symbol ? "symbol" : typeof obj; + }; + + exports.__esModule = true; + }, { + "babel-runtime/core-js/symbol": 2 + }], + 4: [function(_dereq_, module, exports) { + var core = _dereq_('../../modules/$.core'); + module.exports = function stringify(it) { // eslint-disable-line no-unused-vars + return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments); + }; + }, { + "../../modules/$.core": 9 + }], + 5: [function(_dereq_, module, exports) { + _dereq_('../../modules/es6.symbol'); + _dereq_('../../modules/es6.object.to-string'); + module.exports = _dereq_('../../modules/$.core').Symbol; + }, { + "../../modules/$.core": 9, + "../../modules/es6.object.to-string": 33, + "../../modules/es6.symbol": 34 + }], + 6: [function(_dereq_, module, exports) { + module.exports = function(it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; + }; + }, {}], + 7: [function(_dereq_, module, exports) { + var isObject = _dereq_('./$.is-object'); + module.exports = function(it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; + }; + }, { + "./$.is-object": 22 + }], + 8: [function(_dereq_, module, exports) { + var toString = {}.toString; + + module.exports = function(it) { + return toString.call(it).slice(8, -1); + }; + }, {}], + 9: [function(_dereq_, module, exports) { + var core = module.exports = { + version: '1.2.6' + }; + if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + }, {}], + 10: [function(_dereq_, module, exports) { + // optional / simple context binding + var aFunction = _dereq_('./$.a-function'); + module.exports = function(fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: + return function(a) { + return fn.call(that, a); + }; + case 2: + return function(a, b) { + return fn.call(that, a, b); + }; + case 3: + return function(a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function() { + return fn.apply(that, arguments); + }; + }; + }, { + "./$.a-function": 6 + }], + 11: [function(_dereq_, module, exports) { + // 7.2.1 RequireObjectCoercible(argument) + module.exports = function(it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; + }; + }, {}], + 12: [function(_dereq_, module, exports) { + // Thank's IE8 for his funny defineProperty + module.exports = !_dereq_('./$.fails')(function() { + return Object.defineProperty({}, 'a', { + get: function() { + return 7; + } + }).a != 7; + }); + }, { + "./$.fails": 15 + }], + 13: [function(_dereq_, module, exports) { + // all enumerable object keys, includes symbols + var $ = _dereq_('./$'); + module.exports = function(it) { + var keys = $.getKeys(it), + getSymbols = $.getSymbols; + if (getSymbols) { + var symbols = getSymbols(it), + isEnum = $.isEnum, + i = 0, + key; + while (symbols.length > i) + if (isEnum.call(it, key = symbols[i++])) keys.push(key); + } + return keys; + }; + }, { + "./$": 23 + }], + 14: [function(_dereq_, module, exports) { + var global = _dereq_('./$.global'), + core = _dereq_('./$.core'), + ctx = _dereq_('./$.ctx'), + PROTOTYPE = 'prototype'; + + var $export = function(type, name, source) { + var IS_FORCED = type & $export.F, + IS_GLOBAL = type & $export.G, + IS_STATIC = type & $export.S, + IS_PROTO = type & $export.P, + IS_BIND = type & $export.B, + IS_WRAP = type & $export.W, + exports = IS_GLOBAL ? core : core[name] || (core[name] = {}), + target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE], + key, own, out; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && key in target; + if (own && key in exports) continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function(C) { + var F = function(param) { + return this instanceof C ? new C(param) : C(param); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out; + } + }; + // type bitmap + $export.F = 1; // forced + $export.G = 2; // global + $export.S = 4; // static + $export.P = 8; // proto + $export.B = 16; // bind + $export.W = 32; // wrap + module.exports = $export; + }, { + "./$.core": 9, + "./$.ctx": 10, + "./$.global": 17 + }], + 15: [function(_dereq_, module, exports) { + module.exports = function(exec) { + try { + return !!exec(); + } catch (e) { + return true; + } + }; + }, {}], + 16: [function(_dereq_, module, exports) { + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + var toIObject = _dereq_('./$.to-iobject'), + getNames = _dereq_('./$').getNames, + toString = {}.toString; + + var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function(it) { + try { + return getNames(it); + } catch (e) { + return windowNames.slice(); + } + }; + + module.exports.get = function getOwnPropertyNames(it) { + if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it); + return getNames(toIObject(it)); + }; + }, { + "./$": 23, + "./$.to-iobject": 30 + }], + 17: [function(_dereq_, module, exports) { + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); + if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + }, {}], + 18: [function(_dereq_, module, exports) { + var hasOwnProperty = {}.hasOwnProperty; + module.exports = function(it, key) { + return hasOwnProperty.call(it, key); + }; + }, {}], + 19: [function(_dereq_, module, exports) { + var $ = _dereq_('./$'), + createDesc = _dereq_('./$.property-desc'); + module.exports = _dereq_('./$.descriptors') ? function(object, key, value) { + return $.setDesc(object, key, createDesc(1, value)); + } : function(object, key, value) { + object[key] = value; + return object; + }; + }, { + "./$": 23, + "./$.descriptors": 12, + "./$.property-desc": 26 + }], + 20: [function(_dereq_, module, exports) { + // fallback for non-array-like ES3 and non-enumerable old V8 strings + var cof = _dereq_('./$.cof'); + module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) { + return cof(it) == 'String' ? it.split('') : Object(it); + }; + }, { + "./$.cof": 8 + }], + 21: [function(_dereq_, module, exports) { + // 7.2.2 IsArray(argument) + var cof = _dereq_('./$.cof'); + module.exports = Array.isArray || function(arg) { + return cof(arg) == 'Array'; + }; + }, { + "./$.cof": 8 + }], + 22: [function(_dereq_, module, exports) { + module.exports = function(it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + }, {}], + 23: [function(_dereq_, module, exports) { + var $Object = Object; + module.exports = { + create: $Object.create, + getProto: $Object.getPrototypeOf, + isEnum: {}.propertyIsEnumerable, + getDesc: $Object.getOwnPropertyDescriptor, + setDesc: $Object.defineProperty, + setDescs: $Object.defineProperties, + getKeys: $Object.keys, + getNames: $Object.getOwnPropertyNames, + getSymbols: $Object.getOwnPropertySymbols, + each: [].forEach + }; + }, {}], + 24: [function(_dereq_, module, exports) { + var $ = _dereq_('./$'), + toIObject = _dereq_('./$.to-iobject'); + module.exports = function(object, el) { + var O = toIObject(object), + keys = $.getKeys(O), + length = keys.length, + index = 0, + key; + while (length > index) + if (O[key = keys[index++]] === el) return key; + }; + }, { + "./$": 23, + "./$.to-iobject": 30 + }], + 25: [function(_dereq_, module, exports) { + module.exports = true; + }, {}], + 26: [function(_dereq_, module, exports) { + module.exports = function(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + }, {}], + 27: [function(_dereq_, module, exports) { + module.exports = _dereq_('./$.hide'); + }, { + "./$.hide": 19 + }], + 28: [function(_dereq_, module, exports) { + var def = _dereq_('./$').setDesc, + has = _dereq_('./$.has'), + TAG = _dereq_('./$.wks')('toStringTag'); + + module.exports = function(it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { + configurable: true, + value: tag + }); + }; + }, { + "./$": 23, + "./$.has": 18, + "./$.wks": 32 + }], + 29: [function(_dereq_, module, exports) { + var global = _dereq_('./$.global'), + SHARED = '__core-js_shared__', + store = global[SHARED] || (global[SHARED] = {}); + module.exports = function(key) { + return store[key] || (store[key] = {}); + }; + }, { + "./$.global": 17 + }], + 30: [function(_dereq_, module, exports) { + // to indexed object, toObject with fallback for non-array-like ES3 strings + var IObject = _dereq_('./$.iobject'), + defined = _dereq_('./$.defined'); + module.exports = function(it) { + return IObject(defined(it)); + }; + }, { + "./$.defined": 11, + "./$.iobject": 20 + }], + 31: [function(_dereq_, module, exports) { + var id = 0, + px = Math.random(); + module.exports = function(key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); + }; + }, {}], + 32: [function(_dereq_, module, exports) { + var store = _dereq_('./$.shared')('wks'), + uid = _dereq_('./$.uid'), + Symbol = _dereq_('./$.global').Symbol; + module.exports = function(name) { + return store[name] || (store[name] = + Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name)); + }; + }, { + "./$.global": 17, + "./$.shared": 29, + "./$.uid": 31 + }], + 33: [function(_dereq_, module, exports) { + + }, {}], + 34: [function(_dereq_, module, exports) { + + // ECMAScript 6 symbols shim + var $ = _dereq_('./$'), + global = _dereq_('./$.global'), + has = _dereq_('./$.has'), + DESCRIPTORS = _dereq_('./$.descriptors'), + $export = _dereq_('./$.export'), + redefine = _dereq_('./$.redefine'), + $fails = _dereq_('./$.fails'), + shared = _dereq_('./$.shared'), + setToStringTag = _dereq_('./$.set-to-string-tag'), + uid = _dereq_('./$.uid'), + wks = _dereq_('./$.wks'), + keyOf = _dereq_('./$.keyof'), + $names = _dereq_('./$.get-names'), + enumKeys = _dereq_('./$.enum-keys'), + isArray = _dereq_('./$.is-array'), + anObject = _dereq_('./$.an-object'), + toIObject = _dereq_('./$.to-iobject'), + createDesc = _dereq_('./$.property-desc'), + getDesc = $.getDesc, + setDesc = $.setDesc, + _create = $.create, + getNames = $names.get, + $Symbol = global.Symbol, + $JSON = global.JSON, + _stringify = $JSON && $JSON.stringify, + setter = false, + HIDDEN = wks('_hidden'), + isEnum = $.isEnum, + SymbolRegistry = shared('symbol-registry'), + AllSymbols = shared('symbols'), + useNative = typeof $Symbol == 'function', + ObjectProto = Object.prototype; + + // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 + var setSymbolDesc = DESCRIPTORS && $fails(function() { + return _create(setDesc({}, 'a', { + get: function() { + return setDesc(this, 'a', { + value: 7 + }).a; + } + })).a != 7; + }) ? function(it, key, D) { + var protoDesc = getDesc(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + setDesc(it, key, D); + if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc); + } : setDesc; + + var wrap = function(tag) { + var sym = AllSymbols[tag] = _create($Symbol.prototype); + sym._k = tag; + DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, { + configurable: true, + set: function(value) { + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + } + }); + return sym; + }; + + var isSymbol = function(it) { + return typeof it == 'symbol'; + }; + + var $defineProperty = function defineProperty(it, key, D) { + if (D && has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { + enumerable: createDesc(0, false) + }); + } + return setSymbolDesc(it, key, D); + } + return setDesc(it, key, D); + }; + var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)), + i = 0, + l = keys.length, + key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; + }; + var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); + }; + var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key); + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; + }; + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + var D = getDesc(it = toIObject(it), key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; + }; + var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = getNames(toIObject(it)), + result = [], + i = 0, + key; + while (names.length > i) + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key); + return result; + }; + var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var names = getNames(toIObject(it)), + result = [], + i = 0, + key; + while (names.length > i) + if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]); + return result; + }; + var $stringify = function stringify(it) { + if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + var args = [it], + i = 1, + $$ = arguments, + replacer, $replacer; + while ($$.length > i) args.push($$[i++]); + replacer = args[1]; + if (typeof replacer == 'function') $replacer = replacer; + if ($replacer || !isArray(replacer)) replacer = function(key, value) { + if ($replacer) value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + }; + var buggyJSON = $fails(function() { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ + a: S + }) != '{}' || _stringify(Object(S)) != '{}'; + }); + + // 19.4.1.1 Symbol([description]) + if (!useNative) { + $Symbol = function Symbol() { + if (isSymbol(this)) throw TypeError('Symbol is not a constructor'); + return wrap(uid(arguments.length > 0 ? arguments[0] : undefined)); + }; + redefine($Symbol.prototype, 'toString', function toString() { + return this._k; + }); + + isSymbol = function(it) { + return it instanceof $Symbol; + }; + + $.create = $create; + $.isEnum = $propertyIsEnumerable; + $.getDesc = $getOwnPropertyDescriptor; + $.setDesc = $defineProperty; + $.setDescs = $defineProperties; + $.getNames = $names.get = $getOwnPropertyNames; + $.getSymbols = $getOwnPropertySymbols; + + if (DESCRIPTORS && !_dereq_('./$.library')) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + } + + var symbolStatics = { + // 19.4.2.1 Symbol.for(key) + 'for': function(key) { + return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(key) { + return keyOf(SymbolRegistry, key); + }, + useSetter: function() { + setter = true; + }, + useSimple: function() { + setter = false; + } + }; + // 19.4.2.2 Symbol.hasInstance + // 19.4.2.3 Symbol.isConcatSpreadable + // 19.4.2.4 Symbol.iterator + // 19.4.2.6 Symbol.match + // 19.4.2.8 Symbol.replace + // 19.4.2.9 Symbol.search + // 19.4.2.10 Symbol.species + // 19.4.2.11 Symbol.split + // 19.4.2.12 Symbol.toPrimitive + // 19.4.2.13 Symbol.toStringTag + // 19.4.2.14 Symbol.unscopables + $.each.call(( + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' + + 'species,split,toPrimitive,toStringTag,unscopables' + ).split(','), function(it) { + var sym = wks(it); + symbolStatics[it] = useNative ? sym : wrap(sym); + }); + + setter = true; + + $export($export.G + $export.W, { + Symbol: $Symbol + }); + + $export($export.S, 'Symbol', symbolStatics); + + $export($export.S + $export.F * !useNative, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols + }); + + // 24.3.2 JSON.stringify(value [, replacer [, space]]) + $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', { + stringify: $stringify + }); + + // 19.4.3.5 Symbol.prototype[@@toStringTag] + setToStringTag($Symbol, 'Symbol'); + // 20.2.1.9 Math[@@toStringTag] + setToStringTag(Math, 'Math', true); + // 24.3.3 JSON[@@toStringTag] + setToStringTag(global.JSON, 'JSON', true); + }, { + "./$": 23, + "./$.an-object": 7, + "./$.descriptors": 12, + "./$.enum-keys": 13, + "./$.export": 14, + "./$.fails": 15, + "./$.get-names": 16, + "./$.global": 17, + "./$.has": 18, + "./$.is-array": 21, + "./$.keyof": 24, + "./$.library": 25, + "./$.property-desc": 26, + "./$.redefine": 27, + "./$.set-to-string-tag": 28, + "./$.shared": 29, + "./$.to-iobject": 30, + "./$.uid": 31, + "./$.wks": 32 + }], + 35: [function(_dereq_, module, exports) { var Aggregations = module.exports = { - toAggregateFunc: function(func) { + toAggregateFunc: function toAggregateFunc(func) { if (func) { if (typeof func === 'string' && Aggregations[func]) { return Aggregations[func]; @@ -72,17 +718,17 @@ return Aggregations.sum; } }, - count: function(datafield, intersection, datasource) { + count: function count(datafield, intersection, datasource) { return intersection === 'all' ? datasource.length : intersection.length; }, - sum: function(datafield, intersection, datasource) { + sum: function sum(datafield, intersection, datasource) { var sum = 0; forEachIntersection(datafield, intersection, datasource, function(val) { sum += val; }); return sum; }, - min: function(datafield, intersection, datasource) { + min: function min(datafield, intersection, datasource) { var min = null; forEachIntersection(datafield, intersection, datasource, function(val) { if (min == null || val < min) { @@ -91,7 +737,7 @@ }); return min; }, - max: function(datafield, intersection, datasource) { + max: function max(datafield, intersection, datasource) { var max = null; forEachIntersection(datafield, intersection, datasource, function(val) { if (max == null || val > max) { @@ -100,7 +746,7 @@ }); return max; }, - avg: function(datafield, intersection, datasource) { + avg: function avg(datafield, intersection, datasource) { var avg = 0; var len = (intersection === 'all' ? datasource : intersection).length; if (len > 0) { @@ -111,7 +757,7 @@ } return avg; }, - prod: function(datafield, intersection, datasource) { + prod: function prod(datafield, intersection, datasource) { var prod; var len = (intersection === 'all' ? datasource : intersection).length; if (len > 0) { @@ -122,16 +768,16 @@ } return prod; }, - stdev: function(datafield, intersection, datasource) { + stdev: function stdev(datafield, intersection, datasource) { return Math.sqrt(calcVariance(datafield, intersection, datasource, false)); }, - stdevp: function(datafield, intersection, datasource) { + stdevp: function stdevp(datafield, intersection, datasource) { return Math.sqrt(calcVariance(datafield, intersection, datasource, true)); }, - 'var': function(datafield, intersection, datasource) { + 'var': function _var(datafield, intersection, datasource) { return calcVariance(datafield, intersection, datasource, false); }, - varp: function(datafield, intersection, datasource) { + varp: function varp(datafield, intersection, datasource) { return calcVariance(datafield, intersection, datasource, true); } }; @@ -168,7 +814,7 @@ } }, {}], - 2: [function(_dereq_, module, exports) { + 36: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); var Dimension = _dereq_('./orb.dimension'); @@ -193,7 +839,7 @@ this.type = type; - this.fields = (function() { + this.fields = function() { switch (type) { case AxeType.COLUMNS: return self.pgrid.config.columnFields; @@ -204,7 +850,7 @@ default: return []; } - })(); + }(); this.dimensionsCount = null; @@ -327,10 +973,10 @@ module.exports.Type = AxeType; }, { - "./orb.dimension": 4, - "./orb.utils": 19 + "./orb.dimension": 38, + "./orb.utils": 53 }], - 3: [function(_dereq_, module, exports) { + 37: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); var axe = _dereq_('./orb.axe'); @@ -626,7 +1272,7 @@ this.availablefields = function() { return self.allFields.filter(function(field) { - var notequalfield = function(otherfield) { + var notequalfield = function notequalfield(otherfield) { return field.name !== otherfield.name; }; @@ -802,13 +1448,13 @@ }; }, { - "./orb.aggregation": 1, - "./orb.axe": 2, - "./orb.filtering": 6, - "./orb.themes": 12, - "./orb.utils": 19 + "./orb.aggregation": 35, + "./orb.axe": 36, + "./orb.filtering": 40, + "./orb.themes": 46, + "./orb.utils": 53 }], - 4: [function(_dereq_, module, exports) { + 38: [function(_dereq_, module, exports) { module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) { @@ -853,7 +1499,7 @@ }; }, {}], - 5: [function(_dereq_, module, exports) { + 39: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); var uiheaders = _dereq_('./orb.ui.header'); @@ -907,7 +1553,7 @@ var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length)); - var columnHeaders = (function() { + var columnHeaders = function() { var str = ''; var j; for (var i = 0; i < pgridwidget.columns.headers.length; i++) { @@ -930,9 +1576,9 @@ str += rowStr + ''; } return str; - })(); + }(); - var rowHeadersAndDataCells = (function() { + var rowHeadersAndDataCells = function() { var str = ''; var j; for (var i = 0; i < pgridwidget.rows.headers.length; i++) { @@ -950,7 +1596,7 @@ str += rowStr + ''; } return str; - })(); + }(); function toBase64(str) { return utils.btoa(unescape(encodeURIComponent(str))); @@ -960,11 +1606,11 @@ }; }, { - "./orb.themes": 12, - "./orb.ui.header": 15, - "./orb.utils": 19 + "./orb.themes": 46, + "./orb.ui.header": 49, + "./orb.utils": 53 }], - 6: [function(_dereq_, module, exports) { + 40: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); @@ -1013,7 +1659,7 @@ }; var ops = filtering.Operators = { - get: function(opname) { + get: function get(opname) { switch (opname) { case ops.MATCH.name: return ops.MATCH; @@ -1038,7 +1684,7 @@ NONE: null, MATCH: { name: 'Matches', - func: function(value, term) { + func: function func(value, term) { if (value) { return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0; } else { @@ -1049,7 +1695,7 @@ }, NOTMATCH: { name: 'Does Not Match', - func: function(value, term) { + func: function func(value, term) { if (value) { return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0; } else { @@ -1060,42 +1706,42 @@ }, EQ: { name: '=', - func: function(value, term) { + func: function func(value, term) { return value == term; }, regexpSupported: false }, NEQ: { name: '<>', - func: function(value, term) { + func: function func(value, term) { return value != term; }, regexpSupported: false }, GT: { name: '>', - func: function(value, term) { + func: function func(value, term) { return value > term; }, regexpSupported: false }, GTE: { name: '>=', - func: function(value, term) { + func: function func(value, term) { return value >= term; }, regexpSupported: false }, LT: { name: '<', - func: function(value, term) { + func: function func(value, term) { return value < term; }, regexpSupported: false }, LTE: { name: '<=', - func: function(value, term) { + func: function func(value, term) { return value <= term; }, regexpSupported: false @@ -1103,9 +1749,9 @@ }; }, { - "./orb.utils": 19 + "./orb.utils": 53 }], - 7: [function(_dereq_, module, exports) { + 41: [function(_dereq_, module, exports) { module.exports.utils = _dereq_('./orb.utils'); module.exports.pgrid = _dereq_('./orb.pgrid'); @@ -1114,13 +1760,13 @@ module.exports['export'] = _dereq_('./orb.export.excel'); }, { - "./orb.export.excel": 5, - "./orb.pgrid": 8, - "./orb.query": 10, - "./orb.ui.pgridwidget": 16, - "./orb.utils": 19 + "./orb.export.excel": 39, + "./orb.pgrid": 42, + "./orb.query": 44, + "./orb.ui.pgridwidget": 50, + "./orb.utils": 53 }], - 8: [function(_dereq_, module, exports) { + 42: [function(_dereq_, module, exports) { var PubSub = _dereq_('./orb.pubsub'), axe = _dereq_('./orb.axe'), @@ -1527,14 +2173,14 @@ pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed'; }, { - "./orb.axe": 2, - "./orb.config": 3, - "./orb.filtering": 6, - "./orb.pubsub": 9, - "./orb.query": 10, - "./orb.utils": 19 + "./orb.axe": 36, + "./orb.config": 37, + "./orb.filtering": 40, + "./orb.pubsub": 43, + "./orb.query": 44, + "./orb.utils": 53 }], - 9: [function(_dereq_, module, exports) { + 43: [function(_dereq_, module, exports) { var utils = _dereq_('./orb.utils'); @@ -1558,15 +2204,25 @@ }; }, { - "./orb.utils": 19 + "./orb.utils": 53 }], - 10: [function(_dereq_, module, exports) { + 44: [function(_dereq_, module, exports) { + + var _typeof2 = _dereq_('babel-runtime/helpers/typeof'); + + var _typeof3 = _interopRequireDefault(_typeof2); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } var utils = _dereq_('./orb.utils'); var axe = _dereq_('./orb.axe'); var aggregation = _dereq_('./orb.aggregation'); - var queryBase = function(source, query, filters) { + var queryBase = function queryBase(source, query, filters) { var self = this; @@ -1618,7 +2274,7 @@ }; }; - var pgridQuery = function(pgrid) { + var pgridQuery = function pgridQuery(pgrid) { queryBase.call(this, pgrid, {}, {}); @@ -1634,7 +2290,7 @@ }; if (outerArgs.multi === true) { - if (options && typeof options === 'object') { + if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') { opts.aggregateFunc = options.aggregateFunc; opts.multiFieldNames = options.fields; } else { @@ -1769,7 +2425,7 @@ }; }; - var arrayQuery = function(array) { + var arrayQuery = function arrayQuery(array) { queryBase.call(this, array, {}, []); @@ -1790,7 +2446,7 @@ }; if (outerArgs.multi === true) { - if (options && typeof options === 'object') { + if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') { opts.aggregateFunc = options.aggregateFunc; opts.multiFieldNames = options.fields; } else { @@ -1900,11 +2556,12 @@ }; }, { - "./orb.aggregation": 1, - "./orb.axe": 2, - "./orb.utils": 19 + "./orb.aggregation": 35, + "./orb.axe": 36, + "./orb.utils": 53, + "babel-runtime/helpers/typeof": 3 }], - 11: [function(_dereq_, module, exports) { + 45: [function(_dereq_, module, exports) { module.exports = function() { var states = {}; @@ -1919,9 +2576,9 @@ }; }, {}], - 12: [function(_dereq_, module, exports) { + 46: [function(_dereq_, module, exports) { - module.exports = (function() { + module.exports = function() { var currentTheme = 'blue'; var themeManager = {}; @@ -2007,7 +2664,7 @@ }; var utils = themeManager.utils = { - hexToRgb: function(hex) { + hexToRgb: function hexToRgb(hex) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), @@ -2015,7 +2672,7 @@ b: parseInt(result[3], 16) } : null; }, - rgbaToHex: function(rgba) { + rgbaToHex: function rgbaToHex(rgba) { var matches = rgba.match(/rgba\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+(?:\.\d+)?)\s*\)/); if (matches) { var alpha = parseFloat(matches[4]); @@ -2023,7 +2680,7 @@ } return null; }, - rgbaToHexA: function(rgba) { + rgbaToHexA: function rgbaToHexA(rgba) { var matches = rgba.match(/rgba\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+(?:\.\d+)?)\s*\)/); if (matches) { var alpha = parseFloat(matches[4]); @@ -2031,20 +2688,20 @@ } return null; }, - applyAlphaAndToHex: function(value, alpha) { + applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) { return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2); }, - fadeoutColor: function(color, alpha) { + fadeoutColor: function fadeoutColor(color, alpha) { color = utils.hexToRgb(color); return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha); } }; return themeManager; - })(); + }(); }, {}], - 13: [function(_dereq_, module, exports) { + 47: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'); var uiheaders = _dereq_('./orb.ui.header'); @@ -2102,10 +2759,10 @@ }; }, { - "./orb.axe": 2, - "./orb.ui.header": 15 + "./orb.axe": 36, + "./orb.ui.header": 49 }], - 14: [function(_dereq_, module, exports) { + 48: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'); var axeUi = _dereq_('./orb.ui.axe'); @@ -2257,11 +2914,11 @@ }; }, { - "./orb.axe": 2, - "./orb.ui.axe": 13, - "./orb.ui.header": 15 + "./orb.axe": 36, + "./orb.ui.axe": 47, + "./orb.ui.header": 49 }], - 15: [function(_dereq_, module, exports) { + 49: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'), state = new(_dereq_('./orb.state'))(); @@ -2275,7 +2932,7 @@ WRAPPER: 6, SUB_TOTAL: 7, GRAND_TOTAL: 8, - getHeaderClass: function(headerType, axetype) { + getHeaderClass: function getHeaderClass(headerType, axetype) { var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : ''; switch (headerType) { case HeaderType.EMPTY: @@ -2298,7 +2955,7 @@ return cssclass; }, - getCellClass: function(rowHeaderType, colHeaderType) { + getCellClass: function getCellClass(rowHeaderType, colHeaderType) { var cssclass = ''; switch (rowHeaderType) { case HeaderType.GRAND_TOTAL: @@ -2529,7 +3186,7 @@ }); }; - module.exports.emptyCell = function(hspan, vspan) { + module.exports.emptyCell = function(_hspan, _vspan) { CellBase.call(this, { axetype: null, @@ -2537,22 +3194,23 @@ template: 'cell-template-empty', value: null, cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY), - hspan: function() { - return hspan; + hspan: function hspan() { + return _hspan; }, - vspan: function() { - return vspan; + vspan: function vspan() { + return _vspan; } }); }; }, { - "./orb.axe": 2, - "./orb.state": 11 + "./orb.axe": 36, + "./orb.state": 45 }], - 16: [function(_dereq_, module, exports) { + 50: [function(_dereq_, module, exports) { - var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var ReactDOM = _dereq_('react-dom'), + React = _dereq_('react'), axe = _dereq_('./orb.axe'), pgrid = _dereq_('./orb.pgrid'), uiheaders = _dereq_('./orb.ui.header'), @@ -2723,7 +3381,7 @@ var rowsHeaders = self.rows.headers; var columnsLeafHeaders = self.columns.leafsHeaders; - // set control layout infos + // set control layout infos self.layout = { rowHeaders: { width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0), @@ -2774,18 +3432,19 @@ }; }, { - "./orb.axe": 2, - "./orb.pgrid": 8, - "./orb.ui.cols": 14, - "./orb.ui.header": 15, - "./orb.ui.rows": 17, - "./react/orb.react.Dialog.jsx": 21, - "./react/orb.react.Grid.jsx": 28, - "./react/orb.react.PivotChart.jsx": 31, - "./react/orb.react.PivotTable.jsx": 40, + "./orb.axe": 36, + "./orb.pgrid": 42, + "./orb.ui.cols": 48, + "./orb.ui.header": 49, + "./orb.ui.rows": 51, + "./react/orb.react.Dialog.jsx": 55, + "./react/orb.react.Grid.jsx": 62, + "./react/orb.react.PivotChart.jsx": 65, + "./react/orb.react.PivotTable.jsx": 74, + "react": "react", "react-dom": "react-dom" }], - 17: [function(_dereq_, module, exports) { + 51: [function(_dereq_, module, exports) { var axe = _dereq_('./orb.axe'); var axeUi = _dereq_('./orb.ui.axe'); @@ -2890,11 +3549,11 @@ }; }, { - "./orb.axe": 2, - "./orb.ui.axe": 13, - "./orb.ui.header": 15 + "./orb.axe": 36, + "./orb.ui.axe": 47, + "./orb.ui.header": 49 }], - 18: [function(_dereq_, module, exports) { + 52: [function(_dereq_, module, exports) { module.exports.removeClass = function(element, classname) { if (element && classname) { @@ -2972,13 +3631,13 @@ var currStyle, f, fixProp; if (element.currentStyle) { currStyle = element.currentStyle; - f = function(prop) { + f = function f(prop) { return currStyle[prop]; }; fixProp = true; } else if (window && window.getComputedStyle) { currStyle = window.getComputedStyle(element, null); - f = function(prop) { + f = function f(prop) { return currStyle.getPropertyValue(prop); }; } @@ -3019,12 +3678,22 @@ }; }, {}], - 19: [function(_dereq_, module, exports) { + 53: [function(_dereq_, module, exports) { (function(global) { + var _stringify = _dereq_('babel-runtime/core-js/json/stringify'); + + var _stringify2 = _interopRequireDefault(_stringify); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + module.exports = { - ns: function(identifier, parent) { + ns: function ns(identifier, parent) { var parts = identifier.split('.'); var i = 0; parent = parent || window; @@ -3036,7 +3705,7 @@ return parent; }, - ownProperties: function(obj) { + ownProperties: function ownProperties(obj) { var arr = []; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { @@ -3046,7 +3715,7 @@ return arr; }, - forEach: function(list, callback, forceContinue) { + forEach: function forEach(list, callback, forceContinue) { var ret; if (list) { for (var i = 0, l = list.length; i < l; i++) { @@ -3059,35 +3728,35 @@ return ret; }, - isArray: function(obj) { + isArray: function isArray(obj) { return Object.prototype.toString.apply(obj) === '[object Array]'; }, - isNumber: function(obj) { + isNumber: function isNumber(obj) { return Object.prototype.toString.apply(obj) === '[object Number]'; }, - isDate: function(obj) { + isDate: function isDate(obj) { return Object.prototype.toString.apply(obj) === '[object Date]'; }, - isString: function(obj) { + isString: function isString(obj) { return Object.prototype.toString.apply(obj) === '[object String]'; }, - isRegExp: function(obj) { + isRegExp: function isRegExp(obj) { return Object.prototype.toString.apply(obj) === '[object RegExp]'; }, - isFunction: function(obj) { + isFunction: function isFunction(obj) { return Object.prototype.toString.apply(obj) === '[object Function]'; }, - escapeRegex: function(re) { + escapeRegex: function escapeRegex(re) { return re.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); }, - findInArray: function(array, predicate) { + findInArray: function findInArray(array, predicate) { if (this.isArray(array) && predicate) { for (var i = 0; i < array.length; i++) { var item = array[i]; @@ -3099,13 +3768,13 @@ return undefined; }, - jsonStringify: function(obj, censorKeywords) { + jsonStringify: function jsonStringify(obj, censorKeywords) { function censor(key, value) { return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value; } - return JSON.stringify(obj, censor, 2); + return (0, _stringify2.default)(obj, censor, 2); }, - addEventListener: function(element, eventName, handler) { + addEventListener: function addEventListener(element, eventName, handler) { if (element.addEventListener) { element.addEventListener(eventName, handler, false); } else if (element.attachEvent) { @@ -3114,7 +3783,7 @@ element["on" + eventName] = handler; } }, - removeEventListener: function(element, eventName, handler) { + removeEventListener: function removeEventListener(element, eventName, handler) { if (element.removeEventListener) { element.removeEventListener(eventName, handler, false); } else if (element.detachEvent) { @@ -3123,7 +3792,7 @@ element["on" + eventName] = null; } }, - preventDefault: function(e) { + preventDefault: function preventDefault(e) { e = e || window.event; if (e.preventDefault) { @@ -3132,7 +3801,7 @@ e.returnValue = false; } }, - stopPropagation: function(e) { + stopPropagation: function stopPropagation(e) { e = e || window.event; if (e.stopPropagation) { @@ -3141,7 +3810,7 @@ e.cancelBubble = true; } }, - getEventButton: function(e) { + getEventButton: function getEventButton(e) { var button = e.button; if ('which' in e) { return button; @@ -3151,7 +3820,7 @@ button === 4 ? 1 : // middle 2; // right }, - getMousePageXY: function(e) { + getMousePageXY: function getMousePageXY(e) { e = e || window.event; var pageX = e.pageX; @@ -3228,24 +3897,26 @@ })(module.exports); }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - }, {}], - 20: [function(_dereq_, module, exports) { + }, { + "babel-runtime/core-js/json/stringify": 1 + }], + 54: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM; + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'); module.exports = React.createClass({ displayName: 'exports', - getInitialState: function() { + getInitialState: function getInitialState() { return { canRender: false }; }, - canRender: function() { + canRender: function canRender() { return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function'; }, - drawChart: function() { + drawChart: function drawChart() { if (this.canRender()) { var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData(); var data = new google.visualization.DataTable(); @@ -3276,13 +3947,13 @@ } } }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.drawChart(); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.drawChart(); }, - render: function() { + render: function render() { if (this.canRender()) { return React.createElement('div', { className: 'chart', @@ -3297,10 +3968,10 @@ "react": "react", "react-dom": "react-dom" }], - 21: [function(_dereq_, module, exports) { + 55: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), utils = _dereq_('../orb.utils'); function createOverlay() { @@ -3314,22 +3985,22 @@ displayName: 'exports', statics: { - create: function() { + create: function create() { var dialogFactory = React.createFactory(Dialog); var overlay = createOverlay(); return { - show: function(props) { + show: function show(props) { ReactDOM.render(dialogFactory(props), overlay); } }; } }, overlayElement: null, - setOverlayClass: function(visible) { + setOverlayClass: function setOverlayClass(visible) { this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.overlayElement = ReactDOM.findDOMNode(this).parentNode; this.setOverlayClass(true); utils.addEventListener(this.overlayElement, 'click', this.close); @@ -3350,7 +4021,7 @@ dialogBodyElement.style.width = dWidth + 'px'; dialogBodyElement.style.height = dHeight - 45 + 'px'; }, - close: function(e) { + close: function close(e) { var target = e.target || e.srcElement; if (target == this.overlayElement || target.className === 'button-close') { utils.removeEventListener(this.overlayElement, 'click', this.close); @@ -3358,7 +4029,7 @@ this.setOverlayClass(false); } }, - render: function() { + render: function render() { if (this.props.comp) { var comp = React.createElement(this.props.comp.type, this.props.comp.props); var classes = this.props.theme.getDialogClasses(); @@ -3400,16 +4071,16 @@ }); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react": "react", "react-dom": "react-dom" }], - 22: [function(_dereq_, module, exports) { + 56: [function(_dereq_, module, exports) { - var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var ReactDOM = _dereq_('react-dom'), utils = _dereq_('../orb.utils'); - var dragManager = module.exports = (function() { + module.exports = function() { var _pivotComp = null; @@ -3484,11 +4155,11 @@ var _initialized = false; return { - init: function(pivotComp) { + init: function init(pivotComp) { _initialized = true; _pivotComp = pivotComp; }, - setDragElement: function(elem) { + setDragElement: function setDragElement(elem) { var prevDragElement = _currDragElement; _currDragElement = elem; @@ -3508,7 +4179,7 @@ } } }, - registerTarget: function(target, axetype, dragOverHandler, dargEndHandler) { + registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) { _dropTargets.push({ component: target, axetype: axetype, @@ -3516,7 +4187,7 @@ onDragEnd: dargEndHandler }); }, - unregisterTarget: function(target) { + unregisterTarget: function unregisterTarget(target) { var tindex; for (var i = 0; i < _dropTargets.length; i++) { if (_dropTargets[i].component == target) { @@ -3528,7 +4199,7 @@ _dropTargets.splice(tindex, 1); } }, - registerIndicator: function(indicator, axetype, position, dragOverHandler, dargEndHandler) { + registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) { _dropIndicators.push({ component: indicator, axetype: axetype, @@ -3537,7 +4208,7 @@ onDragEnd: dargEndHandler }); }, - unregisterIndicator: function(indicator) { + unregisterIndicator: function unregisterIndicator(indicator) { var iindex; for (var i = 0; i < _dropIndicators.length; i++) { if (_dropIndicators[i].component == indicator) { @@ -3549,7 +4220,7 @@ _dropIndicators.splice(iindex, 1); } }, - elementMoved: function() { + elementMoved: function elementMoved() { if (_currDragElement != null) { var dragNodeRect = _dragNode.getBoundingClientRect(); var foundTarget; @@ -3599,29 +4270,29 @@ } } }; - })(); + }(); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react-dom": "react-dom" }], - 23: [function(_dereq_, module, exports) { + 57: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), DragManager = _dereq_('./orb.react.DragManager.jsx'); module.exports = React.createClass({ displayName: 'DropIndicator', - getInitialState: function() { + getInitialState: function getInitialState() { DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd); return { isover: false }; }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { DragManager.unregisterIndicator(this); }, - onDragOver: function(callback) { + onDragOver: function onDragOver(callback) { if (this.isMounted()) { this.setState({ isover: true @@ -3630,7 +4301,7 @@ callback(); } }, - onDragEnd: function(callback) { + onDragEnd: function onDragEnd(callback) { if (this.isMounted()) { this.setState({ isover: false @@ -3639,7 +4310,7 @@ callback(); } }, - render: function() { + render: function render() { var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : ''); if (this.props.isFirst) { @@ -3663,12 +4334,12 @@ }); }, { - "./orb.react.DragManager.jsx": 22, + "./orb.react.DragManager.jsx": 56, "react": "react" }], - 24: [function(_dereq_, module, exports) { + 58: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), DragManager = _dereq_('./orb.react.DragManager.jsx'), DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'), axe = _dereq_('../orb.axe'), @@ -3677,19 +4348,19 @@ module.exports = React.createClass({ displayName: 'exports', - getInitialState: function() { + getInitialState: function getInitialState() { this.dtid = ++dtid; return { isover: false }; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { DragManager.unregisterTarget(this); }, - onDragOver: function(callback) { + onDragOver: function onDragOver(callback) { if (this.isMounted()) { this.setState({ isover: true @@ -3698,7 +4369,7 @@ callback(); } }, - onDragEnd: function(callback) { + onDragEnd: function onDragEnd(callback) { if (this.isMounted()) { this.setState({ isover: false @@ -3707,7 +4378,7 @@ callback(); } }, - render: function() { + render: function render() { var self = this; var buttons = this.props.buttons.map(function(button, index) { @@ -3779,14 +4450,14 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DragManager.jsx": 22, - "./orb.react.DropIndicator.jsx": 23, + "../orb.axe": 36, + "./orb.react.DragManager.jsx": 56, + "./orb.react.DropIndicator.jsx": 57, "react": "react" }], - 25: [function(_dereq_, module, exports) { + 59: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), DragManager = _dereq_('./orb.react.DragManager.jsx'), DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'), dtid = 0; @@ -3794,19 +4465,19 @@ module.exports = React.createClass({ displayName: 'exports', - getInitialState: function() { + getInitialState: function getInitialState() { this.dtid = ++dtid; return { isover: false }; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { DragManager.unregisterTarget(this); }, - onDragOver: function(callback) { + onDragOver: function onDragOver(callback) { if (this.isMounted()) { this.setState({ isover: true @@ -3815,7 +4486,7 @@ callback(); } }, - onDragEnd: function(callback) { + onDragEnd: function onDragEnd(callback) { if (this.isMounted()) { this.setState({ isover: false @@ -3824,7 +4495,7 @@ callback(); } }, - render: function() { + render: function render() { var self = this; var buttons = this.props.buttons.map(function(button, index) { @@ -3889,19 +4560,19 @@ }); }, { - "./orb.react.DragManager.jsx": 22, - "./orb.react.DropIndicator.jsx": 23, + "./orb.react.DragManager.jsx": 56, + "./orb.react.DropIndicator.jsx": 57, "react": "react" }], - 26: [function(_dereq_, module, exports) { + 60: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), utils = _dereq_('../orb.utils'); module.exports = React.createClass({ displayName: 'exports', - openOrClose: function(e) { + openOrClose: function openOrClose(e) { var valueNode = this.refs.valueElement; var valuesListNode = this.refs.valuesList; var target = e.target || e.srcElement; @@ -3912,21 +4583,21 @@ valuesListNode.style.display = 'none'; } }, - onMouseEnter: function() { + onMouseEnter: function onMouseEnter() { var valueNode = this.refs.valueElement; valueNode.className = "orb-tgl-btn-down"; valueNode.style.backgroundPosition = 'right center'; }, - onMouseLeave: function() { + onMouseLeave: function onMouseLeave() { this.refs.valueElement.className = ""; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { utils.addEventListener(document, 'click', this.openOrClose); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { utils.removeEventListener(document, 'click', this.openOrClose); }, - selectValue: function(e) { + selectValue: function selectValue(e) { var listNode = this.refs.valuesList; var target = e.target || e.srcElement; var isli = false; @@ -3949,7 +4620,7 @@ } } }, - render: function() { + render: function render() { function createSelectValueFunc(value) { return function() { this.selectValue(value); @@ -3993,13 +4664,13 @@ }); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react": "react" }], - 27: [function(_dereq_, module, exports) { + 61: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), Dropdown = _dereq_('./orb.react.Dropdown.jsx'), utils = _dereq_('../orb.utils'), filtering = _dereq_('../orb.filtering'), @@ -4011,20 +4682,20 @@ pgridwidget: null, values: null, filterManager: null, - getInitialState: function() { + getInitialState: function getInitialState() { this.pgridwidget = this.props.pivotTableComp.pgridwidget; return {}; }, - destroy: function() { + destroy: function destroy() { var container = ReactDOM.findDOMNode(this).parentNode; ReactDOM.unmountComponentAtNode(container); container.parentNode.removeChild(container); }, - onFilter: function(operator, term, staticValue, excludeStatic) { + onFilter: function onFilter(operator, term, staticValue, excludeStatic) { this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic); this.destroy(); }, - onMouseDown: function(e) { + onMouseDown: function onMouseDown(e) { var container = ReactDOM.findDOMNode(this).parentNode; var target = e.target || e.srcElement; while (target != null) { @@ -4036,7 +4707,7 @@ this.destroy(); }, - onMouseWheel: function(e) { + onMouseWheel: function onMouseWheel(e) { var valuesTable = this.refs.valuesTable; var target = e.target || e.srcElement; while (target != null) { @@ -4052,20 +4723,20 @@ this.destroy(); }, - componentWillMount: function() { + componentWillMount: function componentWillMount() { utils.addEventListener(document, 'mousedown', this.onMouseDown); utils.addEventListener(document, 'wheel', this.onMouseWheel); utils.addEventListener(window, 'resize', this.destroy); }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.filterManager.init(ReactDOM.findDOMNode(this)); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { utils.removeEventListener(document, 'mousedown', this.onMouseDown); utils.removeEventListener(document, 'wheel', this.onMouseWheel); utils.removeEventListener(window, 'resize', this.destroy); }, - render: function() { + render: function render() { var checkboxes = []; this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field)); @@ -4611,22 +5282,22 @@ } }, { - "../orb.filtering": 6, - "../orb.utils": 19, - "../orb.utils.dom": 18, - "./orb.react.Dropdown.jsx": 26, + "../orb.filtering": 40, + "../orb.utils": 53, + "../orb.utils.dom": 52, + "./orb.react.Dropdown.jsx": 60, "react": "react", "react-dom": "react-dom" }], - 28: [function(_dereq_, module, exports) { + 62: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), utils = _dereq_('../orb.utils'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var data = this.props.data; var headers = this.props.headers; var tableClasses = this.props.theme.getGridClasses(); @@ -4698,13 +5369,13 @@ }); }, { - "../orb.utils": 19, + "../orb.utils": 53, "react": "react" }], - 29: [function(_dereq_, module, exports) { + 63: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'), DragManager = _dereq_('./orb.react.DragManager.jsx'), utils = _dereq_('../orb.utils'), @@ -4714,7 +5385,7 @@ module.exports = React.createClass({ displayName: 'PivotButton', - getInitialState: function() { + getInitialState: function getInitialState() { this.pbid = ++pbid; // initial state, all zero. @@ -4731,7 +5402,7 @@ dragging: false }; }, - onFilterMouseDown: function(e) { + onFilterMouseDown: function onFilterMouseDown(e) { // left mouse button only if (e.button !== 0) return; @@ -4756,7 +5427,7 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { if (this.props.pivotTableComp.pgrid.config.canMoveFields) { if (!this.state.mousedown) { // mouse not down, don't care about mouse up/move events. @@ -4769,14 +5440,14 @@ } } }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.props.pivotTableComp.registerThemeChanged(this.updateClasses); }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses); utils.removeEventListener(document, 'mousemove', this.onMouseMove); }, - onMouseDown: function(e) { + onMouseDown: function onMouseDown(e) { // drag/sort with left mouse button if (e.button !== 0) return; @@ -4805,7 +5476,7 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - onMouseUp: function(e) { + onMouseUp: function onMouseUp(e) { var isdragged = this.state.dragging; @@ -4824,7 +5495,7 @@ this.props.pivotTableComp.sort(this.props.axetype, this.props.field); } }, - onMouseMove: function(e) { + onMouseMove: function onMouseMove(e) { // if the mouse is not down while moving, return (no drag) if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return; @@ -4855,10 +5526,10 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - updateClasses: function() { + updateClasses: function updateClasses() { ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton; }, - render: function() { + render: function render() { var self = this; var divstyle = { left: self.state.pos.x + 'px', @@ -4935,18 +5606,18 @@ }); }, { - "../orb.axe": 2, - "../orb.utils": 19, - "../orb.utils.dom": 18, - "./orb.react.DragManager.jsx": 22, - "./orb.react.FilterPanel.jsx": 27, + "../orb.axe": 36, + "../orb.utils": 53, + "../orb.utils.dom": 52, + "./orb.react.DragManager.jsx": 56, + "./orb.react.FilterPanel.jsx": 61, "react": "react", "react-dom": "react-dom" }], - 30: [function(_dereq_, module, exports) { + 64: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), uiheaders = _dereq_('../orb.ui.header'), domUtils = _dereq_('../orb.utils.dom'), _paddingLeft = null, @@ -4955,13 +5626,13 @@ module.exports = React.createClass({ displayName: 'exports', - expand: function() { + expand: function expand() { this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell); }, - collapse: function() { + collapse: function collapse() { this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell); }, - updateCellInfos: function() { + updateCellInfos: function updateCellInfos() { var node = ReactDOM.findDOMNode(this); var cell = this.props.cell; node.__orb = node.__orb || {}; @@ -5012,20 +5683,20 @@ node.__orb._borderRightWidth = 0; } }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.updateCellInfos(); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.updateCellInfos(); }, - shouldComponentUpdate: function(nextProps, nextState) { + shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) { if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) { return false; } return true; }, _latestVisibleState: false, - render: function() { + render: function render() { var self = this; var cell = this.props.cell; var divcontent = []; @@ -5085,7 +5756,7 @@ break; case 'cell-template-datavalue': value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value; - cellClick = function() { + cellClick = function cellClick() { self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id); }; break; @@ -5167,15 +5838,15 @@ } }, { - "../orb.ui.header": 15, - "../orb.utils.dom": 18, + "../orb.ui.header": 49, + "../orb.utils.dom": 52, "react": "react", "react-dom": "react-dom" }], - 31: [function(_dereq_, module, exports) { + 65: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), DragManager = _dereq_('./orb.react.DragManager.jsx'), SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'), Toolbar = _dereq_('./orb.react.Toolbar.jsx'), @@ -5194,7 +5865,7 @@ pgrid: null, pgridwidget: null, fontStyle: null, - getInitialState: function() { + getInitialState: function getInitialState() { DragManager.init(this); themeChangeCallbacks[this.id] = []; @@ -5204,27 +5875,27 @@ this.pgrid = this.pgridwidget.pgrid; return {}; }, - sort: function(axetype, field) { + sort: function sort(axetype, field) { this.pgridwidget.sort(axetype, field); }, - moveButton: function(button, newAxeType, position) { + moveButton: function moveButton(button, newAxeType, position) { this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position); }, - applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) { + applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) { this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic); }, - registerThemeChanged: function(compCallback) { + registerThemeChanged: function registerThemeChanged(compCallback) { if (compCallback) { themeChangeCallbacks[this.id].push(compCallback); } }, - unregisterThemeChanged: function(compCallback) { + unregisterThemeChanged: function unregisterThemeChanged(compCallback) { var i; if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) { themeChangeCallbacks[this.id].splice(i, 1); } }, - changeTheme: function(newTheme) { + changeTheme: function changeTheme(newTheme) { if (this.pgridwidget.pgrid.config.setTheme(newTheme)) { // notify self/sub-components of the theme change for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) { @@ -5232,16 +5903,16 @@ } } }, - updateClasses: function() { + updateClasses: function updateClasses() { var thisnode = ReactDOM.findDOMNode(this); var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); thisnode.className = classes.container; thisnode.children[1].className = classes.table; }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.synchronizeWidths(); }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true); this.fontStyle = { fontFamily: fontInfos[0], @@ -5250,7 +5921,7 @@ this.synchronizeWidths(); }, - synchronizeWidths: function() { + synchronizeWidths: function synchronizeWidths() { var chartStyle = SizingManager.synchronizeWidths(this); chartStyle.fontFamily = this.fontStyle.fontFamily; chartStyle.fontSize = this.fontStyle.fontSize; @@ -5260,7 +5931,7 @@ chartStyle: chartStyle }); }, - render: function() { + render: function render() { var self = this; @@ -5360,27 +6031,27 @@ }); }, { - "../orb.utils.dom": 18, - "./orb.react.Chart.jsx": 20, - "./orb.react.DragManager.jsx": 22, - "./orb.react.PivotTable.ColumnButtons.jsx": 33, - "./orb.react.PivotTable.RowButtons.jsx": 36, - "./orb.react.PivotTable.SizingManager.jsx": 38, - "./orb.react.PivotTable.UpperButtons.jsx": 39, - "./orb.react.Toolbar.jsx": 42, + "../orb.utils.dom": 52, + "./orb.react.Chart.jsx": 54, + "./orb.react.DragManager.jsx": 56, + "./orb.react.PivotTable.ColumnButtons.jsx": 67, + "./orb.react.PivotTable.RowButtons.jsx": 70, + "./orb.react.PivotTable.SizingManager.jsx": 72, + "./orb.react.PivotTable.UpperButtons.jsx": 73, + "./orb.react.Toolbar.jsx": 76, "react": "react", "react-dom": "react-dom" }], - 32: [function(_dereq_, module, exports) { + 66: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), PivotCell = _dereq_('./orb.react.PivotCell.jsx'), axe = _dereq_('../orb.axe'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var lastCellIndex = this.props.row.length - 1; @@ -5441,13 +6112,13 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotCell.jsx": 30, + "../orb.axe": 36, + "./orb.react.PivotCell.jsx": 64, "react": "react" }], - 33: [function(_dereq_, module, exports) { + 67: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), PivotButton = _dereq_('./orb.react.PivotButton.jsx'), DropTarget = _dereq_('./orb.react.DropTarget.jsx'); @@ -5455,7 +6126,7 @@ module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -5477,21 +6148,21 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DropTarget.jsx": 24, - "./orb.react.PivotButton.jsx": 29, + "../orb.axe": 36, + "./orb.react.DropTarget.jsx": 58, + "./orb.react.PivotButton.jsx": 63, "react": "react" }], - 34: [function(_dereq_, module, exports) { + 68: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), PivotRow = _dereq_('./orb.react.PivotRow.jsx'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr'; @@ -5532,20 +6203,20 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotRow.jsx": 32, + "../orb.axe": 36, + "./orb.react.PivotRow.jsx": 66, "react": "react" }], - 35: [function(_dereq_, module, exports) { + 69: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), PivotRow = _dereq_('./orb.react.PivotRow.jsx'); module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var layoutInfos = { @@ -5584,13 +6255,13 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotRow.jsx": 32, + "../orb.axe": 36, + "./orb.react.PivotRow.jsx": 66, "react": "react" }], - 36: [function(_dereq_, module, exports) { + 70: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), PivotButton = _dereq_('./orb.react.PivotButton.jsx'), DropTarget = _dereq_('./orb.react.DropTarget.jsx'), DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'), @@ -5599,7 +6270,7 @@ module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -5628,23 +6299,23 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DropTarget.jsx": 24, - "./orb.react.DropTargetVertical.jsx": 25, - "./orb.react.PivotButton.jsx": 29, + "../orb.axe": 36, + "./orb.react.DropTarget.jsx": 58, + "./orb.react.DropTargetVertical.jsx": 59, + "./orb.react.PivotButton.jsx": 63, "react": "react" }], - 37: [function(_dereq_, module, exports) { + 71: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), PivotRow = _dereq_('./orb.react.PivotRow.jsx'), axe = _dereq_('../orb.axe'); module.exports = React.createClass({ displayName: 'exports', - setColGroup: function(widths) { + setColGroup: function setColGroup(widths) { var node = ReactDOM.findDOMNode(this); var colGroupNode = this.refs.colgroup; node.style.tableLayout = 'auto'; @@ -5657,7 +6328,7 @@ } node.style.tableLayout = 'fixed'; }, - render: function() { + render: function render() { var self = this; var pgridwidget = this.props.pivotTableComp.pgridwidget; var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr'; @@ -5700,25 +6371,25 @@ }); }, { - "../orb.axe": 2, - "./orb.react.PivotRow.jsx": 32, + "../orb.axe": 36, + "./orb.react.PivotRow.jsx": 66, "react": "react", "react-dom": "react-dom" }], - 38: [function(_dereq_, module, exports) { + 72: [function(_dereq_, module, exports) { - var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var ReactDOM = _dereq_('react-dom'), domUtils = _dereq_('../orb.utils.dom'); var SizingManager = module.exports = { - synchronizeWidths: function(pivotComp) { + synchronizeWidths: function synchronizeWidths(pivotComp) { if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) { return SizingManager.synchronizePivotChartWidths(pivotComp); } else { SizingManager.synchronizePivotTableWidths(pivotComp); } }, - synchronizePivotChartWidths: function(pivotComp) { + synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) { var pivotWrapperTable = pivotComp.refs.pivotWrapperTable, pivot = new ComponentSizeInfo(pivotComp.refs.pivot), topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons), @@ -5738,7 +6409,7 @@ height: chartHeight }; }, - synchronizePivotTableWidths: function(pivotComp) { + synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) { var pivotWrapperTable = pivotComp.refs.pivotWrapperTable, pivot = new ComponentSizeInfo(pivotComp.refs.pivot), @@ -5992,12 +6663,12 @@ } }, { - "../orb.utils.dom": 18, + "../orb.utils.dom": 52, "react-dom": "react-dom" }], - 39: [function(_dereq_, module, exports) { + 73: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), PivotButton = _dereq_('./orb.react.PivotButton.jsx'), DropTarget = _dereq_('./orb.react.DropTarget.jsx'), axe = _dereq_('../orb.axe'); @@ -6005,7 +6676,7 @@ module.exports = React.createClass({ displayName: 'exports', - render: function() { + render: function render() { var self = this; var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -6096,15 +6767,15 @@ }); }, { - "../orb.axe": 2, - "./orb.react.DropTarget.jsx": 24, - "./orb.react.PivotButton.jsx": 29, + "../orb.axe": 36, + "./orb.react.DropTarget.jsx": 58, + "./orb.react.PivotButton.jsx": 63, "react": "react" }], - 40: [function(_dereq_, module, exports) { + 74: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), DragManager = _dereq_('./orb.react.DragManager.jsx'), SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'), Toolbar = _dereq_('./orb.react.Toolbar.jsx'), @@ -6129,7 +6800,7 @@ pgrid: null, pgridwidget: null, fontStyle: null, - getInitialState: function() { + getInitialState: function getInitialState() { DragManager.init(this); themeChangeCallbacks[this.id] = []; @@ -6139,33 +6810,33 @@ this.pgrid = this.pgridwidget.pgrid; return {}; }, - sort: function(axetype, field) { + sort: function sort(axetype, field) { this.pgridwidget.sort(axetype, field); }, - moveButton: function(button, newAxeType, position) { + moveButton: function moveButton(button, newAxeType, position) { this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position); }, - toggleSubtotals: function(axetype) { + toggleSubtotals: function toggleSubtotals(axetype) { this.pgridwidget.toggleSubtotals(axetype); }, - toggleGrandtotal: function(axetype) { + toggleGrandtotal: function toggleGrandtotal(axetype) { this.pgridwidget.toggleGrandtotal(axetype); }, - applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) { + applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) { this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic); }, - registerThemeChanged: function(compCallback) { + registerThemeChanged: function registerThemeChanged(compCallback) { if (compCallback) { themeChangeCallbacks[this.id].push(compCallback); } }, - unregisterThemeChanged: function(compCallback) { + unregisterThemeChanged: function unregisterThemeChanged(compCallback) { var i; if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) { themeChangeCallbacks[this.id].splice(i, 1); } }, - changeTheme: function(newTheme) { + changeTheme: function changeTheme(newTheme) { if (this.pgridwidget.pgrid.config.setTheme(newTheme)) { // notify self/sub-components of the theme change for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) { @@ -6173,16 +6844,16 @@ } } }, - updateClasses: function() { + updateClasses: function updateClasses() { var thisnode = ReactDOM.findDOMNode(this); var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses(); thisnode.className = classes.container; thisnode.children[1].className = classes.table; }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { this.synchronizeWidths(); }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true); this.fontStyle = { fontFamily: fontInfos[0], @@ -6208,7 +6879,7 @@ this.synchronizeWidths(); }, - onWheel: function(e) { + onWheel: function onWheel(e) { var elem; var scrollbar; var amount; @@ -6226,12 +6897,12 @@ utils.preventDefault(e); } }, - synchronizeWidths: function() { + synchronizeWidths: function synchronizeWidths() { SizingManager.synchronizeWidths(this); this.refs.horizontalScrollBar.refresh(); this.refs.verticalScrollBar.refresh(); }, - render: function() { + render: function render() { var self = this; @@ -6403,32 +7074,32 @@ }); }, { - "../orb.utils": 19, - "../orb.utils.dom": 18, - "./orb.react.DragManager.jsx": 22, - "./orb.react.PivotTable.ColumnButtons.jsx": 33, - "./orb.react.PivotTable.ColumnHeaders.jsx": 34, - "./orb.react.PivotTable.DataCells.jsx": 35, - "./orb.react.PivotTable.RowButtons.jsx": 36, - "./orb.react.PivotTable.RowHeaders.jsx": 37, - "./orb.react.PivotTable.SizingManager.jsx": 38, - "./orb.react.PivotTable.UpperButtons.jsx": 39, - "./orb.react.ScrollBars.jsx": 41, - "./orb.react.Toolbar.jsx": 42, + "../orb.utils": 53, + "../orb.utils.dom": 52, + "./orb.react.DragManager.jsx": 56, + "./orb.react.PivotTable.ColumnButtons.jsx": 67, + "./orb.react.PivotTable.ColumnHeaders.jsx": 68, + "./orb.react.PivotTable.DataCells.jsx": 69, + "./orb.react.PivotTable.RowButtons.jsx": 70, + "./orb.react.PivotTable.RowHeaders.jsx": 71, + "./orb.react.PivotTable.SizingManager.jsx": 72, + "./orb.react.PivotTable.UpperButtons.jsx": 73, + "./orb.react.ScrollBars.jsx": 75, + "./orb.react.Toolbar.jsx": 76, "react": "react", "react-dom": "react-dom" }], - 41: [function(_dereq_, module, exports) { + 75: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, - ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM, + var React = _dereq_('react'), + ReactDOM = _dereq_('react-dom'), utils = _dereq_('../orb.utils'), domUtils = _dereq_('../orb.utils.dom'); var scrollBarMixin = { scrollEvent: null, scrollClient: null, - getInitialState: function() { + getInitialState: function getInitialState() { // initial state, all zero. return { size: 16, @@ -6436,10 +7107,10 @@ thumbOffset: 0 }; }, - componentDidMount: function() { + componentDidMount: function componentDidMount() { this.scrollEvent = new ScrollEvent(this); }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { if (!this.state.mousedown) { // mouse not down, don't care about mouse up/move events. utils.removeEventListener(document, 'mousemove', this.onMouseMove); @@ -6450,11 +7121,11 @@ utils.addEventListener(document, 'mouseup', this.onMouseUp); } }, - componentWillUnmount: function() { + componentWillUnmount: function componentWillUnmount() { utils.removeEventListener(document, 'mousemove', this.onMouseMove); utils.removeEventListener(document, 'mouseup', this.onMouseUp); }, - onMouseDown: function(e) { + onMouseDown: function onMouseDown(e) { // drag with left mouse button if (e.button !== 0) return; @@ -6475,7 +7146,7 @@ utils.stopPropagation(e); utils.preventDefault(e); }, - onMouseUp: function() { + onMouseUp: function onMouseUp() { if (this.state.mousedown) { var thumbElem = this.refs.scrollThumb; @@ -6486,7 +7157,7 @@ mousedown: false }); }, - onMouseMove: function(e) { + onMouseMove: function onMouseMove(e) { // if the mouse is not down while moving, return (no drag) if (!this.state.mousedown) return; @@ -6500,22 +7171,22 @@ this.scroll(amount); }, - getScrollSize: function() { + getScrollSize: function getScrollSize() { if (this.scrollClient != null) { return domUtils.getSize(this.scrollClient)[this.sizeProp]; } else { return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp]; } }, - setScrollClient: function(scrollClient, scrollCallback) { + setScrollClient: function setScrollClient(scrollClient, scrollCallback) { this.scrollClient = scrollClient; this.scrollEvent.callback = scrollCallback; }, - getScrollPercent: function() { + getScrollPercent: function getScrollPercent() { var maxOffset = this.getScrollSize() - this.state.size; return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset; }, - refresh: function() { + refresh: function refresh() { if (this.scrollClient) { var scrolledElement = this.scrollClient.children[0]; @@ -6532,7 +7203,7 @@ }, this.scrollEvent.raise); } }, - scroll: function(amount, mode) { + scroll: function scroll(amount, mode) { if (this.state.size > 0) { if (mode == 1) amount *= 8; @@ -6550,12 +7221,12 @@ } return false; }, - onWheel: function(e) { + onWheel: function onWheel(e) { this.scroll(e.deltaY, e.deltaMode); utils.stopPropagation(e); utils.preventDefault(e); }, - render: function() { + render: function render() { var self = this; var thumbStyle = { @@ -6621,14 +7292,14 @@ }); }, { - "../orb.utils": 19, - "../orb.utils.dom": 18, + "../orb.utils": 53, + "../orb.utils.dom": 52, "react": "react", "react-dom": "react-dom" }], - 42: [function(_dereq_, module, exports) { + 76: [function(_dereq_, module, exports) { - var React = typeof window === 'undefined' ? _dereq_('react') : window.React, + var React = _dereq_('react'), axe = _dereq_('../orb.axe'), domUtils = _dereq_('../orb.utils.dom'); @@ -6636,19 +7307,19 @@ displayName: 'exports', _toInit: [], - componentDidMount: function() { + componentDidMount: function componentDidMount() { for (var i = 0; i < this._toInit.length; i++) { var btn = this._toInit[i]; btn.init(this.props.pivotTableComp, this.refs[btn.ref]); } }, - componentDidUpdate: function() { + componentDidUpdate: function componentDidUpdate() { for (var i = 0; i < this._toInit.length; i++) { var btn = this._toInit[i]; btn.init(this.props.pivotTableComp, this.refs[btn.ref]); } }, - createCallback: function(action) { + createCallback: function createCallback(action) { if (action != null) { var pgridComponent = this.props.pivotTableComp; return function(e) { @@ -6657,7 +7328,7 @@ } return null; }, - render: function() { + render: function render() { var config = this.props.pivotTableComp.pgridwidget.pgrid.config; @@ -6714,7 +7385,7 @@ var excelExport = _dereq_('../orb.export.excel'); var defaultToolbarConfig = { - exportToExcel: function(pgridComponent, button) { + exportToExcel: function exportToExcel(pgridComponent, button) { var a = document.createElement('a'); a.download = "orbpivotgrid.xls"; a.href = excelExport(pgridComponent.props.pgridwidget); @@ -6722,19 +7393,19 @@ a.click(); document.body.removeChild(a); }, - expandAllRows: function(pgridComponent, button) { + expandAllRows: function expandAllRows(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true); }, - collapseAllRows: function(pgridComponent, button) { + collapseAllRows: function collapseAllRows(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false); }, - expandAllColumns: function(pgridComponent, button) { + expandAllColumns: function expandAllColumns(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true); }, - collapseAllColumns: function(pgridComponent, button) { + collapseAllColumns: function collapseAllColumns(pgridComponent, button) { pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false); }, - updateSubtotalsButton: function(axetype, pgridComponent, button) { + updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) { var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype); button.style.display = subTotalsState === null ? 'none' : ''; @@ -6751,20 +7422,20 @@ domUtils.removeClass(button, classToRemove); domUtils.addClass(button, classToAdd); }, - initSubtotals: function(axetype) { + initSubtotals: function initSubtotals(axetype) { var self = this; return function(pgridComponent, button) { self.updateSubtotalsButton(axetype, pgridComponent, button); }; }, - toggleSubtotals: function(axetype) { + toggleSubtotals: function toggleSubtotals(axetype) { var self = this; return function(pgridComponent, button) { pgridComponent.toggleSubtotals(axetype); self.updateSubtotalsButton(axetype, pgridComponent, button); }; }, - updateGrandtotalButton: function(axetype, pgridComponent, button) { + updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) { var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype); button.style.display = subTotalsState === null ? 'none' : ''; @@ -6781,13 +7452,13 @@ domUtils.removeClass(button, classToRemove); domUtils.addClass(button, classToAdd); }, - initGrandtotal: function(axetype) { + initGrandtotal: function initGrandtotal(axetype) { var self = this; return function(pgridComponent, button) { self.updateGrandtotalButton(axetype, pgridComponent, button); }; }, - toggleGrandtotal: function(axetype) { + toggleGrandtotal: function toggleGrandtotal(axetype) { var self = this; return function(pgridComponent, button) { pgridComponent.toggleGrandtotal(axetype); @@ -6857,10 +7528,10 @@ }]; }, { - "../orb.axe": 2, - "../orb.export.excel": 5, - "../orb.utils.dom": 18, + "../orb.axe": 36, + "../orb.export.excel": 39, + "../orb.utils.dom": 52, "react": "react" }] - }, {}, [7])(7) -}); + }, {}, [41])(41) +}); \ No newline at end of file diff --git a/dist/v1.1.0/orb-1.1.0.min.css b/dist/v1.1.0/orb-1.1.0.min.css index f9d24b8..dade630 100644 --- a/dist/v1.1.0/orb-1.1.0.min.css +++ b/dist/v1.1.0/orb-1.1.0.min.css @@ -1 +1 @@ -.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:right}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700} \ No newline at end of file +.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:100%}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700} \ No newline at end of file diff --git a/dist/v1.1.0/orb-1.1.0.min.js b/dist/v1.1.0/orb-1.1.0.min.js index 53bb4d5..d5bc7d8 100644 --- a/dist/v1.1.0/orb-1.1.0.min.js +++ b/dist/v1.1.0/orb-1.1.0.min.js @@ -1,17 +1,17 @@ /** * orb v1.1.0, Pivot table javascript library. * - * Copyright (c) 2014-2015 Najmeddine Nouri . + * Copyright (c) 2014-2016 Najmeddine Nouri . * * @version v1.1.0 * @link http://orbjs.net/ * @license MIT */ -"use strict";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.orb=e()}}(function(){return function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[i]={exports:{}};t[i][0].call(u.exports,function(e){var n=t[i][1][e];return o(n?n:e)},u,u.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i0&&(r||s>1?(o(e,t,n,function(e){i+=e}),i/=s,o(e,t,n,function(e){a+=(e-i)*(e-i)}),a/=r?s:s-1):a=NaN),a}function o(e,t,n,r){var o="all"===t;if(t=o?n:t,t.length>0)for(var a=0;ae)&&(r=e)}),r},max:function(e,t,n){var r=null;return o(e,t,n,function(e){(null==r||e>r)&&(r=e)}),r},avg:function(e,t,n){var r=0,a=("all"===t?n:t).length;return a>0&&(o(e,t,n,function(e){r+=e}),r/=a),r},prod:function(e,t,n){var r,a=("all"===t?n:t).length;return a>0&&(r=1,o(e,t,n,function(e){r*=e})),r},stdev:function(e,t,n){return Math.sqrt(r(e,t,n,!1))},stdevp:function(e,t,n){return Math.sqrt(r(e,t,n,!0))},"var":function(e,t,n){return r(e,t,n,!1)},varp:function(e,t,n){return r(e,t,n,!0)}}},{}],2:[function(e,t,n){var r=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function n(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&r.isArray(e)&&e.length>0)for(var t=0,n=e.length;n>t;t++)for(var a=e[t],i=s.root,c=0;ct.name?1:0})})},t.exports.Type=a},{"./orb.dimension":4,"./orb.utils":19}],3:[function(e,t,n){function r(e,t,n){for(var r=0;r-1?e[n]:null}function r(e,t){for(var n=0;n=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,n(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,n(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,n(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return n(o.allFields,e)},this.getRowField=function(e){return n(o.rowFields,e)},this.getColumnField=function(e){return n(o.columnFields,e)},this.getDataField=function(e){return n(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=u.ownProperties(e),n=[],r=0;r',l="";t.exports=function(e){function t(e){return"'+e+""}function n(e,n,r,o){var a,i=o||"";for(a=0;n>a;a++)i+="";for(i+=e.reduce(function(e,n){return e+=t(n.caption)},""),a=0;r>a;a++)i+="";return i+""}function c(e){return r.btoa(unescape(encodeURIComponent(e)))}var u=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',v='style="background-color: '+g+';" bgcolor="'+g+'"',b=Math.max(u.dataFields.length+1,e.layout.pivotTable.width),y=n(u.dataFields,0,b-u.dataFields.length,'Data'),x='',w=n(u.columnFields,e.layout.rowHeaders.width,b-(e.layout.rowHeaders.width+u.columnFields.length)),T=function(){for(var n,r="",a=0;a";if(a";else s+=u.rowFields.reduce(function(e,n){return e+=t(n.caption)},"");s+=i.reduce(function(e,t){var n=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+n+""},""),r+=s+""}return r}(),C=function(){for(var t="",n=0;n";o+=r.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[n];o+=a.reduce(function(e,t,n){var r=u.dataFields[n%=u.dataFields.length].formatFunc,o=null==t.value?"":r?r()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+c(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":12,"./orb.ui.header":15,"./orb.utils":19}],6:[function(e,t,n){var r=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,n,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&r.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=n,this.excludeStatic=i,this.test=function(e){if(r.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue===!1||s.staticValue===o.NONE?!1:!0},this.isAlwaysTrue=function(){return!(s.term||r.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(r.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(r.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":19}],7:[function(e,t,n){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":5,"./orb.pgrid":8,"./orb.query":10,"./orb.ui.pgridwidget":16,"./orb.utils":19}],8:[function(e,t,n){var r=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),c=t.exports=function(e){function t(e){e!==!1&&n(),f.rows.update(),f.columns.update(),p(),f.publish(c.EVENT_UPDATED)}function n(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var c=t.indexOf(l);c>=0&&(e[s]=0-(l+2),i.push(l))}}}var u,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(r)for(var h=0;h0)for(var r=0,o=[f.columns.root];rp&&(h[c].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,r++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],n=0;n1){l.isNumber(n[0])||l.isDate(n[0])?n.sort(function(e,t){return e?t?e-t:1:t?-1:0}):n.sort();for(var c=0;c0?" - ":"")+e[n].caption;return t}for(var t=f.config,n=e(t.columnFields),r=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var n,r=[],a=!0,i=0;i0){for(n=0;n0){var n=i.headers[i.headers.length-1],r=n[0];if(r){for(var o,s=r.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),n(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(r.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(r.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":2,"./orb.ui.axe":13,"./orb.ui.header":15}],15:[function(e,t,n){function r(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var n=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:n="empty";break;case i.INNER:n="header "+n;break;case i.WRAPPER:n="header "+n;break;case i.SUB_TOTAL:n="header header-st "+n;break;case i.GRAND_TOTAL:n="header header-gt "+n; -}return n},getCellClass:function(e,t){var n="";switch(e){case i.GRAND_TOTAL:n="cell-gt";break;case i.SUB_TOTAL:n=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:n=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return n}};t.exports.header=function(e,t,n,a,s,l){function c(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var n=f.parent;null!=n&&(!n.dim.field.subTotal.visible||null!=n.subtotalHeader&&n.subtotalHeader.expanded);)n=n.parent;return null==n||null==n.subtotalHeader?t:n.subtotalHeader.expanded}function u(e){var t,n=0,r=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?n.value:o.value:e.config.dataFields[0],r.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){r.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){r.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":2,"./orb.state":11}],16:[function(e,t,n){var r="undefined"==typeof window?e("react-dom"):window.ReactDOM,o=e("./orb.axe"),a=e("./orb.pgrid"),i=e("./orb.ui.header"),s=e("./orb.ui.rows"),l=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),u=e("./react/orb.react.PivotChart.jsx"),d=e("./react/orb.react.PivotTable.jsx"),p=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){m.pgrid.subscribe(a.EVENT_UPDATED,h),m.pgrid.subscribe(a.EVENT_SORT_CHANGED,h),m.pgrid.subscribe(a.EVENT_CONFIG_CHANGED,h),n()}function n(){function e(e,t){return function(){return e()&&t()}}m.rows=new s(m.pgrid.rows),m.columns=new l(m.pgrid.columns);var t=m.rows.headers,n=m.columns.leafsHeaders;m.layout={rowHeaders:{width:(m.pgrid.rows.fields.length||1)+("rows"===m.pgrid.config.dataHeadersLocation&&m.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:m.columns.leafsHeaders.length,height:(m.pgrid.columns.fields.length||1)+("columns"===m.pgrid.config.dataHeadersLocation&&m.pgrid.config.dataFieldsCount>1?1:0)}},m.layout.pivotTable={width:m.layout.rowHeaders.width+m.layout.columnHeaders.width,height:m.layout.rowHeaders.height+m.layout.columnHeaders.height};var r,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return m.pgrid.filteredDataSource[e]});n=e.rowType===i.HeaderType.GRAND_TOTAL&&e.colType===i.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===i.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===i.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:n,comp:{type:p,props:{headers:m.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:m.pgrid.config.theme}},theme:m.pgrid.config.theme,style:g.fontStyle})}},t()}},{"./orb.axe":2,"./orb.pgrid":8,"./orb.ui.cols":14,"./orb.ui.header":15,"./orb.ui.rows":17,"./react/orb.react.Dialog.jsx":21,"./react/orb.react.Grid.jsx":28,"./react/orb.react.PivotChart.jsx":31,"./react/orb.react.PivotTable.jsx":40,"react-dom":"react-dom"}],17:[function(e,t,n){var r=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var n=e[e.length-1],r=0;r0)for(var s=e.length-1,l=e[s],c=l.length>0?l[l.length-1]:null,u=0;u0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(n(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),n(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(r.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(r.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":2,"./orb.ui.axe":13,"./orb.ui.header":15}],18:[function(e,t,n){function r(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),n=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-n.left,y:t.top-n.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,n){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(r=t(e[o],o),!r||n===!0);o++);return r},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var n=0;n-1?void 0:n}return JSON.stringify(e,n,2)},addEventListener:function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},removeEventListener:function(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,n=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:n}}},function(t){function n(e){this.message=e}var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.name="InvalidCharacterError",t.btoa=e&&e.btoa?function(t){return e.btoa(t)}:function(e){for(var t,o,a=String(e),i=0,s=r,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&t>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new n("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");t=t<<8|o}return l},t.atob=e&&e.atob?function(t){return e.atob(t)}:function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new n("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=t.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=r.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM;t.exports=r.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var n=0;no?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(r>l?(r-l)/2:0)+"px",e.style.left=(n>s?(n-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;(t==this.overlayElement||"button-close"===t.className)&&(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":19,react:"react","react-dom":"react-dom"}],22:[function(e,t,n){var r="undefined"==typeof window?e("react-dom"):window.ReactDOM,o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){c?i(c,function(){c=e,a(e,t)}):(c=e,a(e,t))}function n(e){u?i(u,function(){u=e,a(e)}):(u=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,c=null,u=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(c){var a=null!=u?u.position:null;s.moveButton(o,c.component.props.axetype,a)}d=null,t(null),n(null)}else d=r.findDOMNode(l)},registerTarget:function(e,t,n,r){p.push({component:e,axetype:t,onDragOver:n,onDragEnd:r})},unregisterTarget:function(e){for(var t,n=0;n0&&(t=s[s.length-1])}n(t)})}}}}()},{"../orb.utils":19,"react-dom":"react-dom"}],23:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.DragManager.jsx");t.exports=r.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),r.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":22,react:"react"}],24:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=r.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,n){return n=h&&c.pageX=f&&c.pageY=r&&(e.style.width=m+"px"),v>=o&&(e.style.height=v+"px",t.tBodies[0].style.height=p.bottom-p.top+g.y+"px"),s.stopPropagation(l),s.preventDefault(l)}},s.addEventListener(n,"mousedown",this.resizeMouseDown),s.addEventListener(document,"mouseup",this.resizeMouseUp),s.addEventListener(document,"mousemove",this.resizeMouseMove)}var i,u,d=this,p="indeterminate",h=!1,f=!1,g=l.Operators.MATCH,m="",v={filterContainer:null,checkboxes:{},searchBox:null,operatorBox:null,allCheckbox:null,addCheckbox:null,enableRegexButton:null,clearSearchButton:null,okButton:null,cancelButton:null,resizeGrip:null};this.init=function(e){v.filterContainer=e,v.checkboxes={},v.searchBox=v.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0],v.clearSearchButton=v.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0],v.operatorBox=v.filterContainer.rows[0].cells[0].children[0],v.okButton=v.filterContainer.rows[2].cells[0].children[0],v.cancelButton=v.filterContainer.rows[2].cells[0].children[1],v.resizeGrip=v.filterContainer.rows[2].cells[1].children[0];for(var t=v.filterContainer.rows[1].cells[0].children[0].rows,n=0;ni/2+1,r=0;r=0;c.checked=t.toExclude?!u:u}}},this.updateAllCheckbox=function(){if(!h){for(var t=null,n=0;n0){for(var i=[],s=0;s0)for(var l=0;l2&&(n+=" header-gt-exp")),e.leftmost&&(n+=" "+("cell-template-datavalue"===t.template?"cell":"header")+"-leftmost"),e.topmost&&(n+=" cell-topmost"),n}var o="undefined"==typeof window?e("react"):window.React,a="undefined"==typeof window?e("react-dom"):window.ReactDOM,i=e("../orb.ui.header"),s=e("../orb.utils.dom"),l=null,c=null;t.exports=o.createClass({displayName:"exports",expand:function(){this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell)},collapse:function(){this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell)},updateCellInfos:function(){var e=a.findDOMNode(this),t=this.props.cell;if(e.__orb=e.__orb||{},t.visible()){var n=this.refs.cellContent,r=[],o=null==l,i=!this.props.leftmost&&null==c,u=e.textContent||e.innerText;if(o&&r.push("padding-left"),i&&r.push("border-left-width"),r.length>0){var d=s.getStyle(e,r,!0);o&&(l=parseFloat(d[0])),i&&(c=parseFloat(d[o?1:0]))}s.removeClass(e,"cell-hidden"),e.__orb._visible=!0,u==e.__orb._lastText&&e.__orb._textWidth||(e.__orb._lastText=u,e.__orb._textWidth=s.getSize(n).width),e.__orb._colSpan=this.props.cell.hspan(!0)||1,e.__orb._rowSpan=this.props.cell.vspan(!0)||1,e.__orb._paddingLeft=l,e.__orb._paddingRight=l,e.__orb._borderLeftWidth=this.props.leftmost?0:c,e.__orb._borderRightWidth=0}else e.__orb._visible=!1},componentDidMount:function(){this.updateCellInfos()},componentDidUpdate:function(){this.updateCellInfos()},shouldComponentUpdate:function(e,t){return!e.cell||e.cell!=this.props.cell||this._latestVisibleState||e.cell.visible()?!0:!1},_latestVisibleState:!1,render:function(){var e,t,n=this,a=this.props.cell,s=[],l=!1;switch(this._latestVisibleState=a.visible(),a.template){case"cell-template-row-header":case"cell-template-column-header":var c=a.type===i.HeaderType.WRAPPER&&a.dim.field.subTotal.visible&&a.dim.field.subTotal.collapsible,u=a.type===i.HeaderType.SUB_TOTAL&&!a.expanded;c||u?(l=!0,s.push(o.createElement("table",{key:"header-value",ref:"cellContent"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"orb-tgl-btn"},o.createElement("div",{className:"orb-tgl-btn-"+(c?"down":"right"),onClick:c?this.collapse:this.expand})),o.createElement("td",{className:"hdr-val"},o.createElement("div",{dangerouslySetInnerHTML:{__html:a.value||" "}}))))))):e=(a.value||" ")+(a.type===i.HeaderType.SUB_TOTAL?" Total":"");break;case"cell-template-dataheader":e=a.value.caption;break;case"cell-template-datavalue":e=a.datafield&&a.datafield.formatFunc?a.datafield.formatFunc()(a.value):a.value,t=function(){n.props.pivotTableComp.pgridwidget.drilldown(a,n.props.pivotTableComp.id)}}if(!l){var d;switch(a.template){case"cell-template-datavalue":d="cell-data";break;default:"cell-template-dataheader"!=a.template&&a.type!==i.HeaderType.GRAND_TOTAL&&(d="hdr-val")}s.push(o.createElement("div",{key:"cell-value",ref:"cellContent",className:d},o.createElement("div",{dangerouslySetInnerHTML:{__html:e||" "}})))}return o.createElement("td",{className:r(this.props),onDoubleClick:t,colSpan:a.hspan(),rowSpan:a.vspan()},o.createElement("div",null,s))}})},{"../orb.ui.header":15,"../orb.utils.dom":18,react:"react","react-dom":"react-dom"}],31:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM,a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=(e("./orb.react.Toolbar.jsx"),e("./orb.react.PivotTable.UpperButtons.jsx")),l=e("./orb.react.PivotTable.ColumnButtons.jsx"),c=e("./orb.react.PivotTable.RowButtons.jsx"),u=e("./orb.react.Chart.jsx"),d=e("../orb.utils.dom"),p=1,h={};t.exports=r.createClass({displayName:"exports",id:p++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),h[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,n){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,n)},applyFilter:function(e,t,n,r,o){this.pgridwidget.applyFilter(e,t,n,r,o)},registerThemeChanged:function(e){e&&h[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=h[this.id].indexOf(e))>=0&&h[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t0&&!n&&i.lastLeftMostCellVSpan--,r.createElement("tr",{style:s},e)}})},{"../orb.axe":2,"./orb.react.PivotCell.jsx":30,react:"react"}],33:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("./orb.react.PivotButton.jsx"),i=e("./orb.react.DropTarget.jsx");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,n=t.columnFields.map(function(t,n){return r.createElement(a,{key:t.name,field:t,axetype:o.Type.COLUMNS,position:n,pivotTableComp:e.props.pivotTableComp})});return r.createElement(i,{buttons:n,axetype:o.Type.COLUMNS})}})},{"../orb.axe":2,"./orb.react.DropTarget.jsx":24,"./orb.react.PivotButton.jsx":29,react:"react"}],34:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,n=0===t.columns.headers.length?"":" columns-cntr",i={lastLeftMostCellVSpan:0,topMostCells:{}},s=t.columns.headers.map(function(t,n){return r.createElement(a,{key:n,row:t,axetype:o.Type.COLUMNS,pivotTableComp:e.props.pivotTableComp,layoutInfos:i})});return r.createElement("div",{className:"inner-table-container"+n,onWheel:this.props.pivotTableComp.onWheel},r.createElement("table",{className:"inner-table"},r.createElement("colgroup",null),r.createElement("tbody",null,s)))}})},{"../orb.axe":2,"./orb.react.PivotRow.jsx":32,react:"react"}],35:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,n={lastLeftMostCellVSpan:0,topMostCells:{}},i=t.dataRows.map(function(t,i){return r.createElement(a,{key:i,row:t,axetype:o.Type.DATA,layoutInfos:n,pivotTableComp:e.props.pivotTableComp})});return r.createElement("div",{className:"inner-table-container data-cntr",onWheel:this.props.pivotTableComp.onWheel},r.createElement("table",{className:"inner-table"},r.createElement("colgroup",null),r.createElement("tbody",null,i)))}})},{"../orb.axe":2,"./orb.react.PivotRow.jsx":32,react:"react"}],36:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("./orb.react.DropTargetVertical.jsx"),s=e("../orb.axe");t.exports=r.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,n=t.rowFields.map(function(t,n){return r.createElement(o,{key:t.name,field:t,axetype:s.Type.ROWS,position:n,pivotTableComp:e.props.pivotTableComp})});return t.chartMode.enabled?r.createElement(i,{buttons:n,axetype:s.Type.ROWS}):r.createElement(a,{buttons:n,axetype:s.Type.ROWS})}})},{"../orb.axe":2,"./orb.react.DropTarget.jsx":24,"./orb.react.DropTargetVertical.jsx":25,"./orb.react.PivotButton.jsx":29,react:"react"}],37:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM,a=e("./orb.react.PivotRow.jsx"),i=e("../orb.axe");t.exports=r.createClass({displayName:"exports",setColGroup:function(e){var t=o.findDOMNode(this),n=this.refs.colgroup;t.style.tableLayout="auto",n.innerHTML="";for(var r=0;r0&&(s.w+=e,s.colWidths[s.colWidths.length-1]+=e)},"table"===n&&o(this)}function o(e){if(e&&e.node){for(var t=e.node,n=[],r=0;r1&&l.__orb._rowSpan>=t.rows.length-r,0);u0;)i.inhibit--,a++,i=n[a];n.length-1n[a].width&&(n[a].width=c),n[a].inhibit=l.__orb._rowSpan-1,a++}}for(i=n[a];i;)i.inhibit>0&&i.inhibit--,a++,i=n[a]}e.w=0,e.colWidths=n.map(function(t,n){return e.w+=t.width,t.width})}}var a="undefined"==typeof window?e("react-dom"):window.ReactDOM,i=e("../orb.utils.dom"),s=t.exports={synchronizeWidths:function(e){return e.pgridwidget.pgrid.config.chartMode.enabled?s.synchronizePivotChartWidths(e):void s.synchronizePivotTableWidths(e)},synchronizePivotChartWidths:function(e){var t=e.refs.pivotWrapperTable,n=new r(e.refs.pivot),o=new r(e.refs.upperButtons),a=new r(e.refs.colButtons),s=new r(e.refs.rowButtons),l=(new r(e.refs.chart),Math.max(s.w,67)),c=n.w-l,u=e.pgridwidget.pgrid.config.height,d=u?u-(o.h+a.h):null;return i.updateTableColGroup(t,[l,c]),{width:c,height:d}},synchronizePivotTableWidths:function(e){var t=e.refs.pivotWrapperTable,n=new r(e.refs.pivot),o=new r(e.refs.toolbar),a=new r(e.refs.colHeaders,!0,"table"),s=new r(e.refs.rowHeaders,!0,"table"),l=new r(e.refs.dataCells,!0,"table"),c=new r(e.refs.upperButtons),u=new r(e.refs.colButtons),d=new r(e.refs.rowButtons,!0),p=new r(e.refs.horizontalScrollBar),h=new r(e.refs.verticalScrollBar),f=l.getLargestWidths(a),g=Math.max(s.w,d.w,67),m=Math.min(f.total+1,n.w-g-h.w),v=e.pgridwidget.pgrid.config.height,b=v?v-(o?o.h+17:0)-(c.h+u.h+a.h+p.h):null,y=b?Math.ceil(Math.min(b,l.h)):null;s.addToWidth(g-s.w),i.updateTableColGroup(l.node,f.max),i.updateTableColGroup(a.node,f.max),i.updateTableColGroup(s.node,s.colWidths),l.setStyle("width",f.total),a.setStyle("width",f.total),s.setStyle("width",g),l.setParentStyle("width",m),a.setParentStyle("width",m),y&&(l.setParentStyle("height",y),s.setParentStyle("height",y)),i.updateTableColGroup(t,[g,m,h.w,Math.max(n.w-(g+m+h.w),0)]),e.refs.horizontalScrollBar.refresh(),e.refs.verticalScrollBar.refresh()}}},{"../orb.utils.dom":18,"react-dom":"react-dom"}],39:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("../orb.axe");t.exports=r.createClass({displayName:"exports",render:function(){var e,t=this,n=this.props.pivotTableComp.pgridwidget.pgrid.config;if(n.canMoveFields){var s=n.availablefields().map(function(e,n){return r.createElement(o,{key:e.name,field:e,axetype:null,position:n,pivotTableComp:t.props.pivotTableComp})});e=r.createElement("tr",null,r.createElement("td",{className:"flds-grp-cap av-flds text-muted"},r.createElement("div",null,"Fields")),r.createElement("td",{className:"av-flds"},r.createElement(a,{buttons:s,axetype:null})))}else e=null;var l=n.dataFields.map(function(e,n){return r.createElement(o,{key:e.name,field:e,axetype:i.Type.DATA,position:n,pivotTableComp:t.props.pivotTableComp})}),c=r.createElement("tr",null,r.createElement("td",{className:"flds-grp-cap text-muted"},r.createElement("div",null,"Data")),r.createElement("td",{className:"empty"},r.createElement(a,{buttons:l,axetype:i.Type.DATA})));return r.createElement("table",{className:"inner-table upper-buttons"},r.createElement("tbody",null,e,c))}})},{"../orb.axe":2,"./orb.react.DropTarget.jsx":24,"./orb.react.PivotButton.jsx":29,react:"react"}],40:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o="undefined"==typeof window?e("react-dom"):window.ReactDOM,a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=e("./orb.react.Toolbar.jsx"),l=e("./orb.react.PivotTable.UpperButtons.jsx"),c=e("./orb.react.PivotTable.ColumnButtons.jsx"),u=e("./orb.react.PivotTable.RowButtons.jsx"),d=e("./orb.react.PivotTable.RowHeaders.jsx"),p=e("./orb.react.PivotTable.ColumnHeaders.jsx"),h=e("./orb.react.PivotTable.DataCells.jsx"),f=e("./orb.react.ScrollBars.jsx"),g=f.HorizontalScrollBar,m=f.VerticalScrollBar,v=e("../orb.utils"),b=e("../orb.utils.dom"),y=1,x={};t.exports=r.createClass({displayName:"exports",id:y++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),x[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,n){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,n)},toggleSubtotals:function(e){this.pgridwidget.toggleSubtotals(e)},toggleGrandtotal:function(e){this.pgridwidget.toggleGrandtotal(e)},applyFilter:function(e,t,n,r,o){this.pgridwidget.applyFilter(e,t,n,r,o)},registerThemeChanged:function(e){e&&x[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=x[this.id].indexOf(e))>=0&&x[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),n=s.getSize(e),r=this.getScrollSize(),o=t[this.sizeProp]>=n[this.sizeProp]?0:t[this.sizeProp]/n[this.sizeProp]*r;this.setState({containerSize:r,size:o,thumbOffset:Math.min(this.state.thumbOffset,r-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var n=this.getScrollSize()-this.state.size,r=this.state.thumbOffset+e;if(0>r&&(r=0),r>n&&(r=n),this.state.thumbOffset!=r)return this.setState({thumbOffset:r},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var n="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,r=this.state.size<=0?null:o.createElement("div",{className:n,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},r)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":19,"../orb.utils.dom":18,react:"react","react-dom":"react-dom"}],42:[function(e,t,n){var r="undefined"==typeof window?e("react"):window.React,o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=r.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;es;)i.call(e,o=a[s++])&&t.push(o);return t}},{"./$":23}],14:[function(e,t,r){var n=e("./$.global"),o=e("./$.core"),a=e("./$.ctx"),i="prototype",s=function(e,t,r){var l,u,c,d=e&s.F,p=e&s.G,h=e&s.S,f=e&s.P,g=e&s.B,m=e&s.W,b=p?o:o[t]||(o[t]={}),v=p?n:h?n[t]:(n[t]||{})[i];p&&(r=t);for(l in r)u=!d&&v&&l in v,u&&l in b||(c=u?v[l]:r[l],b[l]=p&&"function"!=typeof v[l]?r[l]:g&&u?a(c,n):m&&v[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[i]=e[i],t}(c):f&&"function"==typeof c?a(Function.call,c):c,f&&((b[i]||(b[i]={}))[l]=c))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},{"./$.core":9,"./$.ctx":10,"./$.global":17}],15:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],16:[function(e,t,r){var n=e("./$.to-iobject"),o=e("./$").getNames,a={}.toString,i="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(t){return i.slice()}};t.exports.get=function(e){return i&&"[object Window]"==a.call(e)?s(e):o(n(e))}},{"./$":23,"./$.to-iobject":30}],17:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],18:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],19:[function(e,t,r){var n=e("./$"),o=e("./$.property-desc");t.exports=e("./$.descriptors")?function(e,t,r){return n.setDesc(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./$":23,"./$.descriptors":12,"./$.property-desc":26}],20:[function(e,t,r){var n=e("./$.cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./$.cof":8}],21:[function(e,t,r){var n=e("./$.cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./$.cof":8}],22:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],23:[function(e,t,r){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},{}],24:[function(e,t,r){var n=e("./$"),o=e("./$.to-iobject");t.exports=function(e,t){for(var r,a=o(e),i=n.getKeys(a),s=i.length,l=0;s>l;)if(a[r=i[l++]]===t)return r}},{"./$":23,"./$.to-iobject":30}],25:[function(e,t,r){t.exports=!0},{}],26:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],27:[function(e,t,r){t.exports=e("./$.hide")},{"./$.hide":19}],28:[function(e,t,r){var n=e("./$").setDesc,o=e("./$.has"),a=e("./$.wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},{"./$":23,"./$.has":18,"./$.wks":32}],29:[function(e,t,r){var n=e("./$.global"),o="__core-js_shared__",a=n[o]||(n[o]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./$.global":17}],30:[function(e,t,r){var n=e("./$.iobject"),o=e("./$.defined");t.exports=function(e){return n(o(e))}},{"./$.defined":11,"./$.iobject":20}],31:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],32:[function(e,t,r){var n=e("./$.shared")("wks"),o=e("./$.uid"),a=e("./$.global").Symbol;t.exports=function(e){return n[e]||(n[e]=a&&a[e]||(a||o)("Symbol."+e))}},{"./$.global":17,"./$.shared":29,"./$.uid":31}],33:[function(e,t,r){},{}],34:[function(e,t,r){var n=e("./$"),o=e("./$.global"),a=e("./$.has"),i=e("./$.descriptors"),s=e("./$.export"),l=e("./$.redefine"),u=e("./$.fails"),c=e("./$.shared"),d=e("./$.set-to-string-tag"),p=e("./$.uid"),h=e("./$.wks"),f=e("./$.keyof"),g=e("./$.get-names"),m=e("./$.enum-keys"),b=e("./$.is-array"),v=e("./$.an-object"),y=e("./$.to-iobject"),x=e("./$.property-desc"),w=n.getDesc,T=n.setDesc,C=n.create,E=g.get,S=o.Symbol,N=o.JSON,F=N&&N.stringify,M=!1,D=h("_hidden"),O=n.isEnum,A=c("symbol-registry"),L=c("symbols"),R="function"==typeof S,_=Object.prototype,k=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=w(_,t);n&&delete _[t],T(e,t,r),n&&e!==_&&T(_,t,n)}:T,P=function(e){var t=L[e]=C(S.prototype);return t._k=e,i&&M&&k(_,e,{configurable:!0,set:function(t){a(this,D)&&a(this[D],e)&&(this[D][e]=!1),k(this,e,x(1,t))}}),t},B=function(e){return"symbol"==typeof e},j=function(e,t,r){return r&&a(L,t)?(r.enumerable?(a(e,D)&&e[D][t]&&(e[D][t]=!1),r=C(r,{enumerable:x(0,!1)})):(a(e,D)||T(e,D,x(1,{})),e[D][t]=!0),k(e,t,r)):T(e,t,r)},H=function(e,t){v(e);for(var r,n=m(t=y(t)),o=0,a=n.length;a>o;)j(e,r=n[o++],t[r]);return e},W=function(e,t){return void 0===t?C(e):H(C(e),t)},$=function(e){var t=O.call(this,e);return t||!a(this,e)||!a(L,e)||a(this,D)&&this[D][e]?t:!0},z=function(e,t){var r=w(e=y(e),t);return!r||!a(L,t)||a(e,D)&&e[D][t]||(r.enumerable=!0),r},U=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])||t==D||n.push(t);return n},I=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])&&n.push(L[t]);return n},G=function(e){if(void 0!==e&&!B(e)){for(var t,r,n=[e],o=1,a=arguments;a.length>o;)n.push(a[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&b(t)||(t=function(e,t){return r&&(t=r.call(this,e,t)),B(t)?void 0:t}),n[1]=t,F.apply(N,n)}},V=u(function(){var e=S();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))});R||(S=function(){if(B(this))throw TypeError("Symbol is not a constructor");return P(p(arguments.length>0?arguments[0]:void 0))},l(S.prototype,"toString",function(){return this._k}),B=function(e){return e instanceof S},n.create=W,n.isEnum=$,n.getDesc=z,n.setDesc=j,n.setDescs=H,n.getNames=g.get=U,n.getSymbols=I,i&&!e("./$.library")&&l(_,"propertyIsEnumerable",$,!0));var q={"for":function(e){return a(A,e+="")?A[e]:A[e]=S(e)},keyFor:function(e){return f(A,e)},useSetter:function(){M=!0},useSimple:function(){M=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(e){var t=h(e);q[e]=R?t:P(t)}),M=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",q),s(s.S+s.F*!R,"Object",{create:W,defineProperty:j,defineProperties:H,getOwnPropertyDescriptor:z,getOwnPropertyNames:U,getOwnPropertySymbols:I}),N&&s(s.S+s.F*(!R||V),"JSON",{stringify:G}),d(S,"Symbol"),d(Math,"Math",!0),d(o.JSON,"JSON",!0)},{"./$":23,"./$.an-object":7,"./$.descriptors":12,"./$.enum-keys":13,"./$.export":14,"./$.fails":15,"./$.get-names":16,"./$.global":17,"./$.has":18,"./$.is-array":21,"./$.keyof":24,"./$.library":25,"./$.property-desc":26,"./$.redefine":27,"./$.set-to-string-tag":28,"./$.shared":29,"./$.to-iobject":30,"./$.uid":31,"./$.wks":32}],35:[function(e,t,r){function n(e,t,r,n){var a=0,i=0,s=("all"===t?r:t).length;return s>0&&(n||s>1?(o(e,t,r,function(e){i+=e}),i/=s,o(e,t,r,function(e){a+=(e-i)*(e-i)}),a/=n?s:s-1):a=NaN),a}function o(e,t,r,n){var o="all"===t;if(t=o?r:t,t.length>0)for(var a=0;ae)&&(s=e)}),s},max:function l(e,t,r){var l=null;return o(e,t,r,function(e){(null==l||e>l)&&(l=e)}),l},avg:function u(e,t,r){var u=0,n=("all"===t?r:t).length;return n>0&&(o(e,t,r,function(e){u+=e}),u/=n),u},prod:function c(e,t,r){var c,n=("all"===t?r:t).length;return n>0&&(c=1,o(e,t,r,function(e){c*=e})),c},stdev:function(e,t,r){return Math.sqrt(n(e,t,r,!1))},stdevp:function(e,t,r){return Math.sqrt(n(e,t,r,!0))},"var":function(e,t,r){return n(e,t,r,!1)},varp:function(e,t,r){return n(e,t,r,!0)}}},{}],36:[function(e,t,r){var n=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function r(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&n.isArray(e)&&e.length>0)for(var t=0,r=e.length;r>t;t++)for(var a=e[t],i=s.root,u=0;ut.name?1:0})})},t.exports.Type=a},{"./orb.dimension":38,"./orb.utils":53}],37:[function(e,t,r){function n(e,t,r){for(var n=0;n-1?e[r]:null}function n(e,t){for(var r=0;r=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,r(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,r(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,r(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return r(o.allFields,e)},this.getRowField=function(e){return r(o.rowFields,e)},this.getColumnField=function(e){return r(o.columnFields,e)},this.getDataField=function(e){return r(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=c.ownProperties(e),r=[],n=0;n',l="";t.exports=function(e){function t(e){return"'+e+""}function r(e,r,n,o){var a,i=o||"";for(a=0;r>a;a++)i+="";for(i+=e.reduce(function(e,r){return e+=t(r.caption)},""),a=0;n>a;a++)i+="";return i+""}function u(e){return n.btoa(unescape(encodeURIComponent(e)))}var c=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',b='style="background-color: '+g+';" bgcolor="'+g+'"',v=Math.max(c.dataFields.length+1,e.layout.pivotTable.width),y=r(c.dataFields,0,v-c.dataFields.length,'Data'),x='',w=r(c.columnFields,e.layout.rowHeaders.width,v-(e.layout.rowHeaders.width+c.columnFields.length)),T=function(){for(var r,n="",a=0;a";if(a";else s+=c.rowFields.reduce(function(e,r){return e+=t(r.caption)},"");s+=i.reduce(function(e,t){var r=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+r+""},""),n+=s+""}return n}(),C=function(){for(var t="",r=0;r";o+=n.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[r];o+=a.reduce(function(e,t,r){var n=c.dataFields[r%=c.dataFields.length].formatFunc,o=null==t.value?"":n?n()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+u(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":46,"./orb.ui.header":49,"./orb.utils":53}],40:[function(e,t,r){var n=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,r,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&n.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=r,this.excludeStatic=i,this.test=function(e){if(n.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue!==!1&&s.staticValue!==o.NONE},this.isAlwaysTrue=function(){return!(s.term||n.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":53}],41:[function(e,t,r){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":39,"./orb.pgrid":42,"./orb.query":44,"./orb.ui.pgridwidget":50,"./orb.utils":53}],42:[function(e,t,r){var n=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),u=t.exports=function(e){function t(e){e!==!1&&r(),f.rows.update(),f.columns.update(),p(),f.publish(u.EVENT_UPDATED)}function r(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var u=t.indexOf(l);u>=0&&(e[s]=0-(l+2),i.push(l))}}}var c,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(n)for(var h=0;h0)for(var n=0,o=[f.columns.root];np&&(h[u].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,n++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],r=0;r1){l.isNumber(r[0])||l.isDate(r[0])?r.sort(function(e,t){return e?t?e-t:1:t?-1:0}):r.sort();for(var u=0;u0?" - ":"")+e[r].caption;return t}for(var t=f.config,r=e(t.columnFields),n=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var r,n=[],a=!0,i=0;i0){for(r=0;r0){var r=i.headers[i.headers.length-1],n=r[0];if(n){for(var o,s=n.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),r(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(n.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(n.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],49:[function(e,t,r){function n(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var r=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:r="empty";break;case i.INNER:r="header "+r;break;case i.WRAPPER:r="header "+r;break;case i.SUB_TOTAL:r="header header-st "+r;break;case i.GRAND_TOTAL:r="header header-gt "+r}return r},getCellClass:function(e,t){var r="";switch(e){case i.GRAND_TOTAL:r="cell-gt";break;case i.SUB_TOTAL:r=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:r=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return r}};t.exports.header=function(e,t,r,a,s,l){function u(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var r=f.parent;null!=r&&(!r.dim.field.subTotal.visible||null!=r.subtotalHeader&&r.subtotalHeader.expanded);)r=r.parent;return null==r||null==r.subtotalHeader?t:r.subtotalHeader.expanded}function c(e){var t,r=0,n=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?r.value:o.value:e.config.dataFields[0],n.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){n.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){n.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":36,"./orb.state":45}],50:[function(e,t,r){var n=e("react-dom"),o=e("react"),a=e("./orb.axe"),i=e("./orb.pgrid"),s=e("./orb.ui.header"),l=e("./orb.ui.rows"),u=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),d=e("./react/orb.react.PivotChart.jsx"),p=e("./react/orb.react.PivotTable.jsx"),h=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){b.pgrid.subscribe(i.EVENT_UPDATED,f),b.pgrid.subscribe(i.EVENT_SORT_CHANGED,f),b.pgrid.subscribe(i.EVENT_CONFIG_CHANGED,f),r()}function r(){function e(e,t){return function(){return e()&&t()}}b.rows=new l(b.pgrid.rows),b.columns=new u(b.pgrid.columns);var t=b.rows.headers,r=b.columns.leafsHeaders;b.layout={rowHeaders:{width:(b.pgrid.rows.fields.length||1)+("rows"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:b.columns.leafsHeaders.length,height:(b.pgrid.columns.fields.length||1)+("columns"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0)}},b.layout.pivotTable={width:b.layout.rowHeaders.width+b.layout.columnHeaders.width,height:b.layout.rowHeaders.height+b.layout.columnHeaders.height};var n,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return b.pgrid.filteredDataSource[e]});r=e.rowType===s.HeaderType.GRAND_TOTAL&&e.colType===s.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===s.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===s.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:r,comp:{type:h,props:{headers:b.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:b.pgrid.config.theme}},theme:b.pgrid.config.theme,style:m.fontStyle})}},t()}},{"./orb.axe":36,"./orb.pgrid":42,"./orb.ui.cols":48,"./orb.ui.header":49,"./orb.ui.rows":51,"./react/orb.react.Dialog.jsx":55,"./react/orb.react.Grid.jsx":62,"./react/orb.react.PivotChart.jsx":65,"./react/orb.react.PivotTable.jsx":74,react:"react","react-dom":"react-dom"}],51:[function(e,t,r){var n=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var r=e[e.length-1],n=0;n0)for(var s=e.length-1,l=e[s],u=l.length>0?l[l.length-1]:null,c=0;c0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(r(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),r(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(n.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(n.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],52:[function(e,t,r){function n(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),r=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-r.left,y:t.top-r.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,r){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(n=t(e[o],o),!n||r===!0);o++);return n},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var r=0;r-1?void 0:r}return(0,a["default"])(e,r,2)},addEventListener:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):e["on"+t]=r},removeEventListener:function(e,t,r){e.removeEventListener?e.removeEventListener(t,r,!1):e.detachEvent?e.detachEvent("on"+t,r):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,r=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,r=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:r}}},function(e){function t(e){this.message=e}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.name="InvalidCharacterError",e.btoa=r&&r.btoa?function(e){return r.btoa(e)}:function(e){for(var r,o,a=String(e),i=0,s=n,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&r>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new t("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|o}return l},e.atob=r&&r.atob?function(e){return r.atob(e)}:function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=r.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=n.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/json/stringify":1}],54:[function(e,t,r){var n=e("react"),o=e("react-dom");t.exports=n.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var r=0;ro?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(n>l?(n-l)/2:0)+"px",e.style.left=(r>s?(r-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;t!=this.overlayElement&&"button-close"!==t.className||(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":53,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){var n=e("react-dom"),o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){u?i(u,function(){u=e,a(e,t)}):(u=e,a(e,t))}function r(e){c?i(c,function(){c=e,a(e)}):(c=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,u=null,c=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(u){var a=null!=c?c.position:null;s.moveButton(o,u.component.props.axetype,a)}d=null,t(null),r(null)}else d=n.findDOMNode(l)},registerTarget:function(e,t,r,n){p.push({component:e,axetype:t,onDragOver:r,onDragEnd:n})},unregisterTarget:function(e){for(var t,r=0;r0&&(t=s[s.length-1])}r(t)})}}}}()},{"../orb.utils":53,"react-dom":"react-dom"}],57:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx");t.exports=n.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),n.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":56,react:"react"}],58:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=n.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,r){return r=h&&u.pageX=f&&u.pageY=n&&(e.style.width=m+"px"),b>=o&&(e.style.height=b+"px",t.tBodies[0].style.height=p.bottom-p.top+g.y+"px"),s.stopPropagation(l),s.preventDefault(l)}},s.addEventListener(r,"mousedown",this.resizeMouseDown),s.addEventListener(document,"mouseup",this.resizeMouseUp),s.addEventListener(document,"mousemove",this.resizeMouseMove)}var i,c,d=this,p="indeterminate",h=!1,f=!1,g=l.Operators.MATCH,m="",b={filterContainer:null,checkboxes:{},searchBox:null,operatorBox:null,allCheckbox:null,addCheckbox:null,enableRegexButton:null,clearSearchButton:null,okButton:null,cancelButton:null,resizeGrip:null};this.init=function(e){b.filterContainer=e,b.checkboxes={},b.searchBox=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0],b.clearSearchButton=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0],b.operatorBox=b.filterContainer.rows[0].cells[0].children[0],b.okButton=b.filterContainer.rows[2].cells[0].children[0],b.cancelButton=b.filterContainer.rows[2].cells[0].children[1],b.resizeGrip=b.filterContainer.rows[2].cells[1].children[0];for(var t=b.filterContainer.rows[1].cells[0].children[0].rows,r=0;ri/2+1,n=0;n=0;u.checked=t.toExclude?!c:c}}},this.updateAllCheckbox=function(){if(!h){for(var t=null,r=0;r0){for(var i=[],s=0;s0)for(var l=0;l2&&(r+=" header-gt-exp")),e.leftmost&&(r+=" "+("cell-template-datavalue"===t.template?"cell":"header")+"-leftmost"),e.topmost&&(r+=" cell-topmost"),r}var o=e("react"),a=e("react-dom"),i=e("../orb.ui.header"),s=e("../orb.utils.dom"),l=null,u=null;t.exports=o.createClass({displayName:"exports",expand:function(){this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell)},collapse:function(){this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell)},updateCellInfos:function(){var e=a.findDOMNode(this),t=this.props.cell;if(e.__orb=e.__orb||{},t.visible()){var r=this.refs.cellContent,n=[],o=null==l,i=!this.props.leftmost&&null==u,c=e.textContent||e.innerText;if(o&&n.push("padding-left"),i&&n.push("border-left-width"),n.length>0){var d=s.getStyle(e,n,!0);o&&(l=parseFloat(d[0])),i&&(u=parseFloat(d[o?1:0]))}s.removeClass(e,"cell-hidden"),e.__orb._visible=!0,c==e.__orb._lastText&&e.__orb._textWidth||(e.__orb._lastText=c,e.__orb._textWidth=s.getSize(r).width),e.__orb._colSpan=this.props.cell.hspan(!0)||1,e.__orb._rowSpan=this.props.cell.vspan(!0)||1,e.__orb._paddingLeft=l,e.__orb._paddingRight=l,e.__orb._borderLeftWidth=this.props.leftmost?0:u,e.__orb._borderRightWidth=0}else e.__orb._visible=!1},componentDidMount:function(){this.updateCellInfos()},componentDidUpdate:function(){this.updateCellInfos()},shouldComponentUpdate:function(e,t){return!(e.cell&&e.cell==this.props.cell&&!this._latestVisibleState&&!e.cell.visible())},_latestVisibleState:!1,render:function(){var e,t,r=this,a=this.props.cell,s=[],l=!1;switch(this._latestVisibleState=a.visible(),a.template){case"cell-template-row-header":case"cell-template-column-header":var u=a.type===i.HeaderType.WRAPPER&&a.dim.field.subTotal.visible&&a.dim.field.subTotal.collapsible,c=a.type===i.HeaderType.SUB_TOTAL&&!a.expanded;u||c?(l=!0,s.push(o.createElement("table",{key:"header-value",ref:"cellContent"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"orb-tgl-btn"},o.createElement("div",{className:"orb-tgl-btn-"+(u?"down":"right"),onClick:u?this.collapse:this.expand})),o.createElement("td",{className:"hdr-val"},o.createElement("div",{dangerouslySetInnerHTML:{__html:a.value||" "}}))))))):e=(a.value||" ")+(a.type===i.HeaderType.SUB_TOTAL?" Total":"");break;case"cell-template-dataheader":e=a.value.caption;break;case"cell-template-datavalue":e=a.datafield&&a.datafield.formatFunc?a.datafield.formatFunc()(a.value):a.value,t=function(){r.props.pivotTableComp.pgridwidget.drilldown(a,r.props.pivotTableComp.id)}}if(!l){var d;switch(a.template){case"cell-template-datavalue":d="cell-data";break;default:"cell-template-dataheader"!=a.template&&a.type!==i.HeaderType.GRAND_TOTAL&&(d="hdr-val")}s.push(o.createElement("div",{key:"cell-value",ref:"cellContent",className:d},o.createElement("div",{dangerouslySetInnerHTML:{__html:e||" "}})))}return o.createElement("td",{className:n(this.props),onDoubleClick:t,colSpan:a.hspan(),rowSpan:a.vspan()},o.createElement("div",null,s))}})},{"../orb.ui.header":49,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],65:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=(e("./orb.react.Toolbar.jsx"),e("./orb.react.PivotTable.UpperButtons.jsx")),l=e("./orb.react.PivotTable.ColumnButtons.jsx"),u=e("./orb.react.PivotTable.RowButtons.jsx"),c=e("./orb.react.Chart.jsx"),d=e("../orb.utils.dom"),p=1,h={};t.exports=n.createClass({displayName:"exports",id:p++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),h[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&h[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=h[this.id].indexOf(e))>=0&&h[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t0&&!r&&i.lastLeftMostCellVSpan--,n.createElement("tr",{style:s},e)}})},{"../orb.axe":36,"./orb.react.PivotCell.jsx":64,react:"react"}],67:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotButton.jsx"),i=e("./orb.react.DropTarget.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.columnFields.map(function(t,r){return n.createElement(a,{key:t.name,field:t,axetype:o.Type.COLUMNS,position:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement(i,{buttons:r,axetype:o.Type.COLUMNS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],68:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r=0===t.columns.headers.length?"":" columns-cntr",i={lastLeftMostCellVSpan:0,topMostCells:{}},s=t.columns.headers.map(function(t,r){return n.createElement(a,{key:r,row:t,axetype:o.Type.COLUMNS,pivotTableComp:e.props.pivotTableComp,layoutInfos:i})});return n.createElement("div",{className:"inner-table-container"+r,onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,s)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],69:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r={lastLeftMostCellVSpan:0,topMostCells:{}},i=t.dataRows.map(function(t,i){return n.createElement(a,{key:i,row:t,axetype:o.Type.DATA,layoutInfos:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement("div",{className:"inner-table-container data-cntr",onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,i)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],70:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("./orb.react.DropTargetVertical.jsx"),s=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.rowFields.map(function(t,r){return n.createElement(o,{key:t.name,field:t,axetype:s.Type.ROWS,position:r,pivotTableComp:e.props.pivotTableComp})});return t.chartMode.enabled?n.createElement(i,{buttons:r,axetype:s.Type.ROWS}):n.createElement(a,{buttons:r,axetype:s.Type.ROWS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.DropTargetVertical.jsx":59,"./orb.react.PivotButton.jsx":63,react:"react"}],71:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.PivotRow.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",setColGroup:function(e){var t=o.findDOMNode(this),r=this.refs.colgroup;t.style.tableLayout="auto",r.innerHTML="";for(var n=0;n0&&(s.w+=e,s.colWidths[s.colWidths.length-1]+=e)},"table"===r&&o(this)}function o(e){if(e&&e.node){for(var t=e.node,r=[],n=0;n1&&l.__orb._rowSpan>=t.rows.length-n,0);c0;)i.inhibit--,a++,i=r[a];r.length-1r[a].width&&(r[a].width=u),r[a].inhibit=l.__orb._rowSpan-1,a++}}for(i=r[a];i;)i.inhibit>0&&i.inhibit--,a++,i=r[a]}e.w=0,e.colWidths=r.map(function(t,r){return e.w+=t.width,t.width})}}var a=e("react-dom"),i=e("../orb.utils.dom"),s=t.exports={synchronizeWidths:function(e){return e.pgridwidget.pgrid.config.chartMode.enabled?s.synchronizePivotChartWidths(e):void s.synchronizePivotTableWidths(e)},synchronizePivotChartWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.upperButtons),a=new n(e.refs.colButtons),s=new n(e.refs.rowButtons),l=(new n(e.refs.chart),Math.max(s.w,67)),u=r.w-l,c=e.pgridwidget.pgrid.config.height,d=c?c-(o.h+a.h):null;return i.updateTableColGroup(t,[l,u]),{width:u,height:d}},synchronizePivotTableWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.toolbar),a=new n(e.refs.colHeaders,!0,"table"),s=new n(e.refs.rowHeaders,!0,"table"),l=new n(e.refs.dataCells,!0,"table"),u=new n(e.refs.upperButtons),c=new n(e.refs.colButtons),d=new n(e.refs.rowButtons,!0),p=new n(e.refs.horizontalScrollBar),h=new n(e.refs.verticalScrollBar),f=l.getLargestWidths(a),g=Math.max(s.w,d.w,67),m=Math.min(f.total+1,r.w-g-h.w),b=e.pgridwidget.pgrid.config.height,v=b?b-(o?o.h+17:0)-(u.h+c.h+a.h+p.h):null,y=v?Math.ceil(Math.min(v,l.h)):null;s.addToWidth(g-s.w),i.updateTableColGroup(l.node,f.max),i.updateTableColGroup(a.node,f.max),i.updateTableColGroup(s.node,s.colWidths),l.setStyle("width",f.total),a.setStyle("width",f.total),s.setStyle("width",g),l.setParentStyle("width",m),a.setParentStyle("width",m),y&&(l.setParentStyle("height",y),s.setParentStyle("height",y)),i.updateTableColGroup(t,[g,m,h.w,Math.max(r.w-(g+m+h.w),0)]),e.refs.horizontalScrollBar.refresh(),e.refs.verticalScrollBar.refresh()}}},{"../orb.utils.dom":52,"react-dom":"react-dom"}],73:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e,t=this,r=this.props.pivotTableComp.pgridwidget.pgrid.config;if(r.canMoveFields){var s=r.availablefields().map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:null,position:r,pivotTableComp:t.props.pivotTableComp})});e=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap av-flds text-muted"},n.createElement("div",null,"Fields")),n.createElement("td",{className:"av-flds"},n.createElement(a,{buttons:s,axetype:null})))}else e=null;var l=r.dataFields.map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:i.Type.DATA,position:r,pivotTableComp:t.props.pivotTableComp})}),u=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap text-muted"},n.createElement("div",null,"Data")),n.createElement("td",{className:"empty"},n.createElement(a,{buttons:l,axetype:i.Type.DATA})));return n.createElement("table",{className:"inner-table upper-buttons"},n.createElement("tbody",null,e,u))}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],74:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=e("./orb.react.Toolbar.jsx"),l=e("./orb.react.PivotTable.UpperButtons.jsx"),u=e("./orb.react.PivotTable.ColumnButtons.jsx"),c=e("./orb.react.PivotTable.RowButtons.jsx"),d=e("./orb.react.PivotTable.RowHeaders.jsx"),p=e("./orb.react.PivotTable.ColumnHeaders.jsx"),h=e("./orb.react.PivotTable.DataCells.jsx"),f=e("./orb.react.ScrollBars.jsx"),g=f.HorizontalScrollBar,m=f.VerticalScrollBar,b=e("../orb.utils"),v=e("../orb.utils.dom"),y=1,x={};t.exports=n.createClass({displayName:"exports",id:y++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),x[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},toggleSubtotals:function(e){this.pgridwidget.toggleSubtotals(e)},toggleGrandtotal:function(e){this.pgridwidget.toggleGrandtotal(e)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&x[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=x[this.id].indexOf(e))>=0&&x[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),r=s.getSize(e),n=this.getScrollSize(),o=t[this.sizeProp]>=r[this.sizeProp]?0:t[this.sizeProp]/r[this.sizeProp]*n;this.setState({containerSize:n,size:o,thumbOffset:Math.min(this.state.thumbOffset,n-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var r=this.getScrollSize()-this.state.size,n=this.state.thumbOffset+e;if(0>n&&(n=0),n>r&&(n=r),this.state.thumbOffset!=n)return this.setState({thumbOffset:n},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var r="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,n=this.state.size<=0?null:o.createElement("div",{className:r,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},n)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":53,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],76:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=n.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;e.\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 2: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = (function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n })();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 4,\n \"./orb.utils\": 19\n }],\n 3: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, null)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc || defaultFormatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 1,\n \"./orb.axe\": 2,\n \"./orb.filtering\": 6,\n \"./orb.themes\": 12,\n \"./orb.utils\": 19\n }],\n 4: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 5: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = (function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n })();\n\n var rowHeadersAndDataCells = (function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n })();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 12,\n \"./orb.ui.header\": 15,\n \"./orb.utils\": 19\n }],\n 6: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 19\n }],\n 7: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 5,\n \"./orb.pgrid\": 8,\n \"./orb.query\": 10,\n \"./orb.ui.pgridwidget\": 16,\n \"./orb.utils\": 19\n }],\n 8: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.config\": 3,\n \"./orb.filtering\": 6,\n \"./orb.pubsub\": 9,\n \"./orb.query\": 10,\n \"./orb.utils\": 19\n }],\n 9: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 19\n }],\n 10: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && typeof options === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && typeof options === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 1,\n \"./orb.axe\": 2,\n \"./orb.utils\": 19\n }],\n 11: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 12: [function(_dereq_, module, exports) {\n\n module.exports = (function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n })();\n\n }, {}],\n 13: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.ui.header\": 15\n }],\n 14: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.ui.axe\": 13,\n \"./orb.ui.header\": 15\n }],\n 15: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(hspan, vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function() {\n return hspan;\n },\n vspan: function() {\n return vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.state\": 11\n }],\n 16: [function(_dereq_, module, exports) {\n\n var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\t\t\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.pgrid\": 8,\n \"./orb.ui.cols\": 14,\n \"./orb.ui.header\": 15,\n \"./orb.ui.rows\": 17,\n \"./react/orb.react.Dialog.jsx\": 21,\n \"./react/orb.react.Grid.jsx\": 28,\n \"./react/orb.react.PivotChart.jsx\": 31,\n \"./react/orb.react.PivotTable.jsx\": 40,\n \"react-dom\": \"react-dom\"\n }],\n 17: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 2,\n \"./orb.ui.axe\": 13,\n \"./orb.ui.header\": 15\n }],\n 18: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 19: [function(_dereq_, module, exports) {\n (function(global) {\n\n module.exports = {\n\n ns: function(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return JSON.stringify(obj, censor, 2);\n },\n addEventListener: function(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {}],\n 20: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function() {\n return {\n canRender: false\n };\n },\n canRender: function() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function() {\n this.drawChart();\n },\n componentDidUpdate: function() {\n this.drawChart();\n },\n render: function() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 21: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 22: [function(_dereq_, module, exports) {\n\n var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n utils = _dereq_('../orb.utils');\n\n var dragManager = module.exports = (function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n })();\n\n }, {\n \"../orb.utils\": 19,\n \"react-dom\": \"react-dom\"\n }],\n 23: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 22,\n \"react\": \"react\"\n }],\n 24: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.DropIndicator.jsx\": 23,\n \"react\": \"react\"\n }],\n 25: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.DropIndicator.jsx\": 23,\n \"react\": \"react\"\n }],\n 26: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"react\": \"react\"\n }],\n 27: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 6,\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"./orb.react.Dropdown.jsx\": 26,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 28: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"react\": \"react\"\n }],\n 29: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.FilterPanel.jsx\": 27,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 30: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function() {\n this.updateCellInfos();\n },\n componentDidUpdate: function() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 15,\n \"../orb.utils.dom\": 18,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 31: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function() {\n this.synchronizeWidths();\n },\n componentDidMount: function() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 18,\n \"./orb.react.Chart.jsx\": 20,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 33,\n \"./orb.react.PivotTable.RowButtons.jsx\": 36,\n \"./orb.react.PivotTable.SizingManager.jsx\": 38,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 39,\n \"./orb.react.Toolbar.jsx\": 42,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 32: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotCell.jsx\": 30,\n \"react\": \"react\"\n }],\n 33: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DropTarget.jsx\": 24,\n \"./orb.react.PivotButton.jsx\": 29,\n \"react\": \"react\"\n }],\n 34: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotRow.jsx\": 32,\n \"react\": \"react\"\n }],\n 35: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotRow.jsx\": 32,\n \"react\": \"react\"\n }],\n 36: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DropTarget.jsx\": 24,\n \"./orb.react.DropTargetVertical.jsx\": 25,\n \"./orb.react.PivotButton.jsx\": 29,\n \"react\": \"react\"\n }],\n 37: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.PivotRow.jsx\": 32,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 38: [function(_dereq_, module, exports) {\n\n var ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 18,\n \"react-dom\": \"react-dom\"\n }],\n 39: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 2,\n \"./orb.react.DropTarget.jsx\": 24,\n \"./orb.react.PivotButton.jsx\": 29,\n \"react\": \"react\"\n }],\n 40: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function() {\n this.synchronizeWidths();\n },\n componentDidMount: function() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"./orb.react.DragManager.jsx\": 22,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 33,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 34,\n \"./orb.react.PivotTable.DataCells.jsx\": 35,\n \"./orb.react.PivotTable.RowButtons.jsx\": 36,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 37,\n \"./orb.react.PivotTable.SizingManager.jsx\": 38,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 39,\n \"./orb.react.ScrollBars.jsx\": 41,\n \"./orb.react.Toolbar.jsx\": 42,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 41: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n ReactDOM = typeof window === 'undefined' ? _dereq_('react-dom') : window.ReactDOM,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 19,\n \"../orb.utils.dom\": 18,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 42: [function(_dereq_, module, exports) {\n\n var React = typeof window === 'undefined' ? _dereq_('react') : window.React,\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 2,\n \"../orb.export.excel\": 5,\n \"../orb.utils.dom\": 18,\n \"react\": \"react\"\n }]\n }, {}, [7])(7)\n});\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["orb.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","orb","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","default","__esModule","core-js/library/fn/json/stringify",2,"core-js/library/fn/symbol",3,"_Symbol","obj","constructor","babel-runtime/core-js/symbol",4,"core","it","JSON","stringify","apply","arguments","../../modules/$.core",5,"Symbol","../../modules/es6.object.to-string","../../modules/es6.symbol",6,"TypeError",7,"isObject","./$.is-object",8,"toString","slice",9,"version","__e",10,"aFunction","fn","that","undefined","b","c","./$.a-function",11,12,"Object","defineProperty","get","./$.fails",13,"$","keys","getKeys","getSymbols","key","symbols","isEnum","push","./$",14,"ctx","PROTOTYPE","$export","type","name","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","target","C","param","Function","./$.core","./$.ctx","./$.global",15,"exec",16,"toIObject","getNames","windowNames","getOwnPropertyNames","getWindowNames","./$.to-iobject",17,"Math","__g",18,"hasOwnProperty",19,"createDesc","object","value","setDesc","./$.descriptors","./$.property-desc",20,"cof","propertyIsEnumerable","split","./$.cof",21,"Array","isArray","arg",22,23,"$Object","create","getProto","getPrototypeOf","getDesc","getOwnPropertyDescriptor","setDescs","defineProperties","getOwnPropertySymbols","each","forEach",24,"el","O","index",25,26,"bitmap","enumerable","configurable","writable",27,"./$.hide",28,"def","has","TAG","tag","stat","prototype","./$.has","./$.wks",29,"SHARED","store",30,"IObject","defined","./$.defined","./$.iobject",31,"id","px","random","concat",32,"uid","./$.shared","./$.uid",33,34,"DESCRIPTORS","redefine","$fails","shared","setToStringTag","wks","keyOf","$names","enumKeys","anObject","_create","$Symbol","$JSON","_stringify","setter","HIDDEN","SymbolRegistry","AllSymbols","useNative","ObjectProto","setSymbolDesc","D","protoDesc","wrap","sym","_k","set","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","result","$getOwnPropertySymbols","$stringify","replacer","$replacer","args","$$","buggyJSON","symbolStatics","for","keyFor","useSetter","useSimple","./$.an-object","./$.enum-keys","./$.export","./$.get-names","./$.is-array","./$.keyof","./$.library","./$.redefine","./$.set-to-string-tag",35,"calcVariance","datafield","intersection","datasource","population","variance","avg","len","forEachIntersection","val","NaN","callback","all","Aggregations","toAggregateFunc","func","sum","count","min","max","prod","stdev","sqrt","stdevp","var","varp",36,"utils","Dimension","AxeType","COLUMNS","ROWS","DATA","pgrid","getfieldindex","field","fields","fill","filteredDataSource","dimensionsCount","rowIndex","dataLength","row","dim","root","findex","depth","subfield","subvalue","subdimvals","values","dimid","rowIndexes","dimensionsByDepth","config","columnFields","rowFields","dataFields","update","ffield","sort","order","donottoggle","parents","customfunc","reverse","flattenValues","map","currDim","isRoot","parent","Type","./orb.dimension","./orb.utils",37,"getpropertyvalue","property","configs","defaultvalue","mergefieldconfigs","merged","sorts","subtotals","functions","nnconfig","subTotal","aggregateFuncName","aggregateFunc","formatFunc","createfield","rootconfig","axetype","fieldconfig","defaultfieldconfig","axeconfig","fieldAxeconfig","axe","rowSettings","columnSettings","dataSettings","Field","caption","visible","collapsible","collapsed","aggregation","GrandTotalConfig","options","rowsvisible","columnsvisible","SubTotalConfig","setdefaults","defaults","SortConfig","ChartConfig","enabled","filtering","themeManager","createSubOptions","defaultFormatFunc","_aggregatefunc","_formatfunc","isString","ensureFieldConfig","captionToName","getfield","axefields","fieldname","fieldindex","fi","dataSource","canMoveFields","dataHeadersLocation","grandTotal","width","height","toolbar","theme","chartMode","current","dataSourceFieldNames","dataSourceFieldCaptions","fcaptionIndex","indexOf","nameToCaption","fnameIndex","setTheme","newTheme","allFields","rows","columns","data","dataFieldsCount","runtimeVisibility","getField","getRowField","getColumnField","getDataField","availablefields","filter","notequalfield","otherfield","every","getDataSourceFieldCaptions","row0","fieldNames","ownProperties","headers","getPreFilters","prefilters","preFilters","filteredField","prefilterConfig","expressionFilter","opname","moveField","oldaxetype","newaxetype","position","oldaxe","oldposition","newaxe","fieldConfig","defaultFieldConfig","newAxeSubtotalsState","areSubtotalsVisible","splice","toggleSubtotals","axeFields","newState","toggleGrandtotal","isGrandtotalVisible","./orb.aggregation","./orb.axe","./orb.filtering","./orb.themes",38,"isLeaf","getRowIndexes","j",39,"uiheaders","uriHeader","docHeader","docFooter","pgridwidget","createButtonCell","buttonStyle","buttonTextColor","createButtons","buttons","cellsCountBefore","cellsCountAfter","prefix","str","reduce","tr","toBase64","btoa","unescape","encodeURIComponent","currTheme","override","themeColor","themes","themeFadeout","fadeoutColor","headerStyle","cellsHorizontalCount","layout","pivotTable","sep","rowHeaders","columnHeaders","currRow","rowStr","header","HeaderType","DATA_HEADER","hspan","vspan","rowHeadersAndDataCells","dataRow","dataRows","dataCell","./orb.ui.header",40,"ALL","NONE","BLANK","operator","term","staticValue","excludeStatic","ops","regexpMode","regexpSupported","isRegExp","ignoreCase","RegExp","test","found","isAlwaysTrue","Operators","MATCH","NOTMATCH","EQ","NEQ","GT","GTE","LT","LTE","search",41,"query","./orb.export.excel","./orb.pgrid","./orb.query","./orb.ui.pgridwidget",42,"PubSub","configuration","refresh","refreshFilters","refreshFilteredDataSource","computeValues","publish","EVENT_UPDATED","filterFields","filters","exclude","fieldFilter","computeValue","colIndexes","origRowIndexes","res","ri","rowindex","colrowindex","emptyIntersection","datafields","fieldnameIndex","datafieldIndex","defaultfield","dfi","computeRowValues","rowDim","rid","_iCache","p","rowindexes","subdim","cid","ur","vr","dataMatrix","EVENT_SORT_CHANGED","applyFilter","refreshData","EVENT_CONFIG_CHANGED","getFieldValues","filterFunc","values1","containsBlank","isNumber","isDate","vi","unshift","getFieldFilter","isFieldFiltered","getData","rowdim","coldim","datafieldName","calcAggregation","getChartData","getAxisLabel","axisFields","ti","hAxisLabel","vAxisLabel","legendsLabel","rowLeafDimensions","colLeafDimensions","ci","cdim","currData","rri","title","colNames","d","dataTable","./orb.config","./orb.pubsub",43,"_topics","subscribe","topic","isFunction",44,"_interopRequireDefault","_typeof2","_typeof3","queryBase","extractResult","aggs","outerArgs","multi","ai","multiFieldNames","getCaptionName","datafieldname","measureFunc","fieldsConfig","cleanOptions","compute","setDefaultAggFunctions","valname","aggFunctions","funcIndex","funcName","pgridQuery","filterDimensions","upperDims","some","upperDim","innerArgs","opts","setup","parameters","fIndex","colFields","df","dfname","dfcaption","applyFilters","sortedFilters","f1","f2","currAxe","filterIndex","filtered","rowdims","coldims","rdi","cdi","arrayQuery","array","setCaptionName","fname","fcaption","toAggregate","include","aggFunc","babel-runtime/helpers/typeof",45,"states","state",46,"isBootstrap","currentTheme","red","blue","green","orange","flower","gray","black","white","validateTheme","themeName","trim","getPivotClasses","container","table","getButtonClasses","pivotButton","orbButton","scrollBar","getFilterClasses","getGridClasses","getDialogClasses","classes","overlay","dialog","content","body","hexToRgb","hex","parseInt","rgbaToHex","rgba","matches","match","alpha","parseFloat","applyAlphaAndToHex","rgbaToHexA","floor","substr","color",47,"axeModel","isMultiDataFields","toggleFieldExpansion","hIndex","toToggle","allExpanded","SUB_TOTAL","expanded","collapse","expand",48,"axeUi","columnsAxe","generateLeafsHeaders","pushsubtotal","pheader","leafsHeaders","subtotalHeader","infos","currparent","prevpar","grandpar","prevgrandpar","leafIndex","datafieldindex","dataHeader","getUiInfo","pi","parentDim","di","build","GRAND_TOTAL","INNER","./orb.ui.axe",49,"CellBase","template","cssclass","isvisible","getState","setState","EMPTY","DATA_VALUE","FIELD_BUTTON","WRAPPER","getHeaderClass","headerType","getCellClass","rowHeaderType","colHeaderType","datafieldscount","isParentExpanded","hparent","isexpanded","par","calcSpan","ignoreVisibility","subSpan","tspan","addone","isRowsAxe","subheaders","subheader","rowinfo","colinfo","rowDimension","columnDimension","rowType","colType","buttonCell","emptyCell","_hspan","_vspan","./orb.state",50,"ReactDOM","React","uirows","uicols","Dialog","PivotChart","PivotTable","Grid","init","buildUiAndRender","buildUi","createVisibleFunc","rowvisible","colvisible","rowsHeaders","columnsLeafHeaders","arr","rowHeadersRow","rowLeafHeader","colHeaderIndex","columnLeafHeader","render","renderElement","pivotComponent","expandRow","cell","collapseRow","oldAxeType","newAxeType","axeToExpand","changeTheme","element","pivotTableFactory","createFactory","pivottable","drilldown","pivotId","show","comp","props","style","fontStyle","./orb.ui.cols","./orb.ui.rows","./react/orb.react.Dialog.jsx","./react/orb.react.Grid.jsx","./react/orb.react.PivotChart.jsx","./react/orb.react.PivotTable.jsx","react","react-dom",51,"rowsAxe","addDataHeaders","lastInfosArray","dimension","infosMaxIndex","valIndex","subTotalHeader","newHeader","grandtotalHeader","lastrow",52,"replaceHyphenByUcase","replace","reHyphenToUcase","m","m1","toUpperCase","removeClass","classname","className","addClass","getOffset","rect","getBoundingClientRect","x","left","y","top","getParentOffset","rectParent","parentNode","getSize","right","bottom","getStyle","styleProps","keepString","currStyle","fixProp","currentStyle","prop","getComputedStyle","getPropertyValue","ceil","isVisible","display","offsetWidth","offsetHeight","updateTableColGroup","tableNode","widths","colGroupNode","firstChild","nodeName","tableLayout","removeChild","col","document","createElement","appendChild",53,"_stringify2","ns","identifier","parts","list","forceContinue","ret","escapeRegex","re","findInArray","predicate","item","jsonStringify","censorKeywords","censor","addEventListener","eventName","handler","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","stopPropagation","cancelBubble","getEventButton","button","getMousePageXY","pageX","pageY","clientX","scrollLeft","documentElement","clientY","scrollTop","InvalidCharacterError","message","chars","input","block","charCode","String","idx","output","charAt","charCodeAt","atob","bs","buffer","bc","fromCharCode","babel-runtime/core-js/json/stringify",54,"createClass","displayName","getInitialState","canRender","google","visualization","drawChart","chartData","pivotTableComp","DataTable","addColumn","addRows","fontName","chartStyle","fontFamily","fontSize","hAxis","vAxis","chart","findDOMNode","draw","componentDidMount","componentDidUpdate",55,"createOverlay","overlayElement","statics","dialogFactory","setOverlayClass","close","dialogElement","children","dialogBodyElement","screenWidth","clientWidth","innerWidth","screenHeight","clientHeight","innerHeight","maxHeight","dWidth","dHeight","srcElement","unmountComponentAtNode","onClick","../orb.utils",56,"doElementsOverlap","elem1Rect","elem2Rect","setCurrDropTarget","dropTarget","_currDropTarget","signalDragEnd","signalDragOver","setCurrDropIndicator","dropIndicator","_currDropIndicator","onDragOver","onDragEnd","_pivotComp","_currDragElement","_dragNode","_dropTargets","_dropIndicators","_initialized","pivotComp","setDragElement","elem","prevDragElement","moveButton","component","registerTarget","dragOverHandler","dargEndHandler","unregisterTarget","tindex","registerIndicator","indicator","unregisterIndicator","iindex","elementMoved","foundTarget","dragNodeRect","tnodeRect","isOverlap","foundIndicator","elementOwnIndicator","targetIndicator","axeIndicators",57,"DragManager","isover","componentWillUnmount","isMounted","isVertical","isFirst","isLast","./orb.react.DragManager.jsx",58,"DropIndicator","dtid","../orb.axe","./orb.react.DropIndicator.jsx",59,"currButton",60,"openOrClose","valueNode","refs","valueElement","valuesListNode","valuesList","onMouseEnter","backgroundPosition","onMouseLeave","selectValue","listNode","isli","textContent","onValueChanged","dangerouslySetInnerHTML","__html","ref","selectedValue",61,"FilterManager","reactComp","initialFilterObject","checkboxVisible","checkbox","applyInitialFilterObject","staticInfos","toExclude","isSearchMode","toggleRegexpButtonVisibility","isRegexMode","toggleRegexpButtonState","lastSearchTerm","elems","searchBox","applyFilterTerm","savedCheckedValues","updateCheckboxes","updateAllCheckbox","addEventListeners","filterContainer","valueChecked","searchChanged","clearSearchButton","clearSearchBox","okButton","checkedObj","getCheckedValues","onFilter","cancelButton","destroy","ResizeManager","outerContainerElem","valuesTableElem","resizeGripElem","minContainerWidth","minContainerHeight","mousedownpos","isMouseDown","resizeMouseDown","mousePageXY","cursor","resizeMouseUp","resizeMouseMove","resizeGripSize","outerContainerSize","valuesTableSize","tBodies","outerContainerWidth","outerContainerHeight","offset","newContainerWidth","newContainerHeight","resizeManager","INDETERMINATE","checkboxes","operatorBox","allCheckbox","addCheckbox","enableRegexButton","resizeGrip","filterContainerElement","cells","blanckCheckbox","onOperatorChanged","newOperator","regexpActiveChanged","domUtils","checked","defaultVisible","opterm","previousIsSearchMode","indeterminate","valuesCount","checkedCount","excludeUnchecked","checkedList","allchecked","valInList","Dropdown","filterManager","onMouseDown","onMouseWheel","valuesTable","scrollHeight","componentWillMount","addCheckboxRow","text","defaultChecked","buttonClass","currentFilter","placeholder","clearFilter","colSpan","float","../orb.filtering","../orb.utils.dom","./orb.react.Dropdown.jsx",62,"tableClasses","headerRow","h",63,"FilterPanel","pbid","pos","startpos","mousedown","dragging","onFilterMouseDown","filterButton","filterButtonPos","filterPanelFactory","filterPanel","onMouseMove","registerThemeChanged","updateClasses","unregisterThemeChanged","ctrlKey","thispos","mouseoffset","onMouseUp","isdragged","size","newpos","divstyle","zIndex","sortDirectionClass","filterClass","fieldAggFunc","./orb.react.FilterPanel.jsx",64,"getClassname","compProps","leftmost","topmost","_paddingLeft","_borderLeft","updateCellInfos","node","__orb","cellContentNode","cellContent","propList","retPaddingLeft","retBorderLeft","innerText","nodeStyle","_visible","_lastText","_textWidth","_colSpan","_rowSpan","_paddingRight","_borderLeftWidth","_borderRightWidth","shouldComponentUpdate","nextProps","nextState","_latestVisibleState","cellClick","divcontent","headerPushed","isWrapper","isSubtotal","headerClassName","onDoubleClick","rowSpan","../orb.ui.header",65,"SizingManager","UpperButtons","ColumnButtons","RowButtons","Chart","themeChangeCallbacks","compCallback","thisnode","synchronizeWidths","fontInfos","tblStyle","padding","./orb.react.Chart.jsx","./orb.react.PivotTable.ColumnButtons.jsx","./orb.react.PivotTable.RowButtons.jsx","./orb.react.PivotTable.SizingManager.jsx","./orb.react.PivotTable.UpperButtons.jsx","./orb.react.Toolbar.jsx",66,"PivotCell","leftmostCellFound","layoutInfos","rowstyle","istopmost","isleftmost","topMostCells","lastLeftMostCellVSpan","./orb.react.PivotCell.jsx",67,"PivotButton","DropTarget","columnButtons","./orb.react.DropTarget.jsx","./orb.react.PivotButton.jsx",68,"PivotRow","cntrClass","onWheel","./orb.react.PivotRow.jsx",69,"dataCells",70,"DropTargetVertical","rowButtons","./orb.react.DropTargetVertical.jsx",71,"setColGroup","colgroup","innerHTML",72,"ComponentSizeInfo","childType","w","setStyle","styleProp","setParentStyle","getLargestWidths","otherCompInfo","total","colWidths","addToWidth","getAllColumnsWidth","tblObject","tbl","arrayIndex","currWidth","cellIndex","currCell","cellwidth","cspan","inhibit","synchronizePivotChartWidths","synchronizePivotTableWidths","pivotWrapperTable","pivot","topBtns","upperButtons","cBtns","colButtons","rBtnsTbl","rBtnsWidth","chartWidth","pivotHeight","chartHeight","cHeadersTbl","colHeaders","rHeadersTbl","dataCellsTbl","hScroll","horizontalScrollBar","vScroll","verticalScrollBar","dataCellsWidths","rHeadersWidth","dataCellsContainerWidth","dataCellsRemHeight","dataCellsTableHeight",73,"fieldsDropTarget","fieldsButtons","dataButtons","dataDropTarget",74,"Toolbar","RowHeaders","ColumnHeaders","DataCells","ScrollBars","HorizontalScrollBar","VerticalScrollBar","dataCellsNode","dataCellsTableNode","colHeadersNode","rowHeadersNode","setScrollClient","scrollPercent","scrollAmount","scrollbar","amount","currentTarget","deltaX","deltaY","scroll","deltaMode","./orb.react.PivotTable.ColumnHeaders.jsx","./orb.react.PivotTable.DataCells.jsx","./orb.react.PivotTable.RowHeaders.jsx","./orb.react.ScrollBars.jsx",75,"ScrollEvent","scrollBarComp","raise","getScrollPercent","scrollBarMixin","scrollEvent","scrollClient","thumbOffset","thumbElem","scrollThumb","thumbposInParent","mousePosProp","posProp","getScrollSize","sizeProp","scrollCallback","maxOffset","scrolledElement","clientSize","elementSize","scrollBarContainerSize","newSize","containerSize","mode","newOffset","thumbStyle","offsetCssProp","thisStyle","thumbClass","cssClass","mixins",76,"_toInit","btn","createCallback","action","pgridComponent","configButtons","defaultToolbarConfig","btnConfig","refName","tooltip","excelExport","exportToExcel","download","href","click","expandAllRows","collapseAllRows","expandAllColumns","collapseAllColumns","updateSubtotalsButton","subTotalsState","classToAdd","classToRemove","initSubtotals","updateGrandtotalButton","initGrandtotal","../orb.export.excel"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAGA,cACA,SAAUA,GACR,GAAuB,gBAAZC,UAA0C,mBAAXC,QACxCA,OAAOD,QAAUD,QACZ,IAAsB,kBAAXG,SAAyBA,OAAOC,IAChDD,UAAWH,OACN,CACL,GAAIK,EAEFA,GADoB,mBAAXC,QACLA,OACuB,mBAAXC,QACZA,OACqB,mBAATC,MACZA,KAEAC,KAENJ,EAAEK,IAAMV,MAET,WAED,MAAO,SAAUW,GAAEC,EAAGC,EAAGC,GACvB,QAASC,GAAEC,EAAGC,GACZ,IAAKJ,EAAEG,GAAI,CACT,IAAKJ,EAAEI,GAAI,CACT,GAAIE,GAAsB,kBAAXC,UAAyBA,OACxC,KAAKF,GAAKC,EAAG,MAAOA,GAAEF,GAAG,EACzB,IAAII,EAAG,MAAOA,GAAEJ,GAAG,EACnB,IAAIhB,GAAI,GAAIqB,OAAM,uBAAyBL,EAAI,IAC/C,MAAMhB,GAAEsB,KAAO,mBAAoBtB,EAErC,GAAIuB,GAAIV,EAAEG,IACRf,WAEFW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAS,SAASU,GAC/B,GAAIE,GAAID,EAAEI,GAAG,GAAGL,EAChB,OAAOI,GAAEF,EAAIA,EAAIF,IAChBY,EAAGA,EAAEtB,QAASU,EAAGC,EAAGC,EAAGC,GAE5B,MAAOD,GAAEG,GAAGf,QAGd,IAAK,GADDmB,GAAsB,kBAAXD,UAAyBA,QAC/BH,EAAI,EAAGA,EAAIF,EAAEW,OAAQT,IAAKD,EAAED,EAAEE,GACvC,OAAOD,KAEPW,GAAI,SAASC,EAASzB,EAAQD,GAC5BC,EAAOD,SACL2B,UAAWD,EAAQ,qCACnBE,YAAY,KAGdC,oCAAqC,IAEvCC,GAAI,SAASJ,EAASzB,EAAQD,GAC5BC,EAAOD,SACL2B,UAAWD,EAAQ,6BACnBE,YAAY,KAGdG,4BAA6B,IAE/BC,GAAI,SAASN,EAASzB,EAAQD,GAE5B,GAAIiC,GAAUP,EAAQ,gCAAgC,UAEtD1B,GAAQ,WAAa,SAASkC,GAC5B,MAAOA,IAAOA,EAAIC,cAAgBF,EAAU,eAAkBC,IAGhElC,EAAQ4B,YAAa,IAErBQ,+BAAgC,IAElCC,GAAI,SAASX,EAASzB,EAAQD,GAC5B,GAAIsC,GAAOZ,EAAQ,uBACnBzB,GAAOD,QAAU,SAAmBuC,GAClC,OAAQD,EAAKE,MAAQF,EAAKE,KAAKC,WAAaD,KAAKC,WAAWC,MAAMF,KAAMG,cAG1EC,uBAAwB,IAE1BC,GAAI,SAASnB,EAASzB,EAAQD,GAC5B0B,EAAQ,4BACRA,EAAQ,sCACRzB,EAAOD,QAAU0B,EAAQ,wBAAwBoB,SAEjDF,uBAAwB,EACxBG,qCAAsC,GACtCC,2BAA4B,KAE9BC,GAAI,SAASvB,EAASzB,EAAQD,GAC5BC,EAAOD,QAAU,SAASuC,GACxB,GAAiB,kBAANA,GAAkB,KAAMW,WAAUX,EAAK,sBAClD,OAAOA,SAGXY,GAAI,SAASzB,EAASzB,EAAQD,GAC5B,GAAIoD,GAAW1B,EAAQ,gBACvBzB,GAAOD,QAAU,SAASuC,GACxB,IAAKa,EAASb,GAAK,KAAMW,WAAUX,EAAK,qBACxC,OAAOA,MAGTc,gBAAiB,KAEnBC,GAAI,SAAS5B,EAASzB,EAAQD,GAC5B,GAAIuD,MAAcA,QAElBtD,GAAOD,QAAU,SAASuC,GACxB,MAAOgB,GAAShC,KAAKgB,GAAIiB,MAAM,EAAG,UAGtCC,GAAI,SAAS/B,EAASzB,EAAQD,GAC5B,GAAIsC,GAAOrC,EAAOD,SAChB0D,QAAS,QAEO,iBAAPC,OAAiBA,IAAMrB,QAEpCsB,IAAK,SAASlC,EAASzB,EAAQD,GAE7B,GAAI6D,GAAYnC,EAAQ,iBACxBzB,GAAOD,QAAU,SAAS8D,EAAIC,EAAMvC,GAElC,GADAqC,EAAUC,GACGE,SAATD,EAAoB,MAAOD,EAC/B,QAAQtC,GACN,IAAK,GACH,MAAO,UAASP,GACd,MAAO6C,GAAGvC,KAAKwC,EAAM9C,GAEzB,KAAK,GACH,MAAO,UAASA,EAAGgD,GACjB,MAAOH,GAAGvC,KAAKwC,EAAM9C,EAAGgD,GAE5B,KAAK,GACH,MAAO,UAAShD,EAAGgD,EAAGC,GACpB,MAAOJ,GAAGvC,KAAKwC,EAAM9C,EAAGgD,EAAGC,IAGjC,MAAO,YACL,MAAOJ,GAAGpB,MAAMqB,EAAMpB,eAI1BwB,iBAAkB,IAEpBC,IAAK,SAAS1C,EAASzB,EAAQD,GAE7BC,EAAOD,QAAU,SAASuC,GACxB,GAAUyB,QAANzB,EAAiB,KAAMW,WAAU,yBAA2BX,EAChE,OAAOA,SAGX8B,IAAK,SAAS3C,EAASzB,EAAQD,GAE7BC,EAAOD,SAAW0B,EAAQ,aAAa,WACrC,MAIQ,IAJD4C,OAAOC,kBAAmB,KAC/BC,IAAK,WACH,MAAO,MAERvD,MAGLwD,YAAa,KAEfC,IAAK,SAAShD,EAASzB,EAAQD,GAE7B,GAAI2E,GAAIjD,EAAQ,MAChBzB,GAAOD,QAAU,SAASuC,GACxB,GAAIqC,GAAOD,EAAEE,QAAQtC,GACnBuC,EAAaH,EAAEG,UACjB,IAAIA,EAKF,IAJA,GAGEC,GAHEC,EAAUF,EAAWvC,GACvB0C,EAASN,EAAEM,OACX9D,EAAI,EAEC6D,EAAQxD,OAASL,GAClB8D,EAAO1D,KAAKgB,EAAIwC,EAAMC,EAAQ7D,OAAOyD,EAAKM,KAAKH,EAEvD,OAAOH,MAGTO,MAAO,KAETC,IAAK,SAAS1D,EAASzB,EAAQD,GAC7B,GAAIM,GAASoB,EAAQ,cACnBY,EAAOZ,EAAQ,YACf2D,EAAM3D,EAAQ,WACd4D,EAAY,YAEVC,EAAU,SAASC,EAAMC,EAAMC,GACjC,GAQEX,GAAKY,EAAKC,EARRC,EAAYL,EAAOD,EAAQO,EAC7BC,EAAYP,EAAOD,EAAQS,EAC3BC,EAAYT,EAAOD,EAAQW,EAC3BC,EAAWX,EAAOD,EAAQa,EAC1BC,EAAUb,EAAOD,EAAQe,EACzBC,EAAUf,EAAOD,EAAQiB,EACzBxG,EAAU+F,EAAYzD,EAAOA,EAAKmD,KAAUnD,EAAKmD,OACjDgB,EAASV,EAAYzF,EAAS2F,EAAY3F,EAAOmF,IAASnF,EAAOmF,QAAaH,EAE5ES,KAAWL,EAASD,EACxB,KAAKV,IAAOW,GAEVC,GAAOE,GAAaY,GAAU1B,IAAO0B,GACjCd,GAAOZ,IAAO/E,KAElB4F,EAAMD,EAAMc,EAAO1B,GAAOW,EAAOX,GAEjC/E,EAAQ+E,GAAOgB,GAAmC,kBAAfU,GAAO1B,GAAqBW,EAAOX,GAElEsB,GAAWV,EAAMN,EAAIO,EAAKtF,GAE1BiG,GAAWE,EAAO1B,IAAQa,EAAM,SAAUc,GAC1C,GAAIZ,GAAI,SAASa,GACf,MAAOnG,gBAAgBkG,GAAI,GAAIA,GAAEC,GAASD,EAAEC,GAG9C,OADAb,GAAER,GAAaoB,EAAEpB,GACVQ,GAENF,GAAOO,GAA0B,kBAAPP,GAAoBP,EAAIuB,SAASrF,KAAMqE,GAAOA,EACzEO,KAAUnG,EAAQsF,KAAetF,EAAQsF,QAAkBP,GAAOa,IAI1EL,GAAQO,EAAI,EACZP,EAAQS,EAAI,EACZT,EAAQW,EAAI,EACZX,EAAQa,EAAI,EACZb,EAAQe,EAAI,GACZf,EAAQiB,EAAI,GACZvG,EAAOD,QAAUuF,IAEjBsB,WAAY,EACZC,UAAW,GACXC,aAAc,KAEhBC,IAAK,SAAStF,EAASzB,EAAQD,GAC7BC,EAAOD,QAAU,SAASiH,GACxB,IACE,QAASA,IACT,MAAOvG,GACP,OAAO,SAIbwG,IAAK,SAASxF,EAASzB,EAAQD,GAE7B,GAAImH,GAAYzF,EAAQ,kBACtB0F,EAAW1F,EAAQ,OAAO0F,SAC1B7D,KAAcA,SAEZ8D,EAA+B,gBAAVhH,SAAsBiE,OAAOgD,oBAAsBhD,OAAOgD,oBAAoBjH,WAEnGkH,EAAiB,SAAShF,GAC5B,IACE,MAAO6E,GAAS7E,GAChB,MAAO7B,GACP,MAAO2G,GAAY7D,SAIvBvD,GAAOD,QAAQwE,IAAM,SAA6BjC,GAChD,MAAI8E,IAAoC,mBAArB9D,EAAShC,KAAKgB,GAAiCgF,EAAehF,GAC1E6E,EAASD,EAAU5E,OAG5B4C,MAAO,GACPqC,iBAAkB,KAEpBC,IAAK,SAAS/F,EAASzB,EAAQD,GAE7B,GAAIM,GAASL,EAAOD,QAA2B,mBAAVK,SAAyBA,OAAOqH,MAAQA,KAAOrH,OAAwB,mBAARE,OAAuBA,KAAKmH,MAAQA,KAAOnH,KAAOqG,SAAS,gBAC7I,iBAAPe,OAAiBA,IAAMrH,QAEpCsH,IAAK,SAASlG,EAASzB,EAAQD,GAC7B,GAAI6H,MAAoBA,cACxB5H,GAAOD,QAAU,SAASuC,EAAIwC,GAC5B,MAAO8C,GAAetG,KAAKgB,EAAIwC,SAGnC+C,IAAK,SAASpG,EAASzB,EAAQD,GAC7B,GAAI2E,GAAIjD,EAAQ,OACdqG,EAAarG,EAAQ,oBACvBzB,GAAOD,QAAU0B,EAAQ,mBAAqB,SAASsG,EAAQjD,EAAKkD,GAClE,MAAOtD,GAAEuD,QAAQF,EAAQjD,EAAKgD,EAAW,EAAGE,KAC1C,SAASD,EAAQjD,EAAKkD,GAExB,MADAD,GAAOjD,GAAOkD,EACPD,KAGT7C,MAAO,GACPgD,kBAAmB,GACnBC,oBAAqB,KAEvBC,IAAK,SAAS3G,EAASzB,EAAQD,GAE7B,GAAIsI,GAAM5G,EAAQ,UAClBzB,GAAOD,QAAUsE,OAAO,KAAKiE,qBAAqB,GAAKjE,OAAS,SAAS/B,GACvE,MAAkB,UAAX+F,EAAI/F,GAAkBA,EAAGiG,MAAM,IAAMlE,OAAO/B,MAGrDkG,UAAW,IAEbC,IAAK,SAAShH,EAASzB,EAAQD,GAE7B,GAAIsI,GAAM5G,EAAQ,UAClBzB,GAAOD,QAAU2I,MAAMC,SAAW,SAASC,GACzC,MAAmB,SAAZP,EAAIO,MAGbJ,UAAW,IAEbK,IAAK,SAASpH,EAASzB,EAAQD,GAC7BC,EAAOD,QAAU,SAASuC,GACxB,MAAqB,gBAAPA,GAAyB,OAAPA,EAA4B,kBAAPA,SAGzDwG,IAAK,SAASrH,EAASzB,EAAQD,GAC7B,GAAIgJ,GAAU1E,MACdrE,GAAOD,SACLiJ,OAAQD,EAAQC,OAChBC,SAAUF,EAAQG,eAClBlE,UAAWsD,qBACXa,QAASJ,EAAQK,yBACjBnB,QAASc,EAAQzE,eACjB+E,SAAUN,EAAQO,iBAClB1E,QAASmE,EAAQpE,KACjBwC,SAAU4B,EAAQ1B,oBAClBxC,WAAYkE,EAAQQ,sBACpBC,QAASC,cAGbC,IAAK,SAASjI,EAASzB,EAAQD,GAC7B,GAAI2E,GAAIjD,EAAQ,OACdyF,EAAYzF,EAAQ,iBACtBzB,GAAOD,QAAU,SAASgI,EAAQ4B,GAMhC,IALA,GAIE7E,GAJE8E,EAAI1C,EAAUa,GAChBpD,EAAOD,EAAEE,QAAQgF,GACjBrI,EAASoD,EAAKpD,OACdsI,EAAQ,EAEHtI,EAASsI,GACd,GAAID,EAAE9E,EAAMH,EAAKkF,QAAcF,EAAI,MAAO7E,MAG9CI,MAAO,GACPqC,iBAAkB,KAEpBuC,IAAK,SAASrI,EAASzB,EAAQD,GAC7BC,EAAOD,SAAU,OAEnBgK,IAAK,SAAStI,EAASzB,EAAQD,GAC7BC,EAAOD,QAAU,SAASiK,EAAQhC,GAChC,OACEiC,aAAuB,EAATD,GACdE,eAAyB,EAATF,GAChBG,WAAqB,EAATH,GACZhC,MAAOA,SAIboC,IAAK,SAAS3I,EAASzB,EAAQD,GAC7BC,EAAOD,QAAU0B,EAAQ,cAEzB4I,WAAY,KAEdC,IAAK,SAAS7I,EAASzB,EAAQD,GAC7B,GAAIwK,GAAM9I,EAAQ,OAAOwG,QACvBuC,EAAM/I,EAAQ,WACdgJ,EAAMhJ,EAAQ,WAAW,cAE3BzB,GAAOD,QAAU,SAASuC,EAAIoI,EAAKC,GAC7BrI,IAAOkI,EAAIlI,EAAKqI,EAAOrI,EAAKA,EAAGsI,UAAWH,IAAMF,EAAIjI,EAAImI,GAC1DP,cAAc,EACdlC,MAAO0C,OAIXxF,MAAO,GACP2F,UAAW,GACXC,UAAW,KAEbC,IAAK,SAAStJ,EAASzB,EAAQD,GAC7B,GAAIM,GAASoB,EAAQ,cACnBuJ,EAAS,qBACTC,EAAQ5K,EAAO2K,KAAY3K,EAAO2K,MACpChL,GAAOD,QAAU,SAAS+E,GACxB,MAAOmG,GAAMnG,KAASmG,EAAMnG,UAG9BgC,aAAc,KAEhBoE,IAAK,SAASzJ,EAASzB,EAAQD,GAE7B,GAAIoL,GAAU1J,EAAQ,eACpB2J,EAAU3J,EAAQ,cACpBzB,GAAOD,QAAU,SAASuC,GACxB,MAAO6I,GAAQC,EAAQ9I,OAGzB+I,cAAe,GACfC,cAAe,KAEjBC,IAAK,SAAS9J,EAASzB,EAAQD,GAC7B,GAAIyL,GAAK,EACPC,EAAKhE,KAAKiE,QACZ1L,GAAOD,QAAU,SAAS+E,GACxB,MAAO,UAAU6G,OAAe5H,SAARe,EAAoB,GAAKA,EAAK,QAAS0G,EAAKC,GAAInI,SAAS,WAGrFsI,IAAK,SAASnK,EAASzB,EAAQD,GAC7B,GAAIkL,GAAQxJ,EAAQ,cAAc,OAChCoK,EAAMpK,EAAQ,WACdoB,EAASpB,EAAQ,cAAcoB,MACjC7C,GAAOD,QAAU,SAASyF,GACxB,MAAOyF,GAAMzF,KAAUyF,EAAMzF,GAC3B3C,GAAUA,EAAO2C,KAAU3C,GAAUgJ,GAAK,UAAYrG,OAG1DsB,aAAc,GACdgF,aAAc,GACdC,UAAW,KAEbC,IAAK,SAASvK,EAASzB,EAAQD,SAG/BkM,IAAK,SAASxK,EAASzB,EAAQD,GAG7B,GAAI2E,GAAIjD,EAAQ,OACdpB,EAASoB,EAAQ,cACjB+I,EAAM/I,EAAQ,WACdyK,EAAczK,EAAQ,mBACtB6D,EAAU7D,EAAQ,cAClB0K,EAAW1K,EAAQ,gBACnB2K,EAAS3K,EAAQ,aACjB4K,EAAS5K,EAAQ,cACjB6K,EAAiB7K,EAAQ,yBACzBoK,EAAMpK,EAAQ,WACd8K,EAAM9K,EAAQ,WACd+K,EAAQ/K,EAAQ,aAChBgL,EAAShL,EAAQ,iBACjBiL,EAAWjL,EAAQ,iBACnBkH,EAAUlH,EAAQ,gBAClBkL,EAAWlL,EAAQ,iBACnByF,EAAYzF,EAAQ,kBACpBqG,EAAarG,EAAQ,qBACrB0H,EAAUzE,EAAEyE,QACZlB,EAAUvD,EAAEuD,QACZ2E,EAAUlI,EAAEsE,OACZ7B,EAAWsF,EAAOlI,IAClBsI,EAAUxM,EAAOwC,OACjBiK,EAAQzM,EAAOkC,KACfwK,EAAaD,GAASA,EAAMtK,UAC5BwK,GAAS,EACTC,EAASV,EAAI,WACbvH,EAASN,EAAEM,OACXkI,EAAiBb,EAAO,mBACxBc,EAAad,EAAO,WACpBe,EAA8B,kBAAXP,GACnBQ,EAAchJ,OAAOuG,UAGnB0C,EAAgBpB,GAAeE,EAAO,WACxC,MAMS,IANFQ,EAAQ3E,KAAY,KACzB1D,IAAK,WACH,MAAO0D,GAAQ1H,KAAM,KACnByH,MAAO,IACNhH,MAEHA,IACD,SAASsB,EAAIwC,EAAKyI,GACrB,GAAIC,GAAYrE,EAAQkE,EAAavI,EACjC0I,UAAkBH,GAAYvI,GAClCmD,EAAQ3F,EAAIwC,EAAKyI,GACbC,GAAalL,IAAO+K,GAAapF,EAAQoF,EAAavI,EAAK0I,IAC7DvF,EAEAwF,EAAO,SAAS/C,GAClB,GAAIgD,GAAMP,EAAWzC,GAAOkC,EAAQC,EAAQjC,UAS5C,OARA8C,GAAIC,GAAKjD,EACTwB,GAAec,GAAUM,EAAcD,EAAa3C,GAClDR,cAAc,EACd0D,IAAK,SAAS5F,GACRwC,EAAIjK,KAAM0M,IAAWzC,EAAIjK,KAAK0M,GAASvC,KAAMnK,KAAK0M,GAAQvC,IAAO,GACrE4C,EAAc/M,KAAMmK,EAAK5C,EAAW,EAAGE,OAGpC0F,GAGLG,EAAW,SAASvL,GACtB,MAAoB,gBAANA,IAGZwL,EAAkB,SAAwBxL,EAAIwC,EAAKyI,GACrD,MAAIA,IAAK/C,EAAI2C,EAAYrI,IAClByI,EAAEtD,YAIDO,EAAIlI,EAAI2K,IAAW3K,EAAG2K,GAAQnI,KAAMxC,EAAG2K,GAAQnI,IAAO,GAC1DyI,EAAIX,EAAQW,GACVtD,WAAYnC,EAAW,GAAG,OALvB0C,EAAIlI,EAAI2K,IAAShF,EAAQ3F,EAAI2K,EAAQnF,EAAW,OACrDxF,EAAG2K,GAAQnI,IAAO,GAObwI,EAAchL,EAAIwC,EAAKyI,IAEzBtF,EAAQ3F,EAAIwC,EAAKyI,IAEtBQ,EAAoB,SAA0BzL,EAAI6D,GACpDwG,EAASrK,EAKT,KAJA,GAGEwC,GAHEH,EAAO+H,EAASvG,EAAIe,EAAUf,IAChCjF,EAAI,EACJG,EAAIsD,EAAKpD,OAEJF,EAAIH,GAAG4M,EAAgBxL,EAAIwC,EAAMH,EAAKzD,KAAMiF,EAAErB,GACrD,OAAOxC,IAEL0L,EAAU,SAAgB1L,EAAI6D,GAChC,MAAapC,UAANoC,EAAkByG,EAAQtK,GAAMyL,EAAkBnB,EAAQtK,GAAK6D,IAEpE8H,EAAwB,SAA8BnJ,GACxD,GAAIoJ,GAAIlJ,EAAO1D,KAAKf,KAAMuE,EAC1B,OAAOoJ,KAAM1D,EAAIjK,KAAMuE,KAAS0F,EAAI2C,EAAYrI,IAAQ0F,EAAIjK,KAAM0M,IAAW1M,KAAK0M,GAAQnI,GAAOoJ,GAAI,GAEnGC,EAA4B,SAAkC7L,EAAIwC,GACpE,GAAIyI,GAAIpE,EAAQ7G,EAAK4E,EAAU5E,GAAKwC,EAEpC,QADIyI,IAAK/C,EAAI2C,EAAYrI,IAAU0F,EAAIlI,EAAI2K,IAAW3K,EAAG2K,GAAQnI,KAAOyI,EAAEtD,YAAa,GAChFsD,GAELa,EAAuB,SAA6B9L,GAKtD,IAJA,GAGEwC,GAHEuJ,EAAQlH,EAASD,EAAU5E,IAC7BgM,KACApN,EAAI,EAECmN,EAAM9M,OAASL,GACfsJ,EAAI2C,EAAYrI,EAAMuJ,EAAMnN,OAAS4D,GAAOmI,GAAQqB,EAAOrJ,KAAKH,EACvE,OAAOwJ,IAELC,EAAyB,SAA+BjM,GAK1D,IAJA,GAGEwC,GAHEuJ,EAAQlH,EAASD,EAAU5E,IAC7BgM,KACApN,EAAI,EAECmN,EAAM9M,OAASL,GAChBsJ,EAAI2C,EAAYrI,EAAMuJ,EAAMnN,OAAOoN,EAAOrJ,KAAKkI,EAAWrI,GAChE,OAAOwJ,IAELE,EAAa,SAAmBlM,GAClC,GAAWyB,SAAPzB,IAAoBuL,EAASvL,GAAjC,CAKA,IAJA,GAGEmM,GAAUC,EAHRC,GAAQrM,GACVpB,EAAI,EACJ0N,EAAKlM,UAEAkM,EAAGrN,OAASL,GAAGyN,EAAK1J,KAAK2J,EAAG1N,KAQnC,OAPAuN,GAAWE,EAAK,GACO,kBAAZF,KAAwBC,EAAYD,IAC3CC,GAAc/F,EAAQ8F,KAAWA,EAAW,SAAS3J,EAAKkD,GAE5D,MADI0G,KAAW1G,EAAQ0G,EAAUpN,KAAKf,KAAMuE,EAAKkD,IAC5C6F,EAAS7F,GAAd,OAA6BA,IAE/B2G,EAAK,GAAKF,EACH1B,EAAWtK,MAAMqK,EAAO6B,KAE7BE,EAAYzC,EAAO,WACrB,GAAInG,GAAI4G,GAIR,OAA0B,UAAnBE,GAAY9G,KAEb,MAFgC8G,GACpC/L,EAAGiF,KACkC,MAAzB8G,EAAW1I,OAAO4B,KAI7BmH,KACHP,EAAU,WACR,GAAIgB,EAAStN,MAAO,KAAM0C,WAAU,8BACpC,OAAOwK,GAAK5B,EAAInJ,UAAUnB,OAAS,EAAImB,UAAU,GAAKqB,UAExDoI,EAASU,EAAQjC,UAAW,WAAY,WACtC,MAAOrK,MAAKoN,KAGdE,EAAW,SAASvL,GAClB,MAAOA,aAAcuK,IAGvBnI,EAAEsE,OAASgF,EACXtJ,EAAEM,OAASiJ,EACXvJ,EAAEyE,QAAUgF,EACZzJ,EAAEuD,QAAU6F,EACZpJ,EAAE2E,SAAW0E,EACbrJ,EAAEyC,SAAWsF,EAAOlI,IAAM6J,EAC1B1J,EAAEG,WAAa0J,EAEXrC,IAAgBzK,EAAQ,gBAC1B0K,EAASkB,EAAa,uBAAwBY,GAAuB,GAIzE,IAAIa,IAEFC,MAAO,SAASjK,GACd,MAAO0F,GAAI0C,EAAgBpI,GAAO,IAAMoI,EAAepI,GAAOoI,EAAepI,GAAO+H,EAAQ/H,IAG9FkK,OAAQ,SAAgBlK,GACtB,MAAO0H,GAAMU,EAAgBpI,IAE/BmK,UAAW,WACTjC,GAAS,GAEXkC,UAAW,WACTlC,GAAS,GAcbtI,GAAE8E,KAAKlI,KAAK,iHAGViH,MAAM,KAAM,SAASjG,GACrB,GAAIoL,GAAMnB,EAAIjK,EACdwM,GAAcxM,GAAM8K,EAAYM,EAAMD,EAAKC,KAG7CV,GAAS,EAET1H,EAAQA,EAAQS,EAAIT,EAAQiB,GAC1B1D,OAAQgK,IAGVvH,EAAQA,EAAQW,EAAG,SAAU6I,GAE7BxJ,EAAQA,EAAQW,EAAIX,EAAQO,GAAKuH,EAAW,UAE1CpE,OAAQgF,EAER1J,eAAgBwJ,EAEhBxE,iBAAkByE,EAElB3E,yBAA0B+E,EAE1B9G,oBAAqB+G,EAErB7E,sBAAuBgF,IAIzBzB,GAASxH,EAAQA,EAAQW,EAAIX,EAAQO,IAAMuH,GAAayB,GAAY,QAClErM,UAAWgM,IAIblC,EAAeO,EAAS,UAExBP,EAAe7E,KAAM,QAAQ,GAE7B6E,EAAejM,EAAOkC,KAAM,QAAQ,KAEpC2C,MAAO,GACPiK,gBAAiB,EACjBjH,kBAAmB,GACnBkH,gBAAiB,GACjBC,aAAc,GACd7K,YAAa,GACb8K,gBAAiB,GACjBxI,aAAc,GACd+D,UAAW,GACX0E,eAAgB,GAChBC,YAAa,GACbC,cAAe,GACftH,oBAAqB,GACrBuH,eAAgB,GAChBC,wBAAyB,GACzB7D,aAAc,GACdvE,iBAAkB,GAClBwE,UAAW,GACXjB,UAAW,KAEb8E,IAAK,SAASnO,EAASzB,EAAQD,GAgF7B,QAAS8P,GAAaC,EAAWC,EAAcC,EAAYC,GACzD,GAAIC,GAAW,EACXC,EAAM,EACNC,GAAwB,QAAjBL,EAAyBC,EAAaD,GAAcxO,MAe/D,OAdI6O,GAAM,IACJH,GAAcG,EAAM,GACtBC,EAAoBP,EAAWC,EAAcC,EAAY,SAASM,GAChEH,GAAOG,IAETH,GAAOC,EACPC,EAAoBP,EAAWC,EAAcC,EAAY,SAASM,GAChEJ,IAAaI,EAAMH,IAAQG,EAAMH,KAEnCD,GAAuBD,EAAaG,EAAMA,EAAM,GAEhDF,EAAWK,KAGRL,EAGT,QAASG,GAAoBP,EAAWC,EAAcC,EAAYQ,GAChE,GAAIC,GAAuB,QAAjBV,CAEV,IADAA,EAAeU,EAAMT,EAAaD,EAC9BA,EAAaxO,OAAS,EACxB,IAAK,GAAIL,GAAI,EAAGA,EAAI6O,EAAaxO,OAAQL,IACvCsP,GAAUC,EAAMV,EAAa7O,GAAK8O,EAAWD,EAAa7O,KAAK4O,IAxGrE,GAAIY,GAAe1Q,EAAOD,SACxB4Q,gBAAiB,SAAyBC,GACxC,MAAIA,GACkB,gBAATA,IAAqBF,EAAaE,GACpCF,EAAaE,GACK,kBAATA,GACTA,EAEAF,EAAaG,IAGfH,EAAaG,KAGxBC,MAAO,SAAehB,EAAWC,EAAcC,GAC7C,MAAwB,QAAjBD,EAAyBC,EAAWzO,OAASwO,EAAaxO,QAEnEsP,IAAK,QAASA,GAAIf,EAAWC,EAAcC,GACzC,GAAIa,GAAM,CAIV,OAHAR,GAAoBP,EAAWC,EAAcC,EAAY,SAASM,GAChEO,GAAOP,IAEFO,GAETE,IAAK,QAASA,GAAIjB,EAAWC,EAAcC,GACzC,GAAIe,GAAM,IAMV,OALAV,GAAoBP,EAAWC,EAAcC,EAAY,SAASM,IACrD,MAAPS,GAAqBA,EAANT,KACjBS,EAAMT,KAGHS,GAETC,IAAK,QAASA,GAAIlB,EAAWC,EAAcC,GACzC,GAAIgB,GAAM,IAMV,OALAX,GAAoBP,EAAWC,EAAcC,EAAY,SAASM,IACrD,MAAPU,GAAeV,EAAMU,KACvBA,EAAMV,KAGHU,GAETb,IAAK,QAASA,GAAIL,EAAWC,EAAcC,GACzC,GAAIG,GAAM,EACNC,GAAwB,QAAjBL,EAAyBC,EAAaD,GAAcxO,MAO/D,OANI6O,GAAM,IACRC,EAAoBP,EAAWC,EAAcC,EAAY,SAASM,GAChEH,GAAOG,IAETH,GAAOC,GAEFD,GAETc,KAAM,QAASA,GAAKnB,EAAWC,EAAcC,GAC3C,GAAIiB,GACAb,GAAwB,QAAjBL,EAAyBC,EAAaD,GAAcxO,MAO/D,OANI6O,GAAM,IACRa,EAAO,EACPZ,EAAoBP,EAAWC,EAAcC,EAAY,SAASM,GAChEW,GAAQX,KAGLW,GAETC,MAAO,SAAepB,EAAWC,EAAcC,GAC7C,MAAOvI,MAAK0J,KAAKtB,EAAaC,EAAWC,EAAcC,GAAY,KAErEoB,OAAQ,SAAgBtB,EAAWC,EAAcC,GAC/C,MAAOvI,MAAK0J,KAAKtB,EAAaC,EAAWC,EAAcC,GAAY,KAErEqB,MAAO,SAAcvB,EAAWC,EAAcC,GAC5C,MAAOH,GAAaC,EAAWC,EAAcC,GAAY,IAE3DsB,KAAM,SAAcxB,EAAWC,EAAcC,GAC3C,MAAOH,GAAaC,EAAWC,EAAcC,GAAY,UAoC/DuB,IAAK,SAAS9P,EAASzB,EAAQD,GAE7B,GAAIyR,GAAQ/P,EAAQ,eAChBgQ,EAAYhQ,EAAQ,mBAEpBiQ,GACFC,QAAS,EACTC,KAAM,EACNC,KAAM,EAGR7R,GAAOD,QAAU,SAAS+R,EAAOvM,GAsG/B,QAASwM,GAAcC,GACrB,IAAK,GAAI9Q,GAAI,EAAGA,EAAIZ,EAAK2R,OAAO1Q,OAAQL,IACtC,GAAIZ,EAAK2R,OAAO/Q,GAAGsE,OAASwM,EAAMxM,KAChC,MAAOtE,EAGX,OAAO,GAIT,QAASgR,KAEP,GAAqC,MAAjC5R,EAAKwR,MAAMK,oBAA8B7R,EAAK8R,gBAAkB,EAAG,CAErE,GAAIpC,GAAa1P,EAAKwR,MAAMK,kBAC5B,IAAkB,MAAdnC,GAAsBwB,EAAM7I,QAAQqH,IAAeA,EAAWzO,OAAS,EACzE,IAAK,GAAI8Q,GAAW,EAAGC,EAAatC,EAAWzO,OAAmB+Q,EAAXD,EAAuBA,IAG5E,IAAK,GAFDE,GAAMvC,EAAWqC,GACjBG,EAAMlS,EAAKmS,KACNC,EAAS,EAAGA,EAASpS,EAAK8R,gBAAiBM,IAAU,CAC5D,GAAIC,GAAQrS,EAAK8R,gBAAkBM,EAC/BE,EAAWtS,EAAK2R,OAAOS,GACvBG,EAAWN,EAAIK,EAASpN,MACxBsN,EAAaN,EAAIM,UAEQ/O,UAAzB+O,EAAWD,GACbL,EAAMM,EAAWD,IAEjBL,EAAIO,OAAO9N,KAAK4N,GAChBL,EAAM,GAAIf,KAAYuB,EAAOR,EAAKK,EAAUD,EAAUD,GAAO,EAAOD,GAAUpS,EAAK8R,gBAAkB,GACrGU,EAAWD,GAAYL,EACvBA,EAAIS,cACJ3S,EAAK4S,kBAAkBP,GAAO1N,KAAKuN,IAGrCA,EAAIS,WAAWhO,KAAKoN,KAvI9B,GAAI/R,GAAOC,KACPyS,EAAQ,CAEC,OAATlB,GAAiC,MAAhBA,EAAMqB,SAGzB5S,KAAKuR,MAAQA,EAGbvR,KAAKgF,KAAOA,EAGZhF,KAAK0R,OAAS,WACZ,OAAQ1M,GACN,IAAKmM,GAAQC,QACX,MAAOrR,GAAKwR,MAAMqB,OAAOC,YAC3B,KAAK1B,GAAQE,KACX,MAAOtR,GAAKwR,MAAMqB,OAAOE,SAC3B,KAAK3B,GAAQG,KACX,MAAOvR,GAAKwR,MAAMqB,OAAOG,UAC3B,SACE,aAKN/S,KAAK6R,gBAAkB,KAGvB7R,KAAKkS,KAAO,KAGZlS,KAAK2S,kBAAoB,KAEzB3S,KAAKgT,OAAS,WACZjT,EAAK8R,gBAAkB9R,EAAK2R,OAAO1Q,OACnCjB,EAAKmS,KAAO,GAAIhB,KAAYuB,EAAO,KAAM,KAAM,KAAM1S,EAAK8R,gBAAkB,GAAG,GAE/E9R,EAAK4S,oBACL,KAAK,GAAIP,GAAQ,EAAGA,GAASrS,EAAK8R,gBAAiBO,IACjDrS,EAAK4S,kBAAkBP,KAIzBT,IAGA,KAAK,GAAIQ,GAAS,EAAGA,EAASpS,EAAK2R,OAAO1Q,OAAQmR,IAAU,CAC1D,GAAIc,GAASlT,EAAK2R,OAAOS,EACC,SAAtBc,EAAOC,KAAKC,OAAyC,SAAtBF,EAAOC,KAAKC,OAC7CpT,EAAKmT,KAAKD,GAAQ,KAKxBjT,KAAKkT,KAAO,SAASzB,EAAO2B,GAC1B,GAAa,MAAT3B,EAAe,CACb2B,KAAgB,IACO,QAArB3B,EAAMyB,KAAKC,MACb1B,EAAMyB,KAAKC,MAAQ,MAEnB1B,EAAMyB,KAAKC,MAAQ,OAMvB,KAAK,GAFDf,GAAQrS,EAAK8R,gBAAkBL,EAAcC,GAC7C4B,EAAUjB,IAAUrS,EAAK8R,iBAAmB9R,EAAKmS,MAAQnS,EAAK4S,kBAAkBP,EAAQ,GACnFzR,EAAI,EAAGA,EAAI0S,EAAQrS,OAAQL,IACL,MAAzB8Q,EAAMyB,KAAKI,WACbD,EAAQ1S,GAAG6R,OAAOU,KAAKzB,EAAMyB,KAAKI,YAElCD,EAAQ1S,GAAG6R,OAAOU,OAEK,SAArBzB,EAAMyB,KAAKC,OACbE,EAAQ1S,GAAG6R,OAAOe,YAM1BvT,KAAKwT,cAAgB,WACnB,MAAOzT,GAAK4S,kBAAkB,GAAGc,IAAI,SAASxB,GAG5C,IAFA,GAAIhN,GAAO,GACPyO,EAAUzB,GACNyB,EAAQC,QACd1O,EAAOyO,EAAQjM,OAAkB,KAATxC,EAAc,IAAMA,EAAO,IACnDyO,EAAUA,EAAQE,MAEpB,QACE3O,KAAMA,EACNgN,IAAKA,KAENiB,KAAK,SAASzS,EAAGgD,GAClB,MAAIhD,GAAEwE,KAAOxB,EAAEwB,KAAa,GACxBxE,EAAEwE,KAAOxB,EAAEwB,KAAa,EACrB,OAgDfxF,EAAOD,QAAQqU,KAAO1C,IAGtB2C,kBAAmB,GACnBC,cAAe,KAEjBC,IAAK,SAAS9S,EAASzB,EAAQD,GAQ7B,QAASyU,GAAiBC,EAAUC,EAASC,GAC3C,IAAK,GAAIzT,GAAI,EAAGA,EAAIwT,EAAQnT,OAAQL,IAClC,GAA4B,MAAxBwT,EAAQxT,GAAGuT,GACb,MAAOC,GAAQxT,GAAGuT,EAGtB,OAAOE,GAGT,QAASC,KASP,IAAK,GAPDC,IACFH,WACAI,SACAC,aACAC,cAGO9T,EAAI,EAAGA,EAAIwB,UAAUnB,OAAQL,IAAK,CACzC,GAAI+T,GAAWvS,UAAUxB,MACzB2T,GAAOH,QAAQzP,KAAKgQ,GACpBJ,EAAOC,MAAM7P,KAAKgQ,EAASxB,UAC3BoB,EAAOE,UAAU9P,KAAKgQ,EAASC,cAC/BL,EAAOG,UAAU/P,MACfkQ,kBAAmBF,EAASE,kBAC5BC,cAAqB,IAANlU,EAAU+T,EAASG,cAAgBH,EAASG,cAAgBH,EAASG,gBAAkB,KACtGC,WAAkB,IAANnU,EAAU+T,EAASI,WAAaJ,EAASI,WAAaJ,EAASI,aAAe,OAI9F,MAAOR,GAGT,QAASS,GAAYC,EAAYC,EAASC,EAAaC,GAErD,GAAIC,GACAC,CAEJ,IAAIF,EACF,OAAQF,GACN,IAAKK,GAAIzB,KAAKxC,KACZ+D,EAAYJ,EAAWO,YACvBF,EAAiBF,EAAmBI,WACpC,MACF,KAAKD,GAAIzB,KAAKzC,QACZgE,EAAYJ,EAAWQ,eACvBH,EAAiBF,EAAmBK,cACpC,MACF,KAAKF,GAAIzB,KAAKvC,KACZ8D,EAAYJ,EAAWS,aACvBJ,EAAiBF,EAAmBM,YACpC,MACF,SACEL,EAAY,KACZC,EAAiB,SAIrBD,GAAY,KACZC,EAAiB,IAGnB,IAAIf,GAASD,EAAkBa,EAAaG,EAAgBD,EAAWD,EAAoBH,EAE3F,OAAO,IAAIU,IACTzQ,KAAMgP,EAAiB,OAAQK,EAAOH,QAAS,IAE/CwB,QAAS1B,EAAiB,UAAWK,EAAOH,QAAS,IAErDjB,MACEC,MAAOc,EAAiB,QAASK,EAAOC,MAAO,MAC/CjB,WAAYW,EAAiB,aAAcK,EAAOC,MAAO,OAE3DI,UACEiB,QAAS3B,EAAiB,UAAWK,EAAOE,WAAW,GACvDqB,YAAa5B,EAAiB,cAAeK,EAAOE,WAAW,GAC/DsB,UAAW7B,EAAiB,YAAaK,EAAOE,WAAW,IAAUP,EAAiB,cAAeK,EAAOE,WAAW,IAGzHI,kBAAmBX,EAAiB,oBAAqBK,EAAOG,UAAW,OAC3EI,cAAeZ,EAAiB,gBAAiBK,EAAOG,UAAWsB,EAAYzF,KAC/EwE,WAAYb,EAAiB,aAAcK,EAAOG,UAAW,QAC5D,GAGL,QAASuB,GAAiBC,GAExBA,EAAUA,MAEVjW,KAAKkW,YAAsC1S,SAAxByS,EAAQC,YAA4BD,EAAQC,aAAc,EAC7ElW,KAAKmW,eAA4C3S,SAA3ByS,EAAQE,eAA+BF,EAAQE,gBAAiB,EAGxF,QAASC,GAAeH,EAASI,GAE/B,GAAIC,IACFV,QAASS,KAAgB,GAAO,EAAO7S,OACvCqS,YAAaQ,KAAgB,GAAO,EAAO7S,OAC3CsS,UAAWO,KAAgB,GAAO,EAAQ7S,OAE5CyS,GAAUA,MAEVjW,KAAK4V,QAA8BpS,SAApByS,EAAQL,QAAwBK,EAAQL,QAAUU,EAASV,QAC1E5V,KAAK6V,YAAsCrS,SAAxByS,EAAQJ,YAA4BI,EAAQJ,YAAcS,EAAST,YACtF7V,KAAK8V,UAAkCtS,SAAtByS,EAAQH,UAA0BG,EAAQH,UAAYQ,EAASR,UAGlF,QAASS,GAAWN,GAClBA,EAAUA,MAEVjW,KAAKmT,MAAQ8C,EAAQ9C,QAAU8C,EAAQ3C,WAAa,MAAQ,MAC5DtT,KAAKsT,WAAa2C,EAAQ3C,WAG5B,QAASkD,GAAYP,GACnBA,EAAUA,MAEVjW,KAAKyW,QAAUR,EAAQQ,UAAW,EAElCzW,KAAKgF,KAAOiR,EAAQjR,MAAQ,YA7H9B,GAAIiM,GAAQ/P,EAAQ,eAChBoU,EAAMpU,EAAQ,aACd6U,EAAc7U,EAAQ,qBACtBwV,EAAYxV,EAAQ,mBACpByV,EAAezV,EAAQ,gBA4HvBwU,EAAQjW,EAAOD,QAAQiS,MAAQ,SAASwE,EAASW,GAkBnD,QAASC,GAAkB9G,GACzB,MAAc,OAAPA,EAAcA,EAAIhN,WAAa,GAjBxCkT,EAAUA,MAGVjW,KAAKiF,KAAOgR,EAAQhR,KAGpBjF,KAAK2V,QAAUM,EAAQN,SAAW3V,KAAKiF,KAGvCjF,KAAKkT,KAAO,GAAIqD,GAAWN,EAAQ/C,MACnClT,KAAK2U,SAAW,GAAIyB,GAAeH,EAAQtB,SAG3C,IAAImC,GACAC,CAMJ/W,MAAK6U,cAAgB,SAASxE,GAC5B,MAAIA,QACFyG,EAAiBf,EAAY3F,gBAAgBC,IAEtCyG,GAIX9W,KAAK8U,WAAa,SAASzE,GACzB,MAAIA,QACF0G,EAAc1G,GAEP0G,GAIX/W,KAAK4U,kBAAoBqB,EAAQrB,oBAAsBqB,EAAQpB,cAAgB5D,EAAM+F,SAASf,EAAQpB,eAAiBoB,EAAQpB,cAAgB,SAAW,MAE1J7U,KAAK6U,cAAcoB,EAAQpB,eAC3B7U,KAAK8U,WAAWmB,EAAQnB,YAAc+B,GAElCD,KAAqB,KACtB5W,KAAKuV,YAAc,GAAIG,GAAMO,EAAQV,aAAa,IAAQtQ,KAAOjF,KAAKiF,MACtEjF,KAAKwV,eAAiB,GAAIE,GAAMO,EAAQT,gBAAgB,IAAQvQ,KAAOjF,KAAKiF,MAC5EjF,KAAKyV,aAAe,GAAIC,GAAMO,EAAQR,cAAc,IAAQxQ,KAAOjF,KAAKiF,MAI7ExF,GAAOD,QAAQoT,OAAS,SAASA,GAgD/B,QAASqE,GAAkBvV,GACzB,MAAmB,gBAARA,IAEPuD,KAAMlF,EAAKmX,cAAcxV,IAGtBA,EA2BT,QAASyV,GAASC,EAAWC,GAC3B,GAAIC,GAAa9F,EAAc4F,EAAWC,EAC1C,OAAIC,GAAa,GACRF,EAAUE,GAEZ,KAGT,QAAS9F,GAAc4F,EAAWC,GAChC,IAAK,GAAIE,GAAK,EAAGA,EAAKH,EAAUpW,OAAQuW,IACtC,GAAIH,EAAUG,GAAItS,OAASoS,EACzB,MAAOE,EAGX,OAAO,GA7FT,GAAIxX,GAAOC,IAEXA,MAAKwX,WAAa5E,EAAO4E,eACzBxX,KAAKyX,cAAyCjU,SAAzBoP,EAAO6E,gBAAgC7E,EAAO6E,eAAgB,EACnFzX,KAAK0X,oBAAqD,YAA/B9E,EAAO8E,oBAAoC,UAAY,OAClF1X,KAAK2X,WAAa,GAAI3B,GAAiBpD,EAAO+E,YAC9C3X,KAAK2U,SAAW,GAAIyB,GAAexD,EAAO+B,UAAU,GACpD3U,KAAK4X,MAAQhF,EAAOgF,MACpB5X,KAAK6X,OAASjF,EAAOiF,OACrB7X,KAAK8X,QAAUlF,EAAOkF,QACtB9X,KAAK+X,MAAQpB,EACb3W,KAAKgY,UAAY,GAAIxB,GAAY5D,EAAOoF,WAExCrB,EAAasB,QAAQrF,EAAOmF,OAE5B/X,KAAKuV,YAAc,GAAIG,GAAM9C,EAAO2C,aAAa,GACjDvV,KAAKwV,eAAiB,GAAIE,GAAM9C,EAAO4C,gBAAgB,GACvDxV,KAAKyV,aAAe,GAAIC,GAAM9C,EAAO6C,cAAc,GAGnDzV,KAAKkY,wBAELlY,KAAKmY,2BAELnY,KAAKkX,cAAgB,SAASvB,GAC5B,GAAIyC,GAAgBrY,EAAKoY,wBAAwBE,QAAQ1C,EACzD,OAAOyC,IAAiB,EAAIrY,EAAKmY,qBAAqBE,GAAiBzC,GAGzE3V,KAAKsY,cAAgB,SAASrT,GAC5B,GAAIsT,GAAaxY,EAAKmY,qBAAqBG,QAAQpT,EACnD,OAAOsT,IAAc,EAAIxY,EAAKoY,wBAAwBI,GAActT,GAGtEjF,KAAKwY,SAAW,SAASC,GACvB,MAAO1Y,GAAKgY,MAAME,YAAclY,EAAKgY,MAAME,QAAQQ,IAGrDzY,KAAK0Y,WAAa9F,EAAOlB,YAAc+B,IAAI,SAASyB,GAClD,GAAI3V,GAAI,GAAImW,GAAMR,EAIlB,OAFAnV,GAAKmY,qBAAqBxT,KAAKnF,EAAE0F,MACjClF,EAAKoY,wBAAwBzT,KAAKnF,EAAEoW,SAC7BpW,IAYTS,KAAK8S,WAAaF,EAAO+F,UAAYlF,IAAI,SAASyB,GAEhD,MADAA,GAAc+B,EAAkB/B,GACzBH,EAAYhV,EAAMuV,EAAIzB,KAAKxC,KAAM6D,EAAaiC,EAASpX,EAAK2Y,UAAWxD,EAAYjQ,SAG5FjF,KAAK6S,cAAgBD,EAAOgG,aAAenF,IAAI,SAASyB,GAEtD,MADAA,GAAc+B,EAAkB/B,GACzBH,EAAYhV,EAAMuV,EAAIzB,KAAKzC,QAAS8D,EAAaiC,EAASpX,EAAK2Y,UAAWxD,EAAYjQ,SAG/FjF,KAAK+S,YAAcH,EAAOiG,UAAYpF,IAAI,SAASyB,GAEjD,MADAA,GAAc+B,EAAkB/B,GACzBH,EAAYhV,EAAMuV,EAAIzB,KAAKvC,KAAM4D,EAAaiC,EAASpX,EAAK2Y,UAAWxD,EAAYjQ,SAG5FjF,KAAK8Y,gBAAkB9Y,KAAK+S,WAAa/S,KAAK+S,WAAW/R,QAAU,EAAI,CAEvE,IAAI+X,IACFvE,WACEmE,KAA4CnV,SAAtCzD,EAAKwV,YAAYZ,SAASiB,QAAwB7V,EAAKwV,YAAYZ,SAASiB,SAAU,EAC5FgD,QAAkDpV,SAAzCzD,EAAKyV,eAAeb,SAASiB,QAAwB7V,EAAKyV,eAAeb,SAASiB,SAAU,GAqBzG5V,MAAKgZ,SAAW,SAAS3B,GACvB,MAAOF,GAASpX,EAAK2Y,UAAWrB,IAGlCrX,KAAKiZ,YAAc,SAAS5B,GAC1B,MAAOF,GAASpX,EAAK+S,UAAWuE,IAGlCrX,KAAKkZ,eAAiB,SAAS7B,GAC7B,MAAOF,GAASpX,EAAK8S,aAAcwE,IAGrCrX,KAAKmZ,aAAe,SAAS9B,GAC3B,MAAOF,GAASpX,EAAKgT,WAAYsE,IAGnCrX,KAAKoZ,gBAAkB,WACrB,MAAOrZ,GAAK2Y,UAAUW,OAAO,SAAS5H,GACpC,GAAI6H,GAAgB,SAAuBC,GACzC,MAAO9H,GAAMxM,OAASsU,EAAWtU,KAGnC,OAAOlF,GAAKgT,WAAWyG,MAAMF,IAAkBvZ,EAAK+S,UAAU0G,MAAMF,IAAkBvZ,EAAK8S,aAAa2G,MAAMF,MAIlHtZ,KAAKyZ,2BAA6B,WAChC,GAAIC,EACJ,IAAI3Z,EAAKyX,aAAekC,EAAO3Z,EAAKyX,WAAW,IAAK,CAGlD,IAAK,GAFDmC,GAAa1I,EAAM2I,cAAcF,GACjCG,KACKlZ,EAAI,EAAGA,EAAIgZ,EAAW3Y,OAAQL,IACrCkZ,EAAQnV,KAAK3E,EAAKuY,cAAcqB,EAAWhZ,IAE7C,OAAOkZ,GAET,MAAO,OAGT7Z,KAAK8Z,cAAgB,WACnB,GAAIC,KAeJ,OAdInH,GAAOoH,YACT/I,EAAM/H,QAAQ+H,EAAM2I,cAAchH,EAAOoH,YAAa,SAASC,GAC7D,GAAIC,GAAkBtH,EAAOoH,WAAWC,EACxC,IAAIhJ,EAAM7I,QAAQ8R,GAChBH,EAAWha,EAAKmX,cAAc+C,IAAkB,GAAIvD,GAAUyD,iBAAiB,KAAM,KAAMD,GAAiB,OACvG,CACL,GAAIE,GAASnJ,EAAM2I,cAAcM,GAAiB,EAC9CE,KACFL,EAAWha,EAAKmX,cAAc+C,IAAkB,GAAIvD,GAAUyD,iBAAiBC,EAAQF,EAAgBE,QAMxGL,GAGT/Z,KAAKqa,UAAY,SAAShD,EAAWiD,EAAYC,EAAYC,GAE3D,GAAIC,GAAQC,EACRC,EACAC,EACAC,EAAqB1D,EAASpX,EAAK2Y,UAAWrB,EAElD,IAAIwD,EAAoB,CAEtB,OAAQP,GACN,IAAKhF,GAAIzB,KAAKxC,KACZoJ,EAAS1a,EAAK+S,SACd,MACF,KAAKwC,GAAIzB,KAAKzC,QACZqJ,EAAS1a,EAAK8S,YACd,MACF,KAAKyC,GAAIzB,KAAKvC,KACZmJ,EAAS1a,EAAKgT,WAMlB,OAAQwH,GACN,IAAKjF,GAAIzB,KAAKxC,KACZsJ,EAAS5a,EAAK+S,UACd8H,EAAc7a,EAAKkZ,YAAY5B,EAC/B,MACF,KAAK/B,GAAIzB,KAAKzC,QACZuJ,EAAS5a,EAAK8S,aACd+H,EAAc7a,EAAKmZ,eAAe7B,EAClC,MACF,KAAK/B,GAAIzB,KAAKvC,KACZqJ,EAAS5a,EAAKgT,WACd6H,EAAc7a,EAAKoZ,aAAa9B,GAMpC,GAAIoD,GAAUE,EAAQ,CAEpB,GAAIG,GAAuB/a,EAAKgb,oBAAoBR,EAEpD,IAAIE,EAAQ,CAEV,GADAC,EAAclJ,EAAciJ,EAAQpD,GAChCiD,IAAeC,IACbG,GAAeD,EAAOzZ,OAAS,GAAiB,MAAZwZ,GAAoBE,IAAgBF,EAAW,GACrF,OAAO,CAGXC,GAAOO,OAAON,EAAa,GAG7B,GAAIjJ,GAAQsD,EAAYhV,EAAMwa,EAAYK,EAAaC,EAiBvD,OAfKC,IAAwBrJ,EAAMkD,SAASiB,WAAY,IACtDnE,EAAMkD,SAASiB,QAAU,MAGvB+E,IACc,MAAZH,EACFG,EAAOK,OAAOR,EAAU,EAAG/I,GAE3BkJ,EAAOjW,KAAK+M,IAKhB1R,EAAK+Y,gBAAkB/Y,EAAKgT,WAAahT,EAAKgT,WAAW/R,QAAU,EAAI,GAEhE,KAKbhB,KAAKib,gBAAkB,SAAShG,GAE9B,GAAItU,GACAua,EACAC,GAAYpb,EAAKgb,oBAAoB9F,EAEzC,IAAIA,IAAYK,EAAIzB,KAAKxC,KACvB0H,EAAkBvE,UAAUmE,KAAOwC,EACnCD,EAAYnb,EAAK+S,cACZ,CAAA,GAAImC,IAAYK,EAAIzB,KAAKzC,QAI9B,OAAO,CAHP2H,GAAkBvE,UAAUoE,QAAUuC,EACtCD,EAAYnb,EAAK8S,aAMnB,IADAsI,EAAWA,KAAa,EAAQ,MAAO,EAClCxa,EAAI,EAAGA,EAAIua,EAAUla,OAAQL,IAC5Bua,EAAUva,GAAGgU,SAASiB,WAAY,IACpCsF,EAAUva,GAAGgU,SAASiB,QAAUuF,EAGpC,QAAO,GAGTnb,KAAK+a,oBAAsB,SAAS9F,GAClC,MAAIA,KAAYK,EAAIzB,KAAKxC,KAChB0H,EAAkBvE,UAAUmE,KAC1B1D,IAAYK,EAAIzB,KAAKzC,QACvB2H,EAAkBvE,UAAUoE,QAE5B,MAIX5Y,KAAKob,iBAAmB,SAASnG,GAC/B,GAAIkG,IAAYpb,EAAKsb,oBAAoBpG,EAEzC,IAAIA,IAAYK,EAAIzB,KAAKxC,KACvBtR,EAAK4X,WAAWzB,YAAciF,MACzB,CAAA,GAAIlG,IAAYK,EAAIzB,KAAKzC,QAG9B,OAAO,CAFPrR,GAAK4X,WAAWxB,eAAiBgF,EAInC,OAAO,GAGTnb,KAAKqb,oBAAsB,SAASpG,GAClC,MAAIA,KAAYK,EAAIzB,KAAKxC,KAChBtR,EAAK4X,WAAWzB,YACdjB,IAAYK,EAAIzB,KAAKzC,QACvBrR,EAAK4X,WAAWxB,gBAEhB,MAMbmF,oBAAqB,GACrBC,YAAa,GACbC,kBAAmB,GACnBC,eAAgB,GAChB1H,cAAe,KAEjB2H,IAAK,SAASxa,EAASzB,EAAQD,GAE7BC,EAAOD,QAAU,SAASyL,EAAI2I,EAAQnM,EAAOgK,EAAOW,EAAOuB,EAAQgI,GAEjE,GAAI5b,GAAOC,IAEXA,MAAKiL,GAAKA,EAEVjL,KAAK4T,OAASA,EAEd5T,KAAKyH,MAAQA,EAEbzH,KAAK2T,OAASA,EAEd3T,KAAK2b,OAASA,EAEd3b,KAAKyR,MAAQA,EAEbzR,KAAKoS,MAAQA,EAEbpS,KAAKwS,UAELxS,KAAKuS,cAELvS,KAAK0S,WAAa,KAElB1S,KAAK4b,cAAgB,SAAS7N,GAC5B,GAAuB,MAAnBhO,EAAK2S,WAAoB,CAC3B3S,EAAK2S,aACL,KAAK,GAAI/R,GAAI,EAAGA,EAAIZ,EAAKyS,OAAOxR,OAAQL,IACtCZ,EAAKwS,WAAWxS,EAAKyS,OAAO7R,IAAIib,cAAc7b,EAAK2S,YAGvD,GAAc,MAAV3E,EAAgB,CAClB,IAAK,GAAI8N,GAAI,EAAGA,EAAI9b,EAAK2S,WAAW1R,OAAQ6a,IAC1C9N,EAAOrJ,KAAK3E,EAAK2S,WAAWmJ,GAE9B,OAAO9N,GAEP,MAAOhO,GAAK2S,kBAMpBoJ,IAAK,SAAS5a,EAASzB,EAAQD,GAE7B,GAAIyR,GAAQ/P,EAAQ,eAChB6a,EAAY7a,EAAQ,mBACpByV,EAAezV,EAAQ,gBAEvB8a,EAAY,wCACZC,EAAY,itBACZC,EAAY,gBAEhBzc,GAAOD,QAAU,SAAS2c,GAexB,QAASC,GAAiBzG,GACxB,MAAO,OAAS0G,EAAc,iBAAmBC,EAAkB,KAAO3G,EAAU,eAGtF,QAAS4G,GAAcC,EAASC,EAAkBC,EAAiBC,GACjE,GAAIhc,GACAic,EAAMD,GAAU,MACpB,KAAKhc,EAAI,EAAO8b,EAAJ9b,EAAsBA,IAChCic,GAAO,WAOT,KAJAA,GAAOJ,EAAQK,OAAO,SAASC,EAAIrL,GACjC,MAAOqL,IAAMV,EAAiB3K,EAAMkE,UACnC,IAEEhV,EAAI,EAAO+b,EAAJ/b,EAAqBA,IAC/Bic,GAAO,WAET,OAAOA,GAAM,QAwDf,QAASG,GAASH,GAChB,MAAO3L,GAAM+L,KAAKC,SAASC,mBAAmBN,KAxFhD,GAAIhK,GAASuJ,EAAY5K,MAAMqB,OAE3BuK,EAAYxG,EAAasB,SAC7BkF,GAA0B,cAAdA,EAA4B,QAAUA,CAClD,IAAIC,GAAyB,UAAdD,EAEXb,EAAkBc,EAAW,QAAU,QACvCC,EAAa1G,EAAa2G,OAAOH,GACjCI,EAAe5G,EAAa1F,MAAMuM,aAAaH,EAAY,IAE3DhB,EAAc,oCAAsCC,EAAkB,uBAAyBe,EAAa,eAAiBA,EAAa,IAC1II,EAAc,4BAA8BF,EAAe,eAAiBA,EAAe,IAuB3FG,EAAuBxW,KAAKuJ,IAAImC,EAAOG,WAAW/R,OAAS,EAAGmb,EAAYwB,OAAOC,WAAWhG,OAE5F7E,EAAawJ,EAAc3J,EAAOG,WAAY,EAAG2K,EAAuB9K,EAAOG,WAAW/R,OAAQ,+CAElG6c,EAAM,0CAA4CH,EAAuB,eAEzE7K,EAAe0J,EAAc3J,EAAOC,aAAcsJ,EAAYwB,OAAOG,WAAWlG,MAAO8F,GAAwBvB,EAAYwB,OAAOG,WAAWlG,MAAQhF,EAAOC,aAAa7R,SAEzK+c,EAAgB,WAGlB,IAAK,GADDlC,GADAe,EAAM,GAEDjc,EAAI,EAAGA,EAAIwb,EAAYvD,QAAQiB,QAAQ7Y,OAAQL,IAAK,CAC3D,GAAIqd,GAAU7B,EAAYvD,QAAQiB,QAAQlZ,GACtCsd,EAAS,MACb,IAAItd,EAAIwb,EAAYvD,QAAQiB,QAAQ7Y,OAAS,EAC3C,IAAK6a,EAAI,EAAGA,EAAIM,EAAYwB,OAAOG,WAAWlG,MAAOiE,IACnDoC,GAAU,gBAGZA,IAAUrL,EAAOE,UAAU+J,OAAO,SAASC,EAAIrL,GAC7C,MAAOqL,IAAMV,EAAiB3K,EAAMkE,UACnC,GAGLsI,IAAUD,EAAQnB,OAAO,SAASC,EAAIoB,GACpC,GAAIzW,GAAQyW,EAAOlZ,OAAS+W,EAAUoC,WAAWC,YAAcF,EAAOzW,MAAMkO,QAAUuI,EAAOzW,KAC7F,OAAOqV,IAAM,OAASW,EAAc,aAAeS,EAAOG,OAAM,GAAQ,cAAgBH,EAAOI,OAAM,GAAQ,KAAO7W,EAAQ,SAC3H,IACHmV,GAAOqB,EAAS,QAElB,MAAOrB,MAGL2B,EAAyB,WAG3B,IAAK,GAFD3B,GAAM,GAEDjc,EAAI,EAAGA,EAAIwb,EAAYxD,KAAKkB,QAAQ7Y,OAAQL,IAAK,CACxD,GAAIqd,GAAU7B,EAAYxD,KAAKkB,QAAQlZ,GACnCsd,EAAS,MACbA,IAAUD,EAAQnB,OAAO,SAASC,EAAIoB,GACpC,MAAOpB,IAAM,OAASW,EAAc,aAAeS,EAAOG,OAAM,GAAQ,cAAgBH,EAAOI,OAAM,GAAQ,KAAOJ,EAAOzW,MAAQ,SAClI,GACH,IAAI+W,GAAUrC,EAAYsC,SAAS9d,EACnCsd,IAAUO,EAAQ3B,OAAO,SAASC,EAAI4B,EAAUpV,GAC9C,GAAIwL,GAAalC,EAAOG,WAAWzJ,GAAgBsJ,EAAOG,WAAW/R,QAAQ8T,WACzErN,EAA0B,MAAlBiX,EAASjX,MAAgB,GAAKqN,EAAaA,IAAa4J,EAASjX,OAASiX,EAASjX,KAC/F,OAAOqV,IAAM,OAASrV,EAAQ,SAC7B,IACHmV,GAAOqB,EAAS,QAElB,MAAOrB,KAOT,OAAOZ,GAAYe,EAASd,EAAY,UAAYlJ,EAAa8K,EAAMhL,EAAekL,EAAgBQ,EAAyB,WAAarC,MAI9IT,eAAgB,GAChBkD,kBAAmB,GACnB5K,cAAe,KAEjB6K,IAAK,SAAS1d,EAASzB,EAAQD,GAE7B,GAAIyR,GAAQ/P,EAAQ,eAEhBwV,EAAYjX,EAAOD,SACrBqf,IAAK,QACLC,KAAM,SACNC,MAAO,WAGTrI,GAAUyD,iBAAmB,SAAS6E,EAAUC,EAAMC,EAAaC,GACjE,GAAIpf,GAAOC,IAEXA,MAAKgf,SAAWI,EAAIpb,IAAIgb,GACxBhf,KAAKqf,YAAa,EAClBrf,KAAKif,KAAOA,GAAQ,KAChBjf,KAAKif,MAAQjf,KAAKgf,UAAYhf,KAAKgf,SAASM,iBAC1CrO,EAAMsO,SAASvf,KAAKif,QACtBjf,KAAKqf,YAAa,EACbrf,KAAKif,KAAKO,aACbxf,KAAKif,KAAO,GAAIQ,QAAOzf,KAAKif,KAAK/Z,OAAQ,OAK/ClF,KAAKkf,YAAcA,EACnBlf,KAAKmf,cAAgBA,EAErBnf,KAAK0f,KAAO,SAASjY,GACnB,GAAIwJ,EAAM7I,QAAQrI,EAAKmf,aAAc,CACnC,GAAIS,GAAQ5f,EAAKmf,YAAY7G,QAAQ5Q,IAAU,CAC/C,OAAO1H,GAAKof,gBAAkBQ,IAAU5f,EAAKof,eAAiBQ,EACzD,MAAI5f,GAAKkf,KACPlf,EAAKif,SAAS3O,KAAK5I,EAAO1H,EAAKkf,MAC7Blf,EAAKmf,eAAgB,GAAQnf,EAAKmf,cAAgBxI,EAAUmI,KAC9D,EACE9e,EAAKmf,eAAgB,GAASnf,EAAKmf,cAAgBxI,EAAUoI,MAO1E9e,KAAK4f,aAAe,WAClB,QAAS7f,EAAKkf,MAAQhO,EAAM7I,QAAQrI,EAAKmf,cAAgBnf,EAAKmf,cAAgBxI,EAAUoI,MAAQ/e,EAAKmf,eAAgB,IAIzH,IAAIE,GAAM1I,EAAUmJ,WAClB7b,IAAK,SAAaoW,GAChB,OAAQA,GACN,IAAKgF,GAAIU,MAAM7a,KACb,MAAOma,GAAIU,KACb,KAAKV,GAAIW,SAAS9a,KAChB,MAAOma,GAAIW,QACb,KAAKX,GAAIY,GAAG/a,KACV,MAAOma,GAAIY,EACb,KAAKZ,GAAIa,IAAIhb,KACX,MAAOma,GAAIa,GACb,KAAKb,GAAIc,GAAGjb,KACV,MAAOma,GAAIc,EACb,KAAKd,GAAIe,IAAIlb,KACX,MAAOma,GAAIe,GACb,KAAKf,GAAIgB,GAAGnb,KACV,MAAOma,GAAIgB,EACb,KAAKhB,GAAIiB,IAAIpb,KACX,MAAOma,GAAIiB,GACb,SACE,MAAOjB,GAAIN,OAGjBA,KAAM,KACNgB,OACE7a,KAAM,UACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAIxX,GACKA,EAAM1E,WAAWud,OAAOrP,EAAMsO,SAASN,GAAQA,EAAO,GAAIQ,QAAOR,EAAM,OAAS,GAE7EA,GAGdK,iBAAiB,GAEnBS,UACE9a,KAAM,iBACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAIxX,GACKA,EAAM1E,WAAWud,OAAOrP,EAAMsO,SAASN,GAAQA,EAAO,GAAIQ,QAAOR,EAAM,MAAQ,IAE7EA,GAGbK,iBAAiB,GAEnBU,IACE/a,KAAM,IACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAOxX,IAASwX,GAElBK,iBAAiB,GAEnBW,KACEhb,KAAM,KACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAOxX,IAASwX,GAElBK,iBAAiB,GAEnBY,IACEjb,KAAM,IACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAOxX,GAAQwX,GAEjBK,iBAAiB,GAEnBa,KACElb,KAAM,KACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAOxX,IAASwX,GAElBK,iBAAiB,GAEnBc,IACEnb,KAAM,IACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAeA,GAARxX,GAET6X,iBAAiB,GAEnBe,KACEpb,KAAM,KACNoL,KAAM,SAAc5I,EAAOwX,GACzB,MAAgBA,IAATxX,GAET6X,iBAAiB,MAKrBvL,cAAe,KAEjBwM,IAAK,SAASrf,EAASzB,EAAQD,GAE7BC,EAAOD,QAAQyR,MAAQ/P,EAAQ,eAC/BzB,EAAOD,QAAQ+R,MAAQrQ,EAAQ,eAC/BzB,EAAOD,QAAQ2c,YAAcjb,EAAQ,wBACrCzB,EAAOD,QAAQghB,MAAQtf,EAAQ,eAC/BzB,EAAOD,QAAQ,UAAY0B,EAAQ,wBAGnCuf,qBAAsB,GACtBC,cAAe,GACfC,cAAe,GACfC,uBAAwB,GACxB7M,cAAe,KAEjB8M,IAAK,SAAS3f,EAASzB,EAAQD,GAE7B,GAAIshB,GAAS5f,EAAQ,gBACnBoU,EAAMpU,EAAQ,aACd6f,EAAgB7f,EAAQ,gBAAgB0R,OACxC8D,EAAYxV,EAAQ,mBACpBsf,EAAQtf,EAAQ,eAChB+P,EAAQ/P,EAAQ,eAEdqQ,EAAQ9R,EAAOD,QAAU,SAASoT,GAmBpC,QAASoO,GAAQC,GACXA,KAAmB,GACrBC,IAEFnhB,EAAK4Y,KAAK3F,SACVjT,EAAK6Y,QAAQ5F,SACbmO,IAGAphB,EAAKqhB,QAAQ7P,EAAM8P,eAGrB,QAASH,KACP,GAAII,GAAerQ,EAAM2I,cAAc7Z,EAAKwhB,QAC5C,IAAID,EAAatgB,OAAS,EAAG,CAC3BjB,EAAK6R,qBAEL,KAAK,GAAIjR,GAAI,EAAGA,EAAIZ,EAAK6S,OAAO4E,WAAWxW,OAAQL,IAAK,CAGtD,IAAK,GAFDqR,GAAMjS,EAAK6S,OAAO4E,WAAW7W,GAC7B6gB,GAAU,EACLjK,EAAK,EAAGA,EAAK+J,EAAatgB,OAAQuW,IAAM,CAC/C,GAAIF,GAAYiK,EAAa/J,GACzBkK,EAAc1hB,EAAKwhB,QAAQlK,EAE/B,IAAIoK,IAAgBA,EAAY/B,KAAK1N,EAAIqF,IAAa,CACpDmK,GAAU,CACV,QAGCA,GACHzhB,EAAK6R,mBAAmBlN,KAAKsN,QAIjCjS,GAAK6R,mBAAqB7R,EAAK6S,OAAO4E,WA+K1C,QAASkK,GAAahP,EAAYiP,EAAYC,EAAgBjI,EAAY9E,GAExE,GAAIgN,KAEJ,IAAI9hB,EAAK6S,OAAOkG,gBAAkB,EAAG,CAEnC,GAAItJ,EAEJ,IAAkB,MAAdkD,EACFlD,EAAemS,MACV,IAAkB,MAAdA,EACTnS,EAAekD,MACV,CACLlD,IACA,KAAK,GAAIsS,GAAK,EAAGA,EAAKpP,EAAW1R,OAAQ8gB,IAAM,CAC7C,GAAIC,GAAWrP,EAAWoP,EAC1B,IAAIC,GAAY,EAAG,CACjB,GAAIC,GAAcL,EAAWtJ,QAAQ0J,EACjCC,IAAe,IACjBtP,EAAWoP,GAAM,GAAKC,EAAW,GACjCvS,EAAa9K,KAAKqd,MAM1B,GAEIxS,GAFA0S,EAAoBzS,GAAwC,IAAxBA,EAAaxO,OAGjDkhB,GAFaniB,EAAK6R,sBAItB,IAAI+H,EACF,IAAK,GAAIwI,GAAiB,EAAGA,EAAiBxI,EAAW3Y,OAAQmhB,IAC/D5S,EAAYxP,EAAK6S,OAAOuG,aAAaQ,EAAWwI,IAC3CtN,IACEtF,EAMHsF,EAAgBtF,EAAUsF,iBAL1BtF,EAAYxP,EAAK6S,OAAOoG,SAASW,EAAWwI,IACxC5S,IACFsF,EAAgBtF,EAAUkG,aAAelG,EAAUkG,aAAaZ,gBAAkBtF,EAAUsF,mBAO9FtF,GAAasF,GACfqN,EAAWxd,MACT+M,MAAOlC,EACPsF,cAAeA,QAKrB,KAAK,GAAIuN,GAAiB,EAAGA,EAAiBriB,EAAK6S,OAAOkG,gBAAiBsJ,IACzE7S,EAAYxP,EAAK6S,OAAOG,WAAWqP,IAAmBC,GAClDxN,GAAiBtF,EAAUsF,gBAC7BqN,EAAWxd,MACT+M,MAAOlC,EACPsF,cAAeA,GAAiBtF,EAAUsF,iBAMlD,KAAK,GAAIyN,GAAM,EAAGA,EAAMJ,EAAWlhB,OAAQshB,IACzC/S,EAAY2S,EAAWI,GAEnBL,EACFJ,EAAItS,EAAUkC,MAAMxM,MAAQ,KAE5B4c,EAAItS,EAAUkC,MAAMxM,MAAQsK,EAAUsF,cAActF,EAAUkC,MAAMxM,KAAMuK,GAAgB,MAAOzP,EAAK6R,mBAAoBgQ,GAAkBlP,EAAYiP,GAK9J,MAAOE,GAGT,QAASU,GAAiBC,GAExB,GAAIA,EAAQ,CACV,GAAI3J,MACA4J,EAAM,IAAMD,EAAOvX,EAUvB,IAPqBzH,SAAjBkf,EAAQD,KACVC,EAAQD,GAAOD,EAAO7O,OAAS,KAAO+O,EAAQF,EAAO5O,OAAO3I,KAAOuX,EAAO5G,iBAI5E/C,EAAK9Y,EAAK6Y,QAAQ1G,KAAKjH,IAAMyW,EAAac,EAAO7O,OAAS,KAAO+O,EAAQD,GAAKzf,MAAM,GAAI,MAEpFjD,EAAK6Y,QAAQ/G,gBAAkB,EAIjC,IAHA,GAAI8Q,GAAI,EACJtP,GAAWtT,EAAK6Y,QAAQ1G,MAErByQ,EAAItP,EAAQrS,QAAQ,CAIzB,IAAK,GAHD4S,GAASP,EAAQsP,GACjBC,EAAaJ,EAAO7O,OAAS,KAAOC,EAAOD,OAAS+O,EAAQD,GAAKzf,MAAM,GAAK0f,EAAQ,IAAM9O,EAAO3I,IAAIjI,MAAM,GAEtGrC,EAAI,EAAGA,EAAIiT,EAAOpB,OAAOxR,OAAQL,IAAK,CAC7C,GAAIkiB,GAASjP,EAAOrB,WAAWqB,EAAOpB,OAAO7R,IACzCmiB,EAAM,IAAMD,EAAO5X,EASvB,IANqBzH,SAAjBkf,EAAQI,KACVJ,EAAQI,GAAOJ,EAAQI,IAAQD,EAAOjH,gBAAgB5Y,MAAM,IAG9D6V,EAAKgK,EAAO5X,IAAMyW,EAAakB,EAAYF,EAAQI,GAAMN,EAAO7O,OAAS,KAAO6O,EAAO5G,kBAElFiH,EAAOlH,SACVtI,EAAQ3O,KAAKme,GACTD,GAAY,CACdF,EAAQI,KACR,KAAK,GAAIC,GAAK,EAAGA,EAAKH,EAAW5hB,OAAQ+hB,IAAM,CAC7C,GAAIC,GAAKJ,EAAWG,EACV,KAANC,GAAiB,EAALA,IACdN,EAAQI,GAAKpe,KAAK,GAAKse,EAAK,IAC5BJ,EAAWG,GAAM,MAM3BL,EAAQ,IAAM9O,EAAO3I,IAAMzH,OAC3Bmf,IAIJ,MAAO9J,IAIX,QAASsI,KAOP,GANAphB,EAAKkjB,cACLP,KAGA3iB,EAAKkjB,WAAWljB,EAAK4Y,KAAKzG,KAAKjH,IAAMsX,EAAiBxiB,EAAK4Y,KAAKzG,MAE5DnS,EAAK4Y,KAAK9G,gBAAkB,EAI9B,IAHA,GAEI+B,GAFAP,GAAWtT,EAAK4Y,KAAKzG,MACrByQ,EAAI,EAEDA,EAAItP,EAAQrS,QAAQ,CACzB4S,EAASP,EAAQsP,EAEjB,KAAK,GAAIhiB,GAAI,EAAGA,EAAIiT,EAAOpB,OAAOxR,OAAQL,IAAK,CAC7C,GAAIkiB,GAASjP,EAAOrB,WAAWqB,EAAOpB,OAAO7R,GAE7CZ,GAAKkjB,WAAWJ,EAAO5X,IAAMsX,EAAiBM,GAEzCA,EAAOlH,QACVtI,EAAQ3O,KAAKme,GAIjBF,KAhYN,GAIED,GAJE3iB,EAAOC,KACTqiB,GACEpd,KAAM,cAKV6b,GAAO/f,KAAKf,MAEZA,KAAK4S,OAAS,GAAImO,GAAcnO,GAChC5S,KAAKuhB,QAAUxhB,EAAK6S,OAAOkH,gBAC3B9Z,KAAK4R,mBAAqB7R,EAAK6S,OAAO4E,WAEtCxX,KAAK2Y,KAAO,GAAIrD,GAAIvV,EAAMuV,EAAIzB,KAAKxC,MACnCrR,KAAK4Y,QAAU,GAAItD,GAAIvV,EAAMuV,EAAIzB,KAAKzC,SACtCpR,KAAKijB,cAwCLjjB,KAAKkT,KAAO,SAAS+B,EAASxD,GAC5B,GAAIwD,IAAYK,EAAIzB,KAAKxC,KACvBtR,EAAK4Y,KAAKzF,KAAKzB,OACV,CAAA,GAAIwD,IAAYK,EAAIzB,KAAKzC,QAG9B,MAFArR,GAAK6Y,QAAQ1F,KAAKzB,GAKpB1R,EAAKqhB,QAAQ7P,EAAM2R,qBAGrBljB,KAAKqa,UAAY,SAAShD,EAAWiD,EAAYC,EAAYC,GAC3D,MAAIza,GAAK6S,OAAOyH,UAAUhD,EAAWiD,EAAYC,EAAYC,IAC3DwG,GAAQ,IACD,IAEF,GAGThhB,KAAKmjB,YAAc,SAAS9L,EAAW2H,EAAUC,EAAMC,EAAaC,GAClEpf,EAAKwhB,QAAQlK,GAAa,GAAIX,GAAUyD,iBAAiB6E,EAAUC,EAAMC,EAAaC,GACtF6B,KAGFhhB,KAAKojB,YAAc,SAASvK,GAC1B9Y,EAAK6S,OAAO4E,WAAaqB,EACzBmI,KAGFhhB,KAAKib,gBAAkB,SAAShG,GAC1BlV,EAAK6S,OAAOqI,gBAAgBhG,IAC9BlV,EAAKqhB,QAAQ7P,EAAM8R,uBAIvBrjB,KAAKob,iBAAmB,SAASnG,GAC3BlV,EAAK6S,OAAOwI,iBAAiBnG,IAC/BlV,EAAKqhB,QAAQ7P,EAAM8R,uBAIvBrjB,KAAK+a,oBAAsB,SAAS9F,GAClC,MAAOlV,GAAK6S,OAAOmI,oBAAoB9F,IAGzCjV,KAAKqb,oBAAsB,SAASpG,GAClC,MAAOlV,GAAK6S,OAAOyI,oBAAoBpG,IAGzCjV,KAAKsjB,eAAiB,SAAS7R,EAAO8R,GAIpC,IAAK,GAHDC,MACAhR,KACAiR,GAAgB,EACX9iB,EAAI,EAAGA,EAAIZ,EAAK6S,OAAO4E,WAAWxW,OAAQL,IAAK,CACtD,GAAIqR,GAAMjS,EAAK6S,OAAO4E,WAAW7W,GAC7BoP,EAAMiC,EAAIP,EACKjO,UAAf+f,GACEA,KAAe,GAA8B,kBAAfA,IAA6BA,EAAWxT,KACxEyT,EAAQ9e,KAAKqL,GAGJ,MAAPA,EACFyT,EAAQ9e,KAAKqL,GAEb0T,GAAgB,EAItB,GAAID,EAAQxiB,OAAS,EAAG,CAClBiQ,EAAMyS,SAASF,EAAQ,KAAOvS,EAAM0S,OAAOH,EAAQ,IACrDA,EAAQtQ,KAAK,SAASzS,EAAGgD,GACvB,MAAOhD,GAAIgD,EAAIhD,EAAIgD,EAAI,EAAIA,EAAI,GAAK,IAGtC+f,EAAQtQ,MAGV,KAAK,GAAI0Q,GAAK,EAAGA,EAAKJ,EAAQxiB,OAAQ4iB,IACzB,IAAPA,GAAYJ,EAAQI,KAAQpR,EAAOA,EAAOxR,OAAS,IACrDwR,EAAO9N,KAAK8e,EAAQI,QAIxBpR,GAASgR,CAKX,OAHIC,IACFjR,EAAOqR,QAAQ,MAEVrR,GAGTxS,KAAK8jB,eAAiB,SAASrS,GAC7B,MAAO1R,GAAKwhB,QAAQ9P,IAGtBzR,KAAK+jB,gBAAkB,SAAStS,GAC9B,GAAI4H,GAAStZ,EAAK+jB,eAAerS,EACjC,OAAiB,OAAV4H,IAAmBA,EAAOuG,gBAGnC5f,KAAKgkB,QAAU,SAASvS,EAAOwS,EAAQC,EAAQrP,GAC7C,GAAIpN,EACJ,IAAIwc,GAAUC,EAAQ,CAEpB,GAAIC,GAAgB1S,IAAU1R,EAAK6S,OAAOG,WAAW,IAAMsP,GAAcpd,KACrEsK,EAAYxP,EAAK6S,OAAOuG,aAAagL,EAGvC1c,IADG8H,GAAasF,GAAiBtF,EAAUsF,eAAiBA,EACpD9U,EAAKqkB,gBAAgBH,EAAOtQ,OAAS,KAAOsQ,EAAOrI,gBAAgB5Y,MAAM,GAAIkhB,EAAOvQ,OAAS,KAAOuQ,EAAOtI,gBAAgB5Y,MAAM,IAAKmhB,GAAgBtP,GAAesP,GAEzKpkB,EAAKkjB,WAAWgB,EAAOhZ,KAAOlL,EAAKkjB,WAAWgB,EAAOhZ,IAAIiZ,EAAOjZ,IAC1DlL,EAAKkjB,WAAWgB,EAAOhZ,IAAIiZ,EAAOjZ,IAAIkZ,GAEtC,KAKd,MAAiB3gB,UAAViE,EAAsB,KAAOA,GAGtCzH,KAAKokB,gBAAkB,SAAS1R,EAAYiP,EAAYhI,EAAY9E,GAClE,MAAO6M,GAAahP,EAAYiP,EAAYjP,EAAYiH,EAAY9E,IAGtE7U,KAAKqkB,aAAe,WAIlB,QAASC,GAAaC,GAEpB,IAAK,GADD3H,GAAM,GACD4H,EAAK,EAAGA,EAAKD,EAAWvjB,OAAQwjB,IACvC5H,IAAQ4H,EAAK,EAAI,MAAQ,IAAMD,EAAWC,GAAI7O,OAEhD,OAAOiH,GAWT,IAAK,GAlBDhK,GAAS7S,EAAK6S,OAUd6R,EAAaH,EAAa1R,EAAOC,cACjC6R,EAAa9R,EAAOG,WAAW,GAAG6B,kBAAoB,IAAMhC,EAAOG,WAAW,GAAG4C,QAAU,IAC3FgP,EAAeL,EAAa1R,EAAOE,WAEnC8R,EAAoB7kB,EAAK4Y,KAAKnF,gBAC9BqR,EAAoB9kB,EAAK6Y,QAAQpF,gBACjCqF,KAEKiM,EAAK,EAAGA,EAAKD,EAAkB7jB,OAAQ8jB,IAAM,CAGpD,IAAK,GAFDC,GAAOF,EAAkBC,GACzBE,GAAYD,EAAK9f,MACZggB,EAAM,EAAGA,EAAML,EAAkB5jB,OAAQikB,IAChDD,EAAStgB,KAAK3E,EAAKikB,QAAQpR,EAAOG,WAAW,GAAG9N,KAAM2f,EAAkBK,GAAKhT,IAAK8S,EAAK9S,KAEzF4G,GAAKnU,KAAKsgB,GAGZ,OACEE,MAAOR,EAAa,KAAOD,EAAa,OAASE,EACjDF,WAAYA,EACZC,WAAYA,EACZC,aAAcA,EACdQ,SAAUP,EAAkBnR,IAAI,SAAS2R,GACvC,MAAOA,GAAEngB,OAEXogB,UAAWxM,IAIf7Y,KAAKwgB,MAAQA,EAAMzgB,GAEnBihB,IAuKFzP,GAAM8P,cAAgB,gBACtB9P,EAAM2R,mBAAqB,qBAC3B3R,EAAM8R,qBAAuB,yBAG7B9H,YAAa,GACb+J,eAAgB,GAChB9J,kBAAmB,GACnB+J,eAAgB,GAChB5E,cAAe,GACf5M,cAAe,KAEjByR,IAAK,SAAStkB,EAASzB,EAAQD,GAE7B,GAAIyR,GAAQ/P,EAAQ,cAEpBzB,GAAOD,QAAU,WACf,GAAIimB,KAEJzlB,MAAK0lB,UAAY,SAASC,EAAO1V,GAC3BgB,EAAM+F,SAAS2O,IAAU1U,EAAM2U,WAAW3V,KAC5CwV,EAAQE,GAASF,EAAQE,OACzBF,EAAQE,GAAOjhB,KAAKuL,KAIxBjQ,KAAKohB,QAAU,SAASuE,GAClB1U,EAAM+F,SAAS2O,IACjB1U,EAAM/H,QAAQuc,EAAQE,GAAQ,SAAS1V,GACrCA,EAAS/N,MAAM,MAAOyjB,GAAOva,OAAOjD,MAAMkC,UAAUrH,MAAMjC,KAAKoB,UAAW,WAOlF4R,cAAe,KAEjB8R,IAAK,SAAS3kB,EAASzB,EAAQD,GAM7B,QAASsmB,GAAuBpkB,GAC9B,MAAOA,IAAOA,EAAIN,WAAaM,GAC7BP,UAASO,GANb,GAAIqkB,GAAW7kB,EAAQ,gCAEnB8kB,EAAWF,EAAuBC,GAQlC9U,EAAQ/P,EAAQ,eAChBoU,EAAMpU,EAAQ,aACd6U,EAAc7U,EAAQ,qBAEtB+kB,EAAY,SAAmB/gB,EAAQsb,EAAOe,GAEhD,GAAIxhB,GAAOC,IAEXA,MAAKkF,OAASA,EACdlF,KAAKwgB,MAAQA,EACbxgB,KAAKuhB,QAAUA,EAEfvhB,KAAKkmB,cAAgB,SAASC,EAAMlQ,EAASmQ,GAC3C,GAAIA,EAAUC,SAAU,EAAM,CAE5B,IAAK,GADDxE,MACKyE,EAAK,EAAGA,EAAKrQ,EAAQsQ,gBAAgBvlB,OAAQslB,IACpDzE,EAAI5L,EAAQsQ,gBAAgBD,IAAOH,EAAKpmB,EAAKymB,eAAevQ,EAAQsQ,gBAAgBD,IAEtF,OAAOzE,GAEP,MAAOsE,GAAKC,EAAUK,gBAI1BzmB,KAAK0mB,YAAc,SAASD,EAAeJ,EAAOxR,EAAe8R,GAE/D,GAAIP,IACFK,cAAe1mB,EAAKymB,eAAeC,GACnCJ,MAAOA,EACPxR,cAAeA,EAGjB,OAAO,UAASoB,GACdA,EAAUlW,EAAK6mB,aAAa3Q,EAAS9T,UAAWikB,EAChD,IAAID,GAAOpmB,EAAK8mB,QAAQ5Q,EAAS0Q,EAAcN,EAC/C,OAAOtmB,GAAKmmB,cAAcC,EAAMlQ,EAASmQ,KAI7CpmB,KAAK8mB,uBAAyB,SAAS3gB,GAGrC,GAAI4gB,GAAUhnB,EAAKygB,MAAMzQ,IAAM,OAAS,KACxChQ,GAAKygB,MAAMuG,GAAWhnB,EAAK2mB,YAAYljB,QAAW,EAAMA,OAAW2C,EAInE,KAAK,GADD6gB,GAAe/V,EAAM2I,cAAc7D,GAC9BkR,EAAY,EAAGA,EAAYD,EAAahmB,OAAQimB,IAAa,CACpE,GAAIC,GAAWF,EAAaC,EACX,qBAAbC,IACFnnB,EAAKygB,MAAM0G,GAAYnnB,EAAK2mB,YAAYljB,QAAW,EAAMuS,EAAYmR,GAAW/gB,OAMpFghB,EAAa,SAAoB5V,GAyFnC,QAAS6V,GAAiBC,EAAWhO,GACnC,MAAO,UAASpH,GACd,MAAOA,GAAIxK,QAAU4R,EAAOtJ,OAASsX,GAAaA,EAAUC,KAAK,SAASC,GACxE,GAAI3T,GAAS3B,EAAI2B,MACjB,IAAIA,EACF,KAAOA,EAAOxB,MAAQmV,EAASnV,OAC7BwB,EAASA,EAAOA,MAGpB,OAAOA,KAAW2T,MAhGxBtB,EAAUllB,KAAKf,KAAMuR,QAErB,IAAIxR,GAAOC,IAEXA,MAAKwmB,eAAiB,SAAS7Q,GAC7B,MAAO5V,GAAKmF,OAAO0N,OAAOsE,cAAcvB,IAG1C3V,KAAK4mB,aAAe,SAAS3Q,EAASuR,EAAWpB,GAC/C,GAAIqB,IACF9N,cAGF,IAAIyM,EAAUC,SAAU,EAAM,CACxBpQ,GAA+F,YAAhE,mBAAZA,GAA0B,aAAc,EAAI+P,EAAAA,YAAkB/P,KACnFwR,EAAK5S,cAAgBoB,EAAQpB,cAC7B4S,EAAKlB,gBAAkBtQ,EAAQvE,SAE/B+V,EAAK5S,cAAgBuR,EAAUvR,cAC/B4S,EAAKlB,gBAAkBiB,EAGzB,KAAK,GAAIlB,GAAK,EAAGA,EAAKmB,EAAKlB,gBAAgBvlB,OAAQslB,IACjDmB,EAAK9N,WAAWjV,KAAK3E,EAAKymB,eAAeiB,EAAKlB,gBAAgBD,SAGhEmB,GAAK5S,cAAgBoB,EACrBwR,EAAK9N,WAAWjV,KAAK0hB,EAAUK,cAOjC,OAJIgB,GAAK5S,gBACP4S,EAAK5S,cAAgBkB,EAAY3F,gBAAgBqX,EAAK5S;AAGjD4S,GAGTznB,KAAK0nB,MAAQ,SAASC,GACpB,GAGIC,GAHA9U,EAAY/S,EAAKmF,OAAO0N,OAAOE,UAC/B+U,EAAY9nB,EAAKmF,OAAO0N,OAAOC,aAC/BqP,EAAaniB,EAAKmF,OAAO0N,OAAOG,UAIpC,KAAK6U,EAAS,EAAGA,EAAS9U,EAAU9R,OAAQ4mB,IAC1C7nB,EAAKiD,MAAM8P,EAAU8U,GAAStS,EAAIzB,KAAKxC,KAAMyB,EAAU9R,OAAS4mB,EAIlE,KAAKA,EAAS,EAAGA,EAASC,EAAU7mB,OAAQ4mB,IAC1C7nB,EAAKiD,MAAM6kB,EAAUD,GAAStS,EAAIzB,KAAKzC,QAASyW,EAAU7mB,OAAS4mB,EAIrE,KAAKA,EAAS,EAAGA,EAAS1F,EAAWlhB,OAAQ4mB,IAAU,CACrD,GAAIE,GAAK5F,EAAW0F,GAChBG,EAASD,EAAG7iB,KACZ+iB,EAAYF,EAAGnS,SAAWoS,CAE9BhoB,GAAKygB,MAAMuH,GAAUhoB,EAAKygB,MAAMwH,GAAajoB,EAAK2mB,YAAYqB,GAGhE,GAAIJ,EACF,IAAK,GAAIxhB,KAASwhB,GACZA,EAAWtgB,eAAelB,IAC5BpG,EAAKygB,MAAMra,GAAOwhB,EAAWxhB,GAOnC,OAFApG,GAAK+mB,yBAEE/mB,EAAKygB,OAGdxgB,KAAKgD,MAAQ,SAASyO,EAAOwD,EAAS7C,GACpCrS,EAAKygB,MAAM/O,EAAMxM,MAAQlF,EAAKygB,MAAM/O,EAAMkE,SAAWlE,EAAMxM,MAAQ,SAAS8K,GAC1E,GAAIxQ,IACF0F,KAAMwM,EAAMxM,KACZ8K,IAAKA,EACLqC,MAAOA,EAGT,QADCrS,EAAKwhB,QAAQtM,GAAWlV,EAAKwhB,QAAQtM,QAAgBvQ,KAAKnF,GACpDQ,EAAKygB,QAkBhBxgB,KAAKioB,aAAe,SAAShT,GAC3B,GAAIlV,EAAKwhB,QAAQtM,GAAU,CAQzB,IAPA,GAAIiT,GAAgBnoB,EAAKwhB,QAAQtM,GAAS/B,KAAK,SAASiV,EAAIC,GAC1D,MAAOA,GAAGhW,MAAQ+V,EAAG/V,QAGnBiW,EAAUtoB,EAAKmF,OAAO+P,IAAYK,EAAIzB,KAAKxC,KAAO,OAAS,WAC3DiX,EAAc,EACdC,EAAW,KACRD,EAAcJ,EAAclnB,QAAQ,CACzC,GAAIqY,GAAS6O,EAAcI,EAC3BC,GAAWF,EAAQ1V,kBAAkB0G,EAAOjH,OAAOiH,OAAO+N,EAAiBmB,EAAUlP,IACrFiP,IAEF,MAAOC,GAET,MAAO,OAGTvoB,KAAK6mB,QAAU,SAAS5Q,GACtB,GAGIkQ,GAHAqC,EAAUzoB,EAAKkoB,aAAa3S,EAAIzB,KAAKxC,QAAUtR,EAAKmF,OAAOyT,KAAKzG,MAChEuW,EAAU1oB,EAAKkoB,aAAa3S,EAAIzB,KAAKzC,WAAarR,EAAKmF,OAAO0T,QAAQ1G,KAI1E,IAAuB,IAAnBsW,EAAQxnB,QAAmC,IAAnBynB,EAAQznB,OAAc,CAChDmlB,IACA,KAAK,GAAIG,GAAK,EAAGA,EAAKrQ,EAAQ0D,WAAW3Y,OAAQslB,IAC/CH,EAAKlQ,EAAQ0D,WAAW2M,IAAOvmB,EAAKmF,OAAO8e,QAAQ/N,EAAQ0D,WAAW2M,GAAKkC,EAAQ,GAAIC,EAAQ,GAAIxS,EAAQpB,mBAExG,CAIL,IAAK,GAHDnC,MACAiP,KAEK+G,EAAM,EAAGA,EAAMF,EAAQxnB,OAAQ0nB,IACtChW,EAAaA,EAAWtH,OAAOod,EAAQE,GAAK9M,gBAE9C,KAAK,GAAI+M,GAAM,EAAGA,EAAMF,EAAQznB,OAAQ2nB,IACtChH,EAAaA,EAAWvW,OAAOqd,EAAQE,GAAK/M,gBAG9CuK,GAAOpmB,EAAKmF,OAAOkf,gBAAgB1R,EAAYiP,EAAY1L,EAAQ0D,WAAY1D,EAAQpB,eAGzF,MAAOsR,KAIPyC,EAAa,SAAoBC,GAEnC5C,EAAUllB,KAAKf,KAAM6oB,QAErB,IAAI9oB,GAAOC,KACPkX,IAEJlX,MAAK8oB,eAAiB,SAASnT,EAAS1Q,GACtCiS,EAAcvB,GAAW1Q,GAAQA,GAGnCjF,KAAKwmB,eAAiB,SAAS7Q,GAC7B,MAAOuB,GAAcvB,IAAYA,GAGnC3V,KAAK4mB,aAAe,SAAS3Q,EAASuR,EAAWpB,GAC/C,GAAIqB,IACF9N,cAGF,IAAIyM,EAAUC,SAAU,EAAM,CACxBpQ,GAA+F,YAAhE,mBAAZA,GAA0B,aAAc,EAAI+P,EAAAA,YAAkB/P,KACnFwR,EAAK5S,cAAgBoB,EAAQpB,cAC7B4S,EAAKlB,gBAAkBtQ,EAAQvE,SAE/B+V,EAAK5S,cAAgBuR,EAAUvR,cAC/B4S,EAAKlB,gBAAkBiB,EAGzB,KAAK,GAAIlB,GAAK,EAAGA,EAAKmB,EAAKlB,gBAAgBvlB,OAAQslB,IACjDmB,EAAK9N,WAAWjV,KAAK3E,EAAKymB,eAAeiB,EAAKlB,gBAAgBD,SAGhEmB,GAAK5S,cAAgBoB,GAAWmQ,EAAUvR,cAC1C4S,EAAK9N,WAAWjV,KAAK0hB,EAAUK,cAGjC,OAAOgB,IAGTznB,KAAK0nB,MAAQ,SAASf,GAWpB,GATA5mB,EAAKygB,MAAMxd,MAAQ,SAASyO,EAAO1B,GACjC,GAAIxQ,IACF0F,KAAMwM,EACN1B,IAAKA,EAGP,OADAhQ,GAAKwhB,QAAQ7c,KAAKnF,GACXQ,EAAKygB,OAGVmG,EAIF,IAAK,GAFDhN,GAAa1I,EAAM2I,cAAc+M,GAE5BpP,EAAK,EAAGA,EAAKoC,EAAW3Y,OAAQuW,IAAM,CAC7C,GAAIwR,GAAQpP,EAAWpC,GACnBhY,EAAIonB,EAAaoC,GACjBC,EAAWzpB,EAAEoW,SAAWpW,EAAE0F,IAC9B1F,GAAE0F,KAAO8jB,EAEThpB,EAAK+oB,eAAeE,EAAUD,GAE1BxpB,EAAE0pB,YACJlpB,EAAKygB,MAAMuI,GAAShpB,EAAKygB,MAAMwI,GAAYjpB,EAAK2mB,YAAYqC,GAAO,EAAOxpB,EAAEsV,eAE5E9U,EAAKiD,MAAMzD,GAOjB,MAFAQ,GAAK+mB,uBAAuBH,GAErB5mB,EAAKygB,OAGdxgB,KAAKgD,MAAQ,SAASyO,GACpB1R,EAAKygB,MAAM/O,EAAMxM,MAAQlF,EAAKygB,MAAM/O,EAAMkE,SAAWlE,EAAMxM,MAAQ,SAAS8K,GAC1E,MAAOhQ,GAAKygB,MAAMxd,MAAMyO,EAAMxM,KAAM8K,KAIxC/P,KAAKioB,aAAe,WAGlB,IAAK,GAFDvV,MAEK/R,EAAI,EAAGA,EAAIZ,EAAKmF,OAAOlE,OAAQL,IAAK,CAG3C,IAAK,GAFDqR,GAAMjS,EAAKmF,OAAOvE,GAClBuoB,GAAU,EACLrN,EAAI,EAAGA,EAAI9b,EAAKwhB,QAAQvgB,OAAQ6a,IAAK,CAC5C,GAAIxC,GAAStZ,EAAKwhB,QAAQ1F,EAC1B,IAAI7J,EAAIqH,EAAOpU,QAAUoU,EAAOtJ,IAAK,CACnCmZ,GAAU,CACV,QAGAA,GACFxW,EAAWhO,KAAK/D,GAIpB,MAAO+R,IAGT1S,KAAK6mB,QAAU,SAAS5Q,EAAS0Q,EAAcN,GAK7C,IAAK,GAJD3T,GAAa3S,EAAKkoB,eAElB9B,KAEKG,EAAK,EAAGA,EAAKrQ,EAAQ0D,WAAW3Y,OAAQslB,IAAM,CACrD,GAAI/W,GAAY0G,EAAQ0D,WAAW2M,GAC/B6C,EAAUpT,EAAY3F,gBAAgBiW,KAAU,EAAOpQ,EAAQpB,gBAAkB8R,GAAgBA,EAAapX,GAAaoX,EAAapX,GAAWsF,cAAgBrR,QAAayS,EAAQpB,cAE5LsR,GAAK5W,GAAa4Z,EAAQ5Z,EAAWmD,GAAc,MAAO3S,EAAKmF,OAAQwN,EAAY,MAGrF,MAAOyT,IAIX1mB,GAAOD,QAAU,SAAS0F,EAAQyhB,GAChC,MAAI1V,GAAM7I,QAAQlD,GACT,GAAI0jB,GAAW1jB,GAAQwiB,MAAMf,GAG7B,SAASgB,GACd,MAAO,IAAIR,GAAWjiB,GAAQwiB,MAAMC,OAM1CrM,oBAAqB,GACrBC,YAAa,GACbxH,cAAe,GACfqV,+BAAgC,IAElCC,IAAK,SAASnoB,EAASzB,EAAQD,GAE7BC,EAAOD,QAAU,WACf,GAAI8pB,KAEJtpB,MAAKqN,IAAM,SAAS9I,EAAKglB,GACvBD,EAAO/kB,GAAOglB,GAGhBvpB,KAAKgE,IAAM,SAASO,GAClB,MAAO+kB,GAAO/kB,UAKpBilB,IAAK,SAAStoB,EAASzB,EAAQD,GAE7BC,EAAOD,QAAU,WAKf,QAASiqB,KACP,MAAwB,cAAjBC,EAJT,GAAIA,GAAe,OACf/S,IAMJA,GAAa2G,QACXqM,IAAK,UACLC,KAAM,UACNC,MAAO,UACPC,OAAQ,UACRC,OAAQ,UACRC,KAAM,UACNC,MAAO,UACPC,MAAO,WAGTvT,EAAasB,QAAU,SAASQ,GAK9B,MAJIA,KACFiR,EAAe/S,EAAawT,cAAc1R,IAGrCiR,GAGT/S,EAAawT,cAAgB,SAASC,GAEpC,MADAA,IAAaA,GAAa,IAAIrnB,WAAWsnB,OACpC1T,EAAa2G,OAAO8M,IAA4B,cAAdA,EAG9BA,EAFA,QAMXzT,EAAa2T,gBAAkB,WAC7B,OACEC,UAAW,qBAAuBb,EAClCc,MAAO,OAASf,IAAgB,SAAW,MAI/C9S,EAAa8T,iBAAmB,WAC9B,OACEC,YAAa,WAAajB,IAAgB,0BAA4B,IACtEkB,UAAW,WAAalB,IAAgB,0BAA4B,IACpEmB,UAAWnB,IAAgB,0BAA4B,KAI3D9S,EAAakU,iBAAmB,WAC9B,OACEN,UAAW,OAASb,EAAe,oBAIvC/S,EAAamU,eAAiB,WAC5B,OACEN,MAAOf,IAAgB,wBAA0B,cAIrD9S,EAAaoU,iBAAmB,SAASnV,GACvC,GAAIoV,IACFC,QAAS,4BAA8BrV,EAAU,UAAY,UAAY,QAAU8T,EACnFwB,OAAQ,aACRC,QAAS,GACTjN,OAAQ,oBACRgH,MAAO,GACPkG,KAAM,kBAWR,OARI3B,OACFuB,EAAQC,SAAW,SACnBD,EAAQE,QAAU,gBAClBF,EAAQG,QAAU,gBAClBH,EAAQ9M,QAAU,gBAClB8M,EAAQ9F,MAAQ,cAChB8F,EAAQI,MAAQ,eAEXJ,EAGT,IAAI/Z,GAAQ0F,EAAa1F,OACvBoa,SAAU,SAAkBC,GAC1B,GAAIvd,GAAS,4CAA4CtH,KAAK6kB,EAC9D,OAAOvd,IACL1N,EAAGkrB,SAASxd,EAAO,GAAI,IACvBnO,EAAG2rB,SAASxd,EAAO,GAAI,IACvBtK,EAAG8nB,SAASxd,EAAO,GAAI,KACrB,MAENyd,UAAW,SAAmBC,GAC5B,GAAIC,GAAUD,EAAKE,MAAM,iEACzB,IAAID,EAAS,CACX,GAAIE,GAAQC,WAAWH,EAAQ,GAC/B,OAAO,IAAMza,EAAM6a,mBAAmBJ,EAAQ,GAAIE,GAAS3a,EAAM6a,mBAAmBJ,EAAQ,GAAIE,GAAS3a,EAAM6a,mBAAmBJ,EAAQ,GAAIE,GAEhJ,MAAO,OAETG,WAAY,SAAoBN,GAC9B,GAAIC,GAAUD,EAAKE,MAAM,iEACzB,IAAID,EAAS,CACX,GAAIE,GAAQC,WAAWH,EAAQ,GAC/B,OAAO,IAAMza,EAAM6a,mBAAmB,EAAGF,GAAS3a,EAAM6a,mBAAmBJ,EAAQ,GAAI,GAAKza,EAAM6a,mBAAmBJ,EAAQ,GAAI,GAAKza,EAAM6a,mBAAmBJ,EAAQ,GAAI,GAE7K,MAAO,OAETI,mBAAoB,SAA4BrkB,EAAOmkB,GACrD,OAAQ1kB,KAAK8kB,MAAMJ,EAAQL,SAAS9jB,GAAuB,KAAb,EAAImkB,IAAgB,KAAK7oB,SAAS,IAAIkpB,OAAO,EAAG,IAEhGzO,aAAc,SAAsB0O,EAAON,GAEzC,MADAM,GAAQjb,EAAMoa,SAASa,GAChB,IAAMjb,EAAM6a,mBAAmBI,EAAM7rB,EAAGurB,GAAS3a,EAAM6a,mBAAmBI,EAAMtsB,EAAGgsB,GAAS3a,EAAM6a,mBAAmBI,EAAMzoB,EAAGmoB,IAIzI,OAAOjV,WAIXwV,IAAK,SAASjrB,EAASzB,EAAQD,GAE7B,GAAI8V,GAAMpU,EAAQ,aACd6a,EAAY7a,EAAQ,kBAExBzB,GAAOD,QAAU,SAAS4sB,GAExB,GAAIrsB,GAAOC,IAGXA,MAAKsV,IAAM8W,EAGXpsB,KAAK6Z,WAEL7Z,KAAK8Y,gBAAkB,WACrB,MAAqD,YAA9C/Y,EAAKuV,IAAI/D,MAAMqB,OAAO8E,qBAAqC3X,EAAKuV,IAAItQ,OAASsQ,EAAIzB,KAAKzC,SAAyD,SAA9CrR,EAAKuV,IAAI/D,MAAMqB,OAAO8E,qBAAkC3X,EAAKuV,IAAItQ,OAASsQ,EAAIzB,KAAKxC,KAAOtR,EAAKuV,IAAI/D,MAAMqB,OAAOkG,gBAAkB,GAG5O9Y,KAAKqsB,kBAAoB,WACvB,MAAOtsB,GAAK+Y,kBAAoB,GAGlC9Y,KAAKssB,qBAAuB,SAAS7a,EAAO0J,GAK1C,IAAK,GAFDoR,GAFAC,KACAC,GAAc,EAGT9rB,EAAI,EAAGA,EAAIX,KAAK6Z,QAAQ7Y,OAAQL,IACvC,IAAK4rB,EAAS,EAAGA,EAASvsB,KAAK6Z,QAAQlZ,GAAGK,OAAQurB,IAAU,CAC1D,GAAIrO,GAASle,KAAK6Z,QAAQlZ,GAAG4rB,EACzBrO,GAAOlZ,OAAS+W,EAAUoC,WAAWuO,WAAuB,MAATjb,GAAiByM,EAAOjM,IAAIR,MAAMxM,MAAQwM,EAAMxM,OACrGunB,EAAS9nB,KAAKwZ,GACduO,EAAcA,GAAevO,EAAOyO,UAS1C,GAJiBnpB,SAAb2X,IACFsR,GAAetR,GAGbqR,EAASxrB,OAAS,EAAG,CACvB,IAAKurB,EAAS,EAAGA,EAASC,EAASxrB,OAAQurB,IACrCE,EACFD,EAASD,GAAQK,WAEjBJ,EAASD,GAAQM,QAGrB,QAAO,EAGT,OAAO,MAKXtR,YAAa,GACboD,kBAAmB,KAErBmO,IAAK,SAAS5rB,EAASzB,EAAQD,GAE7B,GAAI8V,GAAMpU,EAAQ,aACd6rB,EAAQ7rB,EAAQ,gBAChB6a,EAAY7a,EAAQ,kBAExBzB,GAAOD,QAAU,SAASwtB,GAkCxB,QAASC,KAIP,QAASC,GAAaC,GAChBA,GAAWA,EAAQlb,IAAIR,MAAMkD,SAASiB,SACxCwX,EAAa1oB,KAAKyoB,EAAQE,gBAJ9B,GAAID,KAQJ,IAAIrtB,EAAK8Z,QAAQ7Y,OAAS,EAAG,CAE3B,GAAIssB,GAAQvtB,EAAK8Z,QAAQ9Z,EAAK8Z,QAAQ7Y,OAAS,GAC3Ckd,EAASoP,EAAM,EAEnB,IAAIpP,EAAQ,CAIV,IAAK,GAHDqP,GACFC,EAAUtP,EAAOtK,OAEVjT,EAAI,EAAGA,EAAI2sB,EAAMtsB,OAAQL,IAAK,CAKrC,GAJAud,EAASoP,EAAM3sB,GACf4sB,EAAarP,EAAOtK,OAGhB2Z,GAAcC,EAAS,CAEzB,GADAN,EAAaM,GACK,MAAdD,EAKF,IAFA,GAAIE,GAAWF,EAAW3Z,OACtB8Z,EAAeF,EAAUA,EAAQ5Z,OAAS,KACvC6Z,GAAYC,GAAgC,MAAhBA,GACjCR,EAAaQ,GACbD,EAAWA,EAAWA,EAAS7Z,OAAS,KACxC8Z,EAAeA,EAAeA,EAAa9Z,OAAS,IAIxD4Z,GAAUD,EAMZ,GAHAH,EAAa1oB,KAAK4oB,EAAM3sB,IAGpBA,IAAM2sB,EAAMtsB,OAAS,EACvB,KAAkB,MAAXwsB,GACLN,EAAaM,GACbA,EAAUA,EAAQ5Z,OAKpB7T,EAAKuV,IAAI/D,MAAMqB,OAAO+E,WAAWxB,gBAAkBpW,EAAKuV,IAAIzD,gBAAkB,GAEhFub,EAAa1oB,KAAK3E,EAAK8Z,QAAQ,GAAG9Z,EAAK8Z,QAAQ,GAAG7Y,OAAS,KAMjE,GAAIjB,EAAKssB,oBAAqB,CAC5BtsB,EAAKqtB,eACL,KAAK,GAAIO,GAAY,EAAGA,EAAYP,EAAapsB,OAAQ2sB,IACvD,IAAK,GAAIC,GAAiB,EAAGA,EAAiB7tB,EAAK+Y,kBAAmB8U,IACpE7tB,EAAKqtB,aAAa1oB,KAAK,GAAIqX,GAAU8R,WAAW9tB,EAAKuV,IAAI/D,MAAMqB,OAAOG,WAAW6a,GAAiBR,EAAaO,IAGnH5tB,GAAK8Z,QAAQnV,KAAK3E,EAAKqtB,kBAEvBrtB,GAAKqtB,aAAeA,EAOxB,QAASU,GAAU1b,EAAOyH,GAOxB,IAAK,GALDyT,GAAQzT,EAAQA,EAAQ7Y,OAAS,GACjCqS,EAAUtT,EAAKuV,IAAIpD,KAAKE,QAAUA,GAAS,MAAQyH,EAAQ9Z,EAAKuV,IAAIpD,KAAKE,MAAQA,EAAQ,GAAGiH,OAAO,SAASsJ,GAC9G,MAAOA,GAAE3d,OAAS+W,EAAUoC,WAAWuO,YAGhCqB,EAAK,EAAGA,EAAK1a,EAAQrS,OAAQ+sB,IAKpC,IAAK,GAHDna,GAASP,EAAQ0a,GACjBC,EAAsB,MAAVpa,EAAiB7T,EAAKuV,IAAIpD,KAAO0B,EAAO3B,IAE/Cgc,EAAK,EAAGA,EAAKD,EAAUxb,OAAOxR,OAAQitB,IAAM,CAEnD,GAGIZ,GAHA/a,EAAW0b,EAAUxb,OAAOyb,GAC5BpL,EAASmL,EAAUzb,WAAWD,EAIhC+a,IADGxK,EAAOlH,QAAUkH,EAAOpR,MAAMkD,SAASiB,QACzB,GAAImG,GAAUmC,OAAO5I,EAAIzB,KAAKzC,QAAS2K,EAAUoC,WAAWuO,UAAW7J,EAAQjP,EAAQ7T,EAAK+Y,mBAE5F,IAGnB,IAAIoF,GAAS,GAAInC,GAAUmC,OAAO5I,EAAIzB,KAAKzC,QAAS,KAAMyR,EAAQjP,EAAQ7T,EAAK+Y,kBAAmBuU,EAClGC,GAAM5oB,KAAKwZ,IAEN2E,EAAOlH,QAAUkH,EAAOpR,MAAMkD,SAASiB,SAC1C0X,EAAM5oB,KAAK2oB,IAxInB,GAAIttB,GAAOC,IAEX+sB,GAAMhsB,KAAKhB,EAAMitB,GAEjBhtB,KAAKotB,aAAe,KAEpBptB,KAAKkuB,MAAQ,WAGX,GAFAnuB,EAAK8Z,WAEW,MAAZ9Z,EAAKuV,IAAa,CAEpB,GAAIvV,EAAKuV,IAAIpD,KAAKM,OAAOxR,OAAS,GAAKjB,EAAKuV,IAAI/D,MAAMqB,OAAO+E,WAAWxB,eAAgB,CACtF,IAAK,GAAI/D,GAAQrS,EAAKuV,IAAIpD,KAAKE,MAAOA,EAAQ,EAAGA,IAC/CrS,EAAK8Z,QAAQnV,SACbopB,EAAU1b,EAAOrS,EAAK8Z,QAGpB9Z,GAAKuV,IAAI/D,MAAMqB,OAAO+E,WAAWxB,iBAElCpW,EAAK8Z,QAAQ,GAAK9Z,EAAK8Z,QAAQ,QAAUnV,KAAK,GAAIqX,GAAUmC,OAAO5I,EAAIzB,KAAKzC,QAAS2K,EAAUoC,WAAWgQ,YAAapuB,EAAKuV,IAAIpD,KAAM,KAAMnS,EAAK+Y,oBAI1H,IAAxB/Y,EAAK8Z,QAAQ7Y,QACfjB,EAAK8Z,QAAQnV,MAAM,GAAIqX,GAAUmC,OAAO5I,EAAIzB,KAAKzC,QAAS2K,EAAUoC,WAAWiQ,MAAOruB,EAAKuV,IAAIpD,KAAM,KAAMnS,EAAK+Y,qBAIlHmU,MA6EJjtB,KAAKkuB,WAuCP3S,YAAa,GACb8S,eAAgB,GAChB1P,kBAAmB,KAErB2P,IAAK,SAASptB,EAASzB,EAAQD,GA+D7B,QAAS+uB,GAAStY,GAEhBjW,KAAKiV,QAAUgB,EAAQhB,QAEvBjV,KAAKgF,KAAOiR,EAAQjR,KAEpBhF,KAAKwuB,SAAWvY,EAAQuY,SAExBxuB,KAAKyH,MAAQwO,EAAQxO,MAErBzH,KAAK2sB,UAAW,EAEhB3sB,KAAKyuB,SAAWxY,EAAQwY,SAExBzuB,KAAKqe,MAAQpI,EAAQoI,OAAS,WAC5B,MAAO,IAGTre,KAAKse,MAAQrI,EAAQqI,OAAS,WAC5B,MAAO,IAGTte,KAAK4V,QAAUK,EAAQyY,WAAa,WAClC,OAAO,GAGT1uB,KAAKuE,IAAMvE,KAAKiV,QAAUjV,KAAKgF,KAAOhF,KAAKyH,MAC3CzH,KAAK2uB,SAAW,WACd,MAAOpF,GAAMvlB,IAAIhE,KAAKuE,MAExBvE,KAAK4uB,SAAW,SAASzT,GACvBoO,EAAMlc,IAAIrN,KAAKuE,IAAK4W,IA5FxB,GAAI7F,GAAMpU,EAAQ,aAChBqoB,EAAQ,IAAIroB,EAAQ,gBAElBid,EAAa1e,EAAOD,QAAQ2e,YAC9B0Q,MAAO,EACPzQ,YAAa,EACb0Q,WAAY,EACZC,aAAc,EACdX,MAAO,EACPY,QAAS,EACTtC,UAAW,EACXyB,YAAa,EACbc,eAAgB,SAAwBC,EAAYja,GAClD,GAAIwZ,GAAWxZ,IAAYK,EAAIzB,KAAKxC,KAAO,aAAe4D,IAAYK,EAAIzB,KAAKzC,QAAU,aAAe,EACxG,QAAQ8d,GACN,IAAK/Q,GAAW0Q,MAChB,IAAK1Q,GAAW4Q,aACdN,EAAW,OACX,MACF,KAAKtQ,GAAWiQ,MACdK,EAAW,UAAYA,CACvB,MACF,KAAKtQ,GAAW6Q,QACdP,EAAW,UAAYA,CACvB,MACF,KAAKtQ,GAAWuO,UACd+B,EAAW,oBAAsBA,CACjC,MACF,KAAKtQ,GAAWgQ,YACdM,EAAW,oBAAsBA,EAIrC,MAAOA,IAETU,aAAc,SAAsBC,EAAeC,GACjD,GAAIZ,GAAW,EACf,QAAQW,GACN,IAAKjR,GAAWgQ,YACdM,EAAW,SACX,MACF,KAAKtQ,GAAWuO,UAEZ+B,EADEY,IAAkBlR,EAAWgQ,YACpB,UAEA,SAEb,MACF,SAEIM,EADEY,IAAkBlR,EAAWgQ,YACpB,UACFkB,IAAkBlR,EAAWuO,UAC3B,UAEA,GAGjB,MAAO+B,IAuCXhvB,GAAOD,QAAQ0e,OAAS,SAASjJ,EAASia,EAAYjd,EAAK2B,EAAQ0b,EAAiBjC,GAmElF,QAASkC,KACP,GAAIxvB,EAAKiF,OAASmZ,EAAWuO,UAAW,CAEtC,IADA,GAAI8C,GAAUzvB,EAAK6T,OACD,MAAX4b,GAAiB,CACtB,GAAIA,EAAQnC,iBAAmBmC,EAAQnC,eAAeV,SACpD,OAAO,CAET6C,GAAUA,EAAQ5b,OAEpB,OAAO,EAGP,GAAI6b,GAAa1vB,EAAKkS,IAAI0B,QAAU5T,EAAKkS,IAAI0J,SAAW5b,EAAKkS,IAAIR,MAAMkD,SAASiB,SAAW7V,EAAKstB,eAAeV,QAC/G,KAAK8C,EACH,OAAO,CAIT,KADA,GAAIC,GAAM3vB,EAAK6T,OACD,MAAP8b,KAAiBA,EAAIzd,IAAIR,MAAMkD,SAASiB,SAAiC,MAAtB8Z,EAAIrC,gBAA0BqC,EAAIrC,eAAeV,WACzG+C,EAAMA,EAAI9b,MAEZ,OAAc,OAAP8b,GAAqC,MAAtBA,EAAIrC,eAAyBoC,EAAaC,EAAIrC,eAAeV,SAIvF,QAASgD,GAASC,GAChB,GACIC,GADAC,EAAQ,EAERC,GAAS,CAEb,IAAIC,GAAaJ,GAAoB7vB,EAAK6V,UAAW,CACnD,GAAK7V,EAAKkS,IAAI0J,OAoBZ,MAAO2T,EAlBP,IAAIvvB,EAAKkwB,WAAWjvB,OAAS,EAC3B,IAAK,GAAIL,GAAI,EAAGA,EAAIZ,EAAKkwB,WAAWjvB,OAAQL,IAAK,CAC/C,GAAIuvB,GAAYnwB,EAAKkwB,WAAWtvB,EAE3BuvB,GAAUje,IAAI0J,OAOjBmU,GAASR,GANTO,EAAUG,EAAYE,EAAU5R,QAAU4R,EAAU7R,QACpDyR,GAASD,EACC,IAANlvB,GAAuB,IAAZkvB,IACbE,GAAS,QAOfD,IAASR,CAKb,OAAOQ,IAASC,EAAS,EAAI,GAE/B,MAAOD,GAxHT,GAEIzR,GACAC,EACA7W,EAJA1H,EAAOC,KAMPgwB,EAAY/a,IAAYK,EAAIzB,KAAKxC,IAGrC,QAFA6d,EAAaA,IAA6B,IAAdjd,EAAIG,MAAc+L,EAAWiQ,MAAQjQ,EAAW6Q,UAG1E,IAAK7Q,GAAWgQ,YACd1mB,EAAQ,cACR4W,EAAQ2R,EAAY/d,EAAIG,MAAQ,GAAK,EAAIkd,EACzChR,EAAQ0R,EAAYV,EAAkBrd,EAAIG,MAAQ,GAAK,CACvD,MACF,KAAK+L,GAAWuO,UACdjlB,EAAQwK,EAAIxK,MACZ4W,EAAQ2R,EAAY/d,EAAIG,MAAQkd,EAChChR,EAAQ0R,EAAYV,EAAkBrd,EAAIG,KAC1C,MACF,SACE3K,EAAQwK,EAAIxK,MACZ4W,EAAQ2R,EAAY,EAAI,KACxB1R,EAAQ0R,EAAY,KAAO,EAI/BzB,EAASxtB,KAAKf,MACZiV,QAASA,EACTjQ,KAAMkqB,EACNV,SAAUwB,EAAY,2BAA6B,8BACnDvoB,MAAOA,EACPgnB,SAAUtQ,EAAW8Q,eAAeC,EAAYja,GAChDoJ,MAAgB,MAATA,EAAgB,WACrB,MAAOA,IACLsR,EACJrR,MAAgB,MAATA,EAAgB,WACrB,MAAOA,IACLqR,EACJjB,UAAWa,IAGbvvB,KAAKqtB,eAAiBA,EACtBrtB,KAAK4T,OAASA,EACd5T,KAAKiwB,cACLjwB,KAAKiS,IAAMA,EACXjS,KAAK2sB,SAAW3sB,KAAK2uB,WAAa3uB,KAAK2uB,WAAWhC,SAAWuC,IAAe/Q,EAAWuO,YAAcza,EAAIR,MAAMkD,SAASmB,UAExH9V,KAAK6sB,OAAS,WACZ9sB,EAAK4sB,UAAW,EAChB3sB,KAAK4uB,UACHjC,SAAU5sB,EAAK4sB,YAGnB3sB,KAAK4sB,SAAW,WACd7sB,EAAK4sB,UAAW,EAChB3sB,KAAK4uB,UACHjC,SAAU5sB,EAAK4sB,YAIL,MAAV/Y,GACFA,EAAOqc,WAAWvrB,KAAK1E,OA8D3BP,EAAOD,QAAQquB,WAAa,SAASte,EAAWqE,GAE9C2a,EAASxtB,KAAKf,MACZiV,QAAS,KACTjQ,KAAMmZ,EAAWC,YACjBoQ,SAAU,2BACV/mB,MAAO8H,EACPkf,SAAUtQ,EAAW8Q,eAAerb,EAAO5O,KAAM4O,EAAOqB,SACxDyZ,UAAW9a,EAAOgC,UAGpB5V,KAAK4T,OAASA,GAGhBnU,EAAOD,QAAQkf,SAAW,SAASnN,EAAOmd,EAAWyB,EAASC,GAE5DpwB,KAAKqwB,aAAeF,EAAQnrB,OAASmZ,EAAWC,YAAc+R,EAAQvc,OAAO3B,IAAMke,EAAQle,IAC3FjS,KAAKswB,gBAAkBF,EAAQprB,OAASmZ,EAAWC,YAAcgS,EAAQxc,OAAO3B,IAAMme,EAAQne,IAC9FjS,KAAKuwB,QAAUJ,EAAQnrB,OAASmZ,EAAWC,YAAc+R,EAAQvc,OAAO5O,KAAOmrB,EAAQnrB,KACvFhF,KAAKwwB,QAAUJ,EAAQprB,OAASmZ,EAAWC,YAAcgS,EAAQxc,OAAO5O,KAAOorB,EAAQprB,KAEvFhF,KAAKuP,UAAYgC,EAAMqB,OAAOkG,gBAAkB,EAAyC,SAArCvH,EAAMqB,OAAO8E,oBAAiCyY,EAAQ1oB,MAAQ2oB,EAAQ3oB,MAAQ8J,EAAMqB,OAAOG,WAAW,GAE1Jwb,EAASxtB,KAAKf,MACZiV,QAAS,KACTjQ,KAAMmZ,EAAW2Q,WACjBN,SAAU,0BACV/mB,MAAO8J,EAAMyS,QAAQhkB,KAAKuP,UAAYvP,KAAKuP,UAAUtK,KAAO,KAAMjF,KAAKqwB,aAAcrwB,KAAKswB,iBAC1F7B,SAAU,QAAUtQ,EAAWgR,aAAanvB,KAAKuwB,QAASvwB,KAAKwwB,SAC/D9B,UAAWA,KAIfjvB,EAAOD,QAAQixB,WAAa,SAAShf,GAEnC8c,EAASxtB,KAAKf,MACZiV,QAAS,KACTjQ,KAAMmZ,EAAW4Q,aACjBP,SAAU,4BACV/mB,MAAOgK,EACPgd,SAAUtQ,EAAW8Q,eAAe9Q,EAAW4Q,iBAInDtvB,EAAOD,QAAQkxB,UAAY,SAASC,EAAQC,GAE1CrC,EAASxtB,KAAKf,MACZiV,QAAS,KACTjQ,KAAMmZ,EAAW0Q,MACjBL,SAAU,sBACV/mB,MAAO,KACPgnB,SAAUtQ,EAAW8Q,eAAe9Q,EAAW0Q,OAC/CxQ,MAAO,WACL,MAAOsS,IAETrS,MAAO,WACL,MAAOsS,SAMbrV,YAAa,GACbsV,cAAe,KAEjBC,IAAK,SAAS5vB,EAASzB,EAAQD,GAE7B,GAAIuxB,GAAW7vB,EAAQ,aACrB8vB,EAAQ9vB,EAAQ,SAChBoU,EAAMpU,EAAQ,aACdqQ,EAAQrQ,EAAQ,eAChB6a,EAAY7a,EAAQ,mBACpB+vB,EAAS/vB,EAAQ,iBACjBgwB,EAAShwB,EAAQ,iBACjBiwB,EAASjwB,EAAQ,gCACjBkwB,EAAalwB,EAAQ,oCACrBmwB,EAAanwB,EAAQ,oCACrBowB,EAAOpwB,EAAQ,6BAEjBzB,GAAOD,QAAU,SAASoT,GA+IxB,QAAS2e,KACPxxB,EAAKwR,MAAMmU,UAAUnU,EAAM8P,cAAemQ,GAC1CzxB,EAAKwR,MAAMmU,UAAUnU,EAAM2R,mBAAoBsO,GAC/CzxB,EAAKwR,MAAMmU,UAAUnU,EAAM8R,qBAAsBmO,GAEjDC,IAGF,QAASA,KA6BP,QAASC,GAAkBC,EAAYC,GACrC,MAAO,YACL,MAAOD,MAAgBC,KA5B3B7xB,EAAK4Y,KAAO,GAAIsY,GAAOlxB,EAAKwR,MAAMoH,MAClC5Y,EAAK6Y,QAAU,GAAIsY,GAAOnxB,EAAKwR,MAAMqH,QAErC,IAAIiZ,GAAc9xB,EAAK4Y,KAAKkB,QACxBiY,EAAqB/xB,EAAK6Y,QAAQwU,YAGtCrtB,GAAK4d,QACHG,YACElG,OAAQ7X,EAAKwR,MAAMoH,KAAKjH,OAAO1Q,QAAU,IAAgD,SAA1CjB,EAAKwR,MAAMqB,OAAO8E,qBAAkC3X,EAAKwR,MAAMqB,OAAOkG,gBAAkB,EAAI,EAAI,GAC/IjB,OAAQga,EAAY7wB,QAEtB+c,eACEnG,MAAO7X,EAAK6Y,QAAQwU,aAAapsB,OACjC6W,QAAS9X,EAAKwR,MAAMqH,QAAQlH,OAAO1Q,QAAU,IAAgD,YAA1CjB,EAAKwR,MAAMqB,OAAO8E,qBAAqC3X,EAAKwR,MAAMqB,OAAOkG,gBAAkB,EAAI,EAAI,KAI1J/Y,EAAK4d,OAAOC,YACVhG,MAAO7X,EAAK4d,OAAOG,WAAWlG,MAAQ7X,EAAK4d,OAAOI,cAAcnG,MAChEC,OAAQ9X,EAAK4d,OAAOG,WAAWjG,OAAS9X,EAAK4d,OAAOI,cAAclG,OAGpE,IACIka,GADAtT,IAQJ,IAAIoT,EAAY7wB,OAAS,EACvB,IAAK,GAAI8gB,GAAK,EAAGA,EAAK+P,EAAY7wB,OAAQ8gB,IAAM,CAC9C,GAAIkQ,GAAgBH,EAAY/P,GAC5BmQ,EAAgBD,EAAcA,EAAchxB,OAAS,EAEzD+wB,KACA,KAAK,GAAIG,GAAiB,EAAGA,EAAiBJ,EAAmB9wB,OAAQkxB,IAAkB,CACzF,GAAIC,GAAmBL,EAAmBI,GACtCxD,EAAYgD,EAAkBO,EAAcrc,QAASuc,EAAiBvc,QAC1Emc,GAAIG,GAAkB,GAAInW,GAAU2C,SAAS3e,EAAKwR,MAAOmd,EAAWuD,EAAeE,GAErF1T,EAAS/Z,KAAKqtB,GAGlBhyB,EAAK0e,SAAWA,EAGlB,QAAS+S,KACPC,IACA1xB,EAAKqyB,SA1MP,GACIC,GACAC,EAFAvyB,EAAOC,KAGPkrB,EAASiG,EAAO1oB,QAGpBzI,MAAKuR,MAAQ,GAAIA,GAAMqB,GAGvB5S,KAAK2Y,KAAO,KAEZ3Y,KAAK4Y,QAAU,KAGf5Y,KAAKye,YAELze,KAAK2d,QACHG,YAEElG,MAAO,KAEPC,OAAQ,MAEVkG,eAEEnG,MAAO,KAEPC,OAAQ,MAEV+F,YAEEhG,MAAO,KAEPC,OAAQ,OAIZ7X,KAAKuyB,UAAY,SAASC,GACxBA,EAAK3F,SACL7sB,KAAKoyB,UAGPpyB,KAAKyyB,YAAc,SAASD,GAC1BA,EAAKnF,eAAeT,WACpB5sB,KAAKoyB,UAGPpyB,KAAKkT,KAAO,SAAS+B,EAASxD,GAC5B1R,EAAKwR,MAAM2B,KAAK+B,EAASxD,IAG3BzR,KAAKojB,YAAc,SAASvK,GAC1B9Y,EAAKwR,MAAM6R,YAAYvK,IAGzB7Y,KAAKmjB,YAAc,SAAS9L,EAAW2H,EAAUC,EAAMC,EAAaC,GAClEpf,EAAKwR,MAAM4R,YAAY9L,EAAW2H,EAAUC,EAAMC,EAAaC,IAGjEnf,KAAKqa,UAAY,SAAS5I,EAAOihB,EAAYC,EAAYnY,GACvDza,EAAKwR,MAAM8I,UAAU5I,EAAOihB,EAAYC,EAAYnY,IAGtDxa,KAAKssB,qBAAuB,SAASrX,EAASxD,EAAO0J,GACnD,GAAIyX,GAAc3d,IAAYK,EAAIzB,KAAKxC,KAAOtR,EAAK4Y,KAAO1D,IAAYK,EAAIzB,KAAKzC,QAAUrR,EAAK6Y,QAAU,IAEpGga,IAAeA,EAAYtG,qBAAqB7a,EAAO0J,IACzDpb,EAAKqyB,UAITpyB,KAAKib,gBAAkB,SAAShG,GAC9BlV,EAAKwR,MAAM0J,gBAAgBhG,IAG7BjV,KAAK+a,oBAAsB,SAAS9F,GAClC,MAAOlV,GAAKwR,MAAMwJ,oBAAoB9F,IAGxCjV,KAAKob,iBAAmB,SAASnG,GAC/BlV,EAAKwR,MAAM6J,iBAAiBnG,IAG9BjV,KAAKqb,oBAAsB,SAASpG,GAClC,MAAOlV,GAAKwR,MAAM8J,oBAAoBpG,IAGxCjV,KAAK6yB,YAAc,SAASpa,GAC1B6Z,EAAeO,YAAYpa,IAG7BzY,KAAKoyB,OAAS,SAASU,GAErB,GADAT,EAAgBS,GAAWT,EACR,CACjB,GAAIU,GAAoB/B,EAAMgC,cAAcjzB,EAAKwR,MAAMqB,OAAOoF,UAAUvB,QAAU2a,EAAaC,GAC3F4B,EAAaF,GACf5W,YAAapc,GAGfuyB,GAAiBvB,EAASqB,OAAOa,EAAYZ,KAIjDryB,KAAKkzB,UAAY,SAASxU,EAAUyU,GAClC,GAAIzU,EAAU,CACZ,GAOIwG,GAPAvD,EAAajD,EAAS4R,gBAAgB1U,gBACtC/C,EAAO6F,EAAS2R,aAAazU,gBAAgBvC,OAAO,SAAS/P,GAC/D,MAAOqY,GAAWtJ,QAAQ/O,IAAU,IACnCmK,IAAI,SAASnK,GACd,MAAOvJ,GAAKwR,MAAMK,mBAAmBtI,IAKrC4b,GADExG,EAAS6R,UAAYxU,EAAUoC,WAAWgQ,aAAezP,EAAS8R,UAAYzU,EAAUoC,WAAWgQ,YAC7F,cAEJzP,EAAS6R,UAAYxU,EAAUoC,WAAWgQ,YACpCzP,EAAS4R,gBAAgB7oB,MAAQ,gBAChCiX,EAAS8R,UAAYzU,EAAUoC,WAAWgQ,YAC3CzP,EAAS2R,aAAa5oB,MAAQ,gBAE9BiX,EAAS2R,aAAa5oB,MAAQ,IAAMiX,EAAS4R,gBAAgB7oB,MAIzEyjB,EAAOkI,MACLlO,MAAOA,EACPmO,MACEruB,KAAMssB,EACNgC,OACEzZ,QAAS9Z,EAAKwR,MAAMqB,OAAO6G,6BAC3BZ,KAAMA,EACNd,MAAOhY,EAAKwR,MAAMqB,OAAOmF,QAG7BA,MAAOhY,EAAKwR,MAAMqB,OAAOmF,MACzBwb,MAAOjB,EAAekB,cAqE5BjC,OAIFhW,YAAa,GACbmF,cAAe,GACf+S,gBAAiB,GACjB9U,kBAAmB,GACnB+U,gBAAiB,GACjBC,+BAAgC,GAChCC,6BAA8B,GAC9BC,mCAAoC,GACpCC,mCAAoC,GACpCC,MAAS,QACTC,YAAa,cAEfC,IAAK,SAAS/yB,EAASzB,EAAQD,GAE7B,GAAI8V,GAAMpU,EAAQ,aACd6rB,EAAQ7rB,EAAQ,gBAChB6a,EAAY7a,EAAQ,kBAExBzB,GAAOD,QAAU,SAAS00B,GA0CxB,QAASC,GAAe7G,EAAO1Z,GAC7B,GAAI7T,EAAKssB,oBAEP,IAAK,GADD+H,GAAiB9G,EAAMA,EAAMtsB,OAAS,GACjC4sB,EAAiB,EAAGA,EAAiB7tB,EAAK+Y,kBAAmB8U,IACpEwG,EAAe1vB,KAAK,GAAIqX,GAAU8R,WAAW9tB,EAAKuV,IAAI/D,MAAMqB,OAAOG,WAAW6a,GAAiBha,IAC3Fga,EAAiB7tB,EAAK+Y,kBAAoB,GAC5CwU,EAAM5oB,KAAK0vB,MAOnB,QAAStG,GAAUR,EAAO+G,GACxB,GAAIA,EAAU7hB,OAAOxR,OAAS,EAM5B,IAAK,GAJDszB,GAAgBhH,EAAMtsB,OAAS,EAC/BozB,EAAiB9G,EAAMgH,GACvB1gB,EAASwgB,EAAepzB,OAAS,EAAIozB,EAAeA,EAAepzB,OAAS,GAAK,KAE5EuzB,EAAW,EAAGA,EAAWF,EAAU7hB,OAAOxR,OAAQuzB,IAAY,CACrE,GAGIC,GAHAliB,EAAW+hB,EAAU7hB,OAAO+hB,GAC5B1R,EAASwR,EAAU9hB,WAAWD,EAIhCkiB,IADG3R,EAAOlH,QAAUkH,EAAOpR,MAAMkD,SAASiB,QACzB,GAAImG,GAAUmC,OAAO5I,EAAIzB,KAAKxC,KAAM0K,EAAUoC,WAAWuO,UAAW7J,EAAQjP,EAAQ7T,EAAK+Y,mBAEzF,IAGnB,IAAI2b,GAAY,GAAI1Y,GAAUmC,OAAO5I,EAAIzB,KAAKxC,KAAM,KAAMwR,EAAQjP,EAAQ7T,EAAK+Y,kBAAmB0b,EAE9FD,GAAW,GACbjH,EAAM5oB,KAAK0vB,MAGbA,EAAe1vB,KAAK+vB,GAEf5R,EAAOlH,OAUVwY,EAAe7G,EAAOmH,IATtB3G,EAAUR,EAAOzK,GACbA,EAAOpR,MAAMkD,SAASiB,UACxB0X,EAAM5oB,MAAM8vB,IAGZL,EAAe7G,EAAOkH,MArFhC,GAAIz0B,GAAOC,IAEX+sB,GAAMhsB,KAAKhB,EAAMm0B,GAEjBl0B,KAAKkuB,MAAQ,WACX,GACIwG,GADA7a,IAGJ,IAAgB,MAAZ9Z,EAAKuV,IAAa,CACpB,IAAIvV,EAAKuV,IAAIpD,KAAKM,OAAOxR,OAAS,GAAKjB,EAAKuV,IAAI/D,MAAMqB,OAAO+E,WAAWzB,eACtE2D,EAAQnV,SAGRopB,EAAUjU,EAAS9Z,EAAKuV,IAAIpD,MAExBnS,EAAKuV,IAAI/D,MAAMqB,OAAO+E,WAAWzB,aAAa,CAChD,GAAIye,GAAU9a,EAAQA,EAAQ7Y,OAAS,EACvC0zB,GAAmB,GAAI3Y,GAAUmC,OAAO5I,EAAIzB,KAAKxC,KAAM0K,EAAUoC,WAAWgQ,YAAapuB,EAAKuV,IAAIpD,KAAM,KAAMnS,EAAK+Y,mBAC5F,IAAnB6b,EAAQ3zB,OACV2zB,EAAQjwB,KAAKgwB,GAEb7a,EAAQnV,MAAMgwB,IAKG,IAAnB7a,EAAQ7Y,QACV6Y,EAAQnV,MAAMgwB,EAAmB,GAAI3Y,GAAUmC,OAAO5I,EAAIzB,KAAKxC,KAAM0K,EAAUoC,WAAWiQ,MAAOruB,EAAKuV,IAAIpD,KAAM,KAAMnS,EAAK+Y,qBAGzH4b,GAEFP,EAAeta,EAAS6a,GAG5B30B,EAAK8Z,QAAUA,GAGjB7Z,KAAKkuB,WA2DP3S,YAAa,GACb8S,eAAgB,GAChB1P,kBAAmB,KAErBiW,IAAK,SAAS1zB,EAASzB,EAAQD,GAkE7B,QAASq1B,GAAqB9kB,GAC5B,MAAOA,GAAI+kB,QAAQC,EAAiB,SAASC,EAAGC,GAC9C,MAAOA,GAAGC,gBAlEdz1B,EAAOD,QAAQ21B,YAAc,SAASrC,EAASsC,GAC7C,GAAItC,GAAWsC,EACb,KAAOtC,EAAQuC,UAAUhd,QAAQ+c,IAAc,GAC7CtC,EAAQuC,UAAYvC,EAAQuC,UAAUP,QAAQM,EAAW,KAK/D31B,EAAOD,QAAQ81B,SAAW,SAASxC,EAASsC,GACtCtC,GAAWsC,GACTtC,EAAQuC,UAAUhd,QAAQ+c,GAAa,IACzCtC,EAAQuC,WAAa,IAAMD,IAKjC31B,EAAOD,QAAQ+1B,UAAY,SAASzC,GAClC,GAAIA,EAAS,CACX,GAAI0C,GAAO1C,EAAQ2C,uBACnB,QACEC,EAAGF,EAAKG,KACRC,EAAGJ,EAAKK,KAGZ,OACEH,EAAG,EACHE,EAAG,IAIPn2B,EAAOD,QAAQs2B,gBAAkB,SAAShD,GACxC,GAAIA,EAAS,CACX,GAAI0C,GAAO1C,EAAQ2C,wBACfM,EAAmC,MAAtBjD,EAAQkD,WAAqBlD,EAAQkD,WAAWP,yBAC/DI,IAAK,EACLF,KAAM,EAER,QACED,EAAGF,EAAKG,KAAOI,EAAWJ,KAC1BC,EAAGJ,EAAKK,IAAME,EAAWF,KAG7B,OACEH,EAAG,EACHE,EAAG,IAIPn2B,EAAOD,QAAQy2B,QAAU,SAASnD,GAChC,GAAIA,EAAS,CACX,GAAI0C,GAAO1C,EAAQ2C,uBACnB,QACE7d,MAAO4d,EAAKU,MAAQV,EAAKG,KACzB9d,OAAQ2d,EAAKW,OAASX,EAAKK,KAG/B,OACEje,MAAO,EACPC,OAAQ,GAIZ,IAAIkd,GAAkB,SAQtBt1B,GAAOD,QAAQ42B,SAAW,SAAStD,EAASuD,EAAYC,GACtD,GAAI9jB,KACJ,IAAIsgB,GAAWuD,EAAY,CACzB,GAAIE,GAAWh3B,EAAGi3B,CACd1D,GAAQ2D,cACVF,EAAYzD,EAAQ2D,aACpBl3B,EAAI,SAAWm3B,GACb,MAAOH,GAAUG,IAEnBF,GAAU,GACD32B,QAAUA,OAAO82B,mBAC1BJ,EAAY12B,OAAO82B,iBAAiB7D,EAAS,MAC7CvzB,EAAI,SAAWm3B,GACb,MAAOH,GAAUK,iBAAiBF,IAItC,KAAK,GAAI/1B,GAAI,EAAGA,EAAI01B,EAAWr1B,OAAQL,IAAK,CAC1C,GAAIoP,GAAMxQ,EAAEi3B,EAAU3B,EAAqBwB,EAAW11B,IAAM01B,EAAW11B,GACvE6R,GAAO9N,KAAKqL,GAAOumB,KAAe,EAAOpvB,KAAK2vB,KAAKhL,WAAW9b,IAAQA,IAG1E,MAAOyC,IAGT/S,EAAOD,QAAQs3B,UAAY,SAAShE,GAClC,MAAIA,GAC+B,SAA1BA,EAAQS,MAAMwD,UAA+C,IAAxBjE,EAAQkE,aAA8C,IAAzBlE,EAAQmE,eAE5E,GAGTx3B,EAAOD,QAAQ03B,oBAAsB,SAASC,EAAWC,GACvD,GAAID,EAAW,CACb,GAAIE,GAAeF,EAAUG,UAC7B,IAAID,GAA0C,aAA1BA,EAAaE,SAAyB,CAIxD,IAHAJ,EAAU5D,MAAMiE,YAAc,OAC9BL,EAAU5D,MAAM3b,MAAQ,GAEjByf,EAAaC,YAClBD,EAAaI,YAAYJ,EAAaC,WAExC,KAAK,GAAI32B,GAAI,EAAGA,EAAIy2B,EAAOp2B,OAAQL,IAAK,CACtC,GAAI+2B,GAAMC,SAASC,cAAc,MACjCF,GAAInE,MAAM3b,MAAQwf,EAAOz2B,GAAK,KAC9B02B,EAAaQ,YAAYH,GAE3BP,EAAU5D,MAAMiE,YAAc,gBAMtCM,IAAK,SAAS52B,EAASzB,EAAQD,IAC7B,SAAUM,GAMR,QAASgmB,GAAuBpkB,GAC9B,MAAOA,IAAOA,EAAIN,WAAaM,GAC7BP,UAASO,GANb,GAAI8K,GAAatL,EAAQ,wCAErB62B,EAAcjS,EAAuBtZ,EAQzC/M,GAAOD,SAELw4B,GAAI,SAAYC,EAAYrkB,GAC1B,GAAIskB,GAAQD,EAAWjwB,MAAM,KACzBrH,EAAI,CAER,KADAiT,EAASA,GAAU/T,OACZc,EAAIu3B,EAAMl3B,QACf4S,EAAOskB,EAAMv3B,IAAMiT,EAAOskB,EAAMv3B,QAChCiT,EAASA,EAAOskB,EAAMv3B,IACtBA,GAEF,OAAOiT,IAGTgG,cAAe,SAAuBlY,GACpC,GAAIqwB,KACJ,KAAK,GAAI2E,KAAQh1B,GACXA,EAAI2F,eAAeqvB,IACrB3E,EAAIrtB,KAAKgyB,EAGb,OAAO3E,IAGT7oB,QAAS,SAAiBivB,EAAMloB,EAAUmoB,GACxC,GAAIC,EACJ,IAAIF,EACF,IAAK,GAAIx3B,GAAI,EAAGG,EAAIq3B,EAAKn3B,OAAYF,EAAJH,IAC/B03B,EAAMpoB,EAASkoB,EAAKx3B,GAAIA,IACpB03B,GAAOD,KAAkB,GAFSz3B,KAO1C,MAAO03B,IAGTjwB,QAAS,SAAiB1G,GACxB,MAAgD,mBAAzCoC,OAAOuG,UAAUtH,SAASb,MAAMR,IAGzCgiB,SAAU,SAAkBhiB,GAC1B,MAAgD,oBAAzCoC,OAAOuG,UAAUtH,SAASb,MAAMR,IAGzCiiB,OAAQ,SAAgBjiB,GACtB,MAAgD,kBAAzCoC,OAAOuG,UAAUtH,SAASb,MAAMR,IAGzCsV,SAAU,SAAkBtV,GAC1B,MAAgD,oBAAzCoC,OAAOuG,UAAUtH,SAASb,MAAMR,IAGzC6d,SAAU,SAAkB7d,GAC1B,MAAgD,oBAAzCoC,OAAOuG,UAAUtH,SAASb,MAAMR,IAGzCkkB,WAAY,SAAoBlkB,GAC9B,MAAgD,sBAAzCoC,OAAOuG,UAAUtH,SAASb,MAAMR,IAGzC42B,YAAa,SAAqBC,GAChC,MAAOA,GAAGzD,QAAQ,yBAA0B,SAG9C0D,YAAa,SAAqB3P,EAAO4P,GACvC,GAAIz4B,KAAKoI,QAAQygB,IAAU4P,EACzB,IAAK,GAAI93B,GAAI,EAAGA,EAAIkoB,EAAM7nB,OAAQL,IAAK,CACrC,GAAI+3B,GAAO7P,EAAMloB,EACjB,IAAI83B,EAAUC,GACZ,MAAOA,KAOfC,cAAe,SAAuBj3B,EAAKk3B,GACzC,QAASC,GAAOt0B,EAAKkD,GACnB,MAAOmxB,IAAkBA,EAAevgB,QAAQ9T,GAAO,GAAKf,OAAYiE,EAE1E,OAAO,EAAIswB,EAAAA,YAAqBr2B,EAAKm3B,EAAQ,IAE/CC,iBAAkB,SAA0BhG,EAASiG,EAAWC,GAC1DlG,EAAQgG,iBACVhG,EAAQgG,iBAAiBC,EAAWC,GAAS,GACpClG,EAAQmG,YACjBnG,EAAQmG,YAAY,KAAOF,EAAWC,GAEtClG,EAAQ,KAAOiG,GAAaC,GAGhCE,oBAAqB,SAA6BpG,EAASiG,EAAWC,GAChElG,EAAQoG,oBACVpG,EAAQoG,oBAAoBH,EAAWC,GAAS,GACvClG,EAAQqG,YACjBrG,EAAQqG,YAAY,KAAOJ,EAAWC,GAEtClG,EAAQ,KAAOiG,GAAa,MAGhCK,eAAgB,SAAwBl5B,GACtCA,EAAIA,GAAKL,OAAOw5B,MAEZn5B,EAAEk5B,eACJl5B,EAAEk5B,iBAEFl5B,EAAEo5B,aAAc,GAGpBC,gBAAiB,SAAyBr5B,GACxCA,EAAIA,GAAKL,OAAOw5B,MAEZn5B,EAAEq5B,gBACJr5B,EAAEq5B,kBAEFr5B,EAAEs5B,cAAe,GAGrBC,eAAgB,SAAwBv5B,GACtC,GAAIw5B,GAASx5B,EAAEw5B,MACf,OAAI,SAAWx5B,GACNw5B,EAGS,IAAXA,EAAe,EACT,IAAXA,EAAe,EACf,GAEJC,eAAgB,SAAwBz5B,GACtCA,EAAIA,GAAKL,OAAOw5B,KAEhB,IAAIO,GAAQ15B,EAAE05B,MACVC,EAAQ35B,EAAE25B,KAKd,OAJcr2B,UAAVo2B,IACFA,EAAQ15B,EAAE45B,QAAUnC,SAASvM,KAAK2O,WAAapC,SAASqC,gBAAgBD,WACxEF,EAAQ35B,EAAE+5B,QAAUtC,SAASvM,KAAK8O,UAAYvC,SAASqC,gBAAgBE,YAGvEN,MAAOA,EACPC,MAAOA,KAOb,SAAUryB,GAGR,QAAS2yB,GAAsBC,GAC7Bp6B,KAAKo6B,QAAUA,EAHjB,GAAIC,GAAQ,mEAKZF,GAAsB9vB,UAAY,GAAIzJ,OACtCu5B,EAAsB9vB,UAAUpF,KAAO,wBAGvCuC,EAAOwV,KAAOld,GAAUA,EAAOkd,KAAO,SAASJ,GAC7C,MAAO9c,GAAOkd,KAAKJ,IACjB,SAAS0d,GAEX,IAEE,GAAIC,GAAOC,EAHT5d,EAAM6d,OAAOH,GAGMI,EAAM,EAAGjnB,EAAM4mB,EAAOM,EAAS,GAIpD/d,EAAIge,OAAa,EAANF,KAAajnB,EAAM,IAAKinB,EAAM,GAEzCC,GAAUlnB,EAAImnB,OAAO,GAAKL,GAAS,EAAIG,EAAM,EAAI,GAAI,CAErD,GADAF,EAAW5d,EAAIie,WAAWH,GAAO,KAC7BF,EAAW,IACb,KAAM,IAAIL,GAAsB,2FAElCI,GAAQA,GAAS,EAAIC,EAEvB,MAAOG,IAKTnzB,EAAOszB,KAAOh7B,GAAUA,EAAOg7B,KAAO,SAASle,GAC7C,MAAO9c,GAAOg7B,KAAKle,IACjB,SAAS0d,GACX,GAAI1d,GAAM6d,OAAOH,GAAOxF,QAAQ,MAAO,GACvC,IAAIlY,EAAI5b,OAAS,GAAK,EACpB,KAAM,IAAIm5B,GAAsB,oEAElC,KAEE,GAAYY,GAAIC,EAAZC,EAAK,EAAeP,EAAM,EAAGC,EAAS,GAE1CK,EAASpe,EAAIge,OAAOF,MAEnBM,IAAWD,EAAKE,EAAK,EAAS,GAALF,EAAUC,EAASA,EAG3CC,IAAO,GAAKN,GAAUF,OAAOS,aAAa,IAAMH,IAAO,GAAKE,EAAK,IAAM,EAEzED,EAASX,EAAMhiB,QAAQ2iB,EAEzB,OAAOL,KAERl7B,EAAOD,WAETuB,KAAKf,KAAwB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aAE5Hs7B,uCAAwC,IAE1CC,IAAK,SAASl6B,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,YAErBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbC,gBAAiB,WACf,OACEC,WAAW,IAGfA,UAAW,WACT,MAAOx7B,MAAKupB,MAAMiS,WAAkD,gBAA9Bx7B,MAAKszB,MAAMtb,UAAUhT,MAAgF,kBAApDy2B,QAAOC,cAAc17B,KAAKszB,MAAMtb,UAAUhT,OAEnI22B,UAAW,WACT,GAAI37B,KAAKw7B,YAAa,CACpB,GAAII,GAAY57B,KAAKszB,MAAMuI,eAAe1f,YAAY5K,MAAM8S,eACxDxL,EAAO,GAAI4iB,QAAOC,cAAcI,SAEpCjjB,GAAKkjB,UAAU,SAAUH,EAAUnX,WACnC,KAAK,GAAI3C,GAAK,EAAGA,EAAK8Z,EAAUzW,SAASnkB,OAAQ8gB,IAC/CjJ,EAAKkjB,UAAU,SAAUH,EAAUzW,SAASrD,GAG9CjJ,GAAKmjB,QAAQJ,EAAUvW,UAEvB,IAAIpP,IACFiP,MAAO0W,EAAU1W,MAEjB+W,SAAUj8B,KAAKupB,MAAM2S,WAAWC,WAChCC,SAAUvQ,WAAW7rB,KAAKupB,MAAM2S,WAAWE,UAC3CC,OACEnX,MAAO0W,EAAUnX,YAEnB6X,OACEpX,MAAO0W,EAAUlX,YAIrB,IAA+D,kBAApD+W,QAAOC,cAAc17B,KAAKszB,MAAMtb,UAAUhT,MAAsB,CACzE,GAAIu3B,GAAQ,GAAId,QAAOC,cAAc17B,KAAKszB,MAAMtb,UAAUhT,MAAM+rB,EAASyL,YAAYx8B,MACrFu8B,GAAME,KAAK5jB,EAAM5C,MAIvBymB,kBAAmB,WACjB18B,KAAK27B,aAEPgB,mBAAoB,WAClB38B,KAAK27B,aAEPvJ,OAAQ,WACN,MAAIpyB,MAAKw7B,YACAxK,EAAM4G,cAAc,OACzBvC,UAAW,QACX9B,MAAOvzB,KAAKupB,MAAM2S,aAGf,UAKXnI,MAAS,QACTC,YAAa,cAEf4I,IAAK,SAAS17B,EAASzB,EAAQD,GAM7B,QAASq9B,KACP,GAAIC,GAAiBnF,SAASC,cAAc,MAG5C,OAFAkF,GAAezH,UAAY,iCAC3BsC,SAASvM,KAAKyM,YAAYiF,GACnBA,EART,GAAI9L,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnB+P,EAAQ/P,EAAQ,gBASdiwB,EAAS1xB,EAAOD,QAAUwxB,EAAMqK,aAClCC,YAAa,UAEbyB,SACEt0B,OAAQ,WACN,GAAIu0B,GAAgBhM,EAAMgC,cAAc7B,GACpClG,EAAU4R,GAEd,QACEzJ,KAAM,SAAcE,GAClBvC,EAASqB,OAAO4K,EAAc1J,GAAQrI,OAK9C6R,eAAgB,KAChBG,gBAAiB,SAAyBrnB,GACxC5V,KAAK88B,eAAezH,UAAYr1B,KAAKszB,MAAMvb,MAAMgT,iBAAiBnV,GAASqV,SAE7EyR,kBAAmB,WACjB18B,KAAK88B,eAAiB/L,EAASyL,YAAYx8B,MAAMg2B,WACjDh2B,KAAKi9B,iBAAgB,GACrBhsB,EAAM6nB,iBAAiB94B,KAAK88B,eAAgB,QAAS98B,KAAKk9B,MAE1D,IAAIC,GAAgBn9B,KAAK88B,eAAeM,SAAS,GAC7CC,EAAoBF,EAAcC,SAAS,GAAGA,SAAS,GAEvDE,EAAcp2B,KAAKuJ,IAAIknB,SAASqC,gBAAgBuD,YAAa19B,OAAO29B,YAAc,GAClFC,EAAev2B,KAAKuJ,IAAIknB,SAASqC,gBAAgB0D,aAAc79B,OAAO89B,aAAe,GACrFC,EAAY,EAAIH,EAAe,CACnCG,GAAwB,IAAZA,EAAkB,IAAMA,CACpC,IAAIC,GAASV,EAAcnG,aAAemG,EAAclG,aAAe2G,EAAY,GAAK,GACpFE,EAAUX,EAAclG,aAAe2G,EAAYA,EAAYT,EAAclG,YAEjFkG,GAAc5J,MAAMsC,KAAO4H,EAAeK,GAAWL,EAAeK,GAAW,EAAI,GAAK,KACxFX,EAAc5J,MAAMoC,MAAQ2H,EAAcO,GAAUP,EAAcO,GAAU,EAAI,GAAK,KACrFV,EAAc5J,MAAM1b,OAASimB,EAAU,KACvCT,EAAkB9J,MAAM3b,MAAQimB,EAAS,KACzCR,EAAkB9J,MAAM1b,OAASimB,EAAU,GAAK,MAElDZ,MAAO,SAAeh9B,GACpB,GAAI+F,GAAS/F,EAAE+F,QAAU/F,EAAE69B,UACvB93B,IAAUjG,KAAK88B,gBAAuC,iBAArB72B,EAAOovB,YAC1CpkB,EAAMioB,oBAAoBl5B,KAAK88B,eAAgB,QAAS98B,KAAKk9B,OAC7DnM,EAASiN,uBAAuBh+B,KAAK88B,gBACrC98B,KAAKi9B,iBAAgB,KAGzB7K,OAAQ,WACN,GAAIpyB,KAAKszB,MAAMD,KAAM,CACnB,GAAIA,GAAOrC,EAAM4G,cAAc53B,KAAKszB,MAAMD,KAAKruB,KAAMhF,KAAKszB,MAAMD,KAAKC,OACjEtI,EAAUhrB,KAAKszB,MAAMvb,MAAMgT,kBAE/B,OAAOiG,GAAM4G,cACX,OACEvC,UAAWrK,EAAQE,OACnBqI,MAAOvzB,KAAKszB,MAAMC,WAEpBvC,EAAM4G,cACJ,OACEvC,UAAWrK,EAAQG,SAErB6F,EAAM4G,cACJ,OACEvC,UAAWrK,EAAQ9M,QAErB8S,EAAM4G,cAAc,OAClBvC,UAAW,eACX4I,QAASj+B,KAAKk9B,QAEhBlM,EAAM4G,cACJ,OACEvC,UAAWrK,EAAQ9F,OAErBllB,KAAKszB,MAAMpO,QAGf8L,EAAM4G,cACJ,OACEvC,UAAWrK,EAAQI,MAErBiI,WASZ6K,eAAgB,GAChBnK,MAAS,QACTC,YAAa,cAEfmK,IAAK,SAASj9B,EAASzB,EAAQD,GAE7B,GAAIuxB,GAAW7vB,EAAQ,aACrB+P,EAAQ/P,EAAQ,eAElBzB,GAAOD,QAAU,WAYf,QAAS4+B,GAAkBC,EAAWC,GACpC,QAASD,EAAUnI,MAAQoI,EAAU3I,MAAQ0I,EAAU1I,KAAO2I,EAAUpI,OAASmI,EAAUlI,OAASmI,EAAUzI,KAAOwI,EAAUxI,IAAMyI,EAAUnI,QAGjJ,QAASoI,GAAkBC,EAAYvuB,GACjCwuB,EACFC,EAAcD,EAAiB,WAC7BA,EAAkBD,EAClBG,EAAeH,EAAYvuB,MAG7BwuB,EAAkBD,EAClBG,EAAeH,EAAYvuB,IAI/B,QAAS2uB,GAAqBC,GACxBC,EACFJ,EAAcI,EAAoB,WAChCA,EAAqBD,EACrBF,EAAeE,MAGjBC,EAAqBD,EACrBF,EAAeE,IAInB,QAASF,GAAe14B,EAAQgK,GAC1BhK,GAAUA,EAAO84B,WACnB94B,EAAO84B,WAAW9uB,GACTA,GACTA,IAIJ,QAASyuB,GAAcz4B,EAAQgK,GACzBhK,GAAUA,EAAO+4B,UACnB/4B,EAAO+4B,UAAU/uB,GACRA,GACTA,IAlDJ,GAAIgvB,GAAa,KAEbC,EAAmB,KACnBT,EAAkB,KAClBK,EAAqB,KAErBK,EAAY,KACZC,KACAC,KA8DAC,GAAe,CAEnB,QACE/N,KAAM,SAAcgO,GAClBD,GAAe,EACfL,EAAaM,GAEfC,eAAgB,SAAwBC,GAEtC,GAAIC,GAAkBR,CAEtB,IADAA,EAAmBO,EACfP,GAAoBQ,EACtB,GAAY,MAARD,EAAc,CAEhB,GAAIhB,EAAiB,CACnB,GAAIjkB,GAAiC,MAAtBskB,EAA6BA,EAAmBtkB,SAAW,IAC1EykB,GAAWU,WAAWD,EAAiBjB,EAAgBmB,UAAUtM,MAAMre,QAASuF,GAGlF2kB,EAAY,KACZZ,EAAkB,MAClBK,EAAqB,UAErBO,GAAYpO,EAASyL,YAAY0C,IAIvCW,eAAgB,SAAwB55B,EAAQgP,EAAS6qB,EAAiBC,GACxEX,EAAa16B,MACXk7B,UAAW35B,EACXgP,QAASA,EACT8pB,WAAYe,EACZd,UAAWe,KAGfC,iBAAkB,SAA0B/5B,GAE1C,IAAK,GADDg6B,GACKt/B,EAAI,EAAGA,EAAIy+B,EAAap+B,OAAQL,IACvC,GAAIy+B,EAAaz+B,GAAGi/B,WAAa35B,EAAQ,CACvCg6B,EAASt/B,CACT,OAGU,MAAVs/B,GACFb,EAAapkB,OAAOilB,EAAQ,IAGhCC,kBAAmB,SAA2BC,EAAWlrB,EAASuF,EAAUslB,EAAiBC,GAC3FV,EAAgB36B,MACdk7B,UAAWO,EACXlrB,QAASA,EACTuF,SAAUA,EACVukB,WAAYe,EACZd,UAAWe,KAGfK,oBAAqB,SAA6BD,GAEhD,IAAK,GADDE,GACK1/B,EAAI,EAAGA,EAAI0+B,EAAgBr+B,OAAQL,IAC1C,GAAI0+B,EAAgB1+B,GAAGi/B,WAAaO,EAAW,CAC7CE,EAAS1/B,CACT,OAGU,MAAV0/B,GACFhB,EAAgBrkB,OAAOqlB,EAAQ,IAGnCC,aAAc,WACZ,GAAwB,MAApBpB,EAA0B,CAC5B,GACIqB,GADAC,EAAerB,EAAU1J,uBAG7BxkB,GAAM/H,QAAQk2B,EAAc,SAASn5B,GACnC,IAAKs6B,EAAa,CAChB,GAAIE,GAAY1P,EAASyL,YAAYv2B,EAAO25B,WAAWnK,wBACnDiL,EAAYtC,EAAkBoC,EAAcC,EAChD,IAAIC,EAEF,YADAH,EAAct6B,MAMhBs6B,GACFhC,EAAkBgC,EAAa,WAC7B,GAAII,GAAiB,IAkBrB,IAhBA1vB,EAAM/H,QAAQm2B,EAAiB,SAASc,EAAW72B,GACjD,IAAKq3B,EAAgB,CACnB,GAAIC,GAAsBT,EAAUP,UAAUtM,MAAMre,UAAYiqB,EAAiB5L,MAAMre,SAAWkrB,EAAUP,UAAUtM,MAAM9Y,WAAa0kB,EAAiB5L,MAAM9Y,SAE5JqmB,EAAkBV,EAAUP,UAAUtM,MAAMre,UAAYsrB,EAAYX,UAAUtM,MAAMre,OACxF,IAAI4rB,IAAoBD,EAAqB,CAC3C,GAAIH,GAAY1P,EAASyL,YAAY2D,EAAUP,WAAWnK,wBACtDiL,EAAYtC,EAAkBoC,EAAcC,EAChD,IAAIC,EAEF,MADAC,GAAiBR,GACV,OAMVQ,EAAgB,CACnB,GAAIG,GAAgBzB,EAAgBhmB,OAAO,SAAS8mB,GAClD,MAAOA,GAAUP,UAAUtM,MAAMre,UAAYsrB,EAAYX,UAAUtM,MAAMre,SAEvE6rB,GAAc9/B,OAAS,IACzB2/B,EAAiBG,EAAcA,EAAc9/B,OAAS,IAG1D49B,EAAqB+B,aASjCzC,eAAgB,GAChBlK,YAAa,cAEf+M,IAAK,SAAS7/B,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB8/B,EAAc9/B,EAAQ,8BAExBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,gBACbC,gBAAiB,WAEf,MADAyF,GAAYd,kBAAkBlgC,KAAMA,KAAKszB,MAAMre,QAASjV,KAAKszB,MAAM9Y,SAAUxa,KAAK++B,WAAY/+B,KAAKg/B,YAEjGiC,QAAQ,IAGZC,qBAAsB,WACpBF,EAAYZ,oBAAoBpgC,OAElC++B,WAAY,SAAoB9uB,GAC1BjQ,KAAKmhC,YACPnhC,KAAK4uB,UACHqS,QAAQ,GACPhxB,GACMA,GACTA,KAGJ+uB,UAAW,SAAmB/uB,GACxBjQ,KAAKmhC,YACPnhC,KAAK4uB,UACHqS,QAAQ,GACPhxB,GACMA,GACTA,KAGJmiB,OAAQ,WACN,GAAIgD,GAAY,aAAep1B,KAAKszB,MAAM8N,WAAa,YAAc,GAEjEphC,MAAKszB,MAAM+N,UACbjM,GAAa,oBAGXp1B,KAAKszB,MAAMgO,SACblM,GAAa,kBAGf,IAAI7B,KAKJ,OAJIvzB,MAAKupB,MAAM0X,SACb7L,GAAa,mBAGRpE,EAAM4G,cAAc,OACzBrE,MAAOA,EACP8B,UAAWD,SAMjBmM,8BAA+B,GAC/BxN,MAAS,UAEXyN,IAAK,SAAStgC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB8/B,EAAc9/B,EAAQ,+BACtBugC,EAAgBvgC,EAAQ,iCACxBoU,EAAMpU,EAAQ,cACdwgC,EAAO,CAETjiC,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbC,gBAAiB,WAEf,MADAv7B,MAAK0hC,OAASA,GAEZT,QAAQ,IAGZvE,kBAAmB,WACjBsE,EAAYnB,eAAe7/B,KAAMA,KAAKszB,MAAMre,QAASjV,KAAK++B,WAAY/+B,KAAKg/B,YAE7EkC,qBAAsB,WACpBF,EAAYhB,iBAAiBhgC,OAE/B++B,WAAY,SAAoB9uB,GAC1BjQ,KAAKmhC,YACPnhC,KAAK4uB,UACHqS,QAAQ,GACPhxB,GACMA,GACTA,KAGJ+uB,UAAW,SAAmB/uB,GACxBjQ,KAAKmhC,YACPnhC,KAAK4uB,UACHqS,QAAQ,GACPhxB,GACMA,GACTA,KAGJmiB,OAAQ,WACN,GAAIryB,GAAOC,KAEPwc,EAAUxc,KAAKszB,MAAM9W,QAAQ/I,IAAI,SAASimB,EAAQpwB,GACpD,MAAIA,GAAQvJ,EAAKuzB,MAAM9W,QAAQxb,OAAS,GAC9BgwB,EAAM4G,cACZ,KACA,KACA5G,EAAM4G,cAAc6J,GAClBJ,QAAmB,IAAV/3B,EACTkR,SAAUlR,EACV2L,QAASlV,EAAKuzB,MAAMre,WAErB+b,EAAM4G,cACP,KACA,KACA8B,KAGM1I,EAAM4G,cACZ,KACA,KACA5G,EAAM4G,cAAc6J,GAClBJ,QAAmB,IAAV/3B,EACTkR,SAAUlR,EACV2L,QAASlV,EAAKuzB,MAAMre,WAErB+b,EAAM4G,cACP,KACA,KACA8B,GACC1I,EAAM4G,cACP,KACA,KACA5G,EAAM4G,cAAc6J,GAClBH,QAAQ,EACR9mB,SAAU,KACVvF,QAASlV,EAAKuzB,MAAMre,cAMxBse,EAAQxzB,EAAKuzB,MAAMre,UAAYK,EAAIzB,KAAKxC,MAC1CmJ,SAAU,WACVmb,KAAM,EACNQ,OAAQ,IACN,IAEJ,OAAOnF,GAAM4G,cACX,OACEvC,UAAW,YAAcr1B,KAAKupB,MAAM0X,OAAS,iBAAmB,KAA0B,IAAnBzkB,EAAQxb,OAAe,kBAAoB,IAClHuyB,MAAOA,GAETvC,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,KACA,KACApb,WASZmlB,aAAc,GACdJ,8BAA+B,GAC/BK,gCAAiC,GACjC7N,MAAS,UAEX8N,IAAK,SAAS3gC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB8/B,EAAc9/B,EAAQ,+BACtBugC,EAAgBvgC,EAAQ,iCACxBwgC,EAAO,CAETjiC,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbC,gBAAiB,WAEf,MADAv7B,MAAK0hC,OAASA,GAEZT,QAAQ,IAGZvE,kBAAmB,WACjBsE,EAAYnB,eAAe7/B,KAAMA,KAAKszB,MAAMre,QAASjV,KAAK++B,WAAY/+B,KAAKg/B,YAE7EkC,qBAAsB,WACpBF,EAAYhB,iBAAiBhgC,OAE/B++B,WAAY,SAAoB9uB,GAC1BjQ,KAAKmhC,YACPnhC,KAAK4uB,UACHqS,QAAQ,GACPhxB,GACMA,GACTA,KAGJ+uB,UAAW,SAAmB/uB,GACxBjQ,KAAKmhC,YACPnhC,KAAK4uB,UACHqS,QAAQ,GACPhxB,GACMA,GACTA,KAGJmiB,OAAQ,WACN,GAAIryB,GAAOC,KAEPwc,EAAUxc,KAAKszB,MAAM9W,QAAQ/I,IAAI,SAASimB,EAAQpwB,GACpD,GAAIw4B,IAAc9Q,EAAM4G,cACtB,KACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc6J,GAClBJ,QAAmB,IAAV/3B,EACTkR,SAAUlR,EACV2L,QAASlV,EAAKuzB,MAAMre,QACpBmsB,YAAY,MAGfpQ,EAAM4G,cACP,KACA,KACA5G,EAAM4G,cACJ,KACA,KACA8B,IAqBJ,OAjBIpwB,IAASvJ,EAAKuzB,MAAM9W,QAAQxb,OAAS,GACvC8gC,EAAWp9B,KAAKssB,EAAM4G,cACpB,KACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc6J,GAClBH,QAAQ,EACR9mB,SAAU,KACVvF,QAASlV,EAAKuzB,MAAMre,QACpBmsB,YAAY,OAMbU,GAGT,OAAO9Q,GAAM4G,cACX,OACEvC,UAAW,qBAAuBr1B,KAAKupB,MAAM0X,OAAS,iBAAmB,KAA0B,IAAnBzkB,EAAQxb,OAAe,2BAA6B,KAEtIgwB,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,QACA,KACApb,UAQV+kB,8BAA+B,GAC/BK,gCAAiC,GACjC7N,MAAS,UAEXgO,IAAK,SAAS7gC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB+P,EAAQ/P,EAAQ,eAElBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEb0G,YAAa,SAAqB9hC,GAChC,GAAI+hC,GAAYjiC,KAAKkiC,KAAKC,aACtBC,EAAiBpiC,KAAKkiC,KAAKG,WAC3Bp8B,EAAS/F,EAAE+F,QAAU/F,EAAE69B,UAEvB93B,KAAWg8B,GAA8C,SAAjCG,EAAe7O,MAAMwD,QAC/CqL,EAAe7O,MAAMwD,QAAU,QAE/BqL,EAAe7O,MAAMwD,QAAU,QAGnCuL,aAAc,WACZ,GAAIL,GAAYjiC,KAAKkiC,KAAKC,YAC1BF,GAAU5M,UAAY,mBACtB4M,EAAU1O,MAAMgP,mBAAqB,gBAEvCC,aAAc,WACZxiC,KAAKkiC,KAAKC,aAAa9M,UAAY,IAErCqH,kBAAmB,WACjBzrB,EAAM6nB,iBAAiBnB,SAAU,QAAS33B,KAAKgiC,cAEjDd,qBAAsB,WACpBjwB,EAAMioB,oBAAoBvB,SAAU,QAAS33B,KAAKgiC,cAEpDS,YAAa,SAAqBviC,GAIhC,IAHA,GAAIwiC,GAAW1iC,KAAKkiC,KAAKG,WACrBp8B,EAAS/F,EAAE+F,QAAU/F,EAAE69B,WACvB4E,GAAO,GACHA,GAAkB,MAAV18B,GAAgB,CAC9B,GAAIA,EAAO+vB,YAAc0M,EAAU,CACjCC,GAAO,CACP,OAEF18B,EAASA,EAAO+vB,WAGlB,GAAI2M,EAAM,CACR,GAAIl7B,GAAQxB,EAAO28B,YACfT,EAAeniC,KAAKkiC,KAAKC,YACzBA,GAAaS,aAAen7B,IAC9B06B,EAAaS,YAAcn7B,EACvBzH,KAAKszB,MAAMuP,gBACb7iC,KAAKszB,MAAMuP,eAAep7B,MAKlC2qB,OAAQ,WAQN,IAAK,GADD5f,MACK7R,EAAI,EAAGA,EAAIX,KAAKszB,MAAM9gB,OAAOxR,OAAQL,IAC5C6R,EAAO9N,KAAKssB,EAAM4G,cAAc,MAC9BrzB,IAAK,OAAS5D,EACdmiC,yBACEC,OAAQ/iC,KAAKszB,MAAM9gB,OAAO7R,MAKhC,OAAOqwB,GAAM4G,cACX,OACEvC,UAAW,cAEbrE,EAAM4G,cAAc,OAClBoL,IAAK,eACLF,yBACEC,OAAQ/iC,KAAKszB,MAAM2P,eAErBX,aAActiC,KAAKsiC,aACnBE,aAAcxiC,KAAKwiC,eAErBxR,EAAM4G,cACJ,MACEoL,IAAK,aACLzP,OACEwD,QAAS,QAEXkH,QAASj+B,KAAKyiC,aAEhBjwB,SAOR0rB,eAAgB,GAChBnK,MAAS,UAEXmP,IAAK,SAAShiC,EAASzB,EAAQD,GAkP7B,QAAS2jC,GAAcC,EAAWC,GA+DhC,QAASC,GAAgBC,EAAUzM,GACjC,MAAiB,OAAbA,EAGqD,QAAhDyM,EAASvN,WAAWA,WAAWzC,MAAMwD,aAF5CwM,EAASvN,WAAWA,WAAWzC,MAAMwD,QAAUD,EAAY,GAAK,QAMpE,QAAS0M,KACP,GAAIH,EAAqB,CACvB,GAAII,IACFjxB,OAAQ6wB,EAAoBnkB,YAC5BwkB,UAAWL,EAAoBlkB,cAG7BkkB,GAAoBpkB,MACtB0kB,GAAe,EAEf3kB,EAAWqkB,EAAoBrkB,SAC/Bjf,EAAK6jC,+BAEDP,EAAoBhkB,YACtBwkB,GAAc,EACd9jC,EAAK+jC,0BACLC,EAAiBV,EAAoBpkB,KAAK/Z,QAE1C6+B,EAAiBV,EAAoBpkB,KAGvC+kB,EAAMC,UAAUx8B,MAAQs8B,EAExBhkC,EAAKmkC,gBAAgBb,EAAoBrkB,SAAUqkB,EAAoBpkB,OAEvEklB,EAAqBV,EAGvB1jC,EAAKqkC,iBAAiBX,GACtB1jC,EAAKskC,qBAIT,QAASC,KACPvkC,EAAK6jC,+BAEL3yB,EAAM6nB,iBAAiBkL,EAAMO,gBAAiB,QAASxkC,EAAKykC,cAC5DvzB,EAAM6nB,iBAAiBkL,EAAMC,UAAW,QAASlkC,EAAK0kC;AAEtDxzB,EAAM6nB,iBAAiBkL,EAAMU,kBAAmB,QAAS3kC,EAAK4kC,gBAE9D1zB,EAAM6nB,iBAAiBkL,EAAMY,SAAU,QAAS,WAC9C,GAAIC,GAAa9kC,EAAK+kC,kBACtB1B,GAAU2B,SAAS/lB,EAAS/Z,KAAM+Z,EAASM,iBAAmBqkB,GAAgBE,EAAc,GAAIpkB,QAAOskB,EAAgB,KAAOA,EAAgBc,EAAWryB,OAAQqyB,EAAWnB,aAE9KzyB,EAAM6nB,iBAAiBkL,EAAMgB,aAAc,QAAS,WAClD5B,EAAU6B,YAId,QAASC,GAAcC,EAAoBC,EAAiBC,GAE1D,GAAIC,GAAoB,IACpBC,EAAqB,IAErBC,GACF9P,EAAG,EACHE,EAAG,GAED6P,GAAc,CAElBzlC,MAAK0lC,gBAAkB,SAASxlC,GAE9B,GAAgC,IAA5B+Q,EAAMwoB,eAAev5B,GAAzB,CAEA,GAAIylC,GAAc10B,EAAM0oB,eAAez5B,EAEvCulC,IAAc,EACd9N,SAASvM,KAAKmI,MAAMqS,OAAS,YAE7BJ,EAAa9P,EAAIiQ,EAAY/L,MAC7B4L,EAAa5P,EAAI+P,EAAY9L,MAG7B5oB,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAGvBF,KAAK6lC,cAAgB,WAGnB,MAFAJ,IAAc,EACd9N,SAASvM,KAAKmI,MAAMqS,OAAS,QACtB,GAGT5lC,KAAK8lC,gBAAkB,SAAS5lC,GAE9B,GAAKulC,EAAL,CAEA,GAAIE,GAAc10B,EAAM0oB,eAAez5B,GAEnC6lC,EAAiBV,EAAe5P,wBAChCuQ,EAAqBb,EAAmB1P,wBACxCwQ,EAAkBb,EAAgBc,QAAQ,GAAGzQ,wBAE7C0Q,EAAsBH,EAAmB9P,MAAQ8P,EAAmBrQ,KACpEyQ,EAAuBJ,EAAmB7P,OAAS6P,EAAmBnQ,IAEtEwQ,GACF3Q,EAA0B4P,GAAvBa,GAA4CR,EAAY/L,MAAQmM,EAAepQ,KAAO,EAAIgQ,EAAY/L,MAAQ4L,EAAa9P,EAC9HE,EAA2B2P,GAAxBa,GAA8CT,EAAY9L,MAAQkM,EAAelQ,IAAM,EAAI8P,EAAY9L,MAAQ2L,EAAa5P,GAG7H0Q,EAAoBH,EAAsBE,EAAO3Q,EACjD6Q,EAAqBH,EAAuBC,EAAOzQ,CAEvD4P,GAAa9P,EAAIiQ,EAAY/L,MAC7B4L,EAAa5P,EAAI+P,EAAY9L,MAEzByM,GAAqBhB,IACvBH,EAAmB5R,MAAM3b,MAAQ0uB,EAAoB,MAGnDC,GAAsBhB,IACxBJ,EAAmB5R,MAAM1b,OAAS0uB,EAAqB,KACvDnB,EAAgBc,QAAQ,GAAG3S,MAAM1b,OAASouB,EAAgB9P,OAAS8P,EAAgBpQ,IAAMwQ,EAAOzQ,EAAI,MAGtG3kB,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAGvB+Q,EAAM6nB,iBAAiBuM,EAAgB,YAAarlC,KAAK0lC,iBACzDz0B,EAAM6nB,iBAAiBnB,SAAU,UAAW33B,KAAK6lC,eACjD50B,EAAM6nB,iBAAiBnB,SAAU,YAAa33B,KAAK8lC,iBAhMrD,GAGI3B,GAoBAqC,EAvBAzmC,EAAOC,KACPymC,EAAgB,gBAGhB9C,GAAe,EACfE,GAAc,EACd7kB,EAAWtI,EAAUmJ,UAAUC,MAC/BikB,EAAiB,GAEjBC,GACFO,gBAAiB,KACjBmC,cACAzC,UAAW,KACX0C,YAAa,KACbC,YAAa,KACbC,YAAa,KACbC,kBAAmB,KACnBpC,kBAAmB,KACnBE,SAAU,KACVI,aAAc,KACd+B,WAAY,KAKd/mC,MAAKuxB,KAAO,SAASyV,GAEnBhD,EAAMO,gBAAkByC,EACxBhD,EAAM0C,cACN1C,EAAMC,UAAYD,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GAAGzkB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GAC/F4G,EAAMU,kBAAoBV,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GAAGzkB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GACvG4G,EAAM2C,YAAc3C,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GACpE4G,EAAMY,SAAWZ,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GACjE4G,EAAMgB,aAAehB,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GACrE4G,EAAM+C,WAAa/C,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,EAGnE,KAAK,GADDzkB,GAAOqrB,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GAAGzkB,KACrDhY,EAAI,EAAGA,EAAIgY,EAAK3X,OAAQL,IAAK,CACpC,GAAI4iC,GAAW5qB,EAAKhY,GAAGsmC,MAAM,GAAG7J,SAAS,EACzC4G,GAAM0C,WAAWnD,EAAS97B,OAAS87B,EAGrCS,EAAM4C,YAAc5C,EAAM0C,WAAWhwB,EAAUmI,KAC/CmlB,EAAMkD,eAAiBlD,EAAM0C,WAAWhwB,EAAUqI,OAClDilB,EAAM6C,YAAc,KACpB7C,EAAM8C,kBAAoB9C,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAE9DT,EAAgB,GAAItB,GAAclB,EAAMO,gBAAgBvO,WAAYgO,EAAMO,gBAAgB5rB,KAAK,GAAGsuB,MAAM,GAAG7J,SAAS,GAAI4G,EAAM+C,YAE9HvD,IACAc,KAGFtkC,KAAKmnC,kBAAoB,SAASC,GAC5BpoB,EAAS/Z,OAASmiC,IACpBpoB,EAAWtI,EAAUmJ,UAAU7b,IAAIojC,GACnCrnC,EAAK6jC,+BACL7jC,EAAK0kC,cAAc,qBA0IvBzkC,KAAK2kC,eAAiB,WACpBX,EAAMC,UAAUx8B,MAAQ,GACxB1H,EAAK0kC,iBAGPzkC,KAAK4jC,6BAA+B,WAC9B5kB,EAASM,iBACXrO,EAAM6nB,iBAAiBkL,EAAM8C,kBAAmB,QAAS/mC,EAAKsnC,qBAC9DC,EAASnS,YAAY6O,EAAM8C,kBAAmB,wBAE9C71B,EAAMioB,oBAAoB8K,EAAM8C,kBAAmB,QAAS/mC,EAAKsnC,qBACjEC,EAAShS,SAAS0O,EAAM8C,kBAAmB,wBAI/C9mC,KAAK8jC,wBAA0B,WAC7BE,EAAM8C,kBAAkBzR,UAAY2O,EAAM8C,kBAAkBzR,UAAUP,QAAQ,qBAAsB,IAChG+O,EACFyD,EAAShS,SAAS0O,EAAM8C,kBAAmB,sBAE3CQ,EAASnS,YAAY6O,EAAM8C,kBAAmB,uBAIlD9mC,KAAKqnC,oBAAsB,WACzBxD,GAAeA,EACf9jC,EAAK+jC,0BACL/jC,EAAK0kC,cAAc,qBAGrBzkC,KAAKwkC,aAAe,SAAStkC,GAC3B,GAAI+F,GAAS/F,EAAE+F,QAAU/F,EAAE69B,UACvB93B,IAAUA,EAAOjB,MAAwB,aAAhBiB,EAAOjB,OAC9BiB,GAAU+9B,EAAM4C,YAClB7mC,EAAKqkC,kBACH5xB,OAAQwxB,EAAM4C,YAAYW,UAG5BxnC,EAAKskC,sBAKXrkC,KAAKkkC,gBAAkB,SAASllB,EAAUC,GACxC,GAAIuoB,IAAiBvoB,EACjBwoB,EAASzoB,EAASM,iBAAmBqkB,EAAeE,EAAc5kB,EAAOhO,EAAMqnB,YAAYrZ,GAAQA,CACvGqkB,GAAgBU,EAAM4C,YAAaY,EACnC,KAAK,GAAI7mC,GAAI,EAAGA,EAAIyiC,EAAU5wB,OAAOxR,OAAQL,IAAK,CAChD,GAAIoP,GAAMqzB,EAAU5wB,OAAO7R,GACvB4iC,EAAkB,MAAPxzB,EAAci0B,EAAM0C,WAAW32B,GAAOi0B,EAAMkD,eACvDtxB,GAAW+tB,GAAgB3kB,EAAS3O,KAAKN,EAAK03B,EAClDnE,GAAgBC,EAAU3tB,GAC1B2tB,EAASgE,QAAU3xB,IAIvB5V,KAAKykC,cAAgB,SAASvkC,GAC5B,GAAIogB,IAAU0jB,EAAMC,UAAUx8B,OAAS,IAAI4iB,MAC3C,IAAU,oBAANnqB,GAAiC,qBAANA,GAA4BogB,GAAUA,GAAUyjB,EAAgB,CAC7FA,EAAiBzjB,CAEjB,IAAIonB,GAAuB/D,CAC3BA,GAA0B,KAAXrjB,EAEXqjB,IAAiB+D,IACnBvD,EAAqBpkC,EAAK+kC,qBAIlB,oBAAN5kC,GAA2ByjC,IAC7B5jC,EAAKmkC,gBAAgBllB,EAAUsB,IAG5BqjB,GAAgB+D,GACnB3nC,EAAKqkC,iBAAiBD,GAGxBpkC,EAAKskC,sBAITrkC,KAAK8kC,iBAAmB,WACtB,GAAKnB,GAAiBK,EAAM4C,YAAYe,cAKjC,CACL,GAAIzoB,GACAve,EAAGoP,EAAKwzB,EACRqE,EAAc,EAChBC,EAAe,CAEjB,KAAKlnC,EAAI,EAAGA,EAAIyiC,EAAU5wB,OAAOxR,OAAQL,IACvCoP,EAAMqzB,EAAU5wB,OAAO7R,GACvB4iC,EAAkB,MAAPxzB,EAAci0B,EAAM0C,WAAW32B,GAAOi0B,EAAMkD,eACnD5D,EAAgBC,KAClBqE,IACIrE,EAASgE,SACXM,IAKN,IAAIC,IAAmB,CAEvB,IAAqB,IAAjBD,EACF3oB,EAAcxI,EAAUoI,SACnB,IAAI+oB,GAAgBD,EACzB1oB,EAAcxI,EAAUmI,QAKxB,KAHAK,KACA4oB,EAAmBD,EAAeD,EAAc,EAAI,EAE/CjnC,EAAI,EAAGA,EAAIyiC,EAAU5wB,OAAOxR,OAAQL,IACvCoP,EAAMqzB,EAAU5wB,OAAO7R,GACvB4iC,EAAkB,MAAPxzB,EAAci0B,EAAM0C,WAAW32B,GAAOi0B,EAAMkD,eACnD5D,EAAgBC,MACbuE,GAAoBvE,EAASgE,SAAWO,IAAqBvE,EAASgE,UACzEroB,EAAYxa,KAAKqL,EAKzB,QACEyC,OAAQ0M,EACRwkB,UAAWoE,GA3Cb,OACEt1B,OAAQwxB,EAAM4C,YAAYW,QAAU7wB,EAAUmI,IAAMnI,EAAUoI,KAC9D4kB,WAAW,IA8CjB1jC,KAAKokC,iBAAmB,SAAS2D,GAG/B,IAAK,GAFDv1B,GAASu1B,EAAcA,EAAYv1B,OAAS,KAC5Cw1B,EAAa/2B,EAAM7I,QAAQoK,GAAU,KAAiB,MAAVA,GAAkBA,IAAWkE,EAAUmI,KAAM,EAAOrM,IAAWkE,EAAUoI,MAAO,IAAUtM,EACjI7R,EAAI,EAAGA,EAAIyiC,EAAU5wB,OAAOxR,OAAQL,IAAK,CAChD,GAAIoP,GAAMqzB,EAAU5wB,OAAO7R,GACvB4iC,EAAkB,MAAPxzB,EAAci0B,EAAM0C,WAAW32B,GAAOi0B,EAAMkD,cAC3D,IAAI5D,EAAgBC,GAClB,GAAkB,MAAdyE,EACFzE,EAASgE,QAAUS,MACd,CACL,GAAIC,GAAYz1B,EAAO6F,QAAQtI,IAAQ,CACvCwzB,GAASgE,QAAUQ,EAAYrE,WAAauE,EAAYA,KAMhEjoC,KAAKqkC,kBAAoB,WACvB,IAAKV,EAAc,CAEjB,IAAK,GADDqE,GAAa,KACRrnC,EAAI,EAAGA,EAAIyiC,EAAU5wB,OAAOxR,OAAQL,IAAK,CAChD,GAAIoP,GAAMqzB,EAAU5wB,OAAO7R,GACvB4iC,EAAkB,MAAPxzB,EAAci0B,EAAM0C,WAAW32B,GAAOi0B,EAAMkD,cAC3D,IAAkB,MAAdc,EACFA,EAAazE,EAASgE,YAEtB,IAAIS,IAAezE,EAASgE,QAAS,CACnCS,EAAavB,CACb,QAKFuB,IAAevB,GACjBzC,EAAM4C,YAAYe,eAAgB,EAClC3D,EAAM4C,YAAYW,SAAU,IAE5BvD,EAAM4C,YAAYe,eAAgB,EAClC3D,EAAM4C,YAAYW,QAAUS,KA9lBpC,GAAIhX,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnBgnC,EAAWhnC,EAAQ,4BACnB+P,EAAQ/P,EAAQ,gBAChBwV,EAAYxV,EAAQ,oBACpBomC,EAAWpmC,EAAQ,mBAErBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbnf,YAAa,KACb3J,OAAQ,KACR21B,cAAe,KACf5M,gBAAiB,WAEf,MADAv7B,MAAKmc,YAAcnc,KAAKszB,MAAMuI,eAAe1f,gBAG/C8oB,QAAS,WACP,GAAI1a,GAAYwG,EAASyL,YAAYx8B,MAAMg2B,UAC3CjF,GAASiN,uBAAuBzT,GAChCA,EAAUyL,WAAWyB,YAAYlN,IAEnCwa,SAAU,SAAkB/lB,EAAUC,EAAMC,EAAaC,GACvDnf,KAAKszB,MAAMuI,eAAe1Y,YAAYnjB,KAAKszB,MAAM7hB,MAAOuN,EAAUC,EAAMC,EAAaC,GACrFnf,KAAKilC,WAEPmD,YAAa,SAAqBloC,GAGhC,IAFA,GAAIqqB,GAAYwG,EAASyL,YAAYx8B,MAAMg2B,WACvC/vB,EAAS/F,EAAE+F,QAAU/F,EAAE69B,WACV,MAAV93B,GAAgB,CACrB,GAAIA,GAAUskB,EACZ,OAAO,CAETtkB,GAASA,EAAO+vB,WAGlBh2B,KAAKilC,WAEPoD,aAAc,SAAsBnoC,GAGlC,IAFA,GAAIooC,GAActoC,KAAKkiC,KAAKoG,YACxBriC,EAAS/F,EAAE+F,QAAU/F,EAAE69B,WACV,MAAV93B,GAAgB,CACrB,GAAIA,GAAUqiC,EAKZ,YAJIA,EAAYC,cAAgBD,EAAY5K,eAC1CzsB,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,IAIzB+F,GAASA,EAAO+vB,WAGlBh2B,KAAKilC,WAEPuD,mBAAoB,WAClBv3B,EAAM6nB,iBAAiBnB,SAAU,YAAa33B,KAAKooC,aACnDn3B,EAAM6nB,iBAAiBnB,SAAU,QAAS33B,KAAKqoC,cAC/Cp3B,EAAM6nB,iBAAiBj5B,OAAQ,SAAUG,KAAKilC,UAEhDvI,kBAAmB,WACjB18B,KAAKmoC,cAAc5W,KAAKR,EAASyL,YAAYx8B,QAE/CkhC,qBAAsB,WACpBjwB,EAAMioB,oBAAoBvB,SAAU,YAAa33B,KAAKooC,aACtDn3B,EAAMioB,oBAAoBvB,SAAU,QAAS33B,KAAKqoC,cAClDp3B,EAAMioB,oBAAoBr5B,OAAQ,SAAUG,KAAKilC,UAEnD7S,OAAQ,WAMN,QAASqW,GAAehhC,EAAOihC,GAC7B,MAAOhC,GAAWhiC,KAAKssB,EAAM4G,cAC3B,MACErzB,IAAKkD,GAEPupB,EAAM4G,cACJ,MACEvC,UAAW,eAEbrE,EAAM4G,cAAc,SAClB5yB,KAAM,WACNyC,MAAOA,EACPkhC,eAAgB,aAGpB3X,EAAM4G,cACJ,MACEvC,UAAW,WACXnQ,MAAOwjB,GAAQjhC,GAEjBihC,GAAQjhC,KAzBd,GAAIi/B,KAEJ1mC,MAAKmoC,cAAgB,GAAIhF,GAAcnjC,KAAMA,KAAKmc,YAAY5K,MAAMuS,eAAe9jB,KAAKszB,MAAM7hB,QAC9FzR,KAAKwS,OAASxS,KAAKmc,YAAY5K,MAAM+R,eAAetjB,KAAKszB,MAAM7hB,OA2B/Dg3B,EAAe/xB,EAAUmI,IAAK,aAE9B,KAAK,GAAIle,GAAI,EAAGA,EAAIX,KAAKwS,OAAOxR,OAAQL,IAChB,MAAlBX,KAAKwS,OAAO7R,GACd8nC,EAAezoC,KAAKwS,OAAO7R,IAE3B8nC,EAAe/xB,EAAUqI,MAAO,UAIpC,IAAI6pB,GAAc5oC,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAOmF,MAAM0S,mBAAmBE,UAC9E4I,EAAQvzB,KAAKszB,MAAMuI,eAAerI,UAElCqV,EAAgB7oC,KAAKmc,YAAY5K,MAAMuS,eAAe9jB,KAAKszB,MAAM7hB,MAErE,OAAOuf,GAAM4G,cACX,SACEvC,UAAW,cACX9B,MAAOA,GAETvC,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,MACEvC,UAAW,cAEbrE,EAAM4G,cAAcsQ,GAClB11B,QAASkE,EAAUmJ,UAAUC,MAAM7a,KAAMyR,EAAUmJ,UAAUE,SAAS9a,KAAMyR,EAAUmJ,UAAUG,GAAG/a,KAAMyR,EAAUmJ,UAAUI,IAAIhb,KAAMyR,EAAUmJ,UAAUK,GAAGjb,KAAMyR,EAAUmJ,UAAUM,IAAIlb,KAAMyR,EAAUmJ,UAAUO,GAAGnb,KAAMyR,EAAUmJ,UAAUQ,IAAIpb,MACvPg+B,cAAe4F,GAAiBA,EAAc7pB,SAAW6pB,EAAc7pB,SAAS/Z,KAAOyR,EAAUmJ,UAAUC,MAAM7a,KACjH49B,eAAgB7iC,KAAKmoC,cAAchB,qBAGvCnW,EAAM4G,cACJ,MACEvC,UAAW,cACXnQ,MAAO,sCAET,MAEF8L,EAAM4G,cACJ,MACEvC,UAAW,eAEbrE,EAAM4G,cACJ,SACErE,OACE3b,MAAO,SAGXoZ,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc,SAClB5yB,KAAM,OACN8jC,YAAa,YAGjB9X,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,OACEvC,UAAW,gBACX4I,QAASj+B,KAAK+oC,aAEhB,WAQd/X,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,MACEoR,QAAS,IACT3T,UAAW,iBAEbrE,EAAM4G,cACJ,SACEvC,UAAW,gBACX2N,IAAK,eAEPhS,EAAM4G,cACJ,QACA,KACA8O,MAKR1V,EAAM4G,cACJ,MACEvC,UAAW,cAEbrE,EAAM4G,cACJ,MACEvC,UAAW,gBACX2T,QAAS,KAEXhY,EAAM4G,cAAc,SAClB5yB,KAAM,SACNqwB,UAAWuT,EACXnhC,MAAO,KACP8rB,OACE0V,QAAO,UAGXjY,EAAM4G,cAAc,SAClB5yB,KAAM,SACNqwB,UAAWuT,EACXnhC,MAAO,SACP8rB,OACE0V,QAAO,WAIbjY,EAAM4G,cACJ,MACEvC,UAAW,cAEbrE,EAAM4G,cAAc,MAAO,eA6XvCsR,mBAAoB,GACpBhL,eAAgB,GAChBiL,mBAAoB,GACpBC,2BAA4B,GAC5BrV,MAAS,QACTC,YAAa,cAEfqV,IAAK,SAASnoC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB+P,EAAQ/P,EAAQ,eAElBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAAIvZ,GAAO7Y,KAAKszB,MAAMza,KAClBgB,EAAU7Z,KAAKszB,MAAMzZ,QACrByvB,EAAetpC,KAAKszB,MAAMvb,MAAM+S,iBAEhCnS,IAEJ,IAAIkB,GAAWA,EAAQ7Y,OAAS,EAAG,CAEjC,IAAK,GADDuoC,MACKC,EAAI,EAAGA,EAAI3vB,EAAQ7Y,OAAQwoC,IAClCD,EAAU7kC,KAAKssB,EAAM4G,cACnB,MACErzB,IAAK,IAAMilC,GAEb3vB,EAAQ2vB,IAGZ7wB,GAAKjU,KAAKssB,EAAM4G,cACd,MACErzB,IAAK,KAEPglC,IAIJ,GAAI1wB,GAAQA,EAAK7X,OAAS,EACxB,IAAK,GAAIL,GAAI,EAAGA,EAAIkY,EAAK7X,OAAQL,IAAK,CACpC,GAAIqR,KACJ,IAAIf,EAAM7I,QAAQyQ,EAAKlY,IACrB,IAAK,GAAIkb,GAAI,EAAGA,EAAIhD,EAAKlY,GAAGK,OAAQ6a,IAClC7J,EAAItN,KAAKssB,EAAM4G,cACb,MACErzB,IAAK5D,EAAI,GAAKkb,GAEhBhD,EAAKlY,GAAGkb,SAIZ,KAAK,GAAI6a,KAAQ7d,GAAKlY,GAChBkY,EAAKlY,GAAG0G,eAAeqvB,IACzB1kB,EAAItN,KAAKssB,EAAM4G,cACb,MACErzB,IAAK5D,EAAI,GAAK+1B,GAEhB7d,EAAKlY,GAAG+1B,IAKhB/d,GAAKjU,KAAKssB,EAAM4G,cACd,MACErzB,IAAK5D,GAEPqR,IAKN,MAAOgf,GAAM4G,cACX,SACEvC,UAAWiU,EAAa9e,OAE1BwG,EAAM4G,cACJ,QACA,KACAjf,SAORulB,eAAgB,GAChBnK,MAAS,UAEX0V,IAAK,SAASvoC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnBwoC,EAAcxoC,EAAQ,+BACtB8/B,EAAc9/B,EAAQ,+BACtB+P,EAAQ/P,EAAQ,gBAChBoU,EAAMpU,EAAQ,cACdomC,EAAWpmC,EAAQ,oBACnByoC,EAAO,CAETlqC,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,cACbC,gBAAiB,WAIf,MAHAv7B,MAAK2pC,OAASA,GAIZC,KACElU,EAAG,EACHE,EAAG,GAELiU,UACEnU,EAAG,EACHE,EAAG,GAELkU,WAAW,EACXC,UAAU,IAGdC,kBAAmB,SAA2B9pC,GAE5C,GAAiB,IAAbA,EAAEw5B,OAAN,CAEA,GAAIuQ,GAAejqC,KAAKkiC,KAAK+H,aACzBC,EAAkB5C,EAAS/R,UAAU0U,GACrC1F,EAAkB5M,SAASC,cAAc,OAEzCuS,EAAqBnZ,EAAMgC,cAAc0W,GACzCU,EAAcD,GAChB14B,MAAOzR,KAAKszB,MAAM7hB,MAAMxM,KACxB42B,eAAgB77B,KAAKszB,MAAMuI,gBAG7B0I,GAAgBlP,UAAYr1B,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAOmF,MAAM8S,mBAAmBN,UAC5Fga,EAAgBhR,MAAMsC,IAAMqU,EAAgBtU,EAAI,KAChD2O,EAAgBhR,MAAMoC,KAAOuU,EAAgBxU,EAAI,KACjDiC,SAASvM,KAAKyM,YAAY0M,GAE1BxT,EAASqB,OAAOgY,EAAa7F,GAG7BtzB,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAEvBy8B,mBAAoB,WACd38B,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAO6E,gBACpCzX,KAAKupB,MAAMugB,UAIL9pC,KAAKupB,MAAMugB,YAEpB9I,EAAYxB,eAAex/B,MAC3BiR,EAAM6nB,iBAAiBnB,SAAU,YAAa33B,KAAKqqC,eALnDrJ,EAAYxB,eAAe,MAC3BvuB,EAAMioB,oBAAoBvB,SAAU,YAAa33B,KAAKqqC,gBAQ5D3N,kBAAmB,WACjB18B,KAAKszB,MAAMuI,eAAeyO,qBAAqBtqC,KAAKuqC,gBAEtDrJ,qBAAsB,WACpBlhC,KAAKszB,MAAMuI,eAAe2O,uBAAuBxqC,KAAKuqC,eACtDt5B,EAAMioB,oBAAoBvB,SAAU,YAAa33B,KAAKqqC,cAExDjC,YAAa,SAAqBloC,GAEhC,GAAiB,IAAbA,EAAEw5B,OAAN,CAEA,GAAIx5B,EAAEuqC,QACJzqC,KAAKszB,MAAMuI,eAAe1f,YAAYmQ,qBAAqBtsB,KAAKszB,MAAMre,QAASjV,KAAKszB,MAAM7hB,WACrF,CAEL,GAAIi5B,GAAUpD,EAAS/R,UAAUxE,EAASyL,YAAYx8B,OAClD2lC,EAAc10B,EAAM0oB,eAAez5B,EAGvCF,MAAK4uB,UACHkb,WAAW,EACXa,aACEjV,EAAGgV,EAAQhV,EAAIiQ,EAAY/L,MAC3BhE,EAAG8U,EAAQ9U,EAAI+P,EAAY9L,OAE7BgQ,UACEnU,EAAGiQ,EAAY/L,MACfhE,EAAG+P,EAAY9L,SAMrB5oB,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAEvB0qC,UAAW,SAAmB1qC,GAE5B,GAAI2qC,GAAY7qC,KAAKupB,MAAMwgB,QAE3B/pC,MAAK4uB,UACHkb,WAAW,EACXC,UAAU,EACVe,KAAM,KACNlB,KACElU,EAAG,EACHE,EAAG,KAIF11B,EAAEuqC,SAAYI,GAEjB7qC,KAAKszB,MAAMuI,eAAe3oB,KAAKlT,KAAKszB,MAAMre,QAASjV,KAAKszB,MAAM7hB,QAGlE44B,YAAa,SAAqBnqC,GAEhC,GAAKF,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAO6E,eAAkBzX,KAAKupB,MAAMugB,UAAzE,CAEA,GAAIgB,GAAO,KACPnF,EAAc10B,EAAM0oB,eAAez5B,EAKrC4qC,GAHG9qC,KAAKupB,MAAMwgB,SAGP/pC,KAAKupB,MAAMuhB,KAFXxD,EAASrR,QAAQlF,EAASyL,YAAYx8B,MAK/C,IAAI+qC,IACFrV,EAAGiQ,EAAY/L,MAAQ55B,KAAKupB,MAAMohB,YAAYjV,EAC9CE,EAAG+P,EAAY9L,MAAQ75B,KAAKupB,MAAMohB,YAAY/U,EAG3C51B,MAAKupB,MAAMwgB,UAAYgB,EAAOrV,GAAK11B,KAAKupB,MAAMqgB,IAAIlU,GAAKqV,EAAOnV,GAAK51B,KAAKupB,MAAMqgB,IAAIhU,IACrF51B,KAAK4uB,UACHmb,UAAU,EACVe,KAAMA,EACNlB,IAAKmB,IAGP/J,EAAYV,gBAGdrvB,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAEvBqqC,cAAe,WACbxZ,EAASyL,YAAYx8B,MAAMq1B,UAAYr1B,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAOmF,MAAM0S,mBAAmBC,aAEzG0H,OAAQ,WACN,GAAIryB,GAAOC,KACPgrC,GACFrV,KAAM51B,EAAKwpB,MAAMqgB,IAAIlU,EAAI,KACzBG,IAAK91B,EAAKwpB,MAAMqgB,IAAIhU,EAAI,KACxBpb,SAAUza,EAAKwpB,MAAMwgB,SAAW,QAAU,GAC1CkB,OAAQ,IAGNlrC,GAAKwpB,MAAMuhB,OACbE,EAASpzB,MAAQ7X,EAAKwpB,MAAMuhB,KAAKlzB,MAAQ,KAG3C,IAAIszB,GAAqD,QAAhCnrC,EAAKuzB,MAAM7hB,MAAMyB,KAAKC,MAAkB,WAE/B,SAAhCpT,EAAKuzB,MAAM7hB,MAAMyB,KAAKC,MAAmB,YAEzC,GACEg4B,GAAeprC,EAAKwpB,MAAMwgB,SAAW,GAAK,aAAe/pC,KAAKszB,MAAMuI,eAAetqB,MAAMwS,gBAAgB/jB,KAAKszB,MAAM7hB,MAAMxM,MAAQ,mBAAqB,IACvJmmC,EAAe,EASnB,OARIrrC,GAAKuzB,MAAMre,UAAYK,EAAIzB,KAAKvC,OAClC85B,EAAepa,EAAM4G,cACnB,QACA,KACA,KAAO73B,EAAKuzB,MAAM7hB,MAAMmD,kBAAoB,MAIzCoc,EAAM4G,cACX,OACErzB,IAAKxE,EAAKuzB,MAAM7hB,MAAMxM,KACtBowB,UAAWr1B,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAOmF,MAAM0S,mBAAmBC,YAC3E0d,YAAapoC,KAAKooC,YAClBwC,UAAW5qC,KAAK4qC,UAChBrX,MAAOyX,GAETha,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,MACEvC,UAAW,WAEbt1B,EAAKuzB,MAAM7hB,MAAMkE,QACjBy1B,GAEFpa,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc,OAClBvC,UAAW,kBAAoB6V,KAGnCla,EAAM4G,cACJ,MACEvC,UAAW,UAEbrE,EAAM4G,cAAc,OAClBoL,IAAK,eACL3N,UAAW8V,EACX/C,YAAaroC,EAAKwpB,MAAMwgB,SAAW,KAAO/pC,KAAKgqC,8BAW/DrI,aAAc,GACdzD,eAAgB,GAChBiL,mBAAoB,GACpB5H,8BAA+B,GAC/B8J,8BAA+B,GAC/BtX,MAAS,QACTC,YAAa,cAEfsX,IAAK,SAASpqC,EAASzB,EAAQD,GA+L7B,QAAS+rC,GAAaC,GACpB,GAAIhZ,GAAOgZ,EAAUhZ,KACjB4C,EAAY5C,EAAK/D,QACW,yBAAlB+D,EAAKhE,QA0BnB,OAxBKgE,GAAK5c,YACRwf,GAAa,gBAGX5C,EAAKxtB,OAAS+W,EAAUoC,WAAWuO,WAAa8F,EAAK7F,WACvDyI,GAAa,kBAGX5C,EAAKxtB,OAAS+W,EAAUoC,WAAWgQ,cACd,IAAnBqE,EAAKvgB,IAAIG,MACXgjB,GAAa,mBACJ5C,EAAKvgB,IAAIG,MAAQ,IAC1BgjB,GAAa,mBAIboW,EAAUC,WACZrW,GAAa,KAAyB,4BAAlB5C,EAAKhE,SAAyC,OAAS,UAAY,aAGrFgd,EAAUE,UACZtW,GAAa,iBAGRA,EA1NT,GAAIpE,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnB6a,EAAY7a,EAAQ,oBACpBomC,EAAWpmC,EAAQ,oBACnByqC,EAAe,KACfC,EAAc,IAEhBnsC,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbzO,OAAQ,WACN7sB,KAAKszB,MAAMuI,eAAe1f,YAAYoW,UAAUvyB,KAAKszB,MAAMd,OAE7D5F,SAAU,WACR5sB,KAAKszB,MAAMuI,eAAe1f,YAAYsW,YAAYzyB,KAAKszB,MAAMd,OAE/DqZ,gBAAiB,WACf,GAAIC,GAAO/a,EAASyL,YAAYx8B,MAC5BwyB,EAAOxyB,KAAKszB,MAAMd,IAGtB,IAFAsZ,EAAKC,MAAQD,EAAKC,UAEbvZ,EAAK5c,UAGH,CACL,GAAIo2B,GAAkBhsC,KAAKkiC,KAAK+J,YAE5BC,KACAC,EAAiC,MAAhBR,EACjBS,GAAiBpsC,KAAKszB,MAAMmY,UAA2B,MAAfG,EACxClD,EAAOoD,EAAKlJ,aAAekJ,EAAKO,SAUpC,IARIF,GACFD,EAASxnC,KAAK,gBAGZ0nC,GACFF,EAASxnC,KAAK,qBAGZwnC,EAASlrC,OAAS,EAAG,CACvB,GAAIsrC,GAAYhF,EAASlR,SAAS0V,EAAMI,GAAU,EAE9CC,KACFR,EAAe9f,WAAWygB,EAAU,KAGlCF,IACFR,EAAc/f,WAAWygB,EAAUH,EAAiB,EAAI,KAI5D7E,EAASnS,YAAY2W,EAAM,eAE3BA,EAAKC,MAAMQ,UAAW,EAClB7D,GAAQoD,EAAKC,MAAMS,WAAcV,EAAKC,MAAMU,aAC9CX,EAAKC,MAAMS,UAAY9D,EACvBoD,EAAKC,MAAMU,WAAanF,EAASrR,QAAQ+V,GAAiBp0B,OAE5Dk0B,EAAKC,MAAMW,SAAW1sC,KAAKszB,MAAMd,KAAKnU,OAAM,IAAS,EACrDytB,EAAKC,MAAMY,SAAW3sC,KAAKszB,MAAMd,KAAKlU,OAAM,IAAS,EACrDwtB,EAAKC,MAAMJ,aAAeA,EAC1BG,EAAKC,MAAMa,cAAgBjB,EAC3BG,EAAKC,MAAMc,iBAAmB7sC,KAAKszB,MAAMmY,SAAW,EAAIG,EACxDE,EAAKC,MAAMe,kBAAoB,MAzC/BhB,GAAKC,MAAMQ,UAAW,GA4C1B7P,kBAAmB,WACjB18B,KAAK6rC,mBAEPlP,mBAAoB,WAClB38B,KAAK6rC,mBAEPkB,sBAAuB,SAA+BC,EAAWC,GAC/D,QAAID,EAAUxa,MAAQwa,EAAUxa,MAAQxyB,KAAKszB,MAAMd,OAASxyB,KAAKktC,sBAAwBF,EAAUxa,KAAK5c,YAK1Gs3B,qBAAqB,EACrB9a,OAAQ,WACN,GAGI3qB,GACA0lC,EAJAptC,EAAOC,KACPwyB,EAAOxyB,KAAKszB,MAAMd,KAClB4a,KAGAC,GAAe,CAInB,QAFArtC,KAAKktC,oBAAsB1a,EAAK5c,UAExB4c,EAAKhE,UACX,IAAK,2BACL,IAAK,8BACH,GAAI8e,GAAY9a,EAAKxtB,OAAS+W,EAAUoC,WAAW6Q,SAAWwD,EAAKvgB,IAAIR,MAAMkD,SAASiB,SAAW4c,EAAKvgB,IAAIR,MAAMkD,SAASkB,YACrH03B,EAAa/a,EAAKxtB,OAAS+W,EAAUoC,WAAWuO,YAAc8F,EAAK7F,QACnE2gB,IAAaC,GACfF,GAAe,EAEfD,EAAW1oC,KAAKssB,EAAM4G,cACpB,SACErzB,IAAK,eACLy+B,IAAK,eAEPhS,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,MACEvC,UAAW,eAEbrE,EAAM4G,cAAc,OAClBvC,UAAW,gBAAkBiY,EAAY,OAAS,SAClDrP,QAASqP,EAAYttC,KAAK4sB,SAAW5sB,KAAK6sB,UAG9CmE,EAAM4G,cACJ,MACEvC,UAAW,WAEbrE,EAAM4G,cAAc,OAClBkL,yBACEC,OAAQvQ,EAAK/qB,OAAS,kBAQlCA,GAAS+qB,EAAK/qB,OAAS,WAAa+qB,EAAKxtB,OAAS+W,EAAUoC,WAAWuO,UAAY,SAAW,GAEhG,MACF,KAAK,2BACHjlB,EAAQ+qB,EAAK/qB,MAAMkO,OACnB,MACF,KAAK,0BACHlO,EAAQ+qB,EAAKjjB,WAAaijB,EAAKjjB,UAAUuF,WAAa0d,EAAKjjB,UAAUuF,aAAa0d,EAAK/qB,OAAS+qB,EAAK/qB,MACrG0lC,EAAY,WACVptC,EAAKuzB,MAAMuI,eAAe1f,YAAY+W,UAAUV,EAAMzyB,EAAKuzB,MAAMuI,eAAe5wB,KAOtF,IAAKoiC,EAAc,CACjB,GAAIG,EACJ,QAAQhb,EAAKhE,UACX,IAAK,0BACHgf,EAAkB,WAClB,MACF,SACuB,4BAAjBhb,EAAKhE,UAA0CgE,EAAKxtB,OAAS+W,EAAUoC,WAAWgQ,cACpFqf,EAAkB,WAGxBJ,EAAW1oC,KAAKssB,EAAM4G,cACpB,OACErzB,IAAK,aACLy+B,IAAK,cACL3N,UAAWmY,GAEbxc,EAAM4G,cAAc,OAClBkL,yBACEC,OAAQt7B,GAAS,cAMzB,MAAOupB,GAAM4G,cACX,MACEvC,UAAWkW,EAAavrC,KAAKszB,OAC7Bma,cAAeN,EACfnE,QAASxW,EAAKnU,QACdqvB,QAASlb,EAAKlU,SAEhB0S,EAAM4G,cACJ,MACA,KACAwV,SAuCRO,mBAAoB,GACpBxE,mBAAoB,GACpBpV,MAAS,QACTC,YAAa,cAEf4Z,IAAK,SAAS1sC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnB8/B,EAAc9/B,EAAQ,+BACtB2sC,EAAgB3sC,EAAQ,4CAExB4sC,GADU5sC,EAAQ,2BACHA,EAAQ,4CACvB6sC,EAAgB7sC,EAAQ,4CACxB8sC,EAAa9sC,EAAQ,yCACrB+sC,EAAQ/sC,EAAQ,yBAChBomC,EAAWpmC,EAAQ,oBACnBiyB,EAAU,EACV+a,IAEFzuC,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbrwB,GAAIkoB,IACJ5hB,MAAO,KACP4K,YAAa,KACbqX,UAAW,KACX+H,gBAAiB,WAQf,MAPAyF,GAAYzP,KAAKvxB,MAEjBkuC,EAAqBluC,KAAKiL,OAC1BjL,KAAKsqC,qBAAqBtqC,KAAKuqC,eAE/BvqC,KAAKmc,YAAcnc,KAAKszB,MAAMnX,YAC9Bnc,KAAKuR,MAAQvR,KAAKmc,YAAY5K,UAGhC2B,KAAM,SAAc+B,EAASxD,GAC3BzR,KAAKmc,YAAYjJ,KAAK+B,EAASxD,IAEjCkuB,WAAY,SAAoBjG,EAAQ/G,EAAYnY,GAClDxa,KAAKmc,YAAY9B,UAAUqf,EAAOpG,MAAM7hB,MAAMxM,KAAMy0B,EAAOpG,MAAMre,QAAS0d,EAAYnY,IAExF2I,YAAa,SAAqB9L,EAAW2H,EAAUC,EAAMC,EAAaC,GACxEnf,KAAKmc,YAAYgH,YAAY9L,EAAW2H,EAAUC,EAAMC,EAAaC,IAEvEmrB,qBAAsB,SAA8B6D,GAC9CA,GACFD,EAAqBluC,KAAKiL,IAAIvG,KAAKypC,IAGvC3D,uBAAwB,SAAgC2D,GACtD,GAAIxtC,EACAwtC,KAAiBxtC,EAAIutC,EAAqBluC,KAAKiL,IAAIoN,QAAQ81B,KAAkB,GAC/ED,EAAqBluC,KAAKiL,IAAI+P,OAAOra,EAAG,IAG5CkyB,YAAa,SAAqBpa,GAChC,GAAIzY,KAAKmc,YAAY5K,MAAMqB,OAAO4F,SAASC,GAEzC,IAAK,GAAI9X,GAAI,EAAGA,EAAIutC,EAAqBluC,KAAKiL,IAAIjK,OAAQL,IACxDutC,EAAqBluC,KAAKiL,IAAItK,MAIpC4pC,cAAe,WACb,GAAI6D,GAAWrd,EAASyL,YAAYx8B,MAChCgrB,EAAUhrB,KAAKmc,YAAY5K,MAAMqB,OAAOmF,MAAMuS,iBAClD8jB,GAAS/Y,UAAYrK,EAAQT,UAC7B6jB,EAAShR,SAAS,GAAG/H,UAAYrK,EAAQR,OAE3CmS,mBAAoB,WAClB38B,KAAKquC,qBAEP3R,kBAAmB,WACjB,GAAI4R,GAAYhH,EAASlR,SAASrF,EAASyL,YAAYx8B,OAAQ,cAAe,cAAc,EAC5FA,MAAKwzB,WACH2I,WAAYmS,EAAU,GACtBlS,SAAUkS,EAAU,IAGtBtuC,KAAKquC,qBAEPA,kBAAmB,WACjB,GAAInS,GAAa2R,EAAcQ,kBAAkBruC,KACjDk8B,GAAWC,WAAan8B,KAAKwzB,UAAU2I,WACvCD,EAAWE,SAAWp8B,KAAKwzB,UAAU4I,SAErCp8B,KAAKkiC,KAAK3F,MAAM3N,UACd4M,WAAW,EACXU,WAAYA,KAGhB9J,OAAQ,WAEN,GAAIryB,GAAOC,KAEP4S,EAAS5S,KAAKmc,YAAY5K,MAAMqB,OAChCoY,EAAUpY,EAAOmF,MAAMuS,kBAEvBikB,IAQJ,OAPI37B,GAAOgF,QACT22B,EAAS32B,MAAQhF,EAAOgF,OAEtBhF,EAAOiF,SACT02B,EAAS12B,OAASjF,EAAOiF,QAGpBmZ,EAAM4G,cACX,OACEvC,UAAWrK,EAAQT,UACnBgJ,MAAOgb,EACPvL,IAAK,SAEPhS,EAAM4G,cACJ,SACE3sB,GAAI,OAASlL,EAAKkL,GAClB+3B,IAAK,oBACL3N,UAAWrK,EAAQR,OAErBwG,EAAM4G,cACJ,WACA,KACA5G,EAAM4G,cAAc,OAClBoL,IAAK,YAEPhS,EAAM4G,cAAc,OAClBoL,IAAK,aAGThS,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,MACEoL,IAAK,gBAEPhS,EAAM4G,cACJ,MACEoR,QAAS,KAEXhY,EAAM4G,cAAckW,GAClBjS,eAAgB97B,MAItBixB,EAAM4G,cACJ,MACEoL,IAAK,cAEPhS,EAAM4G,cAAc,KAAM,MAC1B5G,EAAM4G,cACJ,MACErE,OACEib,QAAS,wBAGbxd,EAAM4G,cAAcmW,GAClBlS,eAAgB97B,MAItBixB,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,MACErE,OACE/Y,SAAU,aAGdwW,EAAM4G,cAAcoW,GAClBnS,eAAgB97B,EAChBijC,IAAK,gBAGThS,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAcqW,GAClBpS,eAAgB97B,EAChBiY,UAAWpF,EAAOoF,UAClBgrB,IAAK,oBAWrBmG,mBAAoB,GACpBsF,wBAAyB,GACzBlN,8BAA+B,GAC/BmN,2CAA4C,GAC5CC,wCAAyC,GACzCC,2CAA4C,GAC5CC,0CAA2C,GAC3CC,0BAA2B,GAC3B/a,MAAS,QACTC,YAAa,cAEf+a,IAAK,SAAS7tC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB8tC,EAAY9tC,EAAQ,6BACpBoU,EAAMpU,EAAQ,aAEhBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAMI6U,GANAlnC,EAAOC,KAIPivC,GAFgBjvC,KAAKszB,MAAMthB,IAAIhR,OAAS,EAChChB,KAAKszB,MAAMthB,IAAI,IACH,GACpBk9B,EAAcnvC,EAAKuzB,MAAM4b,YAGzBC,KAEAC,GAAY,CAwChB,OAtCAnI,GAAQjnC,KAAKszB,MAAMthB,IAAIyB,IAAI,SAAS+e,EAAMlpB,GAExC,GAAI+lC,IAAa,CAsBjB,OAjBI7c,GAAK5c,WAAas5B,IAChB1c,EAAKvgB,KACHugB,EAAKvgB,IAAI0B,QAA2DnQ,SAAjD0rC,EAAYI,aAAa9c,EAAKvgB,IAAIG,MAAQ,KAAqBogB,EAAKvgB,IAAI0B,QAAuDnQ,SAA7C0rC,EAAYI,aAAa9c,EAAKvgB,IAAIG,SAAyBogB,EAAKvgB,IAAI2B,OAAOD,QAAUu7B,EAAYI,aAAa9c,EAAKvgB,IAAIG,MAAQ,KAAOogB,EAAKvgB,IAAI2B,WACtPw7B,GAAY,EACZF,EAAYI,aAAa9c,EAAKvgB,IAAIG,OAASogB,EAAKvgB,KAExCi9B,EAAYI,aAAa,KACnCF,EAAYF,EAAYI,aAAa,IAAO,GAGzCL,GAAsBlvC,EAAKuzB,MAAMre,UAAYK,EAAIzB,KAAKvC,MAAQvR,EAAKuzB,MAAMre,UAAYK,EAAIzB,KAAKzC,SAAkD,IAAtC89B,EAAYK,wBAEzHF,EAAaJ,GAAoB,EACjCC,EAAYK,sBAAwB/c,EAAKlU,QAAU,IAIhD0S,EAAM4G,cAAcoX,GACzBzqC,IAAK+E,EACLkpB,KAAMA,EACNiZ,SAAU4D,EACV3D,QAAS0D,EACTvT,eAAgB97B,EAAKuzB,MAAMuI,mBAK3BqT,GAAeA,EAAYK,sBAAwB,IAAMN,GAC3DC,EAAYK,wBAGPve,EAAM4G,cACX,MACErE,MAAO4b,GAETlI,QAMNtF,aAAc,GACd6N,4BAA6B,GAC7Bzb,MAAS,UAEX0b,IAAK,SAASvuC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClBoU,EAAMpU,EAAQ,cACdwuC,EAAcxuC,EAAQ,+BACtByuC,EAAazuC,EAAQ,6BAEvBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAAIryB,GAAOC,KACP4S,EAAS5S,KAAKszB,MAAMuI,eAAe1f,YAAY5K,MAAMqB,OAErDg9B,EAAgBh9B,EAAOC,aAAaY,IAAI,SAAShC,EAAOnI,GAC1D,MAAO0nB,GAAM4G,cAAc8X,GACzBnrC,IAAKkN,EAAMxM,KACXwM,MAAOA,EACPwD,QAASK,EAAIzB,KAAKzC,QAClBoJ,SAAUlR,EACVuyB,eAAgB97B,EAAKuzB,MAAMuI,kBAI/B,OAAO7K,GAAM4G,cAAc+X,GACzBnzB,QAASozB,EACT36B,QAASK,EAAIzB,KAAKzC,eAMxBuwB,aAAc,GACdkO,6BAA8B,GAC9BC,8BAA+B,GAC/B/b,MAAS,UAEXgc,IAAK,SAAS7uC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClBoU,EAAMpU,EAAQ,cACd8uC,EAAW9uC,EAAQ,2BAErBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAAIryB,GAAOC,KACPmc,EAAcnc,KAAKszB,MAAMuI,eAAe1f,YACxC8zB,EAAmD,IAAvC9zB,EAAYvD,QAAQiB,QAAQ7Y,OAAe,GAAK,gBAE5DkuC,GACFK,sBAAuB,EACvBD,iBAGEvxB,EAAgB5B,EAAYvD,QAAQiB,QAAQpG,IAAI,SAAS81B,EAAWjgC,GACtE,MAAO0nB,GAAM4G,cAAcoY,GACzBzrC,IAAK+E,EACL0I,IAAKu3B,EACLt0B,QAASK,EAAIzB,KAAKzC,QAClByqB,eAAgB97B,EAAKuzB,MAAMuI,eAC3BqT,YAAaA,KAIjB,OAAOle,GAAM4G,cACX,OACEvC,UAAW,wBAA0B4a,EACrCC,QAASlwC,KAAKszB,MAAMuI,eAAeqU,SAErClf,EAAM4G,cACJ,SACEvC,UAAW,eAEbrE,EAAM4G,cAAc,WAAY,MAChC5G,EAAM4G,cACJ,QACA,KACA7Z,UAQV4jB,aAAc,GACdwO,2BAA4B,GAC5Bpc,MAAS,UAEXqc,IAAK,SAASlvC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClBoU,EAAMpU,EAAQ,cACd8uC,EAAW9uC,EAAQ,2BAErBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAAIryB,GAAOC,KACPmc,EAAcnc,KAAKszB,MAAMuI,eAAe1f,YACxC+yB,GACFK,sBAAuB,EACvBD,iBAGEe,EAAYl0B,EAAYsC,SAAShL,IAAI,SAAS+K,EAASlV,GACzD,MAAO0nB,GAAM4G,cAAcoY,GACzBzrC,IAAK+E,EACL0I,IAAKwM,EACLvJ,QAASK,EAAIzB,KAAKvC,KAClB49B,YAAaA,EACbrT,eAAgB97B,EAAKuzB,MAAMuI,kBAI/B,OAAO7K,GAAM4G,cACX,OACEvC,UAAW,kCACX6a,QAASlwC,KAAKszB,MAAMuI,eAAeqU,SAErClf,EAAM4G,cACJ,SACEvC,UAAW,eAEbrE,EAAM4G,cAAc,WAAY,MAChC5G,EAAM4G,cACJ,QACA,KACAyY,UAQV1O,aAAc,GACdwO,2BAA4B,GAC5Bpc,MAAS,UAEXuc,IAAK,SAASpvC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClBwuC,EAAcxuC,EAAQ,+BACtByuC,EAAazuC,EAAQ,8BACrBqvC,EAAqBrvC,EAAQ,sCAC7BoU,EAAMpU,EAAQ,aAEhBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAAIryB,GAAOC,KACP4S,EAAS5S,KAAKszB,MAAMuI,eAAe1f,YAAY5K,MAAMqB,OAErD49B,EAAa59B,EAAOE,UAAUW,IAAI,SAAShC,EAAOnI,GACpD,MAAO0nB,GAAM4G,cAAc8X,GACzBnrC,IAAKkN,EAAMxM,KACXwM,MAAOA,EACPwD,QAASK,EAAIzB,KAAKxC,KAClBmJ,SAAUlR,EACVuyB,eAAgB97B,EAAKuzB,MAAMuI,kBAI/B,OAAIjpB,GAAOoF,UAAUvB,QACZua,EAAM4G,cAAc2Y,GACzB/zB,QAASg0B,EACTv7B,QAASK,EAAIzB,KAAKxC,OAGb2f,EAAM4G,cAAc+X,GACzBnzB,QAASg0B,EACTv7B,QAASK,EAAIzB,KAAKxC,YAO1BswB,aAAc,GACdkO,6BAA8B,GAC9BY,qCAAsC,GACtCX,8BAA+B,GAC/B/b,MAAS,UAEX2c,IAAK,SAASxvC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnB8uC,EAAW9uC,EAAQ,4BACnBoU,EAAMpU,EAAQ,aAEhBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbqV,YAAa,SAAqBvZ,GAChC,GAAI0U,GAAO/a,EAASyL,YAAYx8B,MAC5Bq3B,EAAer3B,KAAKkiC,KAAK0O,QAC7B9E,GAAKvY,MAAMiE,YAAc,OAEzBH,EAAawZ,UAAY,EACzB,KAAK,GAAIlwC,GAAI,EAAGA,EAAIy2B,EAAOp2B,OAAQL,IAAK,CACtC,GAAI+2B,GAAMC,SAASC,cAAc,MACjCF,GAAInE,MAAM3b,MAAQwf,EAAOz2B,GAAK,EAAI,KAClC02B,EAAaQ,YAAYH,GAE3BoU,EAAKvY,MAAMiE,YAAc,SAE3BpF,OAAQ,WACN,GAAIryB,GAAOC,KACPmc,EAAcnc,KAAKszB,MAAMuI,eAAe1f,YACxC8zB,EAAgD,IAApC9zB,EAAYxD,KAAKkB,QAAQ7Y,OAAe,GAAK,aAEzDkuC,GACFK,sBAAuB,EACvBD,iBAGExxB,EAAa3B,EAAYxD,KAAKkB,QAAQpG,IAAI,SAAS81B,EAAWjgC,GAChE,MAAO0nB,GAAM4G,cAAcoY,GACzBzrC,IAAK+E,EACL0I,IAAKu3B,EACLt0B,QAASK,EAAIzB,KAAKxC,KAClB69B,YAAaA,EACbrT,eAAgB97B,EAAKuzB,MAAMuI,kBAI/B,OAAO7K,GAAM4G,cACX,OACEvC,UAAW,wBAA0B4a,EACrCC,QAASlwC,KAAKszB,MAAMuI,eAAeqU,SAErClf,EAAM4G,cACJ,SACEvC,UAAW,eAEbrE,EAAM4G,cAAc,YAClBoL,IAAK,aAEPhS,EAAM4G,cACJ,QACA,KACA9Z,UAQV6jB,aAAc,GACdwO,2BAA4B,GAC5Bpc,MAAS,QACTC,YAAa,cAEf8c,IAAK,SAAS5vC,EAASzB,EAAQD,GAuF7B,QAASuxC,GAAkBnR,EAAW0N,EAAW0D,GAC/C,GAEElG,GAFE/qC,EAAOC,KACT8rC,EAAO/a,EAASyL,YAAYoD,EAG9B5/B,MAAK8rC,KAAOwB,EAAYxB,EAAK1O,SAAS,GAAK0O,EAE3ChB,EAAOxD,EAASrR,QAAQj2B,KAAK8rC,MAC7B9rC,KAAKixC,EAAInG,EAAKlzB,MACd5X,KAAKwpC,EAAIsB,EAAKjzB,OAEd7X,KAAKkxC,SAAW,SAASC,EAAW1pC,GAClC1H,EAAK+rC,KAAKvY,MAAM4d,GAAa1pC,EAAQ,MAGvCzH,KAAKoxC,eAAiB,SAASD,EAAW1pC,GACxC1H,EAAK+rC,KAAK9V,WAAWzC,MAAM4d,GAAa1pC,EAAQ,MAGlDzH,KAAKqxC,iBAAmB,SAASC,GAO/B,IAAK,GANDvjC,IACF0C,OACA8gC,MAAO,GAIA5wC,EAAI,EAAGA,EAAIZ,EAAKyxC,UAAUxwC,OAAQL,IACzCoN,EAAO0C,IAAI/L,KAAKwC,KAAKuJ,IAAI1Q,EAAKyxC,UAAU7wC,GAAI2wC,EAAcE,UAAU7wC,KACpEoN,EAAOwjC,OAASxjC,EAAO0C,IAAI9P,EAG7B,OAAOoN,IAGT/N,KAAKyxC,WAAa,SAAShqC,GACrBA,EAAQ,IACV1H,EAAKkxC,GAAKxpC,EACV1H,EAAKyxC,UAAUzxC,EAAKyxC,UAAUxwC,OAAS,IAAMyG,IAI/B,UAAdupC,GAEFU,EAAmB1xC,MAIvB,QAAS0xC,GAAmBC,GAC1B,GAAIA,GAAaA,EAAU7F,KAAM,CAK/B,IAAK,GAHD8F,GAAMD,EAAU7F,KAChB0F,KAEK1/B,EAAW,EAAGA,EAAW8/B,EAAIj5B,KAAK3X,OAAQ8Q,IAAY,CAQ7D,IAAK,GANDkM,GAAU4zB,EAAIj5B,KAAK7G,GAEnB+/B,EAAa,EACbC,EAAY,KAGPC,EAAY,EAAGA,EAAY/zB,EAAQipB,MAAMjmC,OAAQ+wC,IAAa,CAErE,GAAIC,GAAWh0B,EAAQipB,MAAM8K,EAE7B,IAAIC,EAASjG,MAAMQ,SAQjB,IAAK,GALD0F,GAAY/qC,KAAK2vB,KAAKmb,EAASjG,MAAMU,WAAauF,EAASjG,MAAMW,SAAWsF,EAASjG,MAAMJ,aAAeqG,EAASjG,MAAMa,cAAgBoF,EAASjG,MAAMc,iBAAmBmF,EAASjG,MAAMe,mBAKrLoF,GAHMF,EAASjG,MAAMY,SAAW,GAAKqF,EAASjG,MAAMY,UAAYiF,EAAIj5B,KAAK3X,OAAS8Q,EAG1E,GAAGogC,EAAQF,EAASjG,MAAMW,SAAUwF,IAAS,CAM5D,IAFAJ,EAAYN,EAAUK,GAEfC,GAAaA,EAAUK,QAAU,GACtCL,EAAUK,UACVN,IACAC,EAAYN,EAAUK,EAGpBL,GAAUxwC,OAAS,EAAI6wC,EACzBL,EAAU9sC,MACRkT,MAAOq6B,IAEAA,EAAYT,EAAUK,GAAYj6B,QAC3C45B,EAAUK,GAAYj6B,MAAQq6B,GAGhCT,EAAUK,GAAYM,QAAUH,EAASjG,MAAMY,SAAW,EAG1DkF,KAON,IADAC,EAAYN,EAAUK,GACfC,GACDA,EAAUK,QAAU,GACtBL,EAAUK,UAEZN,IACAC,EAAYN,EAAUK,GAK1BF,EAAUV,EAAI,EACdU,EAAUH,UAAYA,EAAU/9B,IAAI,SAASilB,EAAMpvB,GAEjD,MADAqoC,GAAUV,GAAKvY,EAAK9gB,MACb8gB,EAAK9gB,SAzMlB,GAAImZ,GAAW7vB,EAAQ,aACrBomC,EAAWpmC,EAAQ,oBAEjB2sC,EAAgBpuC,EAAOD,SACzB6uC,kBAAmB,SAA2B9O,GAC5C,MAAIA,GAAUpjB,YAAY5K,MAAMqB,OAAOoF,UAAUvB,QACxCo3B,EAAcuE,4BAA4B7S,OAEjDsO,GAAcwE,4BAA4B9S,IAG9C6S,4BAA6B,SAAqC7S,GAChE,GAAI+S,GAAoB/S,EAAU2C,KAAKoQ,kBACrCC,EAAQ,GAAIxB,GAAkBxR,EAAU2C,KAAKqQ,OAC7CC,EAAU,GAAIzB,GAAkBxR,EAAU2C,KAAKuQ,cAC/CC,EAAQ,GAAI3B,GAAkBxR,EAAU2C,KAAKyQ,YAC7CC,EAAW,GAAI7B,GAAkBxR,EAAU2C,KAAKsO,YAEhDqC,GADQ,GAAI9B,GAAkBxR,EAAU2C,KAAK3F,OAChCr1B,KAAKuJ,IAAImiC,EAAS3B,EAAG,KAClC6B,EAAaP,EAAMtB,EAAI4B,EACvBE,EAAcxT,EAAUpjB,YAAY5K,MAAMqB,OAAOiF,OACjDm7B,EAAeD,EAAqBA,GAAeP,EAAQhJ,EAAIkJ,EAAMlJ,GAAxC,IAK/B,OAFAlC,GAASpQ,oBAAoBob,GAAoBO,EAAYC,KAG3Dl7B,MAAOk7B,EACPj7B,OAAQm7B,IAGZX,4BAA6B,SAAqC9S,GAEhE,GAAI+S,GAAoB/S,EAAU2C,KAAKoQ,kBACrCC,EAAQ,GAAIxB,GAAkBxR,EAAU2C,KAAKqQ,OAC7Cz6B,EAAU,GAAIi5B,GAAkBxR,EAAU2C,KAAKpqB,SAC/Cm7B,EAAc,GAAIlC,GAAkBxR,EAAU2C,KAAKgR,YAAY,EAAM,SACrEC,EAAc,GAAIpC,GAAkBxR,EAAU2C,KAAKpkB,YAAY,EAAM,SACrEs1B,EAAe,GAAIrC,GAAkBxR,EAAU2C,KAAKmO,WAAW,EAAM,SACrEmC,EAAU,GAAIzB,GAAkBxR,EAAU2C,KAAKuQ,cAC/CC,EAAQ,GAAI3B,GAAkBxR,EAAU2C,KAAKyQ,YAC7CC,EAAW,GAAI7B,GAAkBxR,EAAU2C,KAAKsO,YAAY,GAC5D6C,EAAU,GAAItC,GAAkBxR,EAAU2C,KAAKoR,qBAC/CC,EAAU,GAAIxC,GAAkBxR,EAAU2C,KAAKsR,mBAC/CC,EAAkBL,EAAa/B,iBAAiB4B,GAChDS,EAAgBxsC,KAAKuJ,IAAI0iC,EAAYlC,EAAG2B,EAAS3B,EAAG,IACpD0C,EAA0BzsC,KAAKsJ,IAAIijC,EAAgBlC,MAAQ,EAAGgB,EAAMtB,EAAIyC,EAAgBH,EAAQtC,GAChG8B,EAAcxT,EAAUpjB,YAAY5K,MAAMqB,OAAOiF,OACjD+7B,EAAsBb,EAAqBA,GAAej7B,EAAUA,EAAQ0xB,EAAI,GAAK,IAAMgJ,EAAQhJ,EAAIkJ,EAAMlJ,EAAIyJ,EAAYzJ,EAAI6J,EAAQ7J,GAArG,KACpCqK,EAAwBD,EAA4B1sC,KAAK2vB,KAAK3vB,KAAKsJ,IAAIojC,EAAoBR,EAAa5J,IAA3D,IAG/C2J,GAAY1B,WAAWiC,EAAgBP,EAAYlC,GAGnD3J,EAASpQ,oBAAoBkc,EAAatH,KAAM2H,EAAgBhjC,KAGhE62B,EAASpQ,oBAAoB+b,EAAYnH,KAAM2H,EAAgBhjC,KAG/D62B,EAASpQ,oBAAoBic,EAAYrH,KAAMqH,EAAY3B,WAE3D4B,EAAalC,SAAS,QAASuC,EAAgBlC,OAC/C0B,EAAY/B,SAAS,QAASuC,EAAgBlC,OAC9C4B,EAAYjC,SAAS,QAASwC,GAG9BN,EAAahC,eAAe,QAASuC,GACrCV,EAAY7B,eAAe,QAASuC,GAEhCE,IAEFT,EAAahC,eAAe,SAAUyC,GACtCV,EAAY/B,eAAe,SAAUyC,IAIvCvM,EAASpQ,oBAAoBob,GAAoBoB,EAAeC,EAAyBJ,EAAQtC,EAAG/pC,KAAKuJ,IAAI8hC,EAAMtB,GAAKyC,EAAgBC,EAA0BJ,EAAQtC,GAAI,KAE9K1R,EAAU2C,KAAKoR,oBAAoBtyB,UACnCue,EAAU2C,KAAKsR,kBAAkBxyB,cA4MrCmoB,mBAAoB,GACpBnV,YAAa,cAEf8f,IAAK,SAAS5yC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClBwuC,EAAcxuC,EAAQ,+BACtByuC,EAAazuC,EAAQ,8BACrBoU,EAAMpU,EAAQ,aAEhBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEblJ,OAAQ,WACN,GAGI2hB,GAHAh0C,EAAOC,KACP4S,EAAS5S,KAAKszB,MAAMuI,eAAe1f,YAAY5K,MAAMqB,MAGzD,IAAIA,EAAO6E,cAAe,CACxB,GAAIu8B,GAAgBphC,EAAOwG,kBAAkB3F,IAAI,SAAShC,EAAOnI,GAC/D,MAAO0nB,GAAM4G,cAAc8X,GACzBnrC,IAAKkN,EAAMxM,KACXwM,MAAOA,EACPwD,QAAS,KACTuF,SAAUlR,EACVuyB,eAAgB97B,EAAKuzB,MAAMuI,kBAG/BkY,GAAmB/iB,EAAM4G,cACvB,KACA,KACA5G,EAAM4G,cACJ,MACEvC,UAAW,mCAEbrE,EAAM4G,cACJ,MACA,KACA,WAGJ5G,EAAM4G,cACJ,MACEvC,UAAW,WAEbrE,EAAM4G,cAAc+X,GAClBnzB,QAASw3B,EACT/+B,QAAS,aAKf8+B,GAAmB,IAGrB,IAAIE,GAAcrhC,EAAOG,WAAWU,IAAI,SAAShC,EAAOnI,GACtD,MAAO0nB,GAAM4G,cAAc8X,GACzBnrC,IAAKkN,EAAMxM,KACXwM,MAAOA,EACPwD,QAASK,EAAIzB,KAAKvC,KAClBkJ,SAAUlR,EACVuyB,eAAgB97B,EAAKuzB,MAAMuI,mBAI3BqY,EAAiBljB,EAAM4G,cACzB,KACA,KACA5G,EAAM4G,cACJ,MACEvC,UAAW,2BAEbrE,EAAM4G,cACJ,MACA,KACA,SAGJ5G,EAAM4G,cACJ,MACEvC,UAAW,SAEbrE,EAAM4G,cAAc+X,GAClBnzB,QAASy3B,EACTh/B,QAASK,EAAIzB,KAAKvC,QAKxB,OAAO0f,GAAM4G,cACX,SACEvC,UAAW,6BAEbrE,EAAM4G,cACJ,QACA,KACAmc,EACAG,SAORvS,aAAc,GACdkO,6BAA8B,GAC9BC,8BAA+B,GAC/B/b,MAAS,UAEXogB,IAAK,SAASjzC,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnB8/B,EAAc9/B,EAAQ,+BACtB2sC,EAAgB3sC,EAAQ,4CACxBkzC,EAAUlzC,EAAQ,2BAClB4sC,EAAe5sC,EAAQ,2CACvB6sC,EAAgB7sC,EAAQ,4CACxB8sC,EAAa9sC,EAAQ,yCACrBmzC,EAAanzC,EAAQ,yCACrBozC,EAAgBpzC,EAAQ,4CACxBqzC,EAAYrzC,EAAQ,wCACpBszC,EAAatzC,EAAQ,8BACrBuzC,EAAsBD,EAAWC,oBACjCC,EAAoBF,EAAWE,kBAC/BzjC,EAAQ/P,EAAQ,gBAChBomC,EAAWpmC,EAAQ,oBACnBiyB,EAAU,EACV+a,IAEFzuC,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbrwB,GAAIkoB,IACJ5hB,MAAO,KACP4K,YAAa,KACbqX,UAAW,KACX+H,gBAAiB,WAQf,MAPAyF,GAAYzP,KAAKvxB,MAEjBkuC,EAAqBluC,KAAKiL,OAC1BjL,KAAKsqC,qBAAqBtqC,KAAKuqC,eAE/BvqC,KAAKmc,YAAcnc,KAAKszB,MAAMnX,YAC9Bnc,KAAKuR,MAAQvR,KAAKmc,YAAY5K,UAGhC2B,KAAM,SAAc+B,EAASxD,GAC3BzR,KAAKmc,YAAYjJ,KAAK+B,EAASxD,IAEjCkuB,WAAY,SAAoBjG,EAAQ/G,EAAYnY,GAClDxa,KAAKmc,YAAY9B,UAAUqf,EAAOpG,MAAM7hB,MAAMxM,KAAMy0B,EAAOpG,MAAMre,QAAS0d,EAAYnY,IAExFS,gBAAiB,SAAyBhG,GACxCjV,KAAKmc,YAAYlB,gBAAgBhG,IAEnCmG,iBAAkB,SAA0BnG,GAC1CjV,KAAKmc,YAAYf,iBAAiBnG,IAEpCkO,YAAa,SAAqB9L,EAAW2H,EAAUC,EAAMC,EAAaC,GACxEnf,KAAKmc,YAAYgH,YAAY9L,EAAW2H,EAAUC,EAAMC,EAAaC,IAEvEmrB,qBAAsB,SAA8B6D,GAC9CA,GACFD,EAAqBluC,KAAKiL,IAAIvG,KAAKypC,IAGvC3D,uBAAwB,SAAgC2D,GACtD,GAAIxtC,EACAwtC,KAAiBxtC,EAAIutC,EAAqBluC,KAAKiL,IAAIoN,QAAQ81B,KAAkB,GAC/ED,EAAqBluC,KAAKiL,IAAI+P,OAAOra,EAAG,IAG5CkyB,YAAa,SAAqBpa,GAChC,GAAIzY,KAAKmc,YAAY5K,MAAMqB,OAAO4F,SAASC,GAEzC,IAAK,GAAI9X,GAAI,EAAGA,EAAIutC,EAAqBluC,KAAKiL,IAAIjK,OAAQL,IACxDutC,EAAqBluC,KAAKiL,IAAItK,MAIpC4pC,cAAe,WACb,GAAI6D,GAAWrd,EAASyL,YAAYx8B,MAChCgrB,EAAUhrB,KAAKmc,YAAY5K,MAAMqB,OAAOmF,MAAMuS,iBAClD8jB,GAAS/Y,UAAYrK,EAAQT,UAC7B6jB,EAAShR,SAAS,GAAG/H,UAAYrK,EAAQR,OAE3CmS,mBAAoB,WAClB38B,KAAKquC,qBAEP3R,kBAAmB,WACjB,GAAI4R,GAAYhH,EAASlR,SAASrF,EAASyL,YAAYx8B,OAAQ,cAAe,cAAc,EAC5FA,MAAKwzB,WACH2I,WAAYmS,EAAU,GACtBlS,SAAUkS,EAAU,GAGtB,IAAIqG,GAAgB5jB,EAASyL,YAAYx8B,KAAKkiC,KAAKmO,WAC/CuE,EAAqBD,EAAcvX,SAAS,GAC5CyX,EAAiB9jB,EAASyL,YAAYx8B,KAAKkiC,KAAKgR,YAChD4B,EAAiB/jB,EAASyL,YAAYx8B,KAAKkiC,KAAKpkB,WAEpD9d,MAAKkiC,KAAKoR,oBAAoByB,gBAAgBJ,EAAe,SAASK,GACpE,GAAIC,GAAe/tC,KAAK2vB,KAAKme,GAAiB1N,EAASrR,QAAQ2e,GAAoBh9B,MAAQ0vB,EAASrR,QAAQ0e,GAAe/8B,OAC3Hi9B,GAAe9a,WAAakb,EAC5BN,EAAc5a,WAAakb,IAG7Bj1C,KAAKkiC,KAAKsR,kBAAkBuB,gBAAgBJ,EAAe,SAASK,GAClE,GAAIC,GAAe/tC,KAAK2vB,KAAKme,GAAiB1N,EAASrR,QAAQ2e,GAAoB/8B,OAASyvB,EAASrR,QAAQ0e,GAAe98B,QAC5Hi9B,GAAe5a,UAAY+a,EAC3BN,EAAcza,UAAY+a,IAG5Bj1C,KAAKquC,qBAEP6B,QAAS,SAAiBhwC,GACxB,GAAIu/B,GACAyV,EACAC,CAEAj1C,GAAEk1C,gBAAkB3V,EAAO1O,EAASyL,YAAYx8B,KAAKkiC,KAAKgR,cAC5DgC,EAAYl1C,KAAKkiC,KAAKoR,oBACtB6B,EAASj1C,EAAEm1C,QAAUn1C,EAAEo1C,QACdp1C,EAAEk1C,gBAAkB3V,EAAO1O,EAASyL,YAAYx8B,KAAKkiC,KAAKpkB,cAAgB5d,EAAEk1C,gBAAkB3V,EAAO1O,EAASyL,YAAYx8B,KAAKkiC,KAAKmO,cAC7I6E,EAAYl1C,KAAKkiC,KAAKsR,kBACtB2B,EAASj1C,EAAEo1C,QAGTJ,GAAaA,EAAUK,OAAOJ,EAAQj1C,EAAEs1C,aAC1CvkC,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAGzBmuC,kBAAmB,WACjBR,EAAcQ,kBAAkBruC,MAChCA,KAAKkiC,KAAKoR,oBAAoBtyB,UAC9BhhB,KAAKkiC,KAAKsR,kBAAkBxyB,WAE9BoR,OAAQ,WAEN,GAAIryB,GAAOC,KAEP4S,EAAS5S,KAAKmc,YAAY5K,MAAMqB,OAChCoY,EAAUpY,EAAOmF,MAAMuS,kBAEvBikB,IAQJ,OAPI37B,GAAOgF,QACT22B,EAAS32B,MAAQhF,EAAOgF,OAEtBhF,EAAOiF,SACT02B,EAAS12B,OAASjF,EAAOiF,QAGpBmZ,EAAM4G,cACX,OACEvC,UAAWrK,EAAQT,UACnBgJ,MAAOgb,EACPvL,IAAK,SAEPpwB,EAAOkF,SAAWlF,EAAOkF,QAAQlC,QAAUob,EAAM4G,cAC/C,OACEoL,IAAK,UACL3N,UAAW,eAEbrE,EAAM4G,cAAcwc,GAClBvY,eAAgB97B,KAEhB,KACJixB,EAAM4G,cACJ,SACE3sB,GAAI,OAASlL,EAAKkL,GAClB+3B,IAAK,oBACL3N,UAAWrK,EAAQR,MACnB+I,OACEiE,YAAa,UAGjBxG,EAAM4G,cACJ,WACA,KACA5G,EAAM4G,cAAc,OAClBoL,IAAK,YAEPhS,EAAM4G,cAAc;AAClBoL,IAAK,YAEPhS,EAAM4G,cAAc,OAClBoL,IAAK,YAEPhS,EAAM4G,cAAc,OAClBoL,IAAK,aAGThS,EAAM4G,cACJ,QACA,KACA5G,EAAM4G,cACJ,MACEoL,IAAK,gBAEPhS,EAAM4G,cACJ,MACEoR,QAAS,KAEXhY,EAAM4G,cAAckW,GAClBjS,eAAgB97B,MAItBixB,EAAM4G,cACJ,MACEoL,IAAK,cAEPhS,EAAM4G,cAAc,KAAM,MAC1B5G,EAAM4G,cACJ,MACErE,OACEib,QAAS,wBAGbxd,EAAM4G,cAAcmW,GAClBlS,eAAgB97B,KAGpBixB,EAAM4G,cAAc,MAClBoR,QAAS,OAGbhY,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,MACErE,OACE/Y,SAAU,aAGdwW,EAAM4G,cAAcoW,GAClBnS,eAAgB97B,EAChBijC,IAAK,gBAGThS,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc0c,GAClBzY,eAAgB97B,EAChBijC,IAAK,gBAGThS,EAAM4G,cAAc,MAClBoR,QAAS,OAGbhY,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAcyc,GAClBxY,eAAgB97B,EAChBijC,IAAK,gBAGThS,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc2c,GAClB1Y,eAAgB97B,EAChBijC,IAAK,eAGThS,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc8c,GAClB7Y,eAAgB97B,EAChBijC,IAAK,uBAGThS,EAAM4G,cAAc,KAAM,OAE5B5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc,KAAM,MAC1B5G,EAAM4G,cACJ,KACA,KACA5G,EAAM4G,cAAc6c,GAClB5Y,eAAgB97B,EAChBijC,IAAK,yBAGThS,EAAM4G,cAAc,MAClBoR,QAAS,SAKjBhY,EAAM4G,cAAc,OAClBvC,UAAW,iCACXpqB,GAAI,cAAgBlL,EAAKkL,WAOjCizB,eAAgB,GAChBiL,mBAAoB,GACpB5H,8BAA+B,GAC/BmN,2CAA4C,GAC5C+G,2CAA4C,GAC5CC,uCAAwC,GACxC/G,wCAAyC,GACzCgH,wCAAyC,GACzC/G,2CAA4C,GAC5CC,0CAA2C,GAC3C+G,6BAA8B,GAC9B9G,0BAA2B,GAC3B/a,MAAS,QACTC,YAAa,cAEf6hB,IAAK,SAAS30C,EAASzB,EAAQD,GAyK7B,QAASs2C,GAAYC,GACnB,GAAIh2C,GAAOC,IACXA,MAAK+1C,cAAgBA,EACrB/1C,KAAKiQ,SAAW,KAChBjQ,KAAKg2C,MAAQ,WACPj2C,EAAKkQ,UACPlQ,EAAKkQ,SAASlQ,EAAKg2C,cAAcE,qBA7KvC,GAAIjlB,GAAQ9vB,EAAQ,SAClB6vB,EAAW7vB,EAAQ,aACnB+P,EAAQ/P,EAAQ,gBAChBomC,EAAWpmC,EAAQ,oBAEjBg1C,GACFC,YAAa,KACbC,aAAc,KACd7a,gBAAiB,WAEf,OACEuP,KAAM,GACNhB,WAAW,EACXuM,YAAa,IAGjB3Z,kBAAmB,WACjB18B,KAAKm2C,YAAc,GAAIL,GAAY91C,OAErC28B,mBAAoB,WACb38B,KAAKupB,MAAMugB,UAIL9pC,KAAKupB,MAAMugB,YAEpB74B,EAAM6nB,iBAAiBnB,SAAU,YAAa33B,KAAKqqC,aACnDp5B,EAAM6nB,iBAAiBnB,SAAU,UAAW33B,KAAK4qC,aALjD35B,EAAMioB,oBAAoBvB,SAAU,YAAa33B,KAAKqqC,aACtDp5B,EAAMioB,oBAAoBvB,SAAU,UAAW33B,KAAK4qC,aAOxD1J,qBAAsB,WACpBjwB,EAAMioB,oBAAoBvB,SAAU,YAAa33B,KAAKqqC,aACtDp5B,EAAMioB,oBAAoBvB,SAAU,UAAW33B,KAAK4qC,YAEtDxC,YAAa,SAAqBloC,GAEhC,GAAiB,IAAbA,EAAEw5B,OAAN,CAEA,GAAI4c,GAAYt2C,KAAKkiC,KAAKqU,YACtBC,EAAmBlP,EAASxR,gBAAgBwgB,GAC5C3Q,EAAc10B,EAAM0oB,eAAez5B,EAEvConC,GAAShS,SAASghB,EAAW,yBAG7Bt2C,KAAK4uB,UACHkb,WAAW,EACXa,YAAahF,EAAY3lC,KAAKy2C,cAC9BJ,YAAaG,EAAiBx2C,KAAK02C,WAIrCzlC,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,KAEvB0qC,UAAW,WAET,GAAI5qC,KAAKupB,MAAMugB,UAAW,CACxB,GAAIwM,GAAYt2C,KAAKkiC,KAAKqU,WAC1BjP,GAASnS,YAAYmhB,EAAW,yBAGlCt2C,KAAK4uB,UACHkb,WAAW,KAGfO,YAAa,SAAqBnqC,GAGhC,GAAKF,KAAKupB,MAAMugB,UAAhB,CAEA74B,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,EAErB,IAAIylC,GAAc10B,EAAM0oB,eAAez5B,GACnCi1C,EAASxP,EAAY3lC,KAAKy2C,cAAgBz2C,KAAKupB,MAAMohB,WACzD3qC,MAAKupB,MAAMohB,YAAchF,EAAY3lC,KAAKy2C,cAE1Cz2C,KAAKu1C,OAAOJ,KAEdwB,cAAe,WACb,MAAyB,OAArB32C,KAAKo2C,aACA9O,EAASrR,QAAQj2B,KAAKo2C,cAAcp2C,KAAK42C,UAEzCtP,EAASrR,QAAQlF,EAASyL,YAAYx8B,OAAOA,KAAK42C,WAG7D7B,gBAAiB,SAAyBqB,EAAcS,GACtD72C,KAAKo2C,aAAeA,EACpBp2C,KAAKm2C,YAAYlmC,SAAW4mC,GAE9BZ,iBAAkB,WAChB,GAAIa,GAAY92C,KAAK22C,gBAAkB32C,KAAKupB,MAAMuhB,IAClD,OAAoB,IAAbgM,EAAiB,EAAI92C,KAAKupB,MAAM8sB,YAAcS,GAEvD91B,QAAS,WACP,GAAIhhB,KAAKo2C,aAAc,CACrB,GAAIW,GAAkB/2C,KAAKo2C,aAAahZ,SAAS,GAE7C4Z,EAAa1P,EAASrR,QAAQj2B,KAAKo2C,cACnCa,EAAc3P,EAASrR,QAAQ8gB,GAE/BG,EAAyBl3C,KAAK22C,gBAC9BQ,EAAUH,EAAWh3C,KAAK42C,WAAaK,EAAYj3C,KAAK42C,UAAY,EAAII,EAAWh3C,KAAK42C,UAAYK,EAAYj3C,KAAK42C,UAAYM,CAErIl3C,MAAK4uB,UACHwoB,cAAeF,EACfpM,KAAMqM,EACNd,YAAanvC,KAAKsJ,IAAIxQ,KAAKupB,MAAM8sB,YAAaa,EAAyBC,IACtEn3C,KAAKm2C,YAAYH,SAGxBT,OAAQ,SAAgBJ,EAAQkC,GAC9B,GAAIr3C,KAAKupB,MAAMuhB,KAAO,EAAG,CACX,GAARuM,IAAWlC,GAAU,EAEzB,IAAI2B,GAAY92C,KAAK22C,gBAAkB32C,KAAKupB,MAAMuhB,KAC9CwM,EAAYt3C,KAAKupB,MAAM8sB,YAAclB,CAIzC,IAHgB,EAAZmC,IAAeA,EAAY,GAC3BA,EAAYR,IAAWQ,EAAYR,GAEnC92C,KAAKupB,MAAM8sB,aAAeiB,EAI5B,MAHAt3C,MAAK4uB,UACHynB,YAAaiB,GACZt3C,KAAKm2C,YAAYH,QACb,EAGX,OAAO,GAET9F,QAAS,SAAiBhwC,GACxBF,KAAKu1C,OAAOr1C,EAAEo1C,OAAQp1C,EAAEs1C,WACxBvkC,EAAMsoB,gBAAgBr5B,GACtB+Q,EAAMmoB,eAAel5B,IAEvBkyB,OAAQ,WACN,GAEImlB,IACF/I,QAAS,EAEX+I,GAAWv3C,KAAK42C,UAAY52C,KAAKupB,MAAMuhB,KACvCyM,EAAWv3C,KAAKw3C,eAAiBx3C,KAAKupB,MAAM8sB,WAE5C,IAAIoB,KACJA,GAAUz3C,KAAK42C,UAAY52C,KAAKupB,MAAM6tB,aAEtC,IAAIM,GAAa,mBAAqB13C,KAAKszB,MAAMuI,eAAetqB,MAAMqB,OAAOmF,MAAM0S,mBAAmBG,UAElG2rB,EAAcv2C,KAAKupB,MAAMuhB,MAAQ,EAAI,KAAO9Z,EAAM4G,cAAc,OAClEvC,UAAWqiB,EACXnkB,MAAOgkB,EACPvU,IAAK,cACLoF,YAAapoC,KAAKooC,aAGpB,OAAOpX,GAAM4G,cACX,OACEvC,UAAWr1B,KAAK23C,SAChBpkB,MAAOkkB,EACPvH,QAASlwC,KAAKkwC,SAEhBqG,IAgBN92C,GAAOD,QAAQi1C,oBAAsBzjB,EAAMqK,aACzCC,YAAa,sBAEbsc,QAAS1B,GACTQ,QAAS,IACTD,aAAc,QACdG,SAAU,QACVY,cAAe,OACfG,SAAU,oBAGZl4C,EAAOD,QAAQk1C,kBAAoB1jB,EAAMqK,aACvCC,YAAa,oBAEbsc,QAAS1B,GACTQ,QAAS,IACTD,aAAc,QACdG,SAAU,SACVY,cAAe,MACfG,SAAU,sBAIZzZ,eAAgB,GAChBiL,mBAAoB,GACpBpV,MAAS,QACTC,YAAa,cAEf6jB,IAAK,SAAS32C,EAASzB,EAAQD,GAE7B,GAAIwxB,GAAQ9vB,EAAQ,SAClBoU,EAAMpU,EAAQ,cACdomC,EAAWpmC,EAAQ,mBAErBzB,GAAOD,QAAUwxB,EAAMqK,aACrBC,YAAa,UAEbwc,WACApb,kBAAmB,WACjB,IAAK,GAAI/7B,GAAI,EAAGA,EAAIX,KAAK83C,QAAQ92C,OAAQL,IAAK,CAC5C,GAAIo3C,GAAM/3C,KAAK83C,QAAQn3C,EACvBo3C,GAAIxmB,KAAKvxB,KAAKszB,MAAMuI,eAAgB77B,KAAKkiC,KAAK6V,EAAI/U,QAGtDrG,mBAAoB,WAClB,IAAK,GAAIh8B,GAAI,EAAGA,EAAIX,KAAK83C,QAAQ92C,OAAQL,IAAK,CAC5C,GAAIo3C,GAAM/3C,KAAK83C,QAAQn3C,EACvBo3C,GAAIxmB,KAAKvxB,KAAKszB,MAAMuI,eAAgB77B,KAAKkiC,KAAK6V,EAAI/U,QAGtDgV,eAAgB,SAAwBC,GACtC,GAAc,MAAVA,EAAgB,CAClB,GAAIC,GAAiBl4C,KAAKszB,MAAMuI,cAChC,OAAO,UAAS37B,GACd+3C,EAAOC,EAAgBh4C,EAAE+F,QAAU/F,EAAE69B,aAGzC,MAAO,OAET3L,OAAQ,WAEN,GAAIxf,GAAS5S,KAAKszB,MAAMuI,eAAe1f,YAAY5K,MAAMqB,MAEzD,IAAIA,EAAOkF,SAAWlF,EAAOkF,QAAQlC,QAAS,CAK5C,IAAK,GAHDuiC,GAAgBvlC,EAAOkF,QAAQ0E,QAAU47B,EAAqB57B,QAAQpR,OAAOwH,EAAOkF,QAAQ0E,SAAW47B,EAAqB57B,QAE5HA,KACK7b,EAAI,EAAGA,EAAIw3C,EAAcn3C,OAAQL,IAAK,CAC7C,GAAI03C,GAAYF,EAAcx3C,GAC1B23C,EAAU,MAAQ33C,CAEA,cAAlB03C,EAAUrzC,KACZwX,EAAQ9X,KAAKssB,EAAM4G,cAAc,OAC/BrzB,IAAK5D,EACL00B,UAAW,kBAEc,SAAlBgjB,EAAUrzC,KACnBwX,EAAQ9X,KAAKssB,EAAM4G,cACjB,OACErzB,IAAK5D,EACL00B,UAAW,gBAEbgjB,EAAU3P,OAGZlsB,EAAQ9X,KAAKssB,EAAM4G,cAAc,OAC/BrzB,IAAK5D,EACL00B,UAAW,gBAAkBgjB,EAAUV,SACvCzyB,MAAOmzB,EAAUE,QACjBvV,IAAKsV,EACLra,QAASj+B,KAAKg4C,eAAeK,EAAUJ,WAGvCI,EAAU9mB,MACZvxB,KAAK83C,QAAQpzC,MACXs+B,IAAKsV,EACL/mB,KAAM8mB,EAAU9mB,OAKtB,MAAOP,GAAM4G,cACX,MACA,KACApb,GAIJ,MAAOwU,GAAM4G,cAAc,MAAO,QAItC,IAAI4gB,GAAct3C,EAAQ,uBAEtBk3C,GACFK,cAAe,SAAuBP,EAAgBxe,GACpD,GAAIj5B,GAAIk3B,SAASC,cAAc,IAC/Bn3B,GAAEi4C,SAAW,mBACbj4C,EAAEk4C,KAAOH,EAAYN,EAAe5kB,MAAMnX,aAC1Cwb,SAASvM,KAAKyM,YAAYp3B,GAC1BA,EAAEm4C,QACFjhB,SAASvM,KAAKqM,YAAYh3B,IAE5Bo4C,cAAe,SAAuBX,EAAgBxe,GACpDwe,EAAe/7B,YAAYmQ,qBAAqBhX,EAAIzB,KAAKxC,KAAM,MAAM,IAEvEynC,gBAAiB,SAAyBZ,EAAgBxe,GACxDwe,EAAe/7B,YAAYmQ,qBAAqBhX,EAAIzB,KAAKxC,KAAM,MAAM,IAEvE0nC,iBAAkB,SAA0Bb,EAAgBxe,GAC1Dwe,EAAe/7B,YAAYmQ,qBAAqBhX,EAAIzB,KAAKzC,QAAS,MAAM,IAE1E4nC,mBAAoB,SAA4Bd,EAAgBxe,GAC9Dwe,EAAe/7B,YAAYmQ,qBAAqBhX,EAAIzB,KAAKzC,QAAS,MAAM,IAE1E6nC,sBAAuB,SAA+BhkC,EAASijC,EAAgBxe,GAC7E,GAAIwf,GAAiBhB,EAAe/7B,YAAYpB,oBAAoB9F,EACpEykB,GAAOnG,MAAMwD,QAA6B,OAAnBmiB,EAA0B,OAAS,EAE1D,IAAIC,GAAa,GACbC,EAAgB,EAChBF,IACFC,EAAa,oBACbC,EAAgB,qBAEhBD,EAAa,mBACbC,EAAgB,qBAGlB9R,EAASnS,YAAYuE,EAAQ0f,GAC7B9R,EAAShS,SAASoE,EAAQyf,IAE5BE,cAAe,SAAuBpkC,GACpC,GAAIlV,GAAOC,IACX,OAAO,UAASk4C,EAAgBxe,GAC9B35B,EAAKk5C,sBAAsBhkC,EAASijC,EAAgBxe,KAGxDze,gBAAiB,SAAyBhG,GACxC,GAAIlV,GAAOC,IACX,OAAO,UAASk4C,EAAgBxe,GAC9Bwe,EAAej9B,gBAAgBhG,GAC/BlV,EAAKk5C,sBAAsBhkC,EAASijC,EAAgBxe,KAGxD4f,uBAAwB,SAAgCrkC,EAASijC,EAAgBxe,GAC/E,GAAIwf,GAAiBhB,EAAe/7B,YAAYd,oBAAoBpG,EACpEykB,GAAOnG,MAAMwD,QAA6B,OAAnBmiB,EAA0B,OAAS,EAE1D,IAAIC,GAAa,GACbC,EAAgB,EAChBF,IACFC,EAAa,oBACbC,EAAgB,qBAEhBD,EAAa,mBACbC,EAAgB,qBAGlB9R,EAASnS,YAAYuE,EAAQ0f,GAC7B9R,EAAShS,SAASoE,EAAQyf,IAE5BI,eAAgB,SAAwBtkC,GACtC,GAAIlV,GAAOC,IACX,OAAO,UAASk4C,EAAgBxe,GAC9B35B,EAAKu5C,uBAAuBrkC,EAASijC,EAAgBxe,KAGzDte,iBAAkB,SAA0BnG,GAC1C,GAAIlV,GAAOC,IACX,OAAO,UAASk4C,EAAgBxe,GAC9Bwe,EAAe98B,iBAAiBnG,GAChClV,EAAKu5C,uBAAuBrkC,EAASijC,EAAgBxe,KAK3D0e,GAAqB57B,UACnBxX,KAAM,QACN0jC,KAAM,UAEN1jC,KAAM,SACNuzC,QAAS,kBACTZ,SAAU,aACVM,OAAQG,EAAqBS,gBAE7B7zC,KAAM,SACNuzC,QAAS,oBACTZ,SAAU,eACVM,OAAQG,EAAqBU,kBAE7B9zC,KAAM,SACNuzC,QAAS,yBACThnB,KAAM6mB,EAAqBiB,cAAc/jC,EAAIzB,KAAKxC,MAClD4mC,OAAQG,EAAqBn9B,gBAAgB3F,EAAIzB,KAAKxC,QAEtDrM,KAAM,SACNuzC,QAAS,0BACThnB,KAAM6mB,EAAqBmB,eAAejkC,EAAIzB,KAAKxC,MACnD4mC,OAAQG,EAAqBh9B,iBAAiB9F,EAAIzB,KAAKxC,QAEvDrM,KAAM,cAENA,KAAM,QACN0jC,KAAM,aAEN1jC,KAAM,SACNuzC,QAAS,qBACTZ,SAAU,aACVM,OAAQG,EAAqBW,mBAE7B/zC,KAAM,SACNuzC,QAAS,uBACTZ,SAAU,eACVM,OAAQG,EAAqBY,qBAE7Bh0C,KAAM,SACNuzC,QAAS,4BACThnB,KAAM6mB,EAAqBiB,cAAc/jC,EAAIzB,KAAKzC,SAClD6mC,OAAQG,EAAqBn9B,gBAAgB3F,EAAIzB,KAAKzC,WAEtDpM,KAAM,SACNuzC,QAAS,6BACThnB,KAAM6mB,EAAqBmB,eAAejkC,EAAIzB,KAAKzC,SACnD6mC,OAAQG,EAAqBh9B,iBAAiB9F,EAAIzB,KAAKzC,WAEvDpM,KAAM,cAENA,KAAM,QACN0jC,KAAM,YAEN1jC,KAAM,SACNuzC,QAAS,kBACTZ,SAAU,aACVM,OAAQG,EAAqBK,kBAI/B9W,aAAc,GACd6X,sBAAuB,GACvBrQ,mBAAoB,GACpBpV,MAAS,eAEL,KAAK","file":"orb-1.1.0.min.js","sourcesContent":["/**\n * orb v1.1.0, Pivot table javascript library.\n *\n * Copyright (c) 2014-2016 Najmeddine Nouri .\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/json/stringify\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/json/stringify\": 4\n }],\n 2: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/symbol\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/symbol\": 5\n }],\n 3: [function(_dereq_, module, exports) {\n\n var _Symbol = _dereq_(\"babel-runtime/core-js/symbol\")[\"default\"];\n\n exports[\"default\"] = function(obj) {\n return obj && obj.constructor === _Symbol ? \"symbol\" : typeof obj;\n };\n\n exports.__esModule = true;\n }, {\n \"babel-runtime/core-js/symbol\": 2\n }],\n 4: [function(_dereq_, module, exports) {\n var core = _dereq_('../../modules/$.core');\n module.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments);\n };\n }, {\n \"../../modules/$.core\": 9\n }],\n 5: [function(_dereq_, module, exports) {\n _dereq_('../../modules/es6.symbol');\n _dereq_('../../modules/es6.object.to-string');\n module.exports = _dereq_('../../modules/$.core').Symbol;\n }, {\n \"../../modules/$.core\": 9,\n \"../../modules/es6.object.to-string\": 33,\n \"../../modules/es6.symbol\": 34\n }],\n 6: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n }, {}],\n 7: [function(_dereq_, module, exports) {\n var isObject = _dereq_('./$.is-object');\n module.exports = function(it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n }, {\n \"./$.is-object\": 22\n }],\n 8: [function(_dereq_, module, exports) {\n var toString = {}.toString;\n\n module.exports = function(it) {\n return toString.call(it).slice(8, -1);\n };\n }, {}],\n 9: [function(_dereq_, module, exports) {\n var core = module.exports = {\n version: '1.2.6'\n };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n }, {}],\n 10: [function(_dereq_, module, exports) {\n // optional / simple context binding\n var aFunction = _dereq_('./$.a-function');\n module.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n };\n }, {\n \"./$.a-function\": 6\n }],\n 11: [function(_dereq_, module, exports) {\n // 7.2.1 RequireObjectCoercible(argument)\n module.exports = function(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n }, {}],\n 12: [function(_dereq_, module, exports) {\n // Thank's IE8 for his funny defineProperty\n module.exports = !_dereq_('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {\n get: function() {\n return 7;\n }\n }).a != 7;\n });\n }, {\n \"./$.fails\": 15\n }],\n 13: [function(_dereq_, module, exports) {\n // all enumerable object keys, includes symbols\n var $ = _dereq_('./$');\n module.exports = function(it) {\n var keys = $.getKeys(it),\n getSymbols = $.getSymbols;\n if (getSymbols) {\n var symbols = getSymbols(it),\n isEnum = $.isEnum,\n i = 0,\n key;\n while (symbols.length > i)\n if (isEnum.call(it, key = symbols[i++])) keys.push(key);\n }\n return keys;\n };\n }, {\n \"./$\": 23\n }],\n 14: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n core = _dereq_('./$.core'),\n ctx = _dereq_('./$.ctx'),\n PROTOTYPE = 'prototype';\n\n var $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && key in target;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n };\n // type bitmap\n $export.F = 1; // forced\n $export.G = 2; // global\n $export.S = 4; // static\n $export.P = 8; // proto\n $export.B = 16; // bind\n $export.W = 32; // wrap\n module.exports = $export;\n }, {\n \"./$.core\": 9,\n \"./$.ctx\": 10,\n \"./$.global\": 17\n }],\n 15: [function(_dereq_, module, exports) {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n }, {}],\n 16: [function(_dereq_, module, exports) {\n // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n var toIObject = _dereq_('./$.to-iobject'),\n getNames = _dereq_('./$').getNames,\n toString = {}.toString;\n\n var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\n\n var getWindowNames = function(it) {\n try {\n return getNames(it);\n } catch (e) {\n return windowNames.slice();\n }\n };\n\n module.exports.get = function getOwnPropertyNames(it) {\n if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it);\n return getNames(toIObject(it));\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 17: [function(_dereq_, module, exports) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n }, {}],\n 18: [function(_dereq_, module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n module.exports = function(it, key) {\n return hasOwnProperty.call(it, key);\n };\n }, {}],\n 19: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n createDesc = _dereq_('./$.property-desc');\n module.exports = _dereq_('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n }, {\n \"./$\": 23,\n \"./$.descriptors\": 12,\n \"./$.property-desc\": 26\n }],\n 20: [function(_dereq_, module, exports) {\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n var cof = _dereq_('./$.cof');\n module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n };\n }, {\n \"./$.cof\": 8\n }],\n 21: [function(_dereq_, module, exports) {\n // 7.2.2 IsArray(argument)\n var cof = _dereq_('./$.cof');\n module.exports = Array.isArray || function(arg) {\n return cof(arg) == 'Array';\n };\n }, {\n \"./$.cof\": 8\n }],\n 22: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n }, {}],\n 23: [function(_dereq_, module, exports) {\n var $Object = Object;\n module.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n };\n }, {}],\n 24: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n toIObject = _dereq_('./$.to-iobject');\n module.exports = function(object, el) {\n var O = toIObject(object),\n keys = $.getKeys(O),\n length = keys.length,\n index = 0,\n key;\n while (length > index)\n if (O[key = keys[index++]] === el) return key;\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 25: [function(_dereq_, module, exports) {\n module.exports = true;\n }, {}],\n 26: [function(_dereq_, module, exports) {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n }, {}],\n 27: [function(_dereq_, module, exports) {\n module.exports = _dereq_('./$.hide');\n }, {\n \"./$.hide\": 19\n }],\n 28: [function(_dereq_, module, exports) {\n var def = _dereq_('./$').setDesc,\n has = _dereq_('./$.has'),\n TAG = _dereq_('./$.wks')('toStringTag');\n\n module.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n };\n }, {\n \"./$\": 23,\n \"./$.has\": 18,\n \"./$.wks\": 32\n }],\n 29: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\n module.exports = function(key) {\n return store[key] || (store[key] = {});\n };\n }, {\n \"./$.global\": 17\n }],\n 30: [function(_dereq_, module, exports) {\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n var IObject = _dereq_('./$.iobject'),\n defined = _dereq_('./$.defined');\n module.exports = function(it) {\n return IObject(defined(it));\n };\n }, {\n \"./$.defined\": 11,\n \"./$.iobject\": 20\n }],\n 31: [function(_dereq_, module, exports) {\n var id = 0,\n px = Math.random();\n module.exports = function(key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n }, {}],\n 32: [function(_dereq_, module, exports) {\n var store = _dereq_('./$.shared')('wks'),\n uid = _dereq_('./$.uid'),\n Symbol = _dereq_('./$.global').Symbol;\n module.exports = function(name) {\n return store[name] || (store[name] =\n Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n };\n }, {\n \"./$.global\": 17,\n \"./$.shared\": 29,\n \"./$.uid\": 31\n }],\n 33: [function(_dereq_, module, exports) {\n\n }, {}],\n 34: [function(_dereq_, module, exports) {\n\n // ECMAScript 6 symbols shim\n var $ = _dereq_('./$'),\n global = _dereq_('./$.global'),\n has = _dereq_('./$.has'),\n DESCRIPTORS = _dereq_('./$.descriptors'),\n $export = _dereq_('./$.export'),\n redefine = _dereq_('./$.redefine'),\n $fails = _dereq_('./$.fails'),\n shared = _dereq_('./$.shared'),\n setToStringTag = _dereq_('./$.set-to-string-tag'),\n uid = _dereq_('./$.uid'),\n wks = _dereq_('./$.wks'),\n keyOf = _dereq_('./$.keyof'),\n $names = _dereq_('./$.get-names'),\n enumKeys = _dereq_('./$.enum-keys'),\n isArray = _dereq_('./$.is-array'),\n anObject = _dereq_('./$.an-object'),\n toIObject = _dereq_('./$.to-iobject'),\n createDesc = _dereq_('./$.property-desc'),\n getDesc = $.getDesc,\n setDesc = $.setDesc,\n _create = $.create,\n getNames = $names.get,\n $Symbol = global.Symbol,\n $JSON = global.JSON,\n _stringify = $JSON && $JSON.stringify,\n setter = false,\n HIDDEN = wks('_hidden'),\n isEnum = $.isEnum,\n SymbolRegistry = shared('symbol-registry'),\n AllSymbols = shared('symbols'),\n useNative = typeof $Symbol == 'function',\n ObjectProto = Object.prototype;\n\n // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n var setSymbolDesc = DESCRIPTORS && $fails(function() {\n return _create(setDesc({}, 'a', {\n get: function() {\n return setDesc(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n }) ? function(it, key, D) {\n var protoDesc = getDesc(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n setDesc(it, key, D);\n if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc);\n } : setDesc;\n\n var wrap = function(tag) {\n var sym = AllSymbols[tag] = _create($Symbol.prototype);\n sym._k = tag;\n DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: function(value) {\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n }\n });\n return sym;\n };\n\n var isSymbol = function(it) {\n return typeof it == 'symbol';\n };\n\n var $defineProperty = function defineProperty(it, key, D) {\n if (D && has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n return setSymbolDesc(it, key, D);\n }\n return setDesc(it, key, D);\n };\n var $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P)),\n i = 0,\n l = keys.length,\n key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n };\n var $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n };\n var $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key);\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n };\n var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n var D = getDesc(it = toIObject(it), key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n };\n var $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key);\n return result;\n };\n var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]);\n return result;\n };\n var $stringify = function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it],\n i = 1,\n $$ = arguments,\n replacer, $replacer;\n while ($$.length > i) args.push($$[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function(key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n };\n var buggyJSON = $fails(function() {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n });\n\n // 19.4.1.1 Symbol([description])\n if (!useNative) {\n $Symbol = function Symbol() {\n if (isSymbol(this)) throw TypeError('Symbol is not a constructor');\n return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));\n };\n redefine($Symbol.prototype, 'toString', function toString() {\n return this._k;\n });\n\n isSymbol = function(it) {\n return it instanceof $Symbol;\n };\n\n $.create = $create;\n $.isEnum = $propertyIsEnumerable;\n $.getDesc = $getOwnPropertyDescriptor;\n $.setDesc = $defineProperty;\n $.setDescs = $defineProperties;\n $.getNames = $names.get = $getOwnPropertyNames;\n $.getSymbols = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_('./$.library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n }\n\n var symbolStatics = {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n return keyOf(SymbolRegistry, key);\n },\n useSetter: function() {\n setter = true;\n },\n useSimple: function() {\n setter = false;\n }\n };\n // 19.4.2.2 Symbol.hasInstance\n // 19.4.2.3 Symbol.isConcatSpreadable\n // 19.4.2.4 Symbol.iterator\n // 19.4.2.6 Symbol.match\n // 19.4.2.8 Symbol.replace\n // 19.4.2.9 Symbol.search\n // 19.4.2.10 Symbol.species\n // 19.4.2.11 Symbol.split\n // 19.4.2.12 Symbol.toPrimitive\n // 19.4.2.13 Symbol.toStringTag\n // 19.4.2.14 Symbol.unscopables\n $.each.call((\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +\n 'species,split,toPrimitive,toStringTag,unscopables'\n ).split(','), function(it) {\n var sym = wks(it);\n symbolStatics[it] = useNative ? sym : wrap(sym);\n });\n\n setter = true;\n\n $export($export.G + $export.W, {\n Symbol: $Symbol\n });\n\n $export($export.S, 'Symbol', symbolStatics);\n\n $export($export.S + $export.F * !useNative, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n });\n\n // 24.3.2 JSON.stringify(value [, replacer [, space]])\n $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {\n stringify: $stringify\n });\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag]\n setToStringTag($Symbol, 'Symbol');\n // 20.2.1.9 Math[@@toStringTag]\n setToStringTag(Math, 'Math', true);\n // 24.3.3 JSON[@@toStringTag]\n setToStringTag(global.JSON, 'JSON', true);\n }, {\n \"./$\": 23,\n \"./$.an-object\": 7,\n \"./$.descriptors\": 12,\n \"./$.enum-keys\": 13,\n \"./$.export\": 14,\n \"./$.fails\": 15,\n \"./$.get-names\": 16,\n \"./$.global\": 17,\n \"./$.has\": 18,\n \"./$.is-array\": 21,\n \"./$.keyof\": 24,\n \"./$.library\": 25,\n \"./$.property-desc\": 26,\n \"./$.redefine\": 27,\n \"./$.set-to-string-tag\": 28,\n \"./$.shared\": 29,\n \"./$.to-iobject\": 30,\n \"./$.uid\": 31,\n \"./$.wks\": 32\n }],\n 35: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function toAggregateFunc(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function count(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function sum(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function min(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function max(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function avg(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function prod(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function stdev(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function stdevp(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function _var(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function varp(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 36: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n }();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 38,\n \"./orb.utils\": 53\n }],\n 37: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, null)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc || defaultFormatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function notequalfield(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.filtering\": 40,\n \"./orb.themes\": 46,\n \"./orb.utils\": 53\n }],\n 38: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 39: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n var rowHeadersAndDataCells = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 46,\n \"./orb.ui.header\": 49,\n \"./orb.utils\": 53\n }],\n 40: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function get(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function func(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function func(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function func(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function func(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function func(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function func(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 41: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 39,\n \"./orb.pgrid\": 42,\n \"./orb.query\": 44,\n \"./orb.ui.pgridwidget\": 50,\n \"./orb.utils\": 53\n }],\n 42: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.config\": 37,\n \"./orb.filtering\": 40,\n \"./orb.pubsub\": 43,\n \"./orb.query\": 44,\n \"./orb.utils\": 53\n }],\n 43: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 44: [function(_dereq_, module, exports) {\n\n var _typeof2 = _dereq_('babel-runtime/helpers/typeof');\n\n var _typeof3 = _interopRequireDefault(_typeof2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function queryBase(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function pgridQuery(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function arrayQuery(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.utils\": 53,\n \"babel-runtime/helpers/typeof\": 3\n }],\n 45: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 46: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function rgbaToHex(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function rgbaToHexA(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function fadeoutColor(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n }();\n\n }, {}],\n 47: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.header\": 49\n }],\n 48: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 49: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function getHeaderClass(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function getCellClass(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(_hspan, _vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function hspan() {\n return _hspan;\n },\n vspan: function vspan() {\n return _vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.state\": 45\n }],\n 50: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n React = _dereq_('react'),\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.pgrid\": 42,\n \"./orb.ui.cols\": 48,\n \"./orb.ui.header\": 49,\n \"./orb.ui.rows\": 51,\n \"./react/orb.react.Dialog.jsx\": 55,\n \"./react/orb.react.Grid.jsx\": 62,\n \"./react/orb.react.PivotChart.jsx\": 65,\n \"./react/orb.react.PivotTable.jsx\": 74,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 51: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 52: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function f(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function f(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 53: [function(_dereq_, module, exports) {\n (function(global) {\n\n var _stringify = _dereq_('babel-runtime/core-js/json/stringify');\n\n var _stringify2 = _interopRequireDefault(_stringify);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n module.exports = {\n\n ns: function ns(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function ownProperties(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function forEach(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function isArray(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function isNumber(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function isDate(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function isString(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function isRegExp(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function escapeRegex(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function findInArray(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function jsonStringify(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return (0, _stringify2.default)(obj, censor, 2);\n },\n addEventListener: function addEventListener(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function removeEventListener(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function preventDefault(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function getEventButton(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function getMousePageXY(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {\n \"babel-runtime/core-js/json/stringify\": 1\n }],\n 54: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n return {\n canRender: false\n };\n },\n canRender: function canRender() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function drawChart() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.drawChart();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.drawChart();\n },\n render: function render() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 55: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function create() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function show(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function setOverlayClass(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function componentDidMount() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function close(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function render() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 56: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n module.exports = function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function init(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function setDragElement(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function unregisterTarget(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function unregisterIndicator(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function elementMoved() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n }();\n\n }, {\n \"../orb.utils\": 53,\n \"react-dom\": \"react-dom\"\n }],\n 57: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function getInitialState() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"react\": \"react\"\n }],\n 58: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 59: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 60: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function openOrClose(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function onMouseEnter() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function onMouseLeave() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function componentDidMount() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function selectValue(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function render() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 61: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function getInitialState() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function destroy() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function onFilter(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function onMouseDown(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function onMouseWheel(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function componentWillMount() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function componentDidMount() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function render() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 40,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.Dropdown.jsx\": 60,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 62: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 63: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function getInitialState() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function onFilterMouseDown(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function onMouseDown(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function onMouseMove(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function updateClasses() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function render() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.FilterPanel.jsx\": 61,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 64: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function expand() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function collapse() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function updateCellInfos() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function componentDidMount() {\n this.updateCellInfos();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function render() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function cellClick() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 49,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 65: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function synchronizeWidths() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 52,\n \"./orb.react.Chart.jsx\": 54,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 66: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotCell.jsx\": 64,\n \"react\": \"react\"\n }],\n 67: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 68: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 69: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 70: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.DropTargetVertical.jsx\": 59,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 71: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function setColGroup(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 72: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function synchronizeWidths(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 52,\n \"react-dom\": \"react-dom\"\n }],\n 73: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 74: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function onWheel(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function synchronizeWidths() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 68,\n \"./orb.react.PivotTable.DataCells.jsx\": 69,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 71,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.ScrollBars.jsx\": 75,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 75: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function getInitialState() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function componentDidMount() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function onMouseDown(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function onMouseMove(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function getScrollSize() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function setScrollClient(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function getScrollPercent() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function refresh() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function scroll(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function onWheel(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function render() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 76: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function componentDidMount() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function createCallback(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function render() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function exportToExcel(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function expandAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function collapseAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function expandAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function collapseAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function initSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function initGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.export.excel\": 39,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\"\n }]\n }, {}, [41])(41)\n});"],"sourceRoot":"/source/"} \ No newline at end of file From d899b5d2d01b7a7a76acdd96a9213d7297ca1629 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Thu, 7 Apr 2016 16:20:55 -0400 Subject: [PATCH 03/13] Update main to refer to compiled file --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f55b52..e7bab38 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "aggregation", "dimension" ], - "main": "src/js/orb.js", + "main": "dist/orb.js", "files": [ "README.md", "LICENCE", From e204fcf6688921882907eb57d2722e18b4c19dd9 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Fri, 8 Apr 2016 17:39:35 -0400 Subject: [PATCH 04/13] Correct issue when formatFunc not being picked up when it is not specified in dataSettings --- src/js/orb.config.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/js/orb.config.js b/src/js/orb.config.js index 16b49fd..611a218 100644 --- a/src/js/orb.config.js +++ b/src/js/orb.config.js @@ -78,6 +78,10 @@ function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) { var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig); + function defaultFormatFunc(val) { + return val != null ? val.toString() : ''; + } + return new Field({ name: getpropertyvalue('name', merged.configs, ''), @@ -95,7 +99,7 @@ function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) { aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'), aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum), - formatFunc: getpropertyvalue('formatFunc', merged.functions, null) + formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc) }, false); } @@ -133,7 +137,7 @@ function ChartConfig(options) { this.enabled = options.enabled || false; // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart' - this.type = options.type || 'LineChart'; + this.type = options.type || 'LineChart'; } var Field = module.exports.field = function(options, createSubOptions) { @@ -154,10 +158,6 @@ var Field = module.exports.field = function(options, createSubOptions) { var _aggregatefunc; var _formatfunc; - function defaultFormatFunc(val) { - return val != null ? val.toString() : ''; - } - this.aggregateFunc = function(func) { if (func) { _aggregatefunc = aggregation.toAggregateFunc(func); @@ -174,7 +174,7 @@ var Field = module.exports.field = function(options, createSubOptions) { } }; - this.aggregateFuncName = options.aggregateFuncName || + this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? (utils.isString(options.aggregateFunc) ? options.aggregateFunc : @@ -182,7 +182,7 @@ var Field = module.exports.field = function(options, createSubOptions) { null); this.aggregateFunc(options.aggregateFunc); - this.formatFunc(options.formatFunc || defaultFormatFunc); + this.formatFunc(options.formatFunc); if (createSubOptions !== false) { (this.rowSettings = new Field(options.rowSettings, false)).name = this.name; @@ -224,7 +224,7 @@ module.exports.config = function(config) { this.dataSourceFieldCaptions = []; this.captionToName = function(caption) { - var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption); + var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption); return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption; }; @@ -413,9 +413,9 @@ module.exports.config = function(config) { } var field = createfield( - self, - newaxetype, - fieldConfig, + self, + newaxetype, + fieldConfig, defaultFieldConfig); if(!newAxeSubtotalsState && field.subTotal.visible !== false) { @@ -453,7 +453,7 @@ module.exports.config = function(config) { } else { return false; } - + newState = newState === false ? null : true; for(i = 0; i < axeFields.length; i++) { if(axeFields[i].subTotal.visible !== false) { @@ -496,4 +496,4 @@ module.exports.config = function(config) { return false; } }; -}; \ No newline at end of file +}; From dd1f0880cdb1ef6ac247393d7fe582195eed9a8c Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Fri, 8 Apr 2016 21:37:57 -0400 Subject: [PATCH 05/13] add class on upper/column buttons --- src/js/react/orb.react.PivotTable.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/react/orb.react.PivotTable.jsx b/src/js/react/orb.react.PivotTable.jsx index 72dee7f..231c4f6 100644 --- a/src/js/react/orb.react.PivotTable.jsx +++ b/src/js/react/orb.react.PivotTable.jsx @@ -165,12 +165,12 @@ module.exports = React.createClass({ - + - + From 5dc901d7c8986c46afac96ceba8340768f503cd5 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Mon, 11 Apr 2016 12:27:23 -0400 Subject: [PATCH 06/13] Add rfi theme --- src/js/orb.themes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/js/orb.themes.js b/src/js/orb.themes.js index 2f999ab..ca865fb 100644 --- a/src/js/orb.themes.js +++ b/src/js/orb.themes.js @@ -20,7 +20,8 @@ module.exports = (function() { flower: '#A74AC7', gray: '#808080', black: '#000000', - white: '#FFFFFF' + white: '#FFFFFF', + rfi: '#9F313A' }; themeManager.current = function(newTheme) { From ea54e3955c13c61471acdc311f98e98799a89f33 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Mon, 11 Apr 2016 15:18:24 -0400 Subject: [PATCH 07/13] rebuild css --- dist/orb.css | 226 +++++++++++++++++++++++++++++++ dist/orb.js | 21 +-- dist/orb.min.css | 2 +- dist/orb.min.js | 6 +- dist/orb.min.js.map | 2 +- dist/v1.1.0/orb-1.1.0.css | 226 +++++++++++++++++++++++++++++++ dist/v1.1.0/orb-1.1.0.js | 21 +-- dist/v1.1.0/orb-1.1.0.min.css | 2 +- dist/v1.1.0/orb-1.1.0.min.js | 6 +- dist/v1.1.0/orb-1.1.0.min.js.map | 2 +- 10 files changed, 486 insertions(+), 28 deletions(-) diff --git a/dist/orb.css b/dist/orb.css index 0a0d979..21d2107 100644 --- a/dist/orb.css +++ b/dist/orb.css @@ -2344,3 +2344,229 @@ border: 1px solid #d9d9d9; font-weight: bold; } + +/* rfi */ + +.orb-rfi .orb { + color: black; +} +.orb-rfi .orb .chart { + border: 1px solid #cf989c; +} +.orb-rfi .orb .av-flds { + border-bottom: 1px solid #cf989c !important; +} +.orb-rfi .orb .flds-grp-cap div { + color: #ccc; +} +.orb-rfi .orb .cell { + background-color: white; + color: black; + border-top: 1px solid #cf989c; + border-left: 1px solid #f0e0e1; +} +.orb-rfi .orb .cell-st { + background-color: white; + color: black; + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .cell-gt { + background-color: white; + color: black; + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .cell-leftmost { + border-left: none !important; +} +.orb-rfi .orb .cell-topmost { + border-top: none !important; +} +.orb-rfi .orb .header { + background-color: #f5eaeb; + color: black; +} +.orb-rfi .orb .header-st { + color: black; + background-color: #f5eaeb; +} +.orb-rfi .orb .header-gt { + color: black; + background-color: #f5eaeb; +} +.orb-rfi .orb .header-leftmost { + border-left: none !important; +} +.orb-rfi .orb .header-row { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .header-row-st { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .header-row-gt { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .header-row-nofields { + border-top: none !important; +} +.orb-rfi .orb .header-col { + border-left: 1px solid #cf989c; +} +.orb-rfi .orb .header-col-st { + border-left: 1px solid #cf989c; +} +.orb-rfi .orb .header-col-gt { + border-left: 1px solid #cf989c; +} +.orb-rfi .orb .columns-cntr { + border: 1px solid #cf989c; + border-bottom: none; + border-radius: 4px 4px 0 0; +} +.orb-rfi .orb .rows-cntr { + border: 1px solid #cf989c; + border-right: none; + border-radius: 4px 0 0 4px; +} +.orb-rfi .orb .data-cntr { + border: 1px solid #cf989c; + border-radius: 0 0 4px; +} +.orb-rfi .orb .fld-btn { + background-color: #9F313A; + color: white; + font-weight: bold; + height: 25px; + border: none; + border-radius: 4px; + padding: 4px 5px; +} +.orb-rfi .orb .fld-btn:hover { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); +} +.orb-rfi .orb .fld-btn:hover .fltr-btn { + background-color: #9F313A; +} +.orb-rfi .orb .fld-btn .fltr-btn:hover { + background-color: #bb6e75; +} +.orb-rfi .orb .fld-btn .fltr-btn-active { + background-color: #bb6e75; +} +.orb-rfi .orb .drp-trgt { + height: 27px; +} +.orb-rfi .orb .drp-trgt-over { + background-color: #faf4f5; +} +.orb-rfi .orb .drp-trgt-empty, +.orb-rfi .orb .drp-trgt-vertical-empty { + border: 1px dashed #cf989c; +} +.orb-rfi .orb .drp-indic { + height: 25px; +} +.orb-rfi .orb .drp-indic-over { + background-color: #cf989c; +} +.orb-rfi.fltr-cntnr { + border: 1px solid #cf989c; + box-shadow: 0 5px 15px #686868; +} +.orb-rfi .fltr-scntnr .srchbox-col { + border: 1px solid #cf989c; +} +.orb-rfi .fltr-scntnr .srchop-col { + border: 1px solid #cf989c; +} +.orb-rfi .fltr-scntnr .srchtyp-col { + border: 1px solid #cf989c; +} +.orb-rfi .fltr-scntnr .srchtyp-col:hover { + border: 1px solid #bb6e75; + border: 1px solid rgba(159, 49, 58, 0.7); +} +.orb-rfi .fltr-scntnr .srchtyp-col-active { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); + color: white; + border: 1px solid #bb6e75; + border: 1px solid rgba(159, 49, 58, 0.7); +} +.orb-rfi .fltr-scntnr .fltr-vals-col { + border-bottom: 1px solid #cf989c; +} +.orb-rfi .orb-btn { + padding: 1px 4px; + background-color: #9F313A; + color: white; + border: none; +} +.orb-rfi .orb-btn:hover { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); +} +.orb-rfi .orb-tgl-btn div:hover { + background-color: #cf989c; +} +.orb-rfi .orb-toolbar { + background-color: #f5eaeb; + border: 1px solid #cf989c; +} +.orb-rfi .orb-tlbr-btn { + border: 1px solid #f5eaeb; +} +.orb-rfi .orb-tlbr-btn:hover { + border: 1px solid #9F313A; +} +.orb-rfi .orb-tlbr-sep { + border-right: 1px solid #cf989c; +} +.orb-rfi .orb-select { + border: 1px solid #cf989c; +} +.orb-rfi .orb-select ul { + border: 1px solid #cf989c; +} +.orb-rfi .orb-select ul li:hover { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); +} +.orb-rfi .orb-scrollthumb { + background-color: #f5eaeb; + border: 1px solid #cf989c; + border-radius: 3px; +} +.orb-rfi .orb-scrollthumb-hover { + background-color: #cf989c; +} +.orb-rfi.orb-overlay { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c686868', endColorstr='#8c686868'); + background-color: rgba(104, 104, 104, 0.45); +} +.orb-rfi .orb-dialog { + background-color: white; + border: 1px solid #686868; + box-shadow: 0 5px 15px #686868; + padding: 7px 13px; +} +.orb-rfi .orb-dialog-header { + background-color: white; +} +.orb-rfi .orb-dialog-header .button-close { + background-color: white; + margin: 5px 3px 1px 1px; +} +.orb-rfi .orb-dialog-header .button-close:hover { + background-color: #cf989c; +} +.orb-rfi .orb-table td, +.orb-rfi .orb-table th { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb-table th { + background-color: #9F313A; + color: white; + border: 1px solid #cf989c; + font-weight: bold; +} diff --git a/dist/orb.js b/dist/orb.js index 00c7cd4..5cf8a2d 100644 --- a/dist/orb.js +++ b/dist/orb.js @@ -1048,6 +1048,10 @@ var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig); + function defaultFormatFunc(val) { + return val != null ? val.toString() : ''; + } + return new Field({ name: getpropertyvalue('name', merged.configs, ''), @@ -1065,7 +1069,7 @@ aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'), aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum), - formatFunc: getpropertyvalue('formatFunc', merged.functions, null) + formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc) }, false); } @@ -1124,10 +1128,6 @@ var _aggregatefunc; var _formatfunc; - function defaultFormatFunc(val) { - return val != null ? val.toString() : ''; - } - this.aggregateFunc = function(func) { if (func) { _aggregatefunc = aggregation.toAggregateFunc(func); @@ -1147,7 +1147,7 @@ this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null); this.aggregateFunc(options.aggregateFunc); - this.formatFunc(options.formatFunc || defaultFormatFunc); + this.formatFunc(options.formatFunc); if (createSubOptions !== false) { (this.rowSettings = new Field(options.rowSettings, false)).name = this.name; @@ -2595,7 +2595,8 @@ flower: '#A74AC7', gray: '#808080', black: '#000000', - white: '#FFFFFF' + white: '#FFFFFF', + rfi: '#9F313A' }; themeManager.current = function(newTheme) { @@ -6962,7 +6963,8 @@ null, React.createElement( 'tr', { - ref: 'upperButtons' + ref: 'upperButtons', + className: 'orb-upper-buttons' }, React.createElement( 'td', { @@ -6975,7 +6977,8 @@ ), React.createElement( 'tr', { - ref: 'colButtons' + ref: 'colButtons', + className: 'orb-column-buttons' }, React.createElement('td', null), React.createElement( diff --git a/dist/orb.min.css b/dist/orb.min.css index dade630..f06e907 100644 --- a/dist/orb.min.css +++ b/dist/orb.min.css @@ -1 +1 @@ -.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:100%}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700} \ No newline at end of file +.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:100%}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700}.orb-rfi .orb{color:#000}.orb-rfi .orb .chart{border:1px solid #cf989c}.orb-rfi .orb .av-flds{border-bottom:1px solid #cf989c!important}.orb-rfi .orb .flds-grp-cap div{color:#ccc}.orb-rfi .orb .cell{border-left:1px solid #f0e0e1}.orb-rfi .orb .cell,.orb-rfi .orb .cell-gt,.orb-rfi .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #cf989c}.orb-rfi .orb .cell-leftmost{border-left:none!important}.orb-rfi .orb .cell-topmost{border-top:none!important}.orb-rfi .orb .header,.orb-rfi .orb .header-gt,.orb-rfi .orb .header-st{background-color:#f5eaeb;color:#000}.orb-rfi .orb .header-leftmost{border-left:none!important}.orb-rfi .orb .header-row,.orb-rfi .orb .header-row-gt,.orb-rfi .orb .header-row-st{border-top:1px solid #cf989c}.orb-rfi .orb .header-row-nofields{border-top:none!important}.orb-rfi .orb .header-col,.orb-rfi .orb .header-col-gt,.orb-rfi .orb .header-col-st{border-left:1px solid #cf989c}.orb-rfi .orb .columns-cntr{border:1px solid #cf989c;border-bottom:none;border-radius:4px 4px 0 0}.orb-rfi .orb .rows-cntr{border:1px solid #cf989c;border-right:none;border-radius:4px 0 0 4px}.orb-rfi .orb .data-cntr{border:1px solid #cf989c;border-radius:0 0 4px}.orb-rfi .orb .fld-btn{background-color:#9f313a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-rfi .orb .fld-btn:hover{background-color:#bb6e75;background-color:rgba(159,49,58,.7)}.orb-rfi .orb .fld-btn:hover .fltr-btn{background-color:#9f313a}.orb-rfi .orb .fld-btn .fltr-btn-active,.orb-rfi .orb .fld-btn .fltr-btn:hover{background-color:#bb6e75}.orb-rfi .orb .drp-trgt{height:27px}.orb-rfi .orb .drp-trgt-over{background-color:#faf4f5}.orb-rfi .orb .drp-trgt-empty,.orb-rfi .orb .drp-trgt-vertical-empty{border:1px dashed #cf989c}.orb-rfi .orb .drp-indic{height:25px}.orb-rfi .orb .drp-indic-over{background-color:#cf989c}.orb-rfi.fltr-cntnr{box-shadow:0 5px 15px #686868}.orb-rfi.fltr-cntnr,.orb-rfi .fltr-scntnr .srchbox-col,.orb-rfi .fltr-scntnr .srchop-col,.orb-rfi .fltr-scntnr .srchtyp-col{border:1px solid #cf989c}.orb-rfi .fltr-scntnr .srchtyp-col-active,.orb-rfi .fltr-scntnr .srchtyp-col:hover{border:1px solid #bb6e75;border:1px solid rgba(159,49,58,.7)}.orb-rfi .fltr-scntnr .srchtyp-col-active{background-color:#bb6e75;background-color:rgba(159,49,58,.7);color:#fff}.orb-rfi .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #cf989c}.orb-rfi .orb-btn{padding:1px 4px;background-color:#9f313a;color:#fff;border:none}.orb-rfi .orb-btn:hover{background-color:#bb6e75;background-color:rgba(159,49,58,.7)}.orb-rfi .orb-tgl-btn div:hover{background-color:#cf989c}.orb-rfi .orb-toolbar{background-color:#f5eaeb;border:1px solid #cf989c}.orb-rfi .orb-tlbr-btn{border:1px solid #f5eaeb}.orb-rfi .orb-tlbr-btn:hover{border:1px solid #9f313a}.orb-rfi .orb-tlbr-sep{border-right:1px solid #cf989c}.orb-rfi .orb-select,.orb-rfi .orb-select ul{border:1px solid #cf989c}.orb-rfi .orb-select ul li:hover{background-color:#bb6e75;background-color:rgba(159,49,58,.7)}.orb-rfi .orb-scrollthumb{background-color:#f5eaeb;border:1px solid #cf989c;border-radius:3px}.orb-rfi .orb-scrollthumb-hover{background-color:#cf989c}.orb-rfi.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c686868',endColorstr='#8c686868');background-color:hsla(0,0%,41%,.45)}.orb-rfi .orb-dialog{border:1px solid #686868;box-shadow:0 5px 15px #686868;padding:7px 13px}.orb-rfi .orb-dialog,.orb-rfi .orb-dialog-header{background-color:#fff}.orb-rfi .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-rfi .orb-dialog-header .button-close:hover{background-color:#cf989c}.orb-rfi .orb-table td,.orb-rfi .orb-table th{border-top:1px solid #cf989c}.orb-rfi .orb-table th{background-color:#9f313a;color:#fff;border:1px solid #cf989c;font-weight:700} \ No newline at end of file diff --git a/dist/orb.min.js b/dist/orb.min.js index 3572945..f6500fa 100644 --- a/dist/orb.min.js +++ b/dist/orb.min.js @@ -8,8 +8,8 @@ * @license MIT */ -"use strict";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.orb=e()}}(function(){return function e(t,r,n){function o(i,s){if(!r[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var c=r[i]={exports:{}};t[i][0].call(c.exports,function(e){var r=t[i][1][e];return o(r?r:e)},c,c.exports,e,t,r,n)}return r[i].exports}for(var a="function"==typeof require&&require,i=0;is;)i.call(e,o=a[s++])&&t.push(o);return t}},{"./$":23}],14:[function(e,t,r){var n=e("./$.global"),o=e("./$.core"),a=e("./$.ctx"),i="prototype",s=function(e,t,r){var l,u,c,d=e&s.F,p=e&s.G,h=e&s.S,f=e&s.P,g=e&s.B,m=e&s.W,b=p?o:o[t]||(o[t]={}),v=p?n:h?n[t]:(n[t]||{})[i];p&&(r=t);for(l in r)u=!d&&v&&l in v,u&&l in b||(c=u?v[l]:r[l],b[l]=p&&"function"!=typeof v[l]?r[l]:g&&u?a(c,n):m&&v[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[i]=e[i],t}(c):f&&"function"==typeof c?a(Function.call,c):c,f&&((b[i]||(b[i]={}))[l]=c))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},{"./$.core":9,"./$.ctx":10,"./$.global":17}],15:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],16:[function(e,t,r){var n=e("./$.to-iobject"),o=e("./$").getNames,a={}.toString,i="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(t){return i.slice()}};t.exports.get=function(e){return i&&"[object Window]"==a.call(e)?s(e):o(n(e))}},{"./$":23,"./$.to-iobject":30}],17:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],18:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],19:[function(e,t,r){var n=e("./$"),o=e("./$.property-desc");t.exports=e("./$.descriptors")?function(e,t,r){return n.setDesc(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./$":23,"./$.descriptors":12,"./$.property-desc":26}],20:[function(e,t,r){var n=e("./$.cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./$.cof":8}],21:[function(e,t,r){var n=e("./$.cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./$.cof":8}],22:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],23:[function(e,t,r){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},{}],24:[function(e,t,r){var n=e("./$"),o=e("./$.to-iobject");t.exports=function(e,t){for(var r,a=o(e),i=n.getKeys(a),s=i.length,l=0;s>l;)if(a[r=i[l++]]===t)return r}},{"./$":23,"./$.to-iobject":30}],25:[function(e,t,r){t.exports=!0},{}],26:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],27:[function(e,t,r){t.exports=e("./$.hide")},{"./$.hide":19}],28:[function(e,t,r){var n=e("./$").setDesc,o=e("./$.has"),a=e("./$.wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},{"./$":23,"./$.has":18,"./$.wks":32}],29:[function(e,t,r){var n=e("./$.global"),o="__core-js_shared__",a=n[o]||(n[o]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./$.global":17}],30:[function(e,t,r){var n=e("./$.iobject"),o=e("./$.defined");t.exports=function(e){return n(o(e))}},{"./$.defined":11,"./$.iobject":20}],31:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],32:[function(e,t,r){var n=e("./$.shared")("wks"),o=e("./$.uid"),a=e("./$.global").Symbol;t.exports=function(e){return n[e]||(n[e]=a&&a[e]||(a||o)("Symbol."+e))}},{"./$.global":17,"./$.shared":29,"./$.uid":31}],33:[function(e,t,r){},{}],34:[function(e,t,r){var n=e("./$"),o=e("./$.global"),a=e("./$.has"),i=e("./$.descriptors"),s=e("./$.export"),l=e("./$.redefine"),u=e("./$.fails"),c=e("./$.shared"),d=e("./$.set-to-string-tag"),p=e("./$.uid"),h=e("./$.wks"),f=e("./$.keyof"),g=e("./$.get-names"),m=e("./$.enum-keys"),b=e("./$.is-array"),v=e("./$.an-object"),y=e("./$.to-iobject"),x=e("./$.property-desc"),w=n.getDesc,T=n.setDesc,C=n.create,E=g.get,S=o.Symbol,N=o.JSON,F=N&&N.stringify,M=!1,D=h("_hidden"),O=n.isEnum,A=c("symbol-registry"),L=c("symbols"),R="function"==typeof S,_=Object.prototype,k=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=w(_,t);n&&delete _[t],T(e,t,r),n&&e!==_&&T(_,t,n)}:T,P=function(e){var t=L[e]=C(S.prototype);return t._k=e,i&&M&&k(_,e,{configurable:!0,set:function(t){a(this,D)&&a(this[D],e)&&(this[D][e]=!1),k(this,e,x(1,t))}}),t},B=function(e){return"symbol"==typeof e},j=function(e,t,r){return r&&a(L,t)?(r.enumerable?(a(e,D)&&e[D][t]&&(e[D][t]=!1),r=C(r,{enumerable:x(0,!1)})):(a(e,D)||T(e,D,x(1,{})),e[D][t]=!0),k(e,t,r)):T(e,t,r)},H=function(e,t){v(e);for(var r,n=m(t=y(t)),o=0,a=n.length;a>o;)j(e,r=n[o++],t[r]);return e},W=function(e,t){return void 0===t?C(e):H(C(e),t)},$=function(e){var t=O.call(this,e);return t||!a(this,e)||!a(L,e)||a(this,D)&&this[D][e]?t:!0},z=function(e,t){var r=w(e=y(e),t);return!r||!a(L,t)||a(e,D)&&e[D][t]||(r.enumerable=!0),r},U=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])||t==D||n.push(t);return n},I=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])&&n.push(L[t]);return n},G=function(e){if(void 0!==e&&!B(e)){for(var t,r,n=[e],o=1,a=arguments;a.length>o;)n.push(a[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&b(t)||(t=function(e,t){return r&&(t=r.call(this,e,t)),B(t)?void 0:t}),n[1]=t,F.apply(N,n)}},V=u(function(){var e=S();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))});R||(S=function(){if(B(this))throw TypeError("Symbol is not a constructor");return P(p(arguments.length>0?arguments[0]:void 0))},l(S.prototype,"toString",function(){return this._k}),B=function(e){return e instanceof S},n.create=W,n.isEnum=$,n.getDesc=z,n.setDesc=j,n.setDescs=H,n.getNames=g.get=U,n.getSymbols=I,i&&!e("./$.library")&&l(_,"propertyIsEnumerable",$,!0));var q={"for":function(e){return a(A,e+="")?A[e]:A[e]=S(e)},keyFor:function(e){return f(A,e)},useSetter:function(){M=!0},useSimple:function(){M=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(e){var t=h(e);q[e]=R?t:P(t)}),M=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",q),s(s.S+s.F*!R,"Object",{create:W,defineProperty:j,defineProperties:H,getOwnPropertyDescriptor:z,getOwnPropertyNames:U,getOwnPropertySymbols:I}),N&&s(s.S+s.F*(!R||V),"JSON",{stringify:G}),d(S,"Symbol"),d(Math,"Math",!0),d(o.JSON,"JSON",!0)},{"./$":23,"./$.an-object":7,"./$.descriptors":12,"./$.enum-keys":13,"./$.export":14,"./$.fails":15,"./$.get-names":16,"./$.global":17,"./$.has":18,"./$.is-array":21,"./$.keyof":24,"./$.library":25,"./$.property-desc":26,"./$.redefine":27,"./$.set-to-string-tag":28,"./$.shared":29,"./$.to-iobject":30,"./$.uid":31,"./$.wks":32}],35:[function(e,t,r){function n(e,t,r,n){var a=0,i=0,s=("all"===t?r:t).length;return s>0&&(n||s>1?(o(e,t,r,function(e){i+=e}),i/=s,o(e,t,r,function(e){a+=(e-i)*(e-i)}),a/=n?s:s-1):a=NaN),a}function o(e,t,r,n){var o="all"===t;if(t=o?r:t,t.length>0)for(var a=0;ae)&&(s=e)}),s},max:function l(e,t,r){var l=null;return o(e,t,r,function(e){(null==l||e>l)&&(l=e)}),l},avg:function u(e,t,r){var u=0,n=("all"===t?r:t).length;return n>0&&(o(e,t,r,function(e){u+=e}),u/=n),u},prod:function c(e,t,r){var c,n=("all"===t?r:t).length;return n>0&&(c=1,o(e,t,r,function(e){c*=e})),c},stdev:function(e,t,r){return Math.sqrt(n(e,t,r,!1))},stdevp:function(e,t,r){return Math.sqrt(n(e,t,r,!0))},"var":function(e,t,r){return n(e,t,r,!1)},varp:function(e,t,r){return n(e,t,r,!0)}}},{}],36:[function(e,t,r){var n=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function r(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&n.isArray(e)&&e.length>0)for(var t=0,r=e.length;r>t;t++)for(var a=e[t],i=s.root,u=0;ut.name?1:0})})},t.exports.Type=a},{"./orb.dimension":38,"./orb.utils":53}],37:[function(e,t,r){function n(e,t,r){for(var n=0;n-1?e[r]:null}function n(e,t){for(var r=0;r=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,r(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,r(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,r(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return r(o.allFields,e)},this.getRowField=function(e){return r(o.rowFields,e)},this.getColumnField=function(e){return r(o.columnFields,e)},this.getDataField=function(e){return r(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=c.ownProperties(e),r=[],n=0;n',l="";t.exports=function(e){function t(e){return"'+e+""}function r(e,r,n,o){var a,i=o||"";for(a=0;r>a;a++)i+="";for(i+=e.reduce(function(e,r){return e+=t(r.caption)},""),a=0;n>a;a++)i+="";return i+""}function u(e){return n.btoa(unescape(encodeURIComponent(e)))}var c=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',b='style="background-color: '+g+';" bgcolor="'+g+'"',v=Math.max(c.dataFields.length+1,e.layout.pivotTable.width),y=r(c.dataFields,0,v-c.dataFields.length,'Data'),x='',w=r(c.columnFields,e.layout.rowHeaders.width,v-(e.layout.rowHeaders.width+c.columnFields.length)),T=function(){for(var r,n="",a=0;a";if(a";else s+=c.rowFields.reduce(function(e,r){return e+=t(r.caption)},"");s+=i.reduce(function(e,t){var r=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+r+""},""),n+=s+""}return n}(),C=function(){for(var t="",r=0;r";o+=n.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[r];o+=a.reduce(function(e,t,r){var n=c.dataFields[r%=c.dataFields.length].formatFunc,o=null==t.value?"":n?n()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+u(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":46,"./orb.ui.header":49,"./orb.utils":53}],40:[function(e,t,r){var n=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,r,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&n.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=r,this.excludeStatic=i,this.test=function(e){if(n.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue!==!1&&s.staticValue!==o.NONE},this.isAlwaysTrue=function(){return!(s.term||n.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":53}],41:[function(e,t,r){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":39,"./orb.pgrid":42,"./orb.query":44,"./orb.ui.pgridwidget":50,"./orb.utils":53}],42:[function(e,t,r){var n=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),u=t.exports=function(e){function t(e){e!==!1&&r(),f.rows.update(),f.columns.update(),p(),f.publish(u.EVENT_UPDATED)}function r(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var u=t.indexOf(l);u>=0&&(e[s]=0-(l+2),i.push(l))}}}var c,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(n)for(var h=0;h0)for(var n=0,o=[f.columns.root];np&&(h[u].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,n++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],r=0;r1){l.isNumber(r[0])||l.isDate(r[0])?r.sort(function(e,t){return e?t?e-t:1:t?-1:0}):r.sort();for(var u=0;u0?" - ":"")+e[r].caption;return t}for(var t=f.config,r=e(t.columnFields),n=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var r,n=[],a=!0,i=0;i0){for(r=0;r0){var r=i.headers[i.headers.length-1],n=r[0];if(n){for(var o,s=n.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),r(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(n.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(n.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],49:[function(e,t,r){function n(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var r=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:r="empty";break;case i.INNER:r="header "+r;break;case i.WRAPPER:r="header "+r;break;case i.SUB_TOTAL:r="header header-st "+r;break;case i.GRAND_TOTAL:r="header header-gt "+r}return r},getCellClass:function(e,t){var r="";switch(e){case i.GRAND_TOTAL:r="cell-gt";break;case i.SUB_TOTAL:r=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:r=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return r}};t.exports.header=function(e,t,r,a,s,l){function u(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var r=f.parent;null!=r&&(!r.dim.field.subTotal.visible||null!=r.subtotalHeader&&r.subtotalHeader.expanded);)r=r.parent;return null==r||null==r.subtotalHeader?t:r.subtotalHeader.expanded}function c(e){var t,r=0,n=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?r.value:o.value:e.config.dataFields[0],n.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){n.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){n.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":36,"./orb.state":45}],50:[function(e,t,r){var n=e("react-dom"),o=e("react"),a=e("./orb.axe"),i=e("./orb.pgrid"),s=e("./orb.ui.header"),l=e("./orb.ui.rows"),u=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),d=e("./react/orb.react.PivotChart.jsx"),p=e("./react/orb.react.PivotTable.jsx"),h=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){b.pgrid.subscribe(i.EVENT_UPDATED,f),b.pgrid.subscribe(i.EVENT_SORT_CHANGED,f),b.pgrid.subscribe(i.EVENT_CONFIG_CHANGED,f),r()}function r(){function e(e,t){return function(){return e()&&t()}}b.rows=new l(b.pgrid.rows),b.columns=new u(b.pgrid.columns);var t=b.rows.headers,r=b.columns.leafsHeaders;b.layout={rowHeaders:{width:(b.pgrid.rows.fields.length||1)+("rows"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:b.columns.leafsHeaders.length,height:(b.pgrid.columns.fields.length||1)+("columns"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0)}},b.layout.pivotTable={width:b.layout.rowHeaders.width+b.layout.columnHeaders.width,height:b.layout.rowHeaders.height+b.layout.columnHeaders.height};var n,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return b.pgrid.filteredDataSource[e]});r=e.rowType===s.HeaderType.GRAND_TOTAL&&e.colType===s.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===s.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===s.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:r,comp:{type:h,props:{headers:b.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:b.pgrid.config.theme}},theme:b.pgrid.config.theme,style:m.fontStyle})}},t()}},{"./orb.axe":36,"./orb.pgrid":42,"./orb.ui.cols":48,"./orb.ui.header":49,"./orb.ui.rows":51,"./react/orb.react.Dialog.jsx":55,"./react/orb.react.Grid.jsx":62,"./react/orb.react.PivotChart.jsx":65,"./react/orb.react.PivotTable.jsx":74,react:"react","react-dom":"react-dom"}],51:[function(e,t,r){var n=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var r=e[e.length-1],n=0;n0)for(var s=e.length-1,l=e[s],u=l.length>0?l[l.length-1]:null,c=0;c0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(r(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),r(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(n.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(n.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],52:[function(e,t,r){function n(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),r=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-r.left,y:t.top-r.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,r){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(n=t(e[o],o),!n||r===!0);o++);return n},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var r=0;r-1?void 0:r}return(0,a["default"])(e,r,2)},addEventListener:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):e["on"+t]=r},removeEventListener:function(e,t,r){e.removeEventListener?e.removeEventListener(t,r,!1):e.detachEvent?e.detachEvent("on"+t,r):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,r=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,r=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:r}}},function(e){function t(e){this.message=e}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.name="InvalidCharacterError",e.btoa=r&&r.btoa?function(e){return r.btoa(e)}:function(e){for(var r,o,a=String(e),i=0,s=n,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&r>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new t("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|o}return l},e.atob=r&&r.atob?function(e){return r.atob(e)}:function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=r.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=n.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/json/stringify":1}],54:[function(e,t,r){var n=e("react"),o=e("react-dom");t.exports=n.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var r=0;ro?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(n>l?(n-l)/2:0)+"px",e.style.left=(r>s?(r-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;t!=this.overlayElement&&"button-close"!==t.className||(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":53,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){var n=e("react-dom"),o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){u?i(u,function(){u=e,a(e,t)}):(u=e,a(e,t))}function r(e){c?i(c,function(){c=e,a(e)}):(c=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,u=null,c=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(u){var a=null!=c?c.position:null;s.moveButton(o,u.component.props.axetype,a)}d=null,t(null),r(null)}else d=n.findDOMNode(l)},registerTarget:function(e,t,r,n){p.push({component:e,axetype:t,onDragOver:r,onDragEnd:n})},unregisterTarget:function(e){for(var t,r=0;r0&&(t=s[s.length-1])}r(t)})}}}}()},{"../orb.utils":53,"react-dom":"react-dom"}],57:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx");t.exports=n.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),n.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":56,react:"react"}],58:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=n.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,r){return rs;)i.call(e,o=a[s++])&&t.push(o);return t}},{"./$":23}],14:[function(e,t,r){var n=e("./$.global"),o=e("./$.core"),a=e("./$.ctx"),i="prototype",s=function(e,t,r){var l,u,c,d=e&s.F,p=e&s.G,h=e&s.S,f=e&s.P,g=e&s.B,m=e&s.W,b=p?o:o[t]||(o[t]={}),v=p?n:h?n[t]:(n[t]||{})[i];p&&(r=t);for(l in r)u=!d&&v&&l in v,u&&l in b||(c=u?v[l]:r[l],b[l]=p&&"function"!=typeof v[l]?r[l]:g&&u?a(c,n):m&&v[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[i]=e[i],t}(c):f&&"function"==typeof c?a(Function.call,c):c,f&&((b[i]||(b[i]={}))[l]=c))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},{"./$.core":9,"./$.ctx":10,"./$.global":17}],15:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],16:[function(e,t,r){var n=e("./$.to-iobject"),o=e("./$").getNames,a={}.toString,i="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(t){return i.slice()}};t.exports.get=function(e){return i&&"[object Window]"==a.call(e)?s(e):o(n(e))}},{"./$":23,"./$.to-iobject":30}],17:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],18:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],19:[function(e,t,r){var n=e("./$"),o=e("./$.property-desc");t.exports=e("./$.descriptors")?function(e,t,r){return n.setDesc(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./$":23,"./$.descriptors":12,"./$.property-desc":26}],20:[function(e,t,r){var n=e("./$.cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./$.cof":8}],21:[function(e,t,r){var n=e("./$.cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./$.cof":8}],22:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],23:[function(e,t,r){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},{}],24:[function(e,t,r){var n=e("./$"),o=e("./$.to-iobject");t.exports=function(e,t){for(var r,a=o(e),i=n.getKeys(a),s=i.length,l=0;s>l;)if(a[r=i[l++]]===t)return r}},{"./$":23,"./$.to-iobject":30}],25:[function(e,t,r){t.exports=!0},{}],26:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],27:[function(e,t,r){t.exports=e("./$.hide")},{"./$.hide":19}],28:[function(e,t,r){var n=e("./$").setDesc,o=e("./$.has"),a=e("./$.wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},{"./$":23,"./$.has":18,"./$.wks":32}],29:[function(e,t,r){var n=e("./$.global"),o="__core-js_shared__",a=n[o]||(n[o]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./$.global":17}],30:[function(e,t,r){var n=e("./$.iobject"),o=e("./$.defined");t.exports=function(e){return n(o(e))}},{"./$.defined":11,"./$.iobject":20}],31:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],32:[function(e,t,r){var n=e("./$.shared")("wks"),o=e("./$.uid"),a=e("./$.global").Symbol;t.exports=function(e){return n[e]||(n[e]=a&&a[e]||(a||o)("Symbol."+e))}},{"./$.global":17,"./$.shared":29,"./$.uid":31}],33:[function(e,t,r){},{}],34:[function(e,t,r){var n=e("./$"),o=e("./$.global"),a=e("./$.has"),i=e("./$.descriptors"),s=e("./$.export"),l=e("./$.redefine"),u=e("./$.fails"),c=e("./$.shared"),d=e("./$.set-to-string-tag"),p=e("./$.uid"),h=e("./$.wks"),f=e("./$.keyof"),g=e("./$.get-names"),m=e("./$.enum-keys"),b=e("./$.is-array"),v=e("./$.an-object"),y=e("./$.to-iobject"),x=e("./$.property-desc"),w=n.getDesc,T=n.setDesc,C=n.create,E=g.get,S=o.Symbol,N=o.JSON,F=N&&N.stringify,M=!1,D=h("_hidden"),O=n.isEnum,A=c("symbol-registry"),L=c("symbols"),R="function"==typeof S,_=Object.prototype,k=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=w(_,t);n&&delete _[t],T(e,t,r),n&&e!==_&&T(_,t,n)}:T,P=function(e){var t=L[e]=C(S.prototype);return t._k=e,i&&M&&k(_,e,{configurable:!0,set:function(t){a(this,D)&&a(this[D],e)&&(this[D][e]=!1),k(this,e,x(1,t))}}),t},B=function(e){return"symbol"==typeof e},j=function(e,t,r){return r&&a(L,t)?(r.enumerable?(a(e,D)&&e[D][t]&&(e[D][t]=!1),r=C(r,{enumerable:x(0,!1)})):(a(e,D)||T(e,D,x(1,{})),e[D][t]=!0),k(e,t,r)):T(e,t,r)},H=function(e,t){v(e);for(var r,n=m(t=y(t)),o=0,a=n.length;a>o;)j(e,r=n[o++],t[r]);return e},W=function(e,t){return void 0===t?C(e):H(C(e),t)},$=function(e){var t=O.call(this,e);return t||!a(this,e)||!a(L,e)||a(this,D)&&this[D][e]?t:!0},z=function(e,t){var r=w(e=y(e),t);return!r||!a(L,t)||a(e,D)&&e[D][t]||(r.enumerable=!0),r},U=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])||t==D||n.push(t);return n},I=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])&&n.push(L[t]);return n},G=function(e){if(void 0!==e&&!B(e)){for(var t,r,n=[e],o=1,a=arguments;a.length>o;)n.push(a[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&b(t)||(t=function(e,t){return r&&(t=r.call(this,e,t)),B(t)?void 0:t}),n[1]=t,F.apply(N,n)}},V=u(function(){var e=S();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))});R||(S=function(){if(B(this))throw TypeError("Symbol is not a constructor");return P(p(arguments.length>0?arguments[0]:void 0))},l(S.prototype,"toString",function(){return this._k}),B=function(e){return e instanceof S},n.create=W,n.isEnum=$,n.getDesc=z,n.setDesc=j,n.setDescs=H,n.getNames=g.get=U,n.getSymbols=I,i&&!e("./$.library")&&l(_,"propertyIsEnumerable",$,!0));var q={"for":function(e){return a(A,e+="")?A[e]:A[e]=S(e)},keyFor:function(e){return f(A,e)},useSetter:function(){M=!0},useSimple:function(){M=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(e){var t=h(e);q[e]=R?t:P(t)}),M=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",q),s(s.S+s.F*!R,"Object",{create:W,defineProperty:j,defineProperties:H,getOwnPropertyDescriptor:z,getOwnPropertyNames:U,getOwnPropertySymbols:I}),N&&s(s.S+s.F*(!R||V),"JSON",{stringify:G}),d(S,"Symbol"),d(Math,"Math",!0),d(o.JSON,"JSON",!0)},{"./$":23,"./$.an-object":7,"./$.descriptors":12,"./$.enum-keys":13,"./$.export":14,"./$.fails":15,"./$.get-names":16,"./$.global":17,"./$.has":18,"./$.is-array":21,"./$.keyof":24,"./$.library":25,"./$.property-desc":26,"./$.redefine":27,"./$.set-to-string-tag":28,"./$.shared":29,"./$.to-iobject":30,"./$.uid":31,"./$.wks":32}],35:[function(e,t,r){function n(e,t,r,n){var a=0,i=0,s=("all"===t?r:t).length;return s>0&&(n||s>1?(o(e,t,r,function(e){i+=e}),i/=s,o(e,t,r,function(e){a+=(e-i)*(e-i)}),a/=n?s:s-1):a=NaN),a}function o(e,t,r,n){var o="all"===t;if(t=o?r:t,t.length>0)for(var a=0;ae)&&(s=e)}),s},max:function l(e,t,r){var l=null;return o(e,t,r,function(e){(null==l||e>l)&&(l=e)}),l},avg:function u(e,t,r){var u=0,n=("all"===t?r:t).length;return n>0&&(o(e,t,r,function(e){u+=e}),u/=n),u},prod:function c(e,t,r){var c,n=("all"===t?r:t).length;return n>0&&(c=1,o(e,t,r,function(e){c*=e})),c},stdev:function(e,t,r){return Math.sqrt(n(e,t,r,!1))},stdevp:function(e,t,r){return Math.sqrt(n(e,t,r,!0))},"var":function(e,t,r){return n(e,t,r,!1)},varp:function(e,t,r){return n(e,t,r,!0)}}},{}],36:[function(e,t,r){var n=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function r(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&n.isArray(e)&&e.length>0)for(var t=0,r=e.length;r>t;t++)for(var a=e[t],i=s.root,u=0;ut.name?1:0})})},t.exports.Type=a},{"./orb.dimension":38,"./orb.utils":53}],37:[function(e,t,r){function n(e,t,r){for(var n=0;n-1?e[r]:null}function n(e,t){for(var r=0;r=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,r(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,r(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,r(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return r(o.allFields,e)},this.getRowField=function(e){return r(o.rowFields,e)},this.getColumnField=function(e){return r(o.columnFields,e)},this.getDataField=function(e){return r(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=c.ownProperties(e),r=[],n=0;n',l="";t.exports=function(e){function t(e){return"'+e+""}function r(e,r,n,o){var a,i=o||"";for(a=0;r>a;a++)i+="";for(i+=e.reduce(function(e,r){return e+=t(r.caption)},""),a=0;n>a;a++)i+="";return i+""}function u(e){return n.btoa(unescape(encodeURIComponent(e)))}var c=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',b='style="background-color: '+g+';" bgcolor="'+g+'"',v=Math.max(c.dataFields.length+1,e.layout.pivotTable.width),y=r(c.dataFields,0,v-c.dataFields.length,'Data'),x='',w=r(c.columnFields,e.layout.rowHeaders.width,v-(e.layout.rowHeaders.width+c.columnFields.length)),T=function(){for(var r,n="",a=0;a";if(a";else s+=c.rowFields.reduce(function(e,r){return e+=t(r.caption)},"");s+=i.reduce(function(e,t){var r=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+r+""},""),n+=s+""}return n}(),C=function(){for(var t="",r=0;r";o+=n.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[r];o+=a.reduce(function(e,t,r){var n=c.dataFields[r%=c.dataFields.length].formatFunc,o=null==t.value?"":n?n()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+u(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":46,"./orb.ui.header":49,"./orb.utils":53}],40:[function(e,t,r){var n=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,r,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&n.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=r,this.excludeStatic=i,this.test=function(e){if(n.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue!==!1&&s.staticValue!==o.NONE},this.isAlwaysTrue=function(){return!(s.term||n.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":53}],41:[function(e,t,r){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":39,"./orb.pgrid":42,"./orb.query":44,"./orb.ui.pgridwidget":50,"./orb.utils":53}],42:[function(e,t,r){var n=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),u=t.exports=function(e){function t(e){e!==!1&&r(),f.rows.update(),f.columns.update(),p(),f.publish(u.EVENT_UPDATED)}function r(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var u=t.indexOf(l);u>=0&&(e[s]=0-(l+2),i.push(l))}}}var c,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(n)for(var h=0;h0)for(var n=0,o=[f.columns.root];np&&(h[u].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,n++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],r=0;r1){l.isNumber(r[0])||l.isDate(r[0])?r.sort(function(e,t){return e?t?e-t:1:t?-1:0}):r.sort();for(var u=0;u0?" - ":"")+e[r].caption;return t}for(var t=f.config,r=e(t.columnFields),n=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var r,n=[],a=!0,i=0;i0){for(r=0;r0){var r=i.headers[i.headers.length-1],n=r[0];if(n){for(var o,s=n.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),r(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(n.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(n.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],49:[function(e,t,r){function n(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var r=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:r="empty";break;case i.INNER:r="header "+r;break;case i.WRAPPER:r="header "+r;break;case i.SUB_TOTAL:r="header header-st "+r;break;case i.GRAND_TOTAL:r="header header-gt "+r}return r},getCellClass:function(e,t){var r="";switch(e){case i.GRAND_TOTAL:r="cell-gt";break;case i.SUB_TOTAL:r=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:r=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return r}};t.exports.header=function(e,t,r,a,s,l){function u(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var r=f.parent;null!=r&&(!r.dim.field.subTotal.visible||null!=r.subtotalHeader&&r.subtotalHeader.expanded);)r=r.parent;return null==r||null==r.subtotalHeader?t:r.subtotalHeader.expanded}function c(e){var t,r=0,n=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?r.value:o.value:e.config.dataFields[0],n.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){n.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){n.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":36,"./orb.state":45}],50:[function(e,t,r){var n=e("react-dom"),o=e("react"),a=e("./orb.axe"),i=e("./orb.pgrid"),s=e("./orb.ui.header"),l=e("./orb.ui.rows"),u=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),d=e("./react/orb.react.PivotChart.jsx"),p=e("./react/orb.react.PivotTable.jsx"),h=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){b.pgrid.subscribe(i.EVENT_UPDATED,f),b.pgrid.subscribe(i.EVENT_SORT_CHANGED,f),b.pgrid.subscribe(i.EVENT_CONFIG_CHANGED,f),r()}function r(){function e(e,t){return function(){return e()&&t()}}b.rows=new l(b.pgrid.rows),b.columns=new u(b.pgrid.columns);var t=b.rows.headers,r=b.columns.leafsHeaders;b.layout={rowHeaders:{width:(b.pgrid.rows.fields.length||1)+("rows"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:b.columns.leafsHeaders.length,height:(b.pgrid.columns.fields.length||1)+("columns"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0)}},b.layout.pivotTable={width:b.layout.rowHeaders.width+b.layout.columnHeaders.width,height:b.layout.rowHeaders.height+b.layout.columnHeaders.height};var n,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return b.pgrid.filteredDataSource[e]});r=e.rowType===s.HeaderType.GRAND_TOTAL&&e.colType===s.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===s.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===s.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:r,comp:{type:h,props:{headers:b.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:b.pgrid.config.theme}},theme:b.pgrid.config.theme,style:m.fontStyle})}},t()}},{"./orb.axe":36,"./orb.pgrid":42,"./orb.ui.cols":48,"./orb.ui.header":49,"./orb.ui.rows":51,"./react/orb.react.Dialog.jsx":55,"./react/orb.react.Grid.jsx":62,"./react/orb.react.PivotChart.jsx":65,"./react/orb.react.PivotTable.jsx":74,react:"react","react-dom":"react-dom"}],51:[function(e,t,r){var n=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var r=e[e.length-1],n=0;n0)for(var s=e.length-1,l=e[s],u=l.length>0?l[l.length-1]:null,c=0;c0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(r(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),r(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(n.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(n.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],52:[function(e,t,r){function n(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),r=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-r.left,y:t.top-r.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,r){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(n=t(e[o],o),!n||r===!0);o++);return n},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var r=0;r-1?void 0:r}return(0,a["default"])(e,r,2)},addEventListener:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):e["on"+t]=r},removeEventListener:function(e,t,r){e.removeEventListener?e.removeEventListener(t,r,!1):e.detachEvent?e.detachEvent("on"+t,r):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,r=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,r=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:r}}},function(e){function t(e){this.message=e}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.name="InvalidCharacterError",e.btoa=r&&r.btoa?function(e){return r.btoa(e)}:function(e){for(var r,o,a=String(e),i=0,s=n,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&r>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new t("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|o}return l},e.atob=r&&r.atob?function(e){return r.atob(e)}:function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=r.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=n.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/json/stringify":1}],54:[function(e,t,r){var n=e("react"),o=e("react-dom");t.exports=n.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var r=0;ro?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(n>l?(n-l)/2:0)+"px",e.style.left=(r>s?(r-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;t!=this.overlayElement&&"button-close"!==t.className||(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":53,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){var n=e("react-dom"),o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){u?i(u,function(){u=e,a(e,t)}):(u=e,a(e,t))}function r(e){c?i(c,function(){c=e,a(e)}):(c=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,u=null,c=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(u){var a=null!=c?c.position:null;s.moveButton(o,u.component.props.axetype,a)}d=null,t(null),r(null)}else d=n.findDOMNode(l)},registerTarget:function(e,t,r,n){p.push({component:e,axetype:t,onDragOver:r,onDragEnd:n})},unregisterTarget:function(e){for(var t,r=0;r0&&(t=s[s.length-1])}r(t)})}}}}()},{"../orb.utils":53,"react-dom":"react-dom"}],57:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx");t.exports=n.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),n.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":56,react:"react"}],58:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=n.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,r){return r=h&&u.pageX=f&&u.pageY=n&&(e.style.width=m+"px"),b>=o&&(e.style.height=b+"px",t.tBodies[0].style.height=p.bottom-p.top+g.y+"px"),s.stopPropagation(l),s.preventDefault(l)}},s.addEventListener(r,"mousedown",this.resizeMouseDown),s.addEventListener(document,"mouseup",this.resizeMouseUp),s.addEventListener(document,"mousemove",this.resizeMouseMove)}var i,c,d=this,p="indeterminate",h=!1,f=!1,g=l.Operators.MATCH,m="",b={filterContainer:null,checkboxes:{},searchBox:null,operatorBox:null,allCheckbox:null,addCheckbox:null,enableRegexButton:null,clearSearchButton:null,okButton:null,cancelButton:null,resizeGrip:null};this.init=function(e){b.filterContainer=e,b.checkboxes={},b.searchBox=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0],b.clearSearchButton=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0],b.operatorBox=b.filterContainer.rows[0].cells[0].children[0],b.okButton=b.filterContainer.rows[2].cells[0].children[0],b.cancelButton=b.filterContainer.rows[2].cells[0].children[1],b.resizeGrip=b.filterContainer.rows[2].cells[1].children[0];for(var t=b.filterContainer.rows[1].cells[0].children[0].rows,r=0;ri/2+1,n=0;n=0;u.checked=t.toExclude?!c:c}}},this.updateAllCheckbox=function(){if(!h){for(var t=null,r=0;r0){for(var i=[],s=0;s0)for(var l=0;l2&&(r+=" header-gt-exp")),e.leftmost&&(r+=" "+("cell-template-datavalue"===t.template?"cell":"header")+"-leftmost"),e.topmost&&(r+=" cell-topmost"),r}var o=e("react"),a=e("react-dom"),i=e("../orb.ui.header"),s=e("../orb.utils.dom"),l=null,u=null;t.exports=o.createClass({displayName:"exports",expand:function(){this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell)},collapse:function(){this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell)},updateCellInfos:function(){var e=a.findDOMNode(this),t=this.props.cell;if(e.__orb=e.__orb||{},t.visible()){var r=this.refs.cellContent,n=[],o=null==l,i=!this.props.leftmost&&null==u,c=e.textContent||e.innerText;if(o&&n.push("padding-left"),i&&n.push("border-left-width"),n.length>0){var d=s.getStyle(e,n,!0);o&&(l=parseFloat(d[0])),i&&(u=parseFloat(d[o?1:0]))}s.removeClass(e,"cell-hidden"),e.__orb._visible=!0,c==e.__orb._lastText&&e.__orb._textWidth||(e.__orb._lastText=c,e.__orb._textWidth=s.getSize(r).width),e.__orb._colSpan=this.props.cell.hspan(!0)||1,e.__orb._rowSpan=this.props.cell.vspan(!0)||1,e.__orb._paddingLeft=l,e.__orb._paddingRight=l,e.__orb._borderLeftWidth=this.props.leftmost?0:u,e.__orb._borderRightWidth=0}else e.__orb._visible=!1},componentDidMount:function(){this.updateCellInfos()},componentDidUpdate:function(){this.updateCellInfos()},shouldComponentUpdate:function(e,t){return!(e.cell&&e.cell==this.props.cell&&!this._latestVisibleState&&!e.cell.visible())},_latestVisibleState:!1,render:function(){var e,t,r=this,a=this.props.cell,s=[],l=!1;switch(this._latestVisibleState=a.visible(),a.template){case"cell-template-row-header":case"cell-template-column-header":var u=a.type===i.HeaderType.WRAPPER&&a.dim.field.subTotal.visible&&a.dim.field.subTotal.collapsible,c=a.type===i.HeaderType.SUB_TOTAL&&!a.expanded;u||c?(l=!0,s.push(o.createElement("table",{key:"header-value",ref:"cellContent"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"orb-tgl-btn"},o.createElement("div",{className:"orb-tgl-btn-"+(u?"down":"right"),onClick:u?this.collapse:this.expand})),o.createElement("td",{className:"hdr-val"},o.createElement("div",{dangerouslySetInnerHTML:{__html:a.value||" "}}))))))):e=(a.value||" ")+(a.type===i.HeaderType.SUB_TOTAL?" Total":"");break;case"cell-template-dataheader":e=a.value.caption;break;case"cell-template-datavalue":e=a.datafield&&a.datafield.formatFunc?a.datafield.formatFunc()(a.value):a.value,t=function(){r.props.pivotTableComp.pgridwidget.drilldown(a,r.props.pivotTableComp.id)}}if(!l){var d;switch(a.template){case"cell-template-datavalue":d="cell-data";break;default:"cell-template-dataheader"!=a.template&&a.type!==i.HeaderType.GRAND_TOTAL&&(d="hdr-val")}s.push(o.createElement("div",{key:"cell-value",ref:"cellContent",className:d},o.createElement("div",{dangerouslySetInnerHTML:{__html:e||" "}})))}return o.createElement("td",{className:n(this.props),onDoubleClick:t,colSpan:a.hspan(),rowSpan:a.vspan()},o.createElement("div",null,s))}})},{"../orb.ui.header":49,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],65:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=(e("./orb.react.Toolbar.jsx"),e("./orb.react.PivotTable.UpperButtons.jsx")),l=e("./orb.react.PivotTable.ColumnButtons.jsx"),u=e("./orb.react.PivotTable.RowButtons.jsx"),c=e("./orb.react.Chart.jsx"),d=e("../orb.utils.dom"),p=1,h={};t.exports=n.createClass({displayName:"exports",id:p++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),h[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&h[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=h[this.id].indexOf(e))>=0&&h[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t0&&!r&&i.lastLeftMostCellVSpan--,n.createElement("tr",{style:s},e)}})},{"../orb.axe":36,"./orb.react.PivotCell.jsx":64,react:"react"}],67:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotButton.jsx"),i=e("./orb.react.DropTarget.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.columnFields.map(function(t,r){return n.createElement(a,{key:t.name,field:t,axetype:o.Type.COLUMNS,position:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement(i,{buttons:r,axetype:o.Type.COLUMNS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],68:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r=0===t.columns.headers.length?"":" columns-cntr",i={lastLeftMostCellVSpan:0,topMostCells:{}},s=t.columns.headers.map(function(t,r){return n.createElement(a,{key:r,row:t,axetype:o.Type.COLUMNS,pivotTableComp:e.props.pivotTableComp,layoutInfos:i})});return n.createElement("div",{className:"inner-table-container"+r,onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,s)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],69:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r={lastLeftMostCellVSpan:0,topMostCells:{}},i=t.dataRows.map(function(t,i){return n.createElement(a,{key:i,row:t,axetype:o.Type.DATA,layoutInfos:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement("div",{className:"inner-table-container data-cntr",onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,i)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],70:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("./orb.react.DropTargetVertical.jsx"),s=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.rowFields.map(function(t,r){return n.createElement(o,{key:t.name,field:t,axetype:s.Type.ROWS,position:r,pivotTableComp:e.props.pivotTableComp})});return t.chartMode.enabled?n.createElement(i,{buttons:r,axetype:s.Type.ROWS}):n.createElement(a,{buttons:r,axetype:s.Type.ROWS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.DropTargetVertical.jsx":59,"./orb.react.PivotButton.jsx":63,react:"react"}],71:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.PivotRow.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",setColGroup:function(e){var t=o.findDOMNode(this),r=this.refs.colgroup;t.style.tableLayout="auto",r.innerHTML="";for(var n=0;n0&&(s.w+=e,s.colWidths[s.colWidths.length-1]+=e)},"table"===r&&o(this)}function o(e){if(e&&e.node){for(var t=e.node,r=[],n=0;n1&&l.__orb._rowSpan>=t.rows.length-n,0);c0;)i.inhibit--,a++,i=r[a];r.length-1r[a].width&&(r[a].width=u),r[a].inhibit=l.__orb._rowSpan-1,a++}}for(i=r[a];i;)i.inhibit>0&&i.inhibit--,a++,i=r[a]}e.w=0,e.colWidths=r.map(function(t,r){return e.w+=t.width,t.width})}}var a=e("react-dom"),i=e("../orb.utils.dom"),s=t.exports={synchronizeWidths:function(e){return e.pgridwidget.pgrid.config.chartMode.enabled?s.synchronizePivotChartWidths(e):void s.synchronizePivotTableWidths(e)},synchronizePivotChartWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.upperButtons),a=new n(e.refs.colButtons),s=new n(e.refs.rowButtons),l=(new n(e.refs.chart),Math.max(s.w,67)),u=r.w-l,c=e.pgridwidget.pgrid.config.height,d=c?c-(o.h+a.h):null;return i.updateTableColGroup(t,[l,u]),{width:u,height:d}},synchronizePivotTableWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.toolbar),a=new n(e.refs.colHeaders,!0,"table"),s=new n(e.refs.rowHeaders,!0,"table"),l=new n(e.refs.dataCells,!0,"table"),u=new n(e.refs.upperButtons),c=new n(e.refs.colButtons),d=new n(e.refs.rowButtons,!0),p=new n(e.refs.horizontalScrollBar),h=new n(e.refs.verticalScrollBar),f=l.getLargestWidths(a),g=Math.max(s.w,d.w,67),m=Math.min(f.total+1,r.w-g-h.w),b=e.pgridwidget.pgrid.config.height,v=b?b-(o?o.h+17:0)-(u.h+c.h+a.h+p.h):null,y=v?Math.ceil(Math.min(v,l.h)):null;s.addToWidth(g-s.w),i.updateTableColGroup(l.node,f.max),i.updateTableColGroup(a.node,f.max),i.updateTableColGroup(s.node,s.colWidths),l.setStyle("width",f.total),a.setStyle("width",f.total),s.setStyle("width",g),l.setParentStyle("width",m),a.setParentStyle("width",m),y&&(l.setParentStyle("height",y),s.setParentStyle("height",y)),i.updateTableColGroup(t,[g,m,h.w,Math.max(r.w-(g+m+h.w),0)]),e.refs.horizontalScrollBar.refresh(),e.refs.verticalScrollBar.refresh()}}},{"../orb.utils.dom":52,"react-dom":"react-dom"}],73:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e,t=this,r=this.props.pivotTableComp.pgridwidget.pgrid.config;if(r.canMoveFields){var s=r.availablefields().map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:null,position:r,pivotTableComp:t.props.pivotTableComp})});e=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap av-flds text-muted"},n.createElement("div",null,"Fields")),n.createElement("td",{className:"av-flds"},n.createElement(a,{buttons:s,axetype:null})))}else e=null;var l=r.dataFields.map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:i.Type.DATA,position:r,pivotTableComp:t.props.pivotTableComp})}),u=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap text-muted"},n.createElement("div",null,"Data")),n.createElement("td",{className:"empty"},n.createElement(a,{buttons:l,axetype:i.Type.DATA})));return n.createElement("table",{className:"inner-table upper-buttons"},n.createElement("tbody",null,e,u))}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],74:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=e("./orb.react.Toolbar.jsx"),l=e("./orb.react.PivotTable.UpperButtons.jsx"),u=e("./orb.react.PivotTable.ColumnButtons.jsx"),c=e("./orb.react.PivotTable.RowButtons.jsx"),d=e("./orb.react.PivotTable.RowHeaders.jsx"),p=e("./orb.react.PivotTable.ColumnHeaders.jsx"),h=e("./orb.react.PivotTable.DataCells.jsx"),f=e("./orb.react.ScrollBars.jsx"),g=f.HorizontalScrollBar,m=f.VerticalScrollBar,b=e("../orb.utils"),v=e("../orb.utils.dom"),y=1,x={};t.exports=n.createClass({displayName:"exports",id:y++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),x[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},toggleSubtotals:function(e){this.pgridwidget.toggleSubtotals(e)},toggleGrandtotal:function(e){this.pgridwidget.toggleGrandtotal(e)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&x[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=x[this.id].indexOf(e))>=0&&x[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),r=s.getSize(e),n=this.getScrollSize(),o=t[this.sizeProp]>=r[this.sizeProp]?0:t[this.sizeProp]/r[this.sizeProp]*n;this.setState({containerSize:n,size:o,thumbOffset:Math.min(this.state.thumbOffset,n-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var r=this.getScrollSize()-this.state.size,n=this.state.thumbOffset+e;if(0>n&&(n=0),n>r&&(n=r),this.state.thumbOffset!=n)return this.setState({thumbOffset:n},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var r="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,n=this.state.size<=0?null:o.createElement("div",{className:r,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},n)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":53,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],76:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=n.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;e=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),r=s.getSize(e),n=this.getScrollSize(),o=t[this.sizeProp]>=r[this.sizeProp]?0:t[this.sizeProp]/r[this.sizeProp]*n;this.setState({containerSize:n,size:o,thumbOffset:Math.min(this.state.thumbOffset,n-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var r=this.getScrollSize()-this.state.size,n=this.state.thumbOffset+e;if(0>n&&(n=0),n>r&&(n=r),this.state.thumbOffset!=n)return this.setState({thumbOffset:n},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var r="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,n=this.state.size<=0?null:o.createElement("div",{className:r,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},n)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":53,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],76:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=n.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;e.\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/json/stringify\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/json/stringify\": 4\n }],\n 2: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/symbol\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/symbol\": 5\n }],\n 3: [function(_dereq_, module, exports) {\n\n var _Symbol = _dereq_(\"babel-runtime/core-js/symbol\")[\"default\"];\n\n exports[\"default\"] = function(obj) {\n return obj && obj.constructor === _Symbol ? \"symbol\" : typeof obj;\n };\n\n exports.__esModule = true;\n }, {\n \"babel-runtime/core-js/symbol\": 2\n }],\n 4: [function(_dereq_, module, exports) {\n var core = _dereq_('../../modules/$.core');\n module.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments);\n };\n }, {\n \"../../modules/$.core\": 9\n }],\n 5: [function(_dereq_, module, exports) {\n _dereq_('../../modules/es6.symbol');\n _dereq_('../../modules/es6.object.to-string');\n module.exports = _dereq_('../../modules/$.core').Symbol;\n }, {\n \"../../modules/$.core\": 9,\n \"../../modules/es6.object.to-string\": 33,\n \"../../modules/es6.symbol\": 34\n }],\n 6: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n }, {}],\n 7: [function(_dereq_, module, exports) {\n var isObject = _dereq_('./$.is-object');\n module.exports = function(it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n }, {\n \"./$.is-object\": 22\n }],\n 8: [function(_dereq_, module, exports) {\n var toString = {}.toString;\n\n module.exports = function(it) {\n return toString.call(it).slice(8, -1);\n };\n }, {}],\n 9: [function(_dereq_, module, exports) {\n var core = module.exports = {\n version: '1.2.6'\n };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n }, {}],\n 10: [function(_dereq_, module, exports) {\n // optional / simple context binding\n var aFunction = _dereq_('./$.a-function');\n module.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n };\n }, {\n \"./$.a-function\": 6\n }],\n 11: [function(_dereq_, module, exports) {\n // 7.2.1 RequireObjectCoercible(argument)\n module.exports = function(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n }, {}],\n 12: [function(_dereq_, module, exports) {\n // Thank's IE8 for his funny defineProperty\n module.exports = !_dereq_('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {\n get: function() {\n return 7;\n }\n }).a != 7;\n });\n }, {\n \"./$.fails\": 15\n }],\n 13: [function(_dereq_, module, exports) {\n // all enumerable object keys, includes symbols\n var $ = _dereq_('./$');\n module.exports = function(it) {\n var keys = $.getKeys(it),\n getSymbols = $.getSymbols;\n if (getSymbols) {\n var symbols = getSymbols(it),\n isEnum = $.isEnum,\n i = 0,\n key;\n while (symbols.length > i)\n if (isEnum.call(it, key = symbols[i++])) keys.push(key);\n }\n return keys;\n };\n }, {\n \"./$\": 23\n }],\n 14: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n core = _dereq_('./$.core'),\n ctx = _dereq_('./$.ctx'),\n PROTOTYPE = 'prototype';\n\n var $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && key in target;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n };\n // type bitmap\n $export.F = 1; // forced\n $export.G = 2; // global\n $export.S = 4; // static\n $export.P = 8; // proto\n $export.B = 16; // bind\n $export.W = 32; // wrap\n module.exports = $export;\n }, {\n \"./$.core\": 9,\n \"./$.ctx\": 10,\n \"./$.global\": 17\n }],\n 15: [function(_dereq_, module, exports) {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n }, {}],\n 16: [function(_dereq_, module, exports) {\n // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n var toIObject = _dereq_('./$.to-iobject'),\n getNames = _dereq_('./$').getNames,\n toString = {}.toString;\n\n var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\n\n var getWindowNames = function(it) {\n try {\n return getNames(it);\n } catch (e) {\n return windowNames.slice();\n }\n };\n\n module.exports.get = function getOwnPropertyNames(it) {\n if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it);\n return getNames(toIObject(it));\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 17: [function(_dereq_, module, exports) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n }, {}],\n 18: [function(_dereq_, module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n module.exports = function(it, key) {\n return hasOwnProperty.call(it, key);\n };\n }, {}],\n 19: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n createDesc = _dereq_('./$.property-desc');\n module.exports = _dereq_('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n }, {\n \"./$\": 23,\n \"./$.descriptors\": 12,\n \"./$.property-desc\": 26\n }],\n 20: [function(_dereq_, module, exports) {\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n var cof = _dereq_('./$.cof');\n module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n };\n }, {\n \"./$.cof\": 8\n }],\n 21: [function(_dereq_, module, exports) {\n // 7.2.2 IsArray(argument)\n var cof = _dereq_('./$.cof');\n module.exports = Array.isArray || function(arg) {\n return cof(arg) == 'Array';\n };\n }, {\n \"./$.cof\": 8\n }],\n 22: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n }, {}],\n 23: [function(_dereq_, module, exports) {\n var $Object = Object;\n module.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n };\n }, {}],\n 24: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n toIObject = _dereq_('./$.to-iobject');\n module.exports = function(object, el) {\n var O = toIObject(object),\n keys = $.getKeys(O),\n length = keys.length,\n index = 0,\n key;\n while (length > index)\n if (O[key = keys[index++]] === el) return key;\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 25: [function(_dereq_, module, exports) {\n module.exports = true;\n }, {}],\n 26: [function(_dereq_, module, exports) {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n }, {}],\n 27: [function(_dereq_, module, exports) {\n module.exports = _dereq_('./$.hide');\n }, {\n \"./$.hide\": 19\n }],\n 28: [function(_dereq_, module, exports) {\n var def = _dereq_('./$').setDesc,\n has = _dereq_('./$.has'),\n TAG = _dereq_('./$.wks')('toStringTag');\n\n module.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n };\n }, {\n \"./$\": 23,\n \"./$.has\": 18,\n \"./$.wks\": 32\n }],\n 29: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\n module.exports = function(key) {\n return store[key] || (store[key] = {});\n };\n }, {\n \"./$.global\": 17\n }],\n 30: [function(_dereq_, module, exports) {\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n var IObject = _dereq_('./$.iobject'),\n defined = _dereq_('./$.defined');\n module.exports = function(it) {\n return IObject(defined(it));\n };\n }, {\n \"./$.defined\": 11,\n \"./$.iobject\": 20\n }],\n 31: [function(_dereq_, module, exports) {\n var id = 0,\n px = Math.random();\n module.exports = function(key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n }, {}],\n 32: [function(_dereq_, module, exports) {\n var store = _dereq_('./$.shared')('wks'),\n uid = _dereq_('./$.uid'),\n Symbol = _dereq_('./$.global').Symbol;\n module.exports = function(name) {\n return store[name] || (store[name] =\n Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n };\n }, {\n \"./$.global\": 17,\n \"./$.shared\": 29,\n \"./$.uid\": 31\n }],\n 33: [function(_dereq_, module, exports) {\n\n }, {}],\n 34: [function(_dereq_, module, exports) {\n\n // ECMAScript 6 symbols shim\n var $ = _dereq_('./$'),\n global = _dereq_('./$.global'),\n has = _dereq_('./$.has'),\n DESCRIPTORS = _dereq_('./$.descriptors'),\n $export = _dereq_('./$.export'),\n redefine = _dereq_('./$.redefine'),\n $fails = _dereq_('./$.fails'),\n shared = _dereq_('./$.shared'),\n setToStringTag = _dereq_('./$.set-to-string-tag'),\n uid = _dereq_('./$.uid'),\n wks = _dereq_('./$.wks'),\n keyOf = _dereq_('./$.keyof'),\n $names = _dereq_('./$.get-names'),\n enumKeys = _dereq_('./$.enum-keys'),\n isArray = _dereq_('./$.is-array'),\n anObject = _dereq_('./$.an-object'),\n toIObject = _dereq_('./$.to-iobject'),\n createDesc = _dereq_('./$.property-desc'),\n getDesc = $.getDesc,\n setDesc = $.setDesc,\n _create = $.create,\n getNames = $names.get,\n $Symbol = global.Symbol,\n $JSON = global.JSON,\n _stringify = $JSON && $JSON.stringify,\n setter = false,\n HIDDEN = wks('_hidden'),\n isEnum = $.isEnum,\n SymbolRegistry = shared('symbol-registry'),\n AllSymbols = shared('symbols'),\n useNative = typeof $Symbol == 'function',\n ObjectProto = Object.prototype;\n\n // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n var setSymbolDesc = DESCRIPTORS && $fails(function() {\n return _create(setDesc({}, 'a', {\n get: function() {\n return setDesc(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n }) ? function(it, key, D) {\n var protoDesc = getDesc(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n setDesc(it, key, D);\n if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc);\n } : setDesc;\n\n var wrap = function(tag) {\n var sym = AllSymbols[tag] = _create($Symbol.prototype);\n sym._k = tag;\n DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: function(value) {\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n }\n });\n return sym;\n };\n\n var isSymbol = function(it) {\n return typeof it == 'symbol';\n };\n\n var $defineProperty = function defineProperty(it, key, D) {\n if (D && has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n return setSymbolDesc(it, key, D);\n }\n return setDesc(it, key, D);\n };\n var $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P)),\n i = 0,\n l = keys.length,\n key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n };\n var $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n };\n var $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key);\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n };\n var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n var D = getDesc(it = toIObject(it), key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n };\n var $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key);\n return result;\n };\n var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]);\n return result;\n };\n var $stringify = function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it],\n i = 1,\n $$ = arguments,\n replacer, $replacer;\n while ($$.length > i) args.push($$[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function(key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n };\n var buggyJSON = $fails(function() {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n });\n\n // 19.4.1.1 Symbol([description])\n if (!useNative) {\n $Symbol = function Symbol() {\n if (isSymbol(this)) throw TypeError('Symbol is not a constructor');\n return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));\n };\n redefine($Symbol.prototype, 'toString', function toString() {\n return this._k;\n });\n\n isSymbol = function(it) {\n return it instanceof $Symbol;\n };\n\n $.create = $create;\n $.isEnum = $propertyIsEnumerable;\n $.getDesc = $getOwnPropertyDescriptor;\n $.setDesc = $defineProperty;\n $.setDescs = $defineProperties;\n $.getNames = $names.get = $getOwnPropertyNames;\n $.getSymbols = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_('./$.library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n }\n\n var symbolStatics = {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n return keyOf(SymbolRegistry, key);\n },\n useSetter: function() {\n setter = true;\n },\n useSimple: function() {\n setter = false;\n }\n };\n // 19.4.2.2 Symbol.hasInstance\n // 19.4.2.3 Symbol.isConcatSpreadable\n // 19.4.2.4 Symbol.iterator\n // 19.4.2.6 Symbol.match\n // 19.4.2.8 Symbol.replace\n // 19.4.2.9 Symbol.search\n // 19.4.2.10 Symbol.species\n // 19.4.2.11 Symbol.split\n // 19.4.2.12 Symbol.toPrimitive\n // 19.4.2.13 Symbol.toStringTag\n // 19.4.2.14 Symbol.unscopables\n $.each.call((\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +\n 'species,split,toPrimitive,toStringTag,unscopables'\n ).split(','), function(it) {\n var sym = wks(it);\n symbolStatics[it] = useNative ? sym : wrap(sym);\n });\n\n setter = true;\n\n $export($export.G + $export.W, {\n Symbol: $Symbol\n });\n\n $export($export.S, 'Symbol', symbolStatics);\n\n $export($export.S + $export.F * !useNative, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n });\n\n // 24.3.2 JSON.stringify(value [, replacer [, space]])\n $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {\n stringify: $stringify\n });\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag]\n setToStringTag($Symbol, 'Symbol');\n // 20.2.1.9 Math[@@toStringTag]\n setToStringTag(Math, 'Math', true);\n // 24.3.3 JSON[@@toStringTag]\n setToStringTag(global.JSON, 'JSON', true);\n }, {\n \"./$\": 23,\n \"./$.an-object\": 7,\n \"./$.descriptors\": 12,\n \"./$.enum-keys\": 13,\n \"./$.export\": 14,\n \"./$.fails\": 15,\n \"./$.get-names\": 16,\n \"./$.global\": 17,\n \"./$.has\": 18,\n \"./$.is-array\": 21,\n \"./$.keyof\": 24,\n \"./$.library\": 25,\n \"./$.property-desc\": 26,\n \"./$.redefine\": 27,\n \"./$.set-to-string-tag\": 28,\n \"./$.shared\": 29,\n \"./$.to-iobject\": 30,\n \"./$.uid\": 31,\n \"./$.wks\": 32\n }],\n 35: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function toAggregateFunc(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function count(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function sum(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function min(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function max(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function avg(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function prod(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function stdev(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function stdevp(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function _var(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function varp(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 36: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n }();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 38,\n \"./orb.utils\": 53\n }],\n 37: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, null)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc || defaultFormatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function notequalfield(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.filtering\": 40,\n \"./orb.themes\": 46,\n \"./orb.utils\": 53\n }],\n 38: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 39: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n var rowHeadersAndDataCells = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 46,\n \"./orb.ui.header\": 49,\n \"./orb.utils\": 53\n }],\n 40: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function get(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function func(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function func(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function func(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function func(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function func(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function func(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 41: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 39,\n \"./orb.pgrid\": 42,\n \"./orb.query\": 44,\n \"./orb.ui.pgridwidget\": 50,\n \"./orb.utils\": 53\n }],\n 42: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.config\": 37,\n \"./orb.filtering\": 40,\n \"./orb.pubsub\": 43,\n \"./orb.query\": 44,\n \"./orb.utils\": 53\n }],\n 43: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 44: [function(_dereq_, module, exports) {\n\n var _typeof2 = _dereq_('babel-runtime/helpers/typeof');\n\n var _typeof3 = _interopRequireDefault(_typeof2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function queryBase(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function pgridQuery(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function arrayQuery(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.utils\": 53,\n \"babel-runtime/helpers/typeof\": 3\n }],\n 45: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 46: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function rgbaToHex(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function rgbaToHexA(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function fadeoutColor(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n }();\n\n }, {}],\n 47: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.header\": 49\n }],\n 48: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 49: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function getHeaderClass(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function getCellClass(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(_hspan, _vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function hspan() {\n return _hspan;\n },\n vspan: function vspan() {\n return _vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.state\": 45\n }],\n 50: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n React = _dereq_('react'),\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.pgrid\": 42,\n \"./orb.ui.cols\": 48,\n \"./orb.ui.header\": 49,\n \"./orb.ui.rows\": 51,\n \"./react/orb.react.Dialog.jsx\": 55,\n \"./react/orb.react.Grid.jsx\": 62,\n \"./react/orb.react.PivotChart.jsx\": 65,\n \"./react/orb.react.PivotTable.jsx\": 74,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 51: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 52: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function f(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function f(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 53: [function(_dereq_, module, exports) {\n (function(global) {\n\n var _stringify = _dereq_('babel-runtime/core-js/json/stringify');\n\n var _stringify2 = _interopRequireDefault(_stringify);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n module.exports = {\n\n ns: function ns(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function ownProperties(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function forEach(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function isArray(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function isNumber(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function isDate(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function isString(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function isRegExp(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function escapeRegex(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function findInArray(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function jsonStringify(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return (0, _stringify2.default)(obj, censor, 2);\n },\n addEventListener: function addEventListener(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function removeEventListener(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function preventDefault(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function getEventButton(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function getMousePageXY(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {\n \"babel-runtime/core-js/json/stringify\": 1\n }],\n 54: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n return {\n canRender: false\n };\n },\n canRender: function canRender() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function drawChart() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.drawChart();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.drawChart();\n },\n render: function render() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 55: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function create() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function show(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function setOverlayClass(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function componentDidMount() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function close(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function render() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 56: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n module.exports = function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function init(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function setDragElement(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function unregisterTarget(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function unregisterIndicator(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function elementMoved() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n }();\n\n }, {\n \"../orb.utils\": 53,\n \"react-dom\": \"react-dom\"\n }],\n 57: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function getInitialState() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"react\": \"react\"\n }],\n 58: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 59: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 60: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function openOrClose(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function onMouseEnter() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function onMouseLeave() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function componentDidMount() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function selectValue(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function render() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 61: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function getInitialState() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function destroy() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function onFilter(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function onMouseDown(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function onMouseWheel(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function componentWillMount() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function componentDidMount() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function render() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 40,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.Dropdown.jsx\": 60,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 62: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 63: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function getInitialState() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function onFilterMouseDown(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function onMouseDown(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function onMouseMove(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function updateClasses() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function render() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.FilterPanel.jsx\": 61,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 64: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function expand() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function collapse() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function updateCellInfos() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function componentDidMount() {\n this.updateCellInfos();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function render() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function cellClick() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 49,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 65: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function synchronizeWidths() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 52,\n \"./orb.react.Chart.jsx\": 54,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 66: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotCell.jsx\": 64,\n \"react\": \"react\"\n }],\n 67: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 68: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 69: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 70: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.DropTargetVertical.jsx\": 59,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 71: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function setColGroup(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 72: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function synchronizeWidths(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 52,\n \"react-dom\": \"react-dom\"\n }],\n 73: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 74: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function onWheel(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function synchronizeWidths() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 68,\n \"./orb.react.PivotTable.DataCells.jsx\": 69,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 71,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.ScrollBars.jsx\": 75,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 75: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function getInitialState() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function componentDidMount() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function onMouseDown(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function onMouseMove(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function getScrollSize() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function setScrollClient(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function getScrollPercent() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function refresh() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function scroll(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function onWheel(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function render() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 76: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function componentDidMount() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function createCallback(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function render() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function exportToExcel(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function expandAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function collapseAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function expandAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function collapseAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function initSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function initGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.export.excel\": 39,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\"\n }]\n }, {}, [41])(41)\n});"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["orb.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","orb","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","default","__esModule","core-js/library/fn/json/stringify",2,"core-js/library/fn/symbol",3,"_Symbol","obj","constructor","babel-runtime/core-js/symbol",4,"core","it","JSON","stringify","apply","arguments","../../modules/$.core",5,"Symbol","../../modules/es6.object.to-string","../../modules/es6.symbol",6,"TypeError",7,"isObject","./$.is-object",8,"toString","slice",9,"version","__e",10,"aFunction","fn","that","undefined","b","c","./$.a-function",11,12,"Object","defineProperty","get","./$.fails",13,"$","keys","getKeys","getSymbols","key","symbols","isEnum","push","./$",14,"ctx","PROTOTYPE","$export","type","name","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","target","C","param","Function","./$.core","./$.ctx","./$.global",15,"exec",16,"toIObject","getNames","windowNames","getOwnPropertyNames","getWindowNames","./$.to-iobject",17,"Math","__g",18,"hasOwnProperty",19,"createDesc","object","value","setDesc","./$.descriptors","./$.property-desc",20,"cof","propertyIsEnumerable","split","./$.cof",21,"Array","isArray","arg",22,23,"$Object","create","getProto","getPrototypeOf","getDesc","getOwnPropertyDescriptor","setDescs","defineProperties","getOwnPropertySymbols","each","forEach",24,"el","O","index",25,26,"bitmap","enumerable","configurable","writable",27,"./$.hide",28,"def","has","TAG","tag","stat","prototype","./$.has","./$.wks",29,"SHARED","store",30,"IObject","defined","./$.defined","./$.iobject",31,"id","px","random","concat",32,"uid","./$.shared","./$.uid",33,34,"DESCRIPTORS","redefine","$fails","shared","setToStringTag","wks","keyOf","$names","enumKeys","anObject","_create","$Symbol","$JSON","_stringify","setter","HIDDEN","SymbolRegistry","AllSymbols","useNative","ObjectProto","setSymbolDesc","D","protoDesc","wrap","sym","_k","set","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","result","$getOwnPropertySymbols","$stringify","replacer","$replacer","args","$$","buggyJSON","symbolStatics","for","keyFor","useSetter","useSimple","./$.an-object","./$.enum-keys","./$.export","./$.get-names","./$.is-array","./$.keyof","./$.library","./$.redefine","./$.set-to-string-tag",35,"calcVariance","datafield","intersection","datasource","population","variance","avg","len","forEachIntersection","val","NaN","callback","all","Aggregations","toAggregateFunc","func","sum","count","min","max","prod","stdev","sqrt","stdevp","var","varp",36,"utils","Dimension","AxeType","COLUMNS","ROWS","DATA","pgrid","getfieldindex","field","fields","fill","filteredDataSource","dimensionsCount","rowIndex","dataLength","row","dim","root","findex","depth","subfield","subvalue","subdimvals","values","dimid","rowIndexes","dimensionsByDepth","config","columnFields","rowFields","dataFields","update","ffield","sort","order","donottoggle","parents","customfunc","reverse","flattenValues","map","currDim","isRoot","parent","Type","./orb.dimension","./orb.utils",37,"getpropertyvalue","property","configs","defaultvalue","mergefieldconfigs","merged","sorts","subtotals","functions","nnconfig","subTotal","aggregateFuncName","aggregateFunc","formatFunc","createfield","rootconfig","axetype","fieldconfig","defaultfieldconfig","defaultFormatFunc","axeconfig","fieldAxeconfig","axe","rowSettings","columnSettings","dataSettings","Field","caption","visible","collapsible","collapsed","aggregation","GrandTotalConfig","options","rowsvisible","columnsvisible","SubTotalConfig","setdefaults","defaults","SortConfig","ChartConfig","enabled","filtering","themeManager","createSubOptions","_aggregatefunc","_formatfunc","isString","ensureFieldConfig","captionToName","getfield","axefields","fieldname","fieldindex","fi","dataSource","canMoveFields","dataHeadersLocation","grandTotal","width","height","toolbar","theme","chartMode","current","dataSourceFieldNames","dataSourceFieldCaptions","fcaptionIndex","indexOf","nameToCaption","fnameIndex","setTheme","newTheme","allFields","rows","columns","data","dataFieldsCount","runtimeVisibility","getField","getRowField","getColumnField","getDataField","availablefields","filter","notequalfield","otherfield","every","getDataSourceFieldCaptions","row0","fieldNames","ownProperties","headers","getPreFilters","prefilters","preFilters","filteredField","prefilterConfig","expressionFilter","opname","moveField","oldaxetype","newaxetype","position","oldaxe","oldposition","newaxe","fieldConfig","defaultFieldConfig","newAxeSubtotalsState","areSubtotalsVisible","splice","toggleSubtotals","axeFields","newState","toggleGrandtotal","isGrandtotalVisible","./orb.aggregation","./orb.axe","./orb.filtering","./orb.themes",38,"isLeaf","getRowIndexes","j",39,"uiheaders","uriHeader","docHeader","docFooter","pgridwidget","createButtonCell","buttonStyle","buttonTextColor","createButtons","buttons","cellsCountBefore","cellsCountAfter","prefix","str","reduce","tr","toBase64","btoa","unescape","encodeURIComponent","currTheme","override","themeColor","themes","themeFadeout","fadeoutColor","headerStyle","cellsHorizontalCount","layout","pivotTable","sep","rowHeaders","columnHeaders","currRow","rowStr","header","HeaderType","DATA_HEADER","hspan","vspan","rowHeadersAndDataCells","dataRow","dataRows","dataCell","./orb.ui.header",40,"ALL","NONE","BLANK","operator","term","staticValue","excludeStatic","ops","regexpMode","regexpSupported","isRegExp","ignoreCase","RegExp","test","found","isAlwaysTrue","Operators","MATCH","NOTMATCH","EQ","NEQ","GT","GTE","LT","LTE","search",41,"query","./orb.export.excel","./orb.pgrid","./orb.query","./orb.ui.pgridwidget",42,"PubSub","configuration","refresh","refreshFilters","refreshFilteredDataSource","computeValues","publish","EVENT_UPDATED","filterFields","filters","exclude","fieldFilter","computeValue","colIndexes","origRowIndexes","res","ri","rowindex","colrowindex","emptyIntersection","datafields","fieldnameIndex","datafieldIndex","defaultfield","dfi","computeRowValues","rowDim","rid","_iCache","p","rowindexes","subdim","cid","ur","vr","dataMatrix","EVENT_SORT_CHANGED","applyFilter","refreshData","EVENT_CONFIG_CHANGED","getFieldValues","filterFunc","values1","containsBlank","isNumber","isDate","vi","unshift","getFieldFilter","isFieldFiltered","getData","rowdim","coldim","datafieldName","calcAggregation","getChartData","getAxisLabel","axisFields","ti","hAxisLabel","vAxisLabel","legendsLabel","rowLeafDimensions","colLeafDimensions","ci","cdim","currData","rri","title","colNames","d","dataTable","./orb.config","./orb.pubsub",43,"_topics","subscribe","topic","isFunction",44,"_interopRequireDefault","_typeof2","_typeof3","queryBase","extractResult","aggs","outerArgs","multi","ai","multiFieldNames","getCaptionName","datafieldname","measureFunc","fieldsConfig","cleanOptions","compute","setDefaultAggFunctions","valname","aggFunctions","funcIndex","funcName","pgridQuery","filterDimensions","upperDims","some","upperDim","innerArgs","opts","setup","parameters","fIndex","colFields","df","dfname","dfcaption","applyFilters","sortedFilters","f1","f2","currAxe","filterIndex","filtered","rowdims","coldims","rdi","cdi","arrayQuery","array","setCaptionName","fname","fcaption","toAggregate","include","aggFunc","babel-runtime/helpers/typeof",45,"states","state",46,"isBootstrap","currentTheme","red","blue","green","orange","flower","gray","black","white","rfi","validateTheme","themeName","trim","getPivotClasses","container","table","getButtonClasses","pivotButton","orbButton","scrollBar","getFilterClasses","getGridClasses","getDialogClasses","classes","overlay","dialog","content","body","hexToRgb","hex","parseInt","rgbaToHex","rgba","matches","match","alpha","parseFloat","applyAlphaAndToHex","rgbaToHexA","floor","substr","color",47,"axeModel","isMultiDataFields","toggleFieldExpansion","hIndex","toToggle","allExpanded","SUB_TOTAL","expanded","collapse","expand",48,"axeUi","columnsAxe","generateLeafsHeaders","pushsubtotal","pheader","leafsHeaders","subtotalHeader","infos","currparent","prevpar","grandpar","prevgrandpar","leafIndex","datafieldindex","dataHeader","getUiInfo","pi","parentDim","di","build","GRAND_TOTAL","INNER","./orb.ui.axe",49,"CellBase","template","cssclass","isvisible","getState","setState","EMPTY","DATA_VALUE","FIELD_BUTTON","WRAPPER","getHeaderClass","headerType","getCellClass","rowHeaderType","colHeaderType","datafieldscount","isParentExpanded","hparent","isexpanded","par","calcSpan","ignoreVisibility","subSpan","tspan","addone","isRowsAxe","subheaders","subheader","rowinfo","colinfo","rowDimension","columnDimension","rowType","colType","buttonCell","emptyCell","_hspan","_vspan","./orb.state",50,"ReactDOM","React","uirows","uicols","Dialog","PivotChart","PivotTable","Grid","init","buildUiAndRender","buildUi","createVisibleFunc","rowvisible","colvisible","rowsHeaders","columnsLeafHeaders","arr","rowHeadersRow","rowLeafHeader","colHeaderIndex","columnLeafHeader","render","renderElement","pivotComponent","expandRow","cell","collapseRow","oldAxeType","newAxeType","axeToExpand","changeTheme","element","pivotTableFactory","createFactory","pivottable","drilldown","pivotId","show","comp","props","style","fontStyle","./orb.ui.cols","./orb.ui.rows","./react/orb.react.Dialog.jsx","./react/orb.react.Grid.jsx","./react/orb.react.PivotChart.jsx","./react/orb.react.PivotTable.jsx","react","react-dom",51,"rowsAxe","addDataHeaders","lastInfosArray","dimension","infosMaxIndex","valIndex","subTotalHeader","newHeader","grandtotalHeader","lastrow",52,"replaceHyphenByUcase","replace","reHyphenToUcase","m","m1","toUpperCase","removeClass","classname","className","addClass","getOffset","rect","getBoundingClientRect","x","left","y","top","getParentOffset","rectParent","parentNode","getSize","right","bottom","getStyle","styleProps","keepString","currStyle","fixProp","currentStyle","prop","getComputedStyle","getPropertyValue","ceil","isVisible","display","offsetWidth","offsetHeight","updateTableColGroup","tableNode","widths","colGroupNode","firstChild","nodeName","tableLayout","removeChild","col","document","createElement","appendChild",53,"_stringify2","ns","identifier","parts","list","forceContinue","ret","escapeRegex","re","findInArray","predicate","item","jsonStringify","censorKeywords","censor","addEventListener","eventName","handler","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","stopPropagation","cancelBubble","getEventButton","button","getMousePageXY","pageX","pageY","clientX","scrollLeft","documentElement","clientY","scrollTop","InvalidCharacterError","message","chars","input","block","charCode","String","idx","output","charAt","charCodeAt","atob","bs","buffer","bc","fromCharCode","babel-runtime/core-js/json/stringify",54,"createClass","displayName","getInitialState","canRender","google","visualization","drawChart","chartData","pivotTableComp","DataTable","addColumn","addRows","fontName","chartStyle","fontFamily","fontSize","hAxis","vAxis","chart","findDOMNode","draw","componentDidMount","componentDidUpdate",55,"createOverlay","overlayElement","statics","dialogFactory","setOverlayClass","close","dialogElement","children","dialogBodyElement","screenWidth","clientWidth","innerWidth","screenHeight","clientHeight","innerHeight","maxHeight","dWidth","dHeight","srcElement","unmountComponentAtNode","onClick","../orb.utils",56,"doElementsOverlap","elem1Rect","elem2Rect","setCurrDropTarget","dropTarget","_currDropTarget","signalDragEnd","signalDragOver","setCurrDropIndicator","dropIndicator","_currDropIndicator","onDragOver","onDragEnd","_pivotComp","_currDragElement","_dragNode","_dropTargets","_dropIndicators","_initialized","pivotComp","setDragElement","elem","prevDragElement","moveButton","component","registerTarget","dragOverHandler","dargEndHandler","unregisterTarget","tindex","registerIndicator","indicator","unregisterIndicator","iindex","elementMoved","foundTarget","dragNodeRect","tnodeRect","isOverlap","foundIndicator","elementOwnIndicator","targetIndicator","axeIndicators",57,"DragManager","isover","componentWillUnmount","isMounted","isVertical","isFirst","isLast","./orb.react.DragManager.jsx",58,"DropIndicator","dtid","../orb.axe","./orb.react.DropIndicator.jsx",59,"currButton",60,"openOrClose","valueNode","refs","valueElement","valuesListNode","valuesList","onMouseEnter","backgroundPosition","onMouseLeave","selectValue","listNode","isli","textContent","onValueChanged","dangerouslySetInnerHTML","__html","ref","selectedValue",61,"FilterManager","reactComp","initialFilterObject","checkboxVisible","checkbox","applyInitialFilterObject","staticInfos","toExclude","isSearchMode","toggleRegexpButtonVisibility","isRegexMode","toggleRegexpButtonState","lastSearchTerm","elems","searchBox","applyFilterTerm","savedCheckedValues","updateCheckboxes","updateAllCheckbox","addEventListeners","filterContainer","valueChecked","searchChanged","clearSearchButton","clearSearchBox","okButton","checkedObj","getCheckedValues","onFilter","cancelButton","destroy","ResizeManager","outerContainerElem","valuesTableElem","resizeGripElem","minContainerWidth","minContainerHeight","mousedownpos","isMouseDown","resizeMouseDown","mousePageXY","cursor","resizeMouseUp","resizeMouseMove","resizeGripSize","outerContainerSize","valuesTableSize","tBodies","outerContainerWidth","outerContainerHeight","offset","newContainerWidth","newContainerHeight","resizeManager","INDETERMINATE","checkboxes","operatorBox","allCheckbox","addCheckbox","enableRegexButton","resizeGrip","filterContainerElement","cells","blanckCheckbox","onOperatorChanged","newOperator","regexpActiveChanged","domUtils","checked","defaultVisible","opterm","previousIsSearchMode","indeterminate","valuesCount","checkedCount","excludeUnchecked","checkedList","allchecked","valInList","Dropdown","filterManager","onMouseDown","onMouseWheel","valuesTable","scrollHeight","componentWillMount","addCheckboxRow","text","defaultChecked","buttonClass","currentFilter","placeholder","clearFilter","colSpan","float","../orb.filtering","../orb.utils.dom","./orb.react.Dropdown.jsx",62,"tableClasses","headerRow","h",63,"FilterPanel","pbid","pos","startpos","mousedown","dragging","onFilterMouseDown","filterButton","filterButtonPos","filterPanelFactory","filterPanel","onMouseMove","registerThemeChanged","updateClasses","unregisterThemeChanged","ctrlKey","thispos","mouseoffset","onMouseUp","isdragged","size","newpos","divstyle","zIndex","sortDirectionClass","filterClass","fieldAggFunc","./orb.react.FilterPanel.jsx",64,"getClassname","compProps","leftmost","topmost","_paddingLeft","_borderLeft","updateCellInfos","node","__orb","cellContentNode","cellContent","propList","retPaddingLeft","retBorderLeft","innerText","nodeStyle","_visible","_lastText","_textWidth","_colSpan","_rowSpan","_paddingRight","_borderLeftWidth","_borderRightWidth","shouldComponentUpdate","nextProps","nextState","_latestVisibleState","cellClick","divcontent","headerPushed","isWrapper","isSubtotal","headerClassName","onDoubleClick","rowSpan","../orb.ui.header",65,"SizingManager","UpperButtons","ColumnButtons","RowButtons","Chart","themeChangeCallbacks","compCallback","thisnode","synchronizeWidths","fontInfos","tblStyle","padding","./orb.react.Chart.jsx","./orb.react.PivotTable.ColumnButtons.jsx","./orb.react.PivotTable.RowButtons.jsx","./orb.react.PivotTable.SizingManager.jsx","./orb.react.PivotTable.UpperButtons.jsx","./orb.react.Toolbar.jsx",66,"PivotCell","leftmostCellFound","layoutInfos","rowstyle","istopmost","isleftmost","topMostCells","lastLeftMostCellVSpan","./orb.react.PivotCell.jsx",67,"PivotButton","DropTarget","columnButtons","./orb.react.DropTarget.jsx","./orb.react.PivotButton.jsx",68,"PivotRow","cntrClass","onWheel","./orb.react.PivotRow.jsx",69,"dataCells",70,"DropTargetVertical","rowButtons","./orb.react.DropTargetVertical.jsx",71,"setColGroup","colgroup","innerHTML",72,"ComponentSizeInfo","childType","w","setStyle","styleProp","setParentStyle","getLargestWidths","otherCompInfo","total","colWidths","addToWidth","getAllColumnsWidth","tblObject","tbl","arrayIndex","currWidth","cellIndex","currCell","cellwidth","cspan","inhibit","synchronizePivotChartWidths","synchronizePivotTableWidths","pivotWrapperTable","pivot","topBtns","upperButtons","cBtns","colButtons","rBtnsTbl","rBtnsWidth","chartWidth","pivotHeight","chartHeight","cHeadersTbl","colHeaders","rHeadersTbl","dataCellsTbl","hScroll","horizontalScrollBar","vScroll","verticalScrollBar","dataCellsWidths","rHeadersWidth","dataCellsContainerWidth","dataCellsRemHeight","dataCellsTableHeight",73,"fieldsDropTarget","fieldsButtons","dataButtons","dataDropTarget",74,"Toolbar","RowHeaders","ColumnHeaders","DataCells","ScrollBars","HorizontalScrollBar","VerticalScrollBar","dataCellsNode","dataCellsTableNode","colHeadersNode","rowHeadersNode","setScrollClient","scrollPercent","scrollAmount","scrollbar","amount","currentTarget","deltaX","deltaY","scroll","deltaMode","./orb.react.PivotTable.ColumnHeaders.jsx","./orb.react.PivotTable.DataCells.jsx","./orb.react.PivotTable.RowHeaders.jsx","./orb.react.ScrollBars.jsx",75,"ScrollEvent","scrollBarComp","raise","getScrollPercent","scrollBarMixin","scrollEvent","scrollClient","thumbOffset","thumbElem","scrollThumb","thumbposInParent","mousePosProp","posProp","getScrollSize","sizeProp","scrollCallback","maxOffset","scrolledElement","clientSize","elementSize","scrollBarContainerSize","newSize","containerSize","mode","newOffset","thumbStyle","offsetCssProp","thisStyle","thumbClass","cssClass","mixins",76,"_toInit","btn","createCallback","action","pgridComponent","configButtons","defaultToolbarConfig","btnConfig","refName","tooltip","excelExport","exportToExcel","download","href","click","expandAllRows","collapseAllRows","expandAllColumns","collapseAllColumns","updateSubtotalsButton","subTotalsState","classToAdd","classToRemove","initSubtotals","updateGrandtotalButton","initGrandtotal","../orb.export.excel"],"mappings":"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","file":"orb.min.js","sourcesContent":["/**\n * orb v1.1.0, Pivot table javascript library.\n *\n * Copyright (c) 2014-2016 Najmeddine Nouri .\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/json/stringify\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/json/stringify\": 4\n }],\n 2: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/symbol\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/symbol\": 5\n }],\n 3: [function(_dereq_, module, exports) {\n\n var _Symbol = _dereq_(\"babel-runtime/core-js/symbol\")[\"default\"];\n\n exports[\"default\"] = function(obj) {\n return obj && obj.constructor === _Symbol ? \"symbol\" : typeof obj;\n };\n\n exports.__esModule = true;\n }, {\n \"babel-runtime/core-js/symbol\": 2\n }],\n 4: [function(_dereq_, module, exports) {\n var core = _dereq_('../../modules/$.core');\n module.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments);\n };\n }, {\n \"../../modules/$.core\": 9\n }],\n 5: [function(_dereq_, module, exports) {\n _dereq_('../../modules/es6.symbol');\n _dereq_('../../modules/es6.object.to-string');\n module.exports = _dereq_('../../modules/$.core').Symbol;\n }, {\n \"../../modules/$.core\": 9,\n \"../../modules/es6.object.to-string\": 33,\n \"../../modules/es6.symbol\": 34\n }],\n 6: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n }, {}],\n 7: [function(_dereq_, module, exports) {\n var isObject = _dereq_('./$.is-object');\n module.exports = function(it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n }, {\n \"./$.is-object\": 22\n }],\n 8: [function(_dereq_, module, exports) {\n var toString = {}.toString;\n\n module.exports = function(it) {\n return toString.call(it).slice(8, -1);\n };\n }, {}],\n 9: [function(_dereq_, module, exports) {\n var core = module.exports = {\n version: '1.2.6'\n };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n }, {}],\n 10: [function(_dereq_, module, exports) {\n // optional / simple context binding\n var aFunction = _dereq_('./$.a-function');\n module.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n };\n }, {\n \"./$.a-function\": 6\n }],\n 11: [function(_dereq_, module, exports) {\n // 7.2.1 RequireObjectCoercible(argument)\n module.exports = function(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n }, {}],\n 12: [function(_dereq_, module, exports) {\n // Thank's IE8 for his funny defineProperty\n module.exports = !_dereq_('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {\n get: function() {\n return 7;\n }\n }).a != 7;\n });\n }, {\n \"./$.fails\": 15\n }],\n 13: [function(_dereq_, module, exports) {\n // all enumerable object keys, includes symbols\n var $ = _dereq_('./$');\n module.exports = function(it) {\n var keys = $.getKeys(it),\n getSymbols = $.getSymbols;\n if (getSymbols) {\n var symbols = getSymbols(it),\n isEnum = $.isEnum,\n i = 0,\n key;\n while (symbols.length > i)\n if (isEnum.call(it, key = symbols[i++])) keys.push(key);\n }\n return keys;\n };\n }, {\n \"./$\": 23\n }],\n 14: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n core = _dereq_('./$.core'),\n ctx = _dereq_('./$.ctx'),\n PROTOTYPE = 'prototype';\n\n var $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && key in target;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n };\n // type bitmap\n $export.F = 1; // forced\n $export.G = 2; // global\n $export.S = 4; // static\n $export.P = 8; // proto\n $export.B = 16; // bind\n $export.W = 32; // wrap\n module.exports = $export;\n }, {\n \"./$.core\": 9,\n \"./$.ctx\": 10,\n \"./$.global\": 17\n }],\n 15: [function(_dereq_, module, exports) {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n }, {}],\n 16: [function(_dereq_, module, exports) {\n // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n var toIObject = _dereq_('./$.to-iobject'),\n getNames = _dereq_('./$').getNames,\n toString = {}.toString;\n\n var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\n\n var getWindowNames = function(it) {\n try {\n return getNames(it);\n } catch (e) {\n return windowNames.slice();\n }\n };\n\n module.exports.get = function getOwnPropertyNames(it) {\n if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it);\n return getNames(toIObject(it));\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 17: [function(_dereq_, module, exports) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n }, {}],\n 18: [function(_dereq_, module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n module.exports = function(it, key) {\n return hasOwnProperty.call(it, key);\n };\n }, {}],\n 19: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n createDesc = _dereq_('./$.property-desc');\n module.exports = _dereq_('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n }, {\n \"./$\": 23,\n \"./$.descriptors\": 12,\n \"./$.property-desc\": 26\n }],\n 20: [function(_dereq_, module, exports) {\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n var cof = _dereq_('./$.cof');\n module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n };\n }, {\n \"./$.cof\": 8\n }],\n 21: [function(_dereq_, module, exports) {\n // 7.2.2 IsArray(argument)\n var cof = _dereq_('./$.cof');\n module.exports = Array.isArray || function(arg) {\n return cof(arg) == 'Array';\n };\n }, {\n \"./$.cof\": 8\n }],\n 22: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n }, {}],\n 23: [function(_dereq_, module, exports) {\n var $Object = Object;\n module.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n };\n }, {}],\n 24: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n toIObject = _dereq_('./$.to-iobject');\n module.exports = function(object, el) {\n var O = toIObject(object),\n keys = $.getKeys(O),\n length = keys.length,\n index = 0,\n key;\n while (length > index)\n if (O[key = keys[index++]] === el) return key;\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 25: [function(_dereq_, module, exports) {\n module.exports = true;\n }, {}],\n 26: [function(_dereq_, module, exports) {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n }, {}],\n 27: [function(_dereq_, module, exports) {\n module.exports = _dereq_('./$.hide');\n }, {\n \"./$.hide\": 19\n }],\n 28: [function(_dereq_, module, exports) {\n var def = _dereq_('./$').setDesc,\n has = _dereq_('./$.has'),\n TAG = _dereq_('./$.wks')('toStringTag');\n\n module.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n };\n }, {\n \"./$\": 23,\n \"./$.has\": 18,\n \"./$.wks\": 32\n }],\n 29: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\n module.exports = function(key) {\n return store[key] || (store[key] = {});\n };\n }, {\n \"./$.global\": 17\n }],\n 30: [function(_dereq_, module, exports) {\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n var IObject = _dereq_('./$.iobject'),\n defined = _dereq_('./$.defined');\n module.exports = function(it) {\n return IObject(defined(it));\n };\n }, {\n \"./$.defined\": 11,\n \"./$.iobject\": 20\n }],\n 31: [function(_dereq_, module, exports) {\n var id = 0,\n px = Math.random();\n module.exports = function(key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n }, {}],\n 32: [function(_dereq_, module, exports) {\n var store = _dereq_('./$.shared')('wks'),\n uid = _dereq_('./$.uid'),\n Symbol = _dereq_('./$.global').Symbol;\n module.exports = function(name) {\n return store[name] || (store[name] =\n Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n };\n }, {\n \"./$.global\": 17,\n \"./$.shared\": 29,\n \"./$.uid\": 31\n }],\n 33: [function(_dereq_, module, exports) {\n\n }, {}],\n 34: [function(_dereq_, module, exports) {\n\n // ECMAScript 6 symbols shim\n var $ = _dereq_('./$'),\n global = _dereq_('./$.global'),\n has = _dereq_('./$.has'),\n DESCRIPTORS = _dereq_('./$.descriptors'),\n $export = _dereq_('./$.export'),\n redefine = _dereq_('./$.redefine'),\n $fails = _dereq_('./$.fails'),\n shared = _dereq_('./$.shared'),\n setToStringTag = _dereq_('./$.set-to-string-tag'),\n uid = _dereq_('./$.uid'),\n wks = _dereq_('./$.wks'),\n keyOf = _dereq_('./$.keyof'),\n $names = _dereq_('./$.get-names'),\n enumKeys = _dereq_('./$.enum-keys'),\n isArray = _dereq_('./$.is-array'),\n anObject = _dereq_('./$.an-object'),\n toIObject = _dereq_('./$.to-iobject'),\n createDesc = _dereq_('./$.property-desc'),\n getDesc = $.getDesc,\n setDesc = $.setDesc,\n _create = $.create,\n getNames = $names.get,\n $Symbol = global.Symbol,\n $JSON = global.JSON,\n _stringify = $JSON && $JSON.stringify,\n setter = false,\n HIDDEN = wks('_hidden'),\n isEnum = $.isEnum,\n SymbolRegistry = shared('symbol-registry'),\n AllSymbols = shared('symbols'),\n useNative = typeof $Symbol == 'function',\n ObjectProto = Object.prototype;\n\n // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n var setSymbolDesc = DESCRIPTORS && $fails(function() {\n return _create(setDesc({}, 'a', {\n get: function() {\n return setDesc(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n }) ? function(it, key, D) {\n var protoDesc = getDesc(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n setDesc(it, key, D);\n if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc);\n } : setDesc;\n\n var wrap = function(tag) {\n var sym = AllSymbols[tag] = _create($Symbol.prototype);\n sym._k = tag;\n DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: function(value) {\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n }\n });\n return sym;\n };\n\n var isSymbol = function(it) {\n return typeof it == 'symbol';\n };\n\n var $defineProperty = function defineProperty(it, key, D) {\n if (D && has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n return setSymbolDesc(it, key, D);\n }\n return setDesc(it, key, D);\n };\n var $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P)),\n i = 0,\n l = keys.length,\n key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n };\n var $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n };\n var $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key);\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n };\n var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n var D = getDesc(it = toIObject(it), key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n };\n var $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key);\n return result;\n };\n var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]);\n return result;\n };\n var $stringify = function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it],\n i = 1,\n $$ = arguments,\n replacer, $replacer;\n while ($$.length > i) args.push($$[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function(key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n };\n var buggyJSON = $fails(function() {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n });\n\n // 19.4.1.1 Symbol([description])\n if (!useNative) {\n $Symbol = function Symbol() {\n if (isSymbol(this)) throw TypeError('Symbol is not a constructor');\n return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));\n };\n redefine($Symbol.prototype, 'toString', function toString() {\n return this._k;\n });\n\n isSymbol = function(it) {\n return it instanceof $Symbol;\n };\n\n $.create = $create;\n $.isEnum = $propertyIsEnumerable;\n $.getDesc = $getOwnPropertyDescriptor;\n $.setDesc = $defineProperty;\n $.setDescs = $defineProperties;\n $.getNames = $names.get = $getOwnPropertyNames;\n $.getSymbols = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_('./$.library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n }\n\n var symbolStatics = {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n return keyOf(SymbolRegistry, key);\n },\n useSetter: function() {\n setter = true;\n },\n useSimple: function() {\n setter = false;\n }\n };\n // 19.4.2.2 Symbol.hasInstance\n // 19.4.2.3 Symbol.isConcatSpreadable\n // 19.4.2.4 Symbol.iterator\n // 19.4.2.6 Symbol.match\n // 19.4.2.8 Symbol.replace\n // 19.4.2.9 Symbol.search\n // 19.4.2.10 Symbol.species\n // 19.4.2.11 Symbol.split\n // 19.4.2.12 Symbol.toPrimitive\n // 19.4.2.13 Symbol.toStringTag\n // 19.4.2.14 Symbol.unscopables\n $.each.call((\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +\n 'species,split,toPrimitive,toStringTag,unscopables'\n ).split(','), function(it) {\n var sym = wks(it);\n symbolStatics[it] = useNative ? sym : wrap(sym);\n });\n\n setter = true;\n\n $export($export.G + $export.W, {\n Symbol: $Symbol\n });\n\n $export($export.S, 'Symbol', symbolStatics);\n\n $export($export.S + $export.F * !useNative, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n });\n\n // 24.3.2 JSON.stringify(value [, replacer [, space]])\n $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {\n stringify: $stringify\n });\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag]\n setToStringTag($Symbol, 'Symbol');\n // 20.2.1.9 Math[@@toStringTag]\n setToStringTag(Math, 'Math', true);\n // 24.3.3 JSON[@@toStringTag]\n setToStringTag(global.JSON, 'JSON', true);\n }, {\n \"./$\": 23,\n \"./$.an-object\": 7,\n \"./$.descriptors\": 12,\n \"./$.enum-keys\": 13,\n \"./$.export\": 14,\n \"./$.fails\": 15,\n \"./$.get-names\": 16,\n \"./$.global\": 17,\n \"./$.has\": 18,\n \"./$.is-array\": 21,\n \"./$.keyof\": 24,\n \"./$.library\": 25,\n \"./$.property-desc\": 26,\n \"./$.redefine\": 27,\n \"./$.set-to-string-tag\": 28,\n \"./$.shared\": 29,\n \"./$.to-iobject\": 30,\n \"./$.uid\": 31,\n \"./$.wks\": 32\n }],\n 35: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function toAggregateFunc(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function count(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function sum(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function min(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function max(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function avg(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function prod(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function stdev(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function stdevp(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function _var(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function varp(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 36: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n }();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 38,\n \"./orb.utils\": 53\n }],\n 37: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function notequalfield(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.filtering\": 40,\n \"./orb.themes\": 46,\n \"./orb.utils\": 53\n }],\n 38: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 39: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n var rowHeadersAndDataCells = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 46,\n \"./orb.ui.header\": 49,\n \"./orb.utils\": 53\n }],\n 40: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function get(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function func(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function func(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function func(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function func(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function func(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function func(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 41: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 39,\n \"./orb.pgrid\": 42,\n \"./orb.query\": 44,\n \"./orb.ui.pgridwidget\": 50,\n \"./orb.utils\": 53\n }],\n 42: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.config\": 37,\n \"./orb.filtering\": 40,\n \"./orb.pubsub\": 43,\n \"./orb.query\": 44,\n \"./orb.utils\": 53\n }],\n 43: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 44: [function(_dereq_, module, exports) {\n\n var _typeof2 = _dereq_('babel-runtime/helpers/typeof');\n\n var _typeof3 = _interopRequireDefault(_typeof2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function queryBase(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function pgridQuery(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function arrayQuery(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.utils\": 53,\n \"babel-runtime/helpers/typeof\": 3\n }],\n 45: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 46: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF',\n rfi: '#9F313A'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function rgbaToHex(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function rgbaToHexA(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function fadeoutColor(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n }();\n\n }, {}],\n 47: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.header\": 49\n }],\n 48: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 49: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function getHeaderClass(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function getCellClass(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(_hspan, _vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function hspan() {\n return _hspan;\n },\n vspan: function vspan() {\n return _vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.state\": 45\n }],\n 50: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n React = _dereq_('react'),\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.pgrid\": 42,\n \"./orb.ui.cols\": 48,\n \"./orb.ui.header\": 49,\n \"./orb.ui.rows\": 51,\n \"./react/orb.react.Dialog.jsx\": 55,\n \"./react/orb.react.Grid.jsx\": 62,\n \"./react/orb.react.PivotChart.jsx\": 65,\n \"./react/orb.react.PivotTable.jsx\": 74,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 51: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 52: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function f(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function f(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 53: [function(_dereq_, module, exports) {\n (function(global) {\n\n var _stringify = _dereq_('babel-runtime/core-js/json/stringify');\n\n var _stringify2 = _interopRequireDefault(_stringify);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n module.exports = {\n\n ns: function ns(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function ownProperties(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function forEach(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function isArray(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function isNumber(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function isDate(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function isString(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function isRegExp(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function escapeRegex(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function findInArray(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function jsonStringify(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return (0, _stringify2.default)(obj, censor, 2);\n },\n addEventListener: function addEventListener(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function removeEventListener(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function preventDefault(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function getEventButton(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function getMousePageXY(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {\n \"babel-runtime/core-js/json/stringify\": 1\n }],\n 54: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n return {\n canRender: false\n };\n },\n canRender: function canRender() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function drawChart() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.drawChart();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.drawChart();\n },\n render: function render() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 55: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function create() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function show(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function setOverlayClass(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function componentDidMount() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function close(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function render() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 56: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n module.exports = function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function init(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function setDragElement(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function unregisterTarget(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function unregisterIndicator(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function elementMoved() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n }();\n\n }, {\n \"../orb.utils\": 53,\n \"react-dom\": \"react-dom\"\n }],\n 57: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function getInitialState() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"react\": \"react\"\n }],\n 58: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 59: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 60: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function openOrClose(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function onMouseEnter() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function onMouseLeave() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function componentDidMount() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function selectValue(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function render() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 61: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function getInitialState() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function destroy() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function onFilter(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function onMouseDown(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function onMouseWheel(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function componentWillMount() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function componentDidMount() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function render() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 40,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.Dropdown.jsx\": 60,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 62: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 63: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function getInitialState() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function onFilterMouseDown(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function onMouseDown(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function onMouseMove(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function updateClasses() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function render() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.FilterPanel.jsx\": 61,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 64: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function expand() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function collapse() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function updateCellInfos() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function componentDidMount() {\n this.updateCellInfos();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function render() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function cellClick() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 49,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 65: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function synchronizeWidths() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 52,\n \"./orb.react.Chart.jsx\": 54,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 66: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotCell.jsx\": 64,\n \"react\": \"react\"\n }],\n 67: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 68: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 69: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 70: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.DropTargetVertical.jsx\": 59,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 71: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function setColGroup(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 72: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function synchronizeWidths(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 52,\n \"react-dom\": \"react-dom\"\n }],\n 73: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 74: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function onWheel(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function synchronizeWidths() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons',\n className: 'orb-upper-buttons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons',\n className: 'orb-column-buttons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 68,\n \"./orb.react.PivotTable.DataCells.jsx\": 69,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 71,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.ScrollBars.jsx\": 75,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 75: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function getInitialState() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function componentDidMount() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function onMouseDown(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function onMouseMove(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function getScrollSize() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function setScrollClient(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function getScrollPercent() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function refresh() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function scroll(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function onWheel(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function render() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 76: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function componentDidMount() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function createCallback(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function render() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function exportToExcel(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function expandAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function collapseAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function expandAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function collapseAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function initSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function initGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.export.excel\": 39,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\"\n }]\n }, {}, [41])(41)\n});"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/v1.1.0/orb-1.1.0.css b/dist/v1.1.0/orb-1.1.0.css index 0a0d979..21d2107 100644 --- a/dist/v1.1.0/orb-1.1.0.css +++ b/dist/v1.1.0/orb-1.1.0.css @@ -2344,3 +2344,229 @@ border: 1px solid #d9d9d9; font-weight: bold; } + +/* rfi */ + +.orb-rfi .orb { + color: black; +} +.orb-rfi .orb .chart { + border: 1px solid #cf989c; +} +.orb-rfi .orb .av-flds { + border-bottom: 1px solid #cf989c !important; +} +.orb-rfi .orb .flds-grp-cap div { + color: #ccc; +} +.orb-rfi .orb .cell { + background-color: white; + color: black; + border-top: 1px solid #cf989c; + border-left: 1px solid #f0e0e1; +} +.orb-rfi .orb .cell-st { + background-color: white; + color: black; + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .cell-gt { + background-color: white; + color: black; + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .cell-leftmost { + border-left: none !important; +} +.orb-rfi .orb .cell-topmost { + border-top: none !important; +} +.orb-rfi .orb .header { + background-color: #f5eaeb; + color: black; +} +.orb-rfi .orb .header-st { + color: black; + background-color: #f5eaeb; +} +.orb-rfi .orb .header-gt { + color: black; + background-color: #f5eaeb; +} +.orb-rfi .orb .header-leftmost { + border-left: none !important; +} +.orb-rfi .orb .header-row { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .header-row-st { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .header-row-gt { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb .header-row-nofields { + border-top: none !important; +} +.orb-rfi .orb .header-col { + border-left: 1px solid #cf989c; +} +.orb-rfi .orb .header-col-st { + border-left: 1px solid #cf989c; +} +.orb-rfi .orb .header-col-gt { + border-left: 1px solid #cf989c; +} +.orb-rfi .orb .columns-cntr { + border: 1px solid #cf989c; + border-bottom: none; + border-radius: 4px 4px 0 0; +} +.orb-rfi .orb .rows-cntr { + border: 1px solid #cf989c; + border-right: none; + border-radius: 4px 0 0 4px; +} +.orb-rfi .orb .data-cntr { + border: 1px solid #cf989c; + border-radius: 0 0 4px; +} +.orb-rfi .orb .fld-btn { + background-color: #9F313A; + color: white; + font-weight: bold; + height: 25px; + border: none; + border-radius: 4px; + padding: 4px 5px; +} +.orb-rfi .orb .fld-btn:hover { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); +} +.orb-rfi .orb .fld-btn:hover .fltr-btn { + background-color: #9F313A; +} +.orb-rfi .orb .fld-btn .fltr-btn:hover { + background-color: #bb6e75; +} +.orb-rfi .orb .fld-btn .fltr-btn-active { + background-color: #bb6e75; +} +.orb-rfi .orb .drp-trgt { + height: 27px; +} +.orb-rfi .orb .drp-trgt-over { + background-color: #faf4f5; +} +.orb-rfi .orb .drp-trgt-empty, +.orb-rfi .orb .drp-trgt-vertical-empty { + border: 1px dashed #cf989c; +} +.orb-rfi .orb .drp-indic { + height: 25px; +} +.orb-rfi .orb .drp-indic-over { + background-color: #cf989c; +} +.orb-rfi.fltr-cntnr { + border: 1px solid #cf989c; + box-shadow: 0 5px 15px #686868; +} +.orb-rfi .fltr-scntnr .srchbox-col { + border: 1px solid #cf989c; +} +.orb-rfi .fltr-scntnr .srchop-col { + border: 1px solid #cf989c; +} +.orb-rfi .fltr-scntnr .srchtyp-col { + border: 1px solid #cf989c; +} +.orb-rfi .fltr-scntnr .srchtyp-col:hover { + border: 1px solid #bb6e75; + border: 1px solid rgba(159, 49, 58, 0.7); +} +.orb-rfi .fltr-scntnr .srchtyp-col-active { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); + color: white; + border: 1px solid #bb6e75; + border: 1px solid rgba(159, 49, 58, 0.7); +} +.orb-rfi .fltr-scntnr .fltr-vals-col { + border-bottom: 1px solid #cf989c; +} +.orb-rfi .orb-btn { + padding: 1px 4px; + background-color: #9F313A; + color: white; + border: none; +} +.orb-rfi .orb-btn:hover { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); +} +.orb-rfi .orb-tgl-btn div:hover { + background-color: #cf989c; +} +.orb-rfi .orb-toolbar { + background-color: #f5eaeb; + border: 1px solid #cf989c; +} +.orb-rfi .orb-tlbr-btn { + border: 1px solid #f5eaeb; +} +.orb-rfi .orb-tlbr-btn:hover { + border: 1px solid #9F313A; +} +.orb-rfi .orb-tlbr-sep { + border-right: 1px solid #cf989c; +} +.orb-rfi .orb-select { + border: 1px solid #cf989c; +} +.orb-rfi .orb-select ul { + border: 1px solid #cf989c; +} +.orb-rfi .orb-select ul li:hover { + background-color: #bb6e75; + background-color: rgba(159, 49, 58, 0.7); +} +.orb-rfi .orb-scrollthumb { + background-color: #f5eaeb; + border: 1px solid #cf989c; + border-radius: 3px; +} +.orb-rfi .orb-scrollthumb-hover { + background-color: #cf989c; +} +.orb-rfi.orb-overlay { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c686868', endColorstr='#8c686868'); + background-color: rgba(104, 104, 104, 0.45); +} +.orb-rfi .orb-dialog { + background-color: white; + border: 1px solid #686868; + box-shadow: 0 5px 15px #686868; + padding: 7px 13px; +} +.orb-rfi .orb-dialog-header { + background-color: white; +} +.orb-rfi .orb-dialog-header .button-close { + background-color: white; + margin: 5px 3px 1px 1px; +} +.orb-rfi .orb-dialog-header .button-close:hover { + background-color: #cf989c; +} +.orb-rfi .orb-table td, +.orb-rfi .orb-table th { + border-top: 1px solid #cf989c; +} +.orb-rfi .orb-table th { + background-color: #9F313A; + color: white; + border: 1px solid #cf989c; + font-weight: bold; +} diff --git a/dist/v1.1.0/orb-1.1.0.js b/dist/v1.1.0/orb-1.1.0.js index 00c7cd4..5cf8a2d 100644 --- a/dist/v1.1.0/orb-1.1.0.js +++ b/dist/v1.1.0/orb-1.1.0.js @@ -1048,6 +1048,10 @@ var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig); + function defaultFormatFunc(val) { + return val != null ? val.toString() : ''; + } + return new Field({ name: getpropertyvalue('name', merged.configs, ''), @@ -1065,7 +1069,7 @@ aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'), aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum), - formatFunc: getpropertyvalue('formatFunc', merged.functions, null) + formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc) }, false); } @@ -1124,10 +1128,6 @@ var _aggregatefunc; var _formatfunc; - function defaultFormatFunc(val) { - return val != null ? val.toString() : ''; - } - this.aggregateFunc = function(func) { if (func) { _aggregatefunc = aggregation.toAggregateFunc(func); @@ -1147,7 +1147,7 @@ this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null); this.aggregateFunc(options.aggregateFunc); - this.formatFunc(options.formatFunc || defaultFormatFunc); + this.formatFunc(options.formatFunc); if (createSubOptions !== false) { (this.rowSettings = new Field(options.rowSettings, false)).name = this.name; @@ -2595,7 +2595,8 @@ flower: '#A74AC7', gray: '#808080', black: '#000000', - white: '#FFFFFF' + white: '#FFFFFF', + rfi: '#9F313A' }; themeManager.current = function(newTheme) { @@ -6962,7 +6963,8 @@ null, React.createElement( 'tr', { - ref: 'upperButtons' + ref: 'upperButtons', + className: 'orb-upper-buttons' }, React.createElement( 'td', { @@ -6975,7 +6977,8 @@ ), React.createElement( 'tr', { - ref: 'colButtons' + ref: 'colButtons', + className: 'orb-column-buttons' }, React.createElement('td', null), React.createElement( diff --git a/dist/v1.1.0/orb-1.1.0.min.css b/dist/v1.1.0/orb-1.1.0.min.css index dade630..f06e907 100644 --- a/dist/v1.1.0/orb-1.1.0.min.css +++ b/dist/v1.1.0/orb-1.1.0.min.css @@ -1 +1 @@ -.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:100%}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700} \ No newline at end of file +.orb-container{overflow:hidden}.orb{border-spacing:0;border-collapse:separate;border-top-style:none;padding:0}.orb,.orb td{border-right-style:none;border-left-style:none}.orb td{border-bottom-style:none;vertical-align:top}.orb>tbody>tr>td{padding:0!important;border-top:none!important}.orb .inner-table{border-spacing:0;border-collapse:separate}.orb .inner-table>tbody>tr>td{padding:14px 7px}.orb .inner-table.upper-buttons{width:100%}.orb .inner-table.upper-buttons>tbody>tr>td{padding:7px 4px}.orb .inner-table-container{overflow-y:hidden;overflow-x:hidden;width:100%;height:100%}.orb .av-flds{border:none}.orb .flds-grp-cap{width:45px;white-space:nowrap;border:none}.orb .flds-grp-cap div{float:left;font-weight:700;margin-right:9px;padding:6px 0 0}.orb .empty{white-space:nowrap;border:none}.orb .header>div{min-height:16px}.orb .header-gt,.orb .header-st{font-weight:700}.orb .header>div>div{float:left;white-space:nowrap}.orb .header-row.header-gt-exp,.orb .header-row.header-st-exp div{padding-left:8px}.orb .cell>div{min-height:16px}.orb .cell-data{float:right;white-space:nowrap}.orb .cell-hidden{display:none}.orb .fld-btn{float:left;font-weight:400;text-align:center;cursor:pointer}.orb .fld-btn .caption{padding-right:3px}.orb .fld-btn .filter{padding-left:3px;vertical-align:'top'}.orb .fld-btn .sort-indicator{height:8px;margin-top:5px;width:10px}.orb .fld-btn .sort-asc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJUlEQVQImWNggIL/UMCADv7//1/+////cnRBFAATDMSGMVTDAADcOEqN5KtuRQAAAABJRU5ErkJggg==) no-repeat 0 0}.orb .fld-btn .sort-desc{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAJklEQVQImXXKuQ0AAAiAQFZ0GsfH1vhcQgc+UOMKgHV3aqrJNO8CnJdKjfkCkMUAAAAASUVORK5CYII=) no-repeat 0 0}.orb .fld-btn .fltr-btn{width:11px;height:11px}.orb .fld-btn .fltr-btn-active,.orb .fld-btn:hover .fltr-btn{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAMUlEQVQYlWP4//9/I7GYgSzFDHgAVsX/sQCsirFpQFaI1c0wDegKB0AxeihQFs7EYAAT8WYwzt7jxgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb.fltr-cntnr{position:fixed;background-color:#fff;font-size:90%;width:301px;height:223px;padding:3px}.orb.fltr-cntnr .fltr-val{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.orb.fltr-cntnr .fltr-chkbox{width:16px}.orb .fltr-scntnr{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:2px}.orb .fltr-scntnr .srchbox-col input{width:100%;border:none}.orb .fltr-scntnr .srchop-col{width:105px;vertical-align:middle}.orb .fltr-scntnr .srchop-col .orb-select{border:none}.orb .fltr-scntnr .srchop-col .orb-select div{text-align:left}.orb .fltr-scntnr .srchtyp-col{width:18px;text-align:center;font-weight:700;cursor:pointer}.orb .fltr-scntnr .srchclear-btn{width:14px;text-align:center;font-weight:700;cursor:pointer;float:right}.orb .fltr-scntnr .srchtyp-col-hidden{width:0;color:#fff;overflow:hidden;cursor:auto;border:none!important}.orb .fltr-scntnr .cnfrm-btn-col{padding-top:5px}.orb .fltr-scntnr .fltr-vals-col{vertical-align:top;padding-bottom:3px}.orb .fltr-scntnr .fltr-vals-tbl{table-layout:fixed;width:100%;display:block}.orb .fltr-scntnr .fltr-vals-tbl tbody{float:left;overflow:auto;width:100%;height:154px}.orb .fltr-scntnr .resize-col{vertical-align:bottom}.orb .fltr-scntnr .resize-col div{float:right;width:16px;height:16px;margin-bottom:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVQ4jWNgGJngxo0b/2GYIgMOHz5MvgGHDx8m3wD6AmwBRlIgYgswkgIRW4AN4kAkNsBwBiKxAYYzEIkNMGQxAOs9ug3E3qdjAAAAAElFTkSuQmCC) no-repeat 0 0;cursor:se-resize}.orb .hdr-val{border:none}.orb .hdr-val div{white-space:nowrap}.orb div.hdr-val{float:left}.orb .drp-trgt{margin-right:17px;min-height:24px}.orb .drp-trgt,.orb .drp-trgt-vertical{float:left;width:100%;padding:1px 0;min-width:67px}.orb .drp-trgt-vertical{margin-right:7px}.orb .drp-trgt-empty{width:51px}.orb .drp-trgt-vertical-empty{width:51px;height:27px}.orb .drp-indic{float:left;width:2px;margin-top:0;margin-left:3px;margin-right:3px}.orb .drp-indic-first{margin-left:0}.orb .drp-indic-last{margin-right:0}.orb .drp-indic-vertical{float:left;width:100%;height:2px;margin-left:0;margin-top:3px;margin-bottom:3px}.orb .drp-indic-vertical-first{margin-top:0}.orb .drp-indic-vertical-last{margin-bottom:0}.orb-btn{font-weight:400;text-align:center;margin-right:3px;cursor:pointer}.orb-tgl-btn{border:none}.orb-tgl-btn div{float:left;width:16px;height:16px;margin-right:7px;border-radius:11px;cursor:pointer}.orb-tgl-btn-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWNgGAX4QB0UU2zAMDCEIgMGTjOyAaOAAAAA6dUK1fxYl1IAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tgl-btn-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJ0lEQVQ4jWNgGAWDE9RBMbHiOBXWERAj2hCSNeMyhCxAkeZRQCQAAFO3CtUd1w9cAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-scrollthumb{position:absolute;cursor:pointer}.orb-h-scrollbar{position:relative;height:16px}.orb-h-scrollbar .orb-scrollthumb{margin:3px 0;height:10px;top:0}.orb-v-scrollbar{position:relative;width:16px}.orb-v-scrollbar .orb-scrollthumb{margin:0 3px;width:10px;left:0}.orb-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:1;width:auto;margin-left:0;background-color:hsla(0,0%,50%,.71)}.orb-overlay-hidden{display:none}.orb-overlay-visible{display:block}.orb-dialog{position:absolute;z-index:2}.orb-dialog-body{box-sizing:border-box;width:100%;overflow-x:hidden;overflow-y:auto}.orb-dialog-header{font-weight:700;font-size:140%;line-height:31px;height:35px}.orb-dialog-header div.button-close{float:right;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAL0lEQVQ4jWNgGAXYwH8oJlYcp8L/BMSINoRkzbgMIRlQ1Xay/Y9PjKABxIqPeAAAu7wn2cXtRawAAAAASUVORK5CYII=) no-repeat 0 0;border-radius:11px;cursor:pointer}.orb-table{border-collapse:collapse;border-spacing:0;width:100%}.orb-table td,.orb-table th{padding:1px 3px}.orb-toolbar{border:none;height:34px;padding:3px;margin-bottom:17px;width:100%}.orb-toolbar .theme-item{float:left;width:16px;height:16px;margin-right:3px;border:1px dashed #d3d3d3}.orb-tlbr-btn{float:left;width:26px;height:26px;margin-right:3px;cursor:pointer}.orb-tlbr-btn.export-xls{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACPUlEQVRIie2U30tUQRTHj24/iCXaUhZ6rCSM7HK3jYWdvfd8B7GHgiAfLjNXWBIpcVeEIFA0r82eWQtfgiACQxJpQ/DFPyWC/qBedsGHWsXtwaAvzMMcvvP9cA6HIfqvM6U4jp8y8ysioiAI8lprx8wqDMMCM3tmvnHUHwRBHkATwAet9UdmnjwOcB3AATNPxnFsAeyWy+XzSqkigEOl1MRRP4C61nqHmUvMXKpWq2PHdgGgDmBba90B8JCIqA/ghda6w8wlIsqdaExhGBYAHGqtO71HfwJ0vVsADgFs12q1ByfpIAGwC+AgjmP0A/RUrVbHALwFsN83vFKpjADYZ+bHzPwMwG4QBPkeIIqiSClVVEoViSgXRdHtIAjyRJTr+vsDtNYvAXwiolx3izrMPNcDHD1KqSIzv+7du97+W3QahWFYqFQqI389+MxryDk37r1vO+dGp6en76RpupWm6WiWZXe99++dc6MDEZxzF0Rk3nv/ptFoXDXGPLfW+tnZ2YKIzInIu+Xl5cuDQq6JyKaItJrN5pi1dtNau9loNG5261vOueJAkNXV1RERaXnvdxYWForGmFaapnuLi4u9+telpaWLg3QRttvt7865KWPMfWvtD2utFpGy9/6niMSDhI977z9vbGw8SdM0MMZ8McY8yrLsnojsOeemiGjoVOHr6+u3uiGT9Xp9wlr7bWZmhtfW1iZardZBlmW1JElO9oP+TkmS5FZWVq44584R0XCSJJeIaJiIhgYK/uf0C2PO19xvrfDzAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.expand-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAPUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrrBbwEhscFrAbERO3h9QDcLKFE3MBYMigJuFAwNAACmIGOJfkqFOgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.collapse-all{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAOUlEQVRIiWNgGAWjwN7efj2xmOYOGTwWkBMsJFtAqrpRC2hnAbERO3h9MGgsIAnQxYJBUcCNgqEBAOSPXdlyxPR0AAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.grndtotal-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVRIie2UsQrCQBBEU1pJWgnI2QiCxRXCccnezv6E4E/4JYJVsBJCQEgj5BdtTpAQgpAtgmZg23nL7M0lyaz/FhE5AOehGQUIIZwAtEMzbQARbUXkAaAVkbv3Phtl2CfvfQagihvXzLxTh1hrUxEpI6QpiuKgDnHOLZn5EuN6qkOIaA2giYDSWpuqmXfuUIUQVmrm3fyZeaNmboxZALi+c1d/QQCOH6W69X0Vo7rxTZPzPN9PFzDrN/QCrYZ210VL04MAAAAASUVORK5CYII=) no-repeat 0 0}.orb-tlbr-btn.grndtotal-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABgElEQVRIie2UsUtCQRzHDxpd3IMgiCCot7qc9/v6HoJLiIfomwNb1M1BcBFbjMO7e0MNEUggBCW4CAUNLo3tDbZU5N/R4guJEH3WUn3hN93x+XDHfY+x//ztWGsTxpjqvFlJoLX2rbWDeRPuBRAnoioA/1sFjuPEhBAHRHRFRAMiugIQX0jQ6XS2gyDoTWHnWuv1cM1xnBgAH0BvCv4YIYRc5hTr1truVHLRarX2iGifiLqfwUR0DGB3YXgYY0xca31Sq9Xui8XiUzqdHn0Ca855YmlwGM55wnXds2w2O5ZSTqSUb1PJqRDCZYytRQID2CUiTUQDz/Nuc7ncq5Ryks/nHzOZjL8KeEsIcRReged5N1LK50Kh8FIul0fNZnMjEphzvgGgPnu/qVRqKKUcVyqVB6XUtVJqMxI8mUwSgP4sHMCgVCrdtdvtobW2b4zZiQRn7KOJlzOCaqPROAwLFQTB6VdfxWw3FpH4AOpCiE3GFmuyUmr5dx/mxwX/+R15B6rZEUoUtw7HAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn.subtotals-visible{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVRIie2RPQoCMRCFA2m2tLIeb5A6xXsgeAkbYUvBarGyXLC3tNoj5Io2WZCQxJ9MIbgPXhWYLzOfMUv+LwB6AGOmgxZgJBkyvWsBhjhwIrkDsI31KgAR6UieI+QqIp3K4CSW5ClCbs651fOjiqe4yUQyADgkgGZPdj4TgIsxxiaANk8kjzUHTZ4A7OffAdh479dzM1sWPdUApfuGwiZZTxqAqqfmvPLUlA88fQ1429NvApao5gHLCpRjOV2CBgAAAABJRU5ErkJggg==) no-repeat 0 0}.orb-tlbr-btn.subtotals-hidden{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABy0lEQVRIie1UsWrbUBQVmEAgS6ZCl0L2okVTi/XulXA3o+EhGREexAQPdrCnEIjdRaYQDM/2fa90CR0MpVAIAXcohRZa+gGFBjIkQ8bW35HlKaiqJbeQIdAcONvVPe+cw5Vl3eP/AxHtKqVeLOH+rQiYZfM8tdbHZd8h4iYA9BAxXiWwb5bOxuPxMyLyicifTCZPl83btr3BGNsFgBMAmAPACSJuFgokSbKulDowrz5KkmS9aDEixoj41iy+IWOMl7qIoqhCRD3jRBPRzYscx1lrtVqac34WBMFllo1G4ysiPi5dnnMyM052LMuqMMZ8ADgOguCSc75IKYS46vf731b19JuDNCYieg4ATxDxVRpBvV4/55wv4ji+aDabB1LKWllPf0AptaeUmg8Gg9ee573MZ+x53pt2uz2bTqfvy3paCq319nA4/CyEOKvVap983/+Y0hQaOY6zVtZTIarV6iMhxJdsvpzzRRiGP7vd7nfbtjey80t6KobruoCIp9kCwzD81el0foxGow9KqXl2Pt9TFEWVUgFzie8yWfdc131YNJ/29E8dmMM5ZIxtlc1prbfTa5dSbkkpH6T8K6FVKPpf5WO8uwL3uFVcA7jfNSqQhQcHAAAAAElFTkSuQmCC) no-repeat 0 0}.orb-tlbr-btn .orb-select div{padding:0 10px}.orb-tlbr-btn .orb-select .orb-tgl-btn-down{padding:0 16px 0 4px}.orb-tlbr-lbl{float:left;height:26px;line-height:26px;margin-right:3px;font-weight:700}.orb-tlbr-sep{float:left;height:26px;width:1px;margin-right:5px}.orb-select>div{text-align:center;cursor:pointer;font-style:italic;background-position:100%}.orb-select ul{position:fixed;display:none;list-style:none;padding:0 3px;margin:0;cursor:pointer;background-color:#fff;z-index:3}.orb-select ul li{clear:both;float:left;width:100%;padding:3px}.orb-bootstrap .table .av-flds{border-bottom:1px solid #ddd!important}.orb-bootstrap .table .cell,.orb-bootstrap .table .header{border-top:1px solid #ddd}.orb-bootstrap .table .fld-btn .fltr-btn{border-radius:4px}.orb-bootstrap .table .fld-btn:hover .fltr-btn{background-color:#555}.orb-bootstrap .table .fld-btn .fltr-btn-active,.orb-bootstrap .table .fld-btn .fltr-btn:hover{background-color:#999}.orb-bootstrap .table .drp-trgt{height:31px}.orb-bootstrap .table .drp-trgt-over{background-color:#f7f7f7}.orb-bootstrap .table .drp-indic{height:28px}.orb-bootstrap .table .drp-indic-over{background-color:#aaa}.orb-bootstrap.fltr-cntnr{border:1px solid #ddd;box-shadow:0 5px 15px #ddd}.orb-bootstrap .fltr-scntnr .srchbox-col,.orb-bootstrap .fltr-scntnr .srchop-col,.orb-bootstrap .fltr-scntnr .srchtyp-col{border:1px solid #ddd}.orb-bootstrap .fltr-scntnr .srchtyp-col:hover{border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .srchtyp-col-active{background-color:#ddd;border:1px solid #ccc}.orb-bootstrap .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #ddd}.orb-bootstrap .orb-toolbar{border:1px solid #ddd}.orb-bootstrap .orb-tlbr-btn{border:1px solid #fff}.orb-bootstrap .orb-tlbr-btn:hover{border:1px solid #ccc}.orb-bootstrap .orb-tlbr-sep{border-right:1px solid #ddd}.orb-bootstrap .orb-select,.orb-bootstrap .orb-select ul{border:1px solid #ddd}.orb-bootstrap .orb-select ul li:hover{background-color:#eee}.orb-bootstrap.orb-overlay .modal-dialog{width:auto}.orb-bootstrap.orb-overlay .modal-content{background-color:#fff;padding:7px 13px;box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.orb-bootstrap.orb-overlay .modal-header{border:none;height:auto}.orb-red .orb{color:#000}.orb-red .orb .chart{border:1px solid #e395a3}.orb-red .orb .av-flds{border-bottom:1px solid #e395a3!important}.orb-red .orb .flds-grp-cap div{color:#ccc}.orb-red .orb .cell{border-left:1px solid #f6dfe3}.orb-red .orb .cell,.orb-red .orb .cell-gt,.orb-red .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #e395a3}.orb-red .orb .cell-leftmost{border-left:none!important}.orb-red .orb .cell-topmost{border-top:none!important}.orb-red .orb .header,.orb-red .orb .header-gt,.orb-red .orb .header-st{background-color:#f9e9ec;color:#000}.orb-red .orb .header-leftmost{border-left:none!important}.orb-red .orb .header-row,.orb-red .orb .header-row-gt,.orb-red .orb .header-row-st{border-top:1px solid #e395a3}.orb-red .orb .header-row-nofields{border-top:none!important}.orb-red .orb .header-col,.orb-red .orb .header-col-gt,.orb-red .orb .header-col-st{border-left:1px solid #e395a3}.orb-red .orb .columns-cntr{border:1px solid #e395a3;border-bottom:none;border-radius:4px 4px 0 0}.orb-red .orb .rows-cntr{border:1px solid #e395a3;border-right:none;border-radius:4px 0 0 4px}.orb-red .orb .data-cntr{border:1px solid #e395a3;border-radius:0 0 4px}.orb-red .orb .fld-btn{background-color:#c72c48;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-red .orb .fld-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb .fld-btn:hover .fltr-btn{background-color:#c72c48}.orb-red .orb .fld-btn .fltr-btn-active,.orb-red .orb .fld-btn .fltr-btn:hover{background-color:#d76b7e}.orb-red .orb .drp-trgt{height:27px}.orb-red .orb .drp-trgt-over{background-color:#fcf4f5}.orb-red .orb .drp-trgt-empty,.orb-red .orb .drp-trgt-vertical-empty{border:1px dashed #e395a3}.orb-red .orb .drp-indic{height:25px}.orb-red .orb .drp-indic-over{background-color:#e395a3}.orb-red.fltr-cntnr{box-shadow:0 5px 15px #7a7a7a}.orb-red.fltr-cntnr,.orb-red .fltr-scntnr .srchbox-col,.orb-red .fltr-scntnr .srchop-col,.orb-red .fltr-scntnr .srchtyp-col{border:1px solid #e395a3}.orb-red .fltr-scntnr .srchtyp-col-active,.orb-red .fltr-scntnr .srchtyp-col:hover{border:1px solid #d76b7e;border:1px solid rgba(199,44,72,.7)}.orb-red .fltr-scntnr .srchtyp-col-active{background-color:#d76b7e;background-color:rgba(199,44,72,.7);color:#fff}.orb-red .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #e395a3}.orb-red .orb-btn{padding:1px 4px;background-color:#c72c48;color:#fff;border:none}.orb-red .orb-btn:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-tgl-btn div:hover{background-color:#e395a3}.orb-red .orb-toolbar{background-color:#f9e9ec;border:1px solid #e395a3}.orb-red .orb-tlbr-btn{border:1px solid #f9e9ec}.orb-red .orb-tlbr-btn:hover{border:1px solid #c72c48}.orb-red .orb-tlbr-sep{border-right:1px solid #e395a3}.orb-red .orb-select,.orb-red .orb-select ul{border:1px solid #e395a3}.orb-red .orb-select ul li:hover{background-color:#d76b7e;background-color:rgba(199,44,72,.7)}.orb-red .orb-scrollthumb{background-color:#f9e9ec;border:1px solid #e395a3;border-radius:3px}.orb-red .orb-scrollthumb-hover{background-color:#e395a3}.orb-red.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7a7a7a',endColorstr='#8c7a7a7a');background-color:hsla(0,0%,48%,.45)}.orb-red .orb-dialog{border:1px solid #7a7a7a;box-shadow:0 5px 15px #7a7a7a;padding:7px 13px}.orb-red .orb-dialog,.orb-red .orb-dialog-header{background-color:#fff}.orb-red .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-red .orb-dialog-header .button-close:hover{background-color:#e395a3}.orb-red .orb-table td,.orb-red .orb-table th{border-top:1px solid #e395a3}.orb-red .orb-table th{background-color:#c72c48;color:#fff;border:1px solid #e395a3;font-weight:700}.orb-blue .orb{color:#000}.orb-blue .orb .chart{border:1px solid #addfee}.orb-blue .orb .av-flds{border-bottom:1px solid #addfee!important}.orb-blue .orb .flds-grp-cap div{color:#ccc}.orb-blue .orb .cell{border-left:1px solid #e6f5fa}.orb-blue .orb .cell,.orb-blue .orb .cell-gt,.orb-blue .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #addfee}.orb-blue .orb .cell-leftmost{border-left:none!important}.orb-blue .orb .cell-topmost{border-top:none!important}.orb-blue .orb .header,.orb-blue .orb .header-gt,.orb-blue .orb .header-st{background-color:#eef8fb;color:#000}.orb-blue .orb .header-leftmost{border-left:none!important}.orb-blue .orb .header-row,.orb-blue .orb .header-row-gt,.orb-blue .orb .header-row-st{border-top:1px solid #addfee}.orb-blue .orb .header-row-nofields{border-top:none!important}.orb-blue .orb .header-col,.orb-blue .orb .header-col-gt,.orb-blue .orb .header-col-st{border-left:1px solid #addfee}.orb-blue .orb .columns-cntr{border:1px solid #addfee;border-bottom:none;border-radius:4px 4px 0 0}.orb-blue .orb .rows-cntr{border:1px solid #addfee;border-right:none;border-radius:4px 0 0 4px}.orb-blue .orb .data-cntr{border:1px solid #addfee;border-radius:0 0 4px}.orb-blue .orb .fld-btn{background-color:#5bc0de;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-blue .orb .fld-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb .fld-btn:hover .fltr-btn{background-color:#5bc0de}.orb-blue .orb .fld-btn .fltr-btn-active,.orb-blue .orb .fld-btn .fltr-btn:hover{background-color:#8cd2e7}.orb-blue .orb .drp-trgt{height:27px}.orb-blue .orb .drp-trgt-over{background-color:#f6fbfd}.orb-blue .orb .drp-trgt-empty,.orb-blue .orb .drp-trgt-vertical-empty{border:1px dashed #addfee}.orb-blue .orb .drp-indic{height:25px}.orb-blue .orb .drp-indic-over{background-color:#addfee}.orb-blue.fltr-cntnr{box-shadow:0 5px 15px #9d9d9d}.orb-blue.fltr-cntnr,.orb-blue .fltr-scntnr .srchbox-col,.orb-blue .fltr-scntnr .srchop-col,.orb-blue .fltr-scntnr .srchtyp-col{border:1px solid #addfee}.orb-blue .fltr-scntnr .srchtyp-col-active,.orb-blue .fltr-scntnr .srchtyp-col:hover{border:1px solid #8cd2e7;border:1px solid rgba(91,192,222,.7)}.orb-blue .fltr-scntnr .srchtyp-col-active{background-color:#8cd2e7;background-color:rgba(91,192,222,.7);color:#fff}.orb-blue .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #addfee}.orb-blue .orb-btn{padding:1px 4px;background-color:#5bc0de;color:#fff;border:none}.orb-blue .orb-btn:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-tgl-btn div:hover{background-color:#addfee}.orb-blue .orb-toolbar{background-color:#eef8fb;border:1px solid #addfee}.orb-blue .orb-tlbr-btn{border:1px solid #eef8fb}.orb-blue .orb-tlbr-btn:hover{border:1px solid #5bc0de}.orb-blue .orb-tlbr-sep{border-right:1px solid #addfee}.orb-blue .orb-select,.orb-blue .orb-select ul{border:1px solid #addfee}.orb-blue .orb-select ul li:hover{background-color:#8cd2e7;background-color:rgba(91,192,222,.7)}.orb-blue .orb-scrollthumb{background-color:#eef8fb;border:1px solid #addfee;border-radius:3px}.orb-blue .orb-scrollthumb-hover{background-color:#addfee}.orb-blue.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c9d9d9d',endColorstr='#8c9d9d9d');background-color:hsla(0,0%,62%,.45)}.orb-blue .orb-dialog{background-color:#fff;border:1px solid #9d9d9d;box-shadow:0 5px 15px #9d9d9d;padding:7px 13px}.orb-blue .orb-dialog-header{background-color:#fff}.orb-blue .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-blue .orb-dialog-header .button-close:hover{background-color:#addfee}.orb-blue .orb-table td,.orb-blue .orb-table th{border-top:1px solid #addfee}.orb-blue .orb-table th{background-color:#5bc0de;color:#fff;border:1px solid #addfee;font-weight:700}.orb-green .orb{color:#000}.orb-green .orb .chart{border:1px solid #9fda8b}.orb-green .orb .av-flds{border-bottom:1px solid #9fda8b!important}.orb-green .orb .flds-grp-cap div{color:#ccc}.orb-green .orb .cell{border-left:1px solid #e2f4dc}.orb-green .orb .cell,.orb-green .orb .cell-gt,.orb-green .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #9fda8b}.orb-green .orb .cell-leftmost{border-left:none!important}.orb-green .orb .cell-topmost{border-top:none!important}.orb-green .orb .header,.orb-green .orb .header-gt,.orb-green .orb .header-st{background-color:#ebf7e7;color:#000}.orb-green .orb .header-leftmost{border-left:none!important}.orb-green .orb .header-row,.orb-green .orb .header-row-gt,.orb-green .orb .header-row-st{border-top:1px solid #9fda8b}.orb-green .orb .header-row-nofields{border-top:none!important}.orb-green .orb .header-col,.orb-green .orb .header-col-gt,.orb-green .orb .header-col-st{border-left:1px solid #9fda8b}.orb-green .orb .columns-cntr{border:1px solid #9fda8b;border-bottom:none;border-radius:4px 4px 0 0}.orb-green .orb .rows-cntr{border:1px solid #9fda8b;border-right:none;border-radius:4px 0 0 4px}.orb-green .orb .data-cntr{border:1px solid #9fda8b;border-radius:0 0 4px}.orb-green .orb .fld-btn{background-color:#3fb618;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-green .orb .fld-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb .fld-btn:hover .fltr-btn{background-color:#3fb618}.orb-green .orb .fld-btn .fltr-btn-active,.orb-green .orb .fld-btn .fltr-btn:hover{background-color:#78cb5d}.orb-green .orb .drp-trgt{height:27px}.orb-green .orb .drp-trgt-over{background-color:#f5fbf3}.orb-green .orb .drp-trgt-empty,.orb-green .orb .drp-trgt-vertical-empty{border:1px dashed #9fda8b}.orb-green .orb .drp-indic{height:25px}.orb-green .orb .drp-indic-over{background-color:#9fda8b}.orb-green.fltr-cntnr{box-shadow:0 5px 15px #676767}.orb-green.fltr-cntnr,.orb-green .fltr-scntnr .srchbox-col,.orb-green .fltr-scntnr .srchop-col,.orb-green .fltr-scntnr .srchtyp-col{border:1px solid #9fda8b}.orb-green .fltr-scntnr .srchtyp-col-active,.orb-green .fltr-scntnr .srchtyp-col:hover{border:1px solid #78cb5d;border:1px solid rgba(63,182,24,.7)}.orb-green .fltr-scntnr .srchtyp-col-active{background-color:#78cb5d;background-color:rgba(63,182,24,.7);color:#fff}.orb-green .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #9fda8b}.orb-green .orb-btn{padding:1px 4px;background-color:#3fb618;color:#fff;border:none}.orb-green .orb-btn:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-tgl-btn div:hover{background-color:#9fda8b}.orb-green .orb-toolbar{background-color:#ebf7e7;border:1px solid #9fda8b}.orb-green .orb-tlbr-btn{border:1px solid #ebf7e7}.orb-green .orb-tlbr-btn:hover{border:1px solid #3fb618}.orb-green .orb-tlbr-sep{border-right:1px solid #9fda8b}.orb-green .orb-select,.orb-green .orb-select ul{border:1px solid #9fda8b}.orb-green .orb-select ul li:hover{background-color:#78cb5d;background-color:rgba(63,182,24,.7)}.orb-green .orb-scrollthumb{background-color:#ebf7e7;border:1px solid #9fda8b;border-radius:3px}.orb-green .orb-scrollthumb-hover{background-color:#9fda8b}.orb-green.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c676767',endColorstr='#8c676767');background-color:hsla(0,0%,40%,.45)}.orb-green .orb-dialog{background-color:#fff;border:1px solid #676767;box-shadow:0 5px 15px #676767;padding:7px 13px}.orb-green .orb-dialog-header{background-color:#fff}.orb-green .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-green .orb-dialog-header .button-close:hover{background-color:#9fda8b}.orb-green .orb-table td,.orb-green .orb-table th{border-top:1px solid #9fda8b}.orb-green .orb-table th{background-color:#3fb618;color:#fff;border:1px solid #9fda8b;font-weight:700}.orb-orange .orb{color:#000}.orb-orange .orb .chart{border:1px solid #efb48c}.orb-orange .orb .av-flds{border-bottom:1px solid #efb48c!important}.orb-orange .orb .flds-grp-cap div{color:#ccc}.orb-orange .orb .cell{border-left:1px solid #fae8dc}.orb-orange .orb .cell,.orb-orange .orb .cell-gt,.orb-orange .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #efb48c}.orb-orange .orb .cell-leftmost{border-left:none!important}.orb-orange .orb .cell-topmost{border-top:none!important}.orb-orange .orb .header,.orb-orange .orb .header-gt,.orb-orange .orb .header-st{background-color:#fbf0e8;color:#000}.orb-orange .orb .header-leftmost{border-left:none!important}.orb-orange .orb .header-row,.orb-orange .orb .header-row-gt,.orb-orange .orb .header-row-st{border-top:1px solid #efb48c}.orb-orange .orb .header-row-nofields{border-top:none!important}.orb-orange .orb .header-col,.orb-orange .orb .header-col-gt,.orb-orange .orb .header-col-st{border-left:1px solid #efb48c}.orb-orange .orb .columns-cntr{border:1px solid #efb48c;border-bottom:none;border-radius:4px 4px 0 0}.orb-orange .orb .rows-cntr{border:1px solid #efb48c;border-right:none;border-radius:4px 0 0 4px}.orb-orange .orb .data-cntr{border:1px solid #efb48c;border-radius:0 0 4px}.orb-orange .orb .fld-btn{background-color:#df691a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-orange .orb .fld-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb .fld-btn:hover .fltr-btn{background-color:#df691a}.orb-orange .orb .fld-btn .fltr-btn-active,.orb-orange .orb .fld-btn .fltr-btn:hover{background-color:#e8965e}.orb-orange .orb .drp-trgt{height:27px}.orb-orange .orb .drp-trgt-over{background-color:#fdf7f3}.orb-orange .orb .drp-trgt-empty,.orb-orange .orb .drp-trgt-vertical-empty{border:1px dashed #efb48c}.orb-orange .orb .drp-indic{height:25px}.orb-orange .orb .drp-indic-over{background-color:#efb48c}.orb-orange.fltr-cntnr{box-shadow:0 5px 15px #7d7d7d}.orb-orange.fltr-cntnr,.orb-orange .fltr-scntnr .srchbox-col,.orb-orange .fltr-scntnr .srchop-col,.orb-orange .fltr-scntnr .srchtyp-col{border:1px solid #efb48c}.orb-orange .fltr-scntnr .srchtyp-col-active,.orb-orange .fltr-scntnr .srchtyp-col:hover{border:1px solid #e8965e;border:1px solid rgba(223,105,26,.7)}.orb-orange .fltr-scntnr .srchtyp-col-active{background-color:#e8965e;background-color:rgba(223,105,26,.7);color:#fff}.orb-orange .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #efb48c}.orb-orange .orb-btn{padding:1px 4px;background-color:#df691a;color:#fff;border:none}.orb-orange .orb-btn:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-tgl-btn div:hover{background-color:#efb48c}.orb-orange .orb-toolbar{background-color:#fbf0e8;border:1px solid #efb48c}.orb-orange .orb-tlbr-btn{border:1px solid #fbf0e8}.orb-orange .orb-tlbr-btn:hover{border:1px solid #df691a}.orb-orange .orb-tlbr-sep{border-right:1px solid #efb48c}.orb-orange .orb-select,.orb-orange .orb-select ul{border:1px solid #efb48c}.orb-orange .orb-select ul li:hover{background-color:#e8965e;background-color:rgba(223,105,26,.7)}.orb-orange .orb-scrollthumb{background-color:#fbf0e8;border:1px solid #efb48c;border-radius:3px}.orb-orange .orb-scrollthumb-hover{background-color:#efb48c}.orb-orange.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c7d7d7d',endColorstr='#8c7d7d7d');background-color:hsla(0,0%,49%,.45)}.orb-orange .orb-dialog{background-color:#fff;border:1px solid #7d7d7d;box-shadow:0 5px 15px #7d7d7d;padding:7px 13px}.orb-orange .orb-dialog-header{background-color:#fff}.orb-orange .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-orange .orb-dialog-header .button-close:hover{background-color:#efb48c}.orb-orange .orb-table td,.orb-orange .orb-table th{border-top:1px solid #efb48c}.orb-orange .orb-table th{background-color:#df691a;color:#fff;border:1px solid #efb48c;font-weight:700}.orb-flower .orb{color:#000}.orb-flower .orb .chart{border:1px solid #d3a4e3}.orb-flower .orb .av-flds{border-bottom:1px solid #d3a4e3!important}.orb-flower .orb .flds-grp-cap div{color:#ccc}.orb-flower .orb .cell{border-left:1px solid #f1e3f6}.orb-flower .orb .cell,.orb-flower .orb .cell-gt,.orb-flower .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d3a4e3}.orb-flower .orb .cell-leftmost{border-left:none!important}.orb-flower .orb .cell-topmost{border-top:none!important}.orb-flower .orb .header,.orb-flower .orb .header-gt,.orb-flower .orb .header-st{background-color:#f6ecf9;color:#000}.orb-flower .orb .header-leftmost{border-left:none!important}.orb-flower .orb .header-row,.orb-flower .orb .header-row-gt,.orb-flower .orb .header-row-st{border-top:1px solid #d3a4e3}.orb-flower .orb .header-row-nofields{border-top:none!important}.orb-flower .orb .header-col,.orb-flower .orb .header-col-gt,.orb-flower .orb .header-col-st{border-left:1px solid #d3a4e3}.orb-flower .orb .columns-cntr{border:1px solid #d3a4e3;border-bottom:none;border-radius:4px 4px 0 0}.orb-flower .orb .rows-cntr{border:1px solid #d3a4e3;border-right:none;border-radius:4px 0 0 4px}.orb-flower .orb .data-cntr{border:1px solid #d3a4e3;border-radius:0 0 4px}.orb-flower .orb .fld-btn{background-color:#a74ac7;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-flower .orb .fld-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb .fld-btn:hover .fltr-btn{background-color:#a74ac7}.orb-flower .orb .fld-btn .fltr-btn-active,.orb-flower .orb .fld-btn .fltr-btn:hover{background-color:#c180d7}.orb-flower .orb .drp-trgt{height:27px}.orb-flower .orb .drp-trgt-over{background-color:#faf5fc}.orb-flower .orb .drp-trgt-empty,.orb-flower .orb .drp-trgt-vertical-empty{border:1px dashed #d3a4e3}.orb-flower .orb .drp-indic{height:25px}.orb-flower .orb .drp-indic-over{background-color:#d3a4e3}.orb-flower.fltr-cntnr{box-shadow:0 5px 15px #898989}.orb-flower.fltr-cntnr,.orb-flower .fltr-scntnr .srchbox-col,.orb-flower .fltr-scntnr .srchop-col,.orb-flower .fltr-scntnr .srchtyp-col{border:1px solid #d3a4e3}.orb-flower .fltr-scntnr .srchtyp-col-active,.orb-flower .fltr-scntnr .srchtyp-col:hover{border:1px solid #c180d7;border:1px solid rgba(167,74,199,.7)}.orb-flower .fltr-scntnr .srchtyp-col-active{background-color:#c180d7;background-color:rgba(167,74,199,.7);color:#fff}.orb-flower .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d3a4e3}.orb-flower .orb-btn{padding:1px 4px;background-color:#a74ac7;color:#fff;border:none}.orb-flower .orb-btn:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-tgl-btn div:hover{background-color:#d3a4e3}.orb-flower .orb-toolbar{background-color:#f6ecf9;border:1px solid #d3a4e3}.orb-flower .orb-tlbr-btn{border:1px solid #f6ecf9}.orb-flower .orb-tlbr-btn:hover{border:1px solid #a74ac7}.orb-flower .orb-tlbr-sep{border-right:1px solid #d3a4e3}.orb-flower .orb-select,.orb-flower .orb-select ul{border:1px solid #d3a4e3}.orb-flower .orb-select ul li:hover{background-color:#c180d7;background-color:rgba(167,74,199,.7)}.orb-flower .orb-scrollthumb{background-color:#f6ecf9;border:1px solid #d3a4e3;border-radius:3px}.orb-flower .orb-scrollthumb-hover{background-color:#d3a4e3}.orb-flower.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c898989',endColorstr='#8c898989');background-color:hsla(0,0%,54%,.45)}.orb-flower .orb-dialog{background-color:#fff;border:1px solid #898989;box-shadow:0 5px 15px #898989;padding:7px 13px}.orb-flower .orb-dialog-header{background-color:#fff}.orb-flower .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-flower .orb-dialog-header .button-close:hover{background-color:#d3a4e3}.orb-flower .orb-table td,.orb-flower .orb-table th{border-top:1px solid #d3a4e3}.orb-flower .orb-table th{background-color:#a74ac7;color:#fff;border:1px solid #d3a4e3;font-weight:700}.orb-gray .orb{color:#000}.orb-gray .orb .chart{border:1px solid #bfbfbf}.orb-gray .orb .av-flds{border-bottom:1px solid #bfbfbf!important}.orb-gray .orb .flds-grp-cap div{color:#ccc}.orb-gray .orb .cell{border-left:1px solid #ebebeb}.orb-gray .orb .cell,.orb-gray .orb .cell-gt,.orb-gray .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #bfbfbf}.orb-gray .orb .cell-leftmost{border-left:none!important}.orb-gray .orb .cell-topmost{border-top:none!important}.orb-gray .orb .header,.orb-gray .orb .header-gt,.orb-gray .orb .header-st{background-color:#f2f2f2;color:#000}.orb-gray .orb .header-leftmost{border-left:none!important}.orb-gray .orb .header-row,.orb-gray .orb .header-row-gt,.orb-gray .orb .header-row-st{border-top:1px solid #bfbfbf}.orb-gray .orb .header-row-nofields{border-top:none!important}.orb-gray .orb .header-col,.orb-gray .orb .header-col-gt,.orb-gray .orb .header-col-st{border-left:1px solid #bfbfbf}.orb-gray .orb .columns-cntr{border:1px solid #bfbfbf;border-bottom:none;border-radius:4px 4px 0 0}.orb-gray .orb .rows-cntr{border:1px solid #bfbfbf;border-right:none;border-radius:4px 0 0 4px}.orb-gray .orb .data-cntr{border:1px solid #bfbfbf;border-radius:0 0 4px}.orb-gray .orb .fld-btn{background-color:gray;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-gray .orb .fld-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb .fld-btn:hover .fltr-btn{background-color:gray}.orb-gray .orb .fld-btn .fltr-btn-active,.orb-gray .orb .fld-btn .fltr-btn:hover{background-color:#a6a6a6}.orb-gray .orb .drp-trgt{height:27px}.orb-gray .orb .drp-trgt-over{background-color:#f8f8f8}.orb-gray .orb .drp-trgt-empty,.orb-gray .orb .drp-trgt-vertical-empty{border:1px dashed #bfbfbf}.orb-gray .orb .drp-indic{height:25px}.orb-gray .orb .drp-indic-over{background-color:#bfbfbf}.orb-gray.fltr-cntnr{box-shadow:0 5px 15px gray}.orb-gray.fltr-cntnr,.orb-gray .fltr-scntnr .srchbox-col,.orb-gray .fltr-scntnr .srchop-col,.orb-gray .fltr-scntnr .srchtyp-col{border:1px solid #bfbfbf}.orb-gray .fltr-scntnr .srchtyp-col-active,.orb-gray .fltr-scntnr .srchtyp-col:hover{border:1px solid #a6a6a6;border:1px solid hsla(0,0%,50%,.7)}.orb-gray .fltr-scntnr .srchtyp-col-active{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7);color:#fff}.orb-gray .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #bfbfbf}.orb-gray .orb-btn{padding:1px 4px;background-color:gray;color:#fff;border:none}.orb-gray .orb-btn:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-tgl-btn div:hover{background-color:#bfbfbf}.orb-gray .orb-toolbar{background-color:#f2f2f2;border:1px solid #bfbfbf}.orb-gray .orb-tlbr-btn{border:1px solid #f2f2f2}.orb-gray .orb-tlbr-btn:hover{border:1px solid gray}.orb-gray .orb-tlbr-sep{border-right:1px solid #bfbfbf}.orb-gray .orb-select,.orb-gray .orb-select ul{border:1px solid #bfbfbf}.orb-gray .orb-select ul li:hover{background-color:#a6a6a6;background-color:hsla(0,0%,50%,.7)}.orb-gray .orb-scrollthumb{background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:3px}.orb-gray .orb-scrollthumb-hover{background-color:#bfbfbf}.orb-gray.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c808080',endColorstr='#8c808080');background-color:hsla(0,0%,50%,.45)}.orb-gray .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-gray .orb-dialog-header{background-color:#fff}.orb-gray .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-gray .orb-dialog-header .button-close:hover{background-color:#bfbfbf}.orb-gray .orb-table td,.orb-gray .orb-table th{border-top:1px solid #bfbfbf}.orb-gray .orb-table th{background-color:gray;color:#fff;border:1px solid #bfbfbf;font-weight:700}.orb-black .orb{color:#000}.orb-black .orb .chart{border:1px solid #7f7f7f}.orb-black .orb .av-flds{border-bottom:1px solid #7f7f7f!important}.orb-black .orb .flds-grp-cap div{color:#ccc}.orb-black .orb .cell{border-left:1px solid #d8d8d8}.orb-black .orb .cell,.orb-black .orb .cell-gt,.orb-black .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #7f7f7f}.orb-black .orb .cell-leftmost{border-left:none!important}.orb-black .orb .cell-topmost{border-top:none!important}.orb-black .orb .header,.orb-black .orb .header-gt,.orb-black .orb .header-st{background-color:#e5e5e5;color:#000}.orb-black .orb .header-leftmost{border-left:none!important}.orb-black .orb .header-row,.orb-black .orb .header-row-gt,.orb-black .orb .header-row-st{border-top:1px solid #7f7f7f}.orb-black .orb .header-row-nofields{border-top:none!important}.orb-black .orb .header-col,.orb-black .orb .header-col-gt,.orb-black .orb .header-col-st{border-left:1px solid #7f7f7f}.orb-black .orb .columns-cntr{border:1px solid #7f7f7f;border-bottom:none;border-radius:4px 4px 0 0}.orb-black .orb .rows-cntr{border:1px solid #7f7f7f;border-right:none;border-radius:4px 0 0 4px}.orb-black .orb .data-cntr{border:1px solid #7f7f7f;border-radius:0 0 4px}.orb-black .orb .fld-btn{background-color:#000;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-black .orb .fld-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb .fld-btn:hover .fltr-btn{background-color:#000}.orb-black .orb .fld-btn .fltr-btn-active,.orb-black .orb .fld-btn .fltr-btn:hover{background-color:#4c4c4c}.orb-black .orb .drp-trgt{height:27px}.orb-black .orb .drp-trgt-over{background-color:#f2f2f2}.orb-black .orb .drp-trgt-empty,.orb-black .orb .drp-trgt-vertical-empty{border:1px dashed #7f7f7f}.orb-black .orb .drp-indic{height:25px}.orb-black .orb .drp-indic-over{background-color:#7f7f7f}.orb-black.fltr-cntnr{box-shadow:0 5px 15px #000}.orb-black.fltr-cntnr,.orb-black .fltr-scntnr .srchbox-col,.orb-black .fltr-scntnr .srchop-col,.orb-black .fltr-scntnr .srchtyp-col{border:1px solid #7f7f7f}.orb-black .fltr-scntnr .srchtyp-col-active,.orb-black .fltr-scntnr .srchtyp-col:hover{border:1px solid #4c4c4c;border:1px solid rgba(0,0,0,.7)}.orb-black .fltr-scntnr .srchtyp-col-active{background-color:#4c4c4c;background-color:rgba(0,0,0,.7);color:#fff}.orb-black .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #7f7f7f}.orb-black .orb-btn{padding:1px 4px;background-color:#000;color:#fff;border:none}.orb-black .orb-btn:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-tgl-btn div:hover{background-color:#7f7f7f}.orb-black .orb-toolbar{background-color:#e5e5e5;border:1px solid #7f7f7f}.orb-black .orb-tlbr-btn{border:1px solid #e5e5e5}.orb-black .orb-tlbr-btn:hover{border:1px solid #000}.orb-black .orb-tlbr-sep{border-right:1px solid #7f7f7f}.orb-black .orb-select,.orb-black .orb-select ul{border:1px solid #7f7f7f}.orb-black .orb-select ul li:hover{background-color:#4c4c4c;background-color:rgba(0,0,0,.7)}.orb-black .orb-scrollthumb{background-color:#e5e5e5;border:1px solid #7f7f7f;border-radius:3px}.orb-black .orb-scrollthumb-hover{background-color:#7f7f7f}.orb-black.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c000000',endColorstr='#8c000000');background-color:rgba(0,0,0,.45)}.orb-black .orb-dialog{background-color:#fff;border:1px solid #000;box-shadow:0 5px 15px #000;padding:7px 13px}.orb-black .orb-dialog-header{background-color:#fff}.orb-black .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-black .orb-dialog-header .button-close:hover{background-color:#7f7f7f}.orb-black .orb-table td,.orb-black .orb-table th{border-top:1px solid #7f7f7f}.orb-black .orb-table th{background-color:#000;color:#fff;border:1px solid #7f7f7f;font-weight:700}.orb-white .orb{color:#000}.orb-white .orb .chart{border:1px solid #d9d9d9}.orb-white .orb .av-flds{border-bottom:1px solid #d9d9d9!important}.orb-white .orb .flds-grp-cap div{color:#ccc}.orb-white .orb .cell{border-left:1px solid #e6e6e6}.orb-white .orb .cell,.orb-white .orb .cell-gt,.orb-white .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #d9d9d9}.orb-white .orb .cell-leftmost{border-left:none!important}.orb-white .orb .cell-topmost{border-top:none!important}.orb-white .orb .header,.orb-white .orb .header-gt,.orb-white .orb .header-st{background-color:#fff;color:#000}.orb-white .orb .header-leftmost{border-left:none!important}.orb-white .orb .header-row,.orb-white .orb .header-row-gt,.orb-white .orb .header-row-st{border-top:1px solid #d9d9d9}.orb-white .orb .header-row-nofields{border-top:none!important}.orb-white .orb .header-col,.orb-white .orb .header-col-gt,.orb-white .orb .header-col-st{border-left:1px solid #d9d9d9}.orb-white .orb .columns-cntr{border:1px solid #d9d9d9;border-bottom:none;border-radius:4px 4px 0 0}.orb-white .orb .rows-cntr{border:1px solid #d9d9d9;border-right:none;border-radius:4px 0 0 4px}.orb-white .orb .data-cntr{border:1px solid #d9d9d9;border-radius:0 0 4px}.orb-white .orb .fld-btn{background-color:#fff;color:#000;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-white .orb .fld-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb .fld-btn:hover .fltr-btn{background-color:#555}.orb-white .orb .fld-btn .fltr-btn-active,.orb-white .orb .fld-btn .fltr-btn:hover{background-color:#999}.orb-white .orb .drp-trgt{height:27px}.orb-white .orb .drp-trgt-over{background-color:#fff}.orb-white .orb .drp-trgt-empty,.orb-white .orb .drp-trgt-vertical-empty{border:1px dashed #d9d9d9}.orb-white .orb .drp-indic{height:25px}.orb-white .orb .drp-indic-over{background-color:#d9d9d9}.orb-white.fltr-cntnr{box-shadow:0 5px 15px #d9d9d9}.orb-white.fltr-cntnr,.orb-white .fltr-scntnr .srchbox-col,.orb-white .fltr-scntnr .srchop-col,.orb-white .fltr-scntnr .srchtyp-col{border:1px solid #d9d9d9}.orb-white .fltr-scntnr .srchtyp-col-active,.orb-white .fltr-scntnr .srchtyp-col:hover{border:1px solid #fff;border:1px solid hsla(0,0%,50%,.1)}.orb-white .fltr-scntnr .srchtyp-col-active{background-color:#fff;background-color:hsla(0,0%,50%,.1);color:#000}.orb-white .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #d9d9d9}.orb-white .orb-btn{padding:1px 4px;background-color:#fff;color:#000;border:none}.orb-white .orb-btn:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-tgl-btn div:hover{background-color:#d9d9d9}.orb-white .orb-toolbar{background-color:#fff;border:1px solid #d9d9d9}.orb-white .orb-tlbr-btn{border:1px solid #fff}.orb-white .orb-tlbr-btn:hover{border:1px solid gray}.orb-white .orb-tlbr-sep{border-right:1px solid #d9d9d9}.orb-white .orb-select,.orb-white .orb-select ul{border:1px solid #d9d9d9}.orb-white .orb-select ul li:hover{background-color:#fff;background-color:hsla(0,0%,50%,.1)}.orb-white .orb-scrollthumb{background-color:#fff;border:1px solid #d9d9d9;border-radius:3px}.orb-white .orb-scrollthumb-hover{background-color:#d9d9d9}.orb-white.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cffffff',endColorstr='#8cffffff');background-color:hsla(0,0%,100%,.45)}.orb-white .orb-dialog{background-color:#fff;border:1px solid gray;box-shadow:0 5px 15px gray;padding:7px 13px}.orb-white .orb-dialog-header{background-color:#fff}.orb-white .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-white .orb-dialog-header .button-close:hover{background-color:#d9d9d9}.orb-white .orb-table td,.orb-white .orb-table th{border-top:1px solid #d9d9d9}.orb-white .orb-table th{background-color:#fff;color:#000;border:1px solid #d9d9d9;font-weight:700}.orb-rfi .orb{color:#000}.orb-rfi .orb .chart{border:1px solid #cf989c}.orb-rfi .orb .av-flds{border-bottom:1px solid #cf989c!important}.orb-rfi .orb .flds-grp-cap div{color:#ccc}.orb-rfi .orb .cell{border-left:1px solid #f0e0e1}.orb-rfi .orb .cell,.orb-rfi .orb .cell-gt,.orb-rfi .orb .cell-st{background-color:#fff;color:#000;border-top:1px solid #cf989c}.orb-rfi .orb .cell-leftmost{border-left:none!important}.orb-rfi .orb .cell-topmost{border-top:none!important}.orb-rfi .orb .header,.orb-rfi .orb .header-gt,.orb-rfi .orb .header-st{background-color:#f5eaeb;color:#000}.orb-rfi .orb .header-leftmost{border-left:none!important}.orb-rfi .orb .header-row,.orb-rfi .orb .header-row-gt,.orb-rfi .orb .header-row-st{border-top:1px solid #cf989c}.orb-rfi .orb .header-row-nofields{border-top:none!important}.orb-rfi .orb .header-col,.orb-rfi .orb .header-col-gt,.orb-rfi .orb .header-col-st{border-left:1px solid #cf989c}.orb-rfi .orb .columns-cntr{border:1px solid #cf989c;border-bottom:none;border-radius:4px 4px 0 0}.orb-rfi .orb .rows-cntr{border:1px solid #cf989c;border-right:none;border-radius:4px 0 0 4px}.orb-rfi .orb .data-cntr{border:1px solid #cf989c;border-radius:0 0 4px}.orb-rfi .orb .fld-btn{background-color:#9f313a;color:#fff;font-weight:700;height:25px;border:none;border-radius:4px;padding:4px 5px}.orb-rfi .orb .fld-btn:hover{background-color:#bb6e75;background-color:rgba(159,49,58,.7)}.orb-rfi .orb .fld-btn:hover .fltr-btn{background-color:#9f313a}.orb-rfi .orb .fld-btn .fltr-btn-active,.orb-rfi .orb .fld-btn .fltr-btn:hover{background-color:#bb6e75}.orb-rfi .orb .drp-trgt{height:27px}.orb-rfi .orb .drp-trgt-over{background-color:#faf4f5}.orb-rfi .orb .drp-trgt-empty,.orb-rfi .orb .drp-trgt-vertical-empty{border:1px dashed #cf989c}.orb-rfi .orb .drp-indic{height:25px}.orb-rfi .orb .drp-indic-over{background-color:#cf989c}.orb-rfi.fltr-cntnr{box-shadow:0 5px 15px #686868}.orb-rfi.fltr-cntnr,.orb-rfi .fltr-scntnr .srchbox-col,.orb-rfi .fltr-scntnr .srchop-col,.orb-rfi .fltr-scntnr .srchtyp-col{border:1px solid #cf989c}.orb-rfi .fltr-scntnr .srchtyp-col-active,.orb-rfi .fltr-scntnr .srchtyp-col:hover{border:1px solid #bb6e75;border:1px solid rgba(159,49,58,.7)}.orb-rfi .fltr-scntnr .srchtyp-col-active{background-color:#bb6e75;background-color:rgba(159,49,58,.7);color:#fff}.orb-rfi .fltr-scntnr .fltr-vals-col{border-bottom:1px solid #cf989c}.orb-rfi .orb-btn{padding:1px 4px;background-color:#9f313a;color:#fff;border:none}.orb-rfi .orb-btn:hover{background-color:#bb6e75;background-color:rgba(159,49,58,.7)}.orb-rfi .orb-tgl-btn div:hover{background-color:#cf989c}.orb-rfi .orb-toolbar{background-color:#f5eaeb;border:1px solid #cf989c}.orb-rfi .orb-tlbr-btn{border:1px solid #f5eaeb}.orb-rfi .orb-tlbr-btn:hover{border:1px solid #9f313a}.orb-rfi .orb-tlbr-sep{border-right:1px solid #cf989c}.orb-rfi .orb-select,.orb-rfi .orb-select ul{border:1px solid #cf989c}.orb-rfi .orb-select ul li:hover{background-color:#bb6e75;background-color:rgba(159,49,58,.7)}.orb-rfi .orb-scrollthumb{background-color:#f5eaeb;border:1px solid #cf989c;border-radius:3px}.orb-rfi .orb-scrollthumb-hover{background-color:#cf989c}.orb-rfi.orb-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8c686868',endColorstr='#8c686868');background-color:hsla(0,0%,41%,.45)}.orb-rfi .orb-dialog{border:1px solid #686868;box-shadow:0 5px 15px #686868;padding:7px 13px}.orb-rfi .orb-dialog,.orb-rfi .orb-dialog-header{background-color:#fff}.orb-rfi .orb-dialog-header .button-close{background-color:#fff;margin:5px 3px 1px 1px}.orb-rfi .orb-dialog-header .button-close:hover{background-color:#cf989c}.orb-rfi .orb-table td,.orb-rfi .orb-table th{border-top:1px solid #cf989c}.orb-rfi .orb-table th{background-color:#9f313a;color:#fff;border:1px solid #cf989c;font-weight:700} \ No newline at end of file diff --git a/dist/v1.1.0/orb-1.1.0.min.js b/dist/v1.1.0/orb-1.1.0.min.js index d5bc7d8..40ebd79 100644 --- a/dist/v1.1.0/orb-1.1.0.min.js +++ b/dist/v1.1.0/orb-1.1.0.min.js @@ -8,10 +8,10 @@ * @license MIT */ -"use strict";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.orb=e()}}(function(){return function e(t,r,n){function o(i,s){if(!r[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var c=r[i]={exports:{}};t[i][0].call(c.exports,function(e){var r=t[i][1][e];return o(r?r:e)},c,c.exports,e,t,r,n)}return r[i].exports}for(var a="function"==typeof require&&require,i=0;is;)i.call(e,o=a[s++])&&t.push(o);return t}},{"./$":23}],14:[function(e,t,r){var n=e("./$.global"),o=e("./$.core"),a=e("./$.ctx"),i="prototype",s=function(e,t,r){var l,u,c,d=e&s.F,p=e&s.G,h=e&s.S,f=e&s.P,g=e&s.B,m=e&s.W,b=p?o:o[t]||(o[t]={}),v=p?n:h?n[t]:(n[t]||{})[i];p&&(r=t);for(l in r)u=!d&&v&&l in v,u&&l in b||(c=u?v[l]:r[l],b[l]=p&&"function"!=typeof v[l]?r[l]:g&&u?a(c,n):m&&v[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[i]=e[i],t}(c):f&&"function"==typeof c?a(Function.call,c):c,f&&((b[i]||(b[i]={}))[l]=c))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},{"./$.core":9,"./$.ctx":10,"./$.global":17}],15:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],16:[function(e,t,r){var n=e("./$.to-iobject"),o=e("./$").getNames,a={}.toString,i="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(t){return i.slice()}};t.exports.get=function(e){return i&&"[object Window]"==a.call(e)?s(e):o(n(e))}},{"./$":23,"./$.to-iobject":30}],17:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],18:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],19:[function(e,t,r){var n=e("./$"),o=e("./$.property-desc");t.exports=e("./$.descriptors")?function(e,t,r){return n.setDesc(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./$":23,"./$.descriptors":12,"./$.property-desc":26}],20:[function(e,t,r){var n=e("./$.cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./$.cof":8}],21:[function(e,t,r){var n=e("./$.cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./$.cof":8}],22:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],23:[function(e,t,r){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},{}],24:[function(e,t,r){var n=e("./$"),o=e("./$.to-iobject");t.exports=function(e,t){for(var r,a=o(e),i=n.getKeys(a),s=i.length,l=0;s>l;)if(a[r=i[l++]]===t)return r}},{"./$":23,"./$.to-iobject":30}],25:[function(e,t,r){t.exports=!0},{}],26:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],27:[function(e,t,r){t.exports=e("./$.hide")},{"./$.hide":19}],28:[function(e,t,r){var n=e("./$").setDesc,o=e("./$.has"),a=e("./$.wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},{"./$":23,"./$.has":18,"./$.wks":32}],29:[function(e,t,r){var n=e("./$.global"),o="__core-js_shared__",a=n[o]||(n[o]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./$.global":17}],30:[function(e,t,r){var n=e("./$.iobject"),o=e("./$.defined");t.exports=function(e){return n(o(e))}},{"./$.defined":11,"./$.iobject":20}],31:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],32:[function(e,t,r){var n=e("./$.shared")("wks"),o=e("./$.uid"),a=e("./$.global").Symbol;t.exports=function(e){return n[e]||(n[e]=a&&a[e]||(a||o)("Symbol."+e))}},{"./$.global":17,"./$.shared":29,"./$.uid":31}],33:[function(e,t,r){},{}],34:[function(e,t,r){var n=e("./$"),o=e("./$.global"),a=e("./$.has"),i=e("./$.descriptors"),s=e("./$.export"),l=e("./$.redefine"),u=e("./$.fails"),c=e("./$.shared"),d=e("./$.set-to-string-tag"),p=e("./$.uid"),h=e("./$.wks"),f=e("./$.keyof"),g=e("./$.get-names"),m=e("./$.enum-keys"),b=e("./$.is-array"),v=e("./$.an-object"),y=e("./$.to-iobject"),x=e("./$.property-desc"),w=n.getDesc,T=n.setDesc,C=n.create,E=g.get,S=o.Symbol,N=o.JSON,F=N&&N.stringify,M=!1,D=h("_hidden"),O=n.isEnum,A=c("symbol-registry"),L=c("symbols"),R="function"==typeof S,_=Object.prototype,k=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=w(_,t);n&&delete _[t],T(e,t,r),n&&e!==_&&T(_,t,n)}:T,P=function(e){var t=L[e]=C(S.prototype);return t._k=e,i&&M&&k(_,e,{configurable:!0,set:function(t){a(this,D)&&a(this[D],e)&&(this[D][e]=!1),k(this,e,x(1,t))}}),t},B=function(e){return"symbol"==typeof e},j=function(e,t,r){return r&&a(L,t)?(r.enumerable?(a(e,D)&&e[D][t]&&(e[D][t]=!1),r=C(r,{enumerable:x(0,!1)})):(a(e,D)||T(e,D,x(1,{})),e[D][t]=!0),k(e,t,r)):T(e,t,r)},H=function(e,t){v(e);for(var r,n=m(t=y(t)),o=0,a=n.length;a>o;)j(e,r=n[o++],t[r]);return e},W=function(e,t){return void 0===t?C(e):H(C(e),t)},$=function(e){var t=O.call(this,e);return t||!a(this,e)||!a(L,e)||a(this,D)&&this[D][e]?t:!0},z=function(e,t){var r=w(e=y(e),t);return!r||!a(L,t)||a(e,D)&&e[D][t]||(r.enumerable=!0),r},U=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])||t==D||n.push(t);return n},I=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])&&n.push(L[t]);return n},G=function(e){if(void 0!==e&&!B(e)){for(var t,r,n=[e],o=1,a=arguments;a.length>o;)n.push(a[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&b(t)||(t=function(e,t){return r&&(t=r.call(this,e,t)),B(t)?void 0:t}),n[1]=t,F.apply(N,n)}},V=u(function(){var e=S();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))});R||(S=function(){if(B(this))throw TypeError("Symbol is not a constructor");return P(p(arguments.length>0?arguments[0]:void 0))},l(S.prototype,"toString",function(){return this._k}),B=function(e){return e instanceof S},n.create=W,n.isEnum=$,n.getDesc=z,n.setDesc=j,n.setDescs=H,n.getNames=g.get=U,n.getSymbols=I,i&&!e("./$.library")&&l(_,"propertyIsEnumerable",$,!0));var q={"for":function(e){return a(A,e+="")?A[e]:A[e]=S(e)},keyFor:function(e){return f(A,e)},useSetter:function(){M=!0},useSimple:function(){M=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(e){var t=h(e);q[e]=R?t:P(t)}),M=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",q),s(s.S+s.F*!R,"Object",{create:W,defineProperty:j,defineProperties:H,getOwnPropertyDescriptor:z,getOwnPropertyNames:U,getOwnPropertySymbols:I}),N&&s(s.S+s.F*(!R||V),"JSON",{stringify:G}),d(S,"Symbol"),d(Math,"Math",!0),d(o.JSON,"JSON",!0)},{"./$":23,"./$.an-object":7,"./$.descriptors":12,"./$.enum-keys":13,"./$.export":14,"./$.fails":15,"./$.get-names":16,"./$.global":17,"./$.has":18,"./$.is-array":21,"./$.keyof":24,"./$.library":25,"./$.property-desc":26,"./$.redefine":27,"./$.set-to-string-tag":28,"./$.shared":29,"./$.to-iobject":30,"./$.uid":31,"./$.wks":32}],35:[function(e,t,r){function n(e,t,r,n){var a=0,i=0,s=("all"===t?r:t).length;return s>0&&(n||s>1?(o(e,t,r,function(e){i+=e}),i/=s,o(e,t,r,function(e){a+=(e-i)*(e-i)}),a/=n?s:s-1):a=NaN),a}function o(e,t,r,n){var o="all"===t;if(t=o?r:t,t.length>0)for(var a=0;ae)&&(s=e)}),s},max:function l(e,t,r){var l=null;return o(e,t,r,function(e){(null==l||e>l)&&(l=e)}),l},avg:function u(e,t,r){var u=0,n=("all"===t?r:t).length;return n>0&&(o(e,t,r,function(e){u+=e}),u/=n),u},prod:function c(e,t,r){var c,n=("all"===t?r:t).length;return n>0&&(c=1,o(e,t,r,function(e){c*=e})),c},stdev:function(e,t,r){return Math.sqrt(n(e,t,r,!1))},stdevp:function(e,t,r){return Math.sqrt(n(e,t,r,!0))},"var":function(e,t,r){return n(e,t,r,!1)},varp:function(e,t,r){return n(e,t,r,!0)}}},{}],36:[function(e,t,r){var n=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function r(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&n.isArray(e)&&e.length>0)for(var t=0,r=e.length;r>t;t++)for(var a=e[t],i=s.root,u=0;ut.name?1:0})})},t.exports.Type=a},{"./orb.dimension":38,"./orb.utils":53}],37:[function(e,t,r){function n(e,t,r){for(var n=0;n-1?e[r]:null}function n(e,t){for(var r=0;r=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,r(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,r(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,r(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return r(o.allFields,e)},this.getRowField=function(e){return r(o.rowFields,e)},this.getColumnField=function(e){return r(o.columnFields,e)},this.getDataField=function(e){return r(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=c.ownProperties(e),r=[],n=0;n',l="";t.exports=function(e){function t(e){return"'+e+""}function r(e,r,n,o){var a,i=o||"";for(a=0;r>a;a++)i+="";for(i+=e.reduce(function(e,r){return e+=t(r.caption)},""),a=0;n>a;a++)i+="";return i+""}function u(e){return n.btoa(unescape(encodeURIComponent(e)))}var c=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',b='style="background-color: '+g+';" bgcolor="'+g+'"',v=Math.max(c.dataFields.length+1,e.layout.pivotTable.width),y=r(c.dataFields,0,v-c.dataFields.length,'Data'),x='',w=r(c.columnFields,e.layout.rowHeaders.width,v-(e.layout.rowHeaders.width+c.columnFields.length)),T=function(){for(var r,n="",a=0;a";if(a";else s+=c.rowFields.reduce(function(e,r){return e+=t(r.caption)},"");s+=i.reduce(function(e,t){var r=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+r+""},""),n+=s+""}return n}(),C=function(){for(var t="",r=0;r";o+=n.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[r];o+=a.reduce(function(e,t,r){var n=c.dataFields[r%=c.dataFields.length].formatFunc,o=null==t.value?"":n?n()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+u(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":46,"./orb.ui.header":49,"./orb.utils":53}],40:[function(e,t,r){var n=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,r,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&n.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=r,this.excludeStatic=i,this.test=function(e){if(n.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue!==!1&&s.staticValue!==o.NONE},this.isAlwaysTrue=function(){return!(s.term||n.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":53}],41:[function(e,t,r){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":39,"./orb.pgrid":42,"./orb.query":44,"./orb.ui.pgridwidget":50,"./orb.utils":53}],42:[function(e,t,r){var n=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),u=t.exports=function(e){function t(e){e!==!1&&r(),f.rows.update(),f.columns.update(),p(),f.publish(u.EVENT_UPDATED)}function r(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var u=t.indexOf(l);u>=0&&(e[s]=0-(l+2),i.push(l))}}}var c,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(n)for(var h=0;h0)for(var n=0,o=[f.columns.root];np&&(h[u].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,n++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],r=0;r1){l.isNumber(r[0])||l.isDate(r[0])?r.sort(function(e,t){return e?t?e-t:1:t?-1:0}):r.sort();for(var u=0;u0?" - ":"")+e[r].caption;return t}for(var t=f.config,r=e(t.columnFields),n=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var r,n=[],a=!0,i=0;i0){for(r=0;r0){var r=i.headers[i.headers.length-1],n=r[0];if(n){for(var o,s=n.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),r(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(n.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(n.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],49:[function(e,t,r){function n(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var r=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:r="empty";break;case i.INNER:r="header "+r;break;case i.WRAPPER:r="header "+r;break;case i.SUB_TOTAL:r="header header-st "+r;break;case i.GRAND_TOTAL:r="header header-gt "+r}return r},getCellClass:function(e,t){var r="";switch(e){case i.GRAND_TOTAL:r="cell-gt";break;case i.SUB_TOTAL:r=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:r=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return r}};t.exports.header=function(e,t,r,a,s,l){function u(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var r=f.parent;null!=r&&(!r.dim.field.subTotal.visible||null!=r.subtotalHeader&&r.subtotalHeader.expanded);)r=r.parent;return null==r||null==r.subtotalHeader?t:r.subtotalHeader.expanded}function c(e){var t,r=0,n=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?r.value:o.value:e.config.dataFields[0],n.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){n.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){n.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":36,"./orb.state":45}],50:[function(e,t,r){var n=e("react-dom"),o=e("react"),a=e("./orb.axe"),i=e("./orb.pgrid"),s=e("./orb.ui.header"),l=e("./orb.ui.rows"),u=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),d=e("./react/orb.react.PivotChart.jsx"),p=e("./react/orb.react.PivotTable.jsx"),h=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){b.pgrid.subscribe(i.EVENT_UPDATED,f),b.pgrid.subscribe(i.EVENT_SORT_CHANGED,f),b.pgrid.subscribe(i.EVENT_CONFIG_CHANGED,f),r()}function r(){function e(e,t){return function(){return e()&&t()}}b.rows=new l(b.pgrid.rows),b.columns=new u(b.pgrid.columns);var t=b.rows.headers,r=b.columns.leafsHeaders;b.layout={rowHeaders:{width:(b.pgrid.rows.fields.length||1)+("rows"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:b.columns.leafsHeaders.length,height:(b.pgrid.columns.fields.length||1)+("columns"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0)}},b.layout.pivotTable={width:b.layout.rowHeaders.width+b.layout.columnHeaders.width,height:b.layout.rowHeaders.height+b.layout.columnHeaders.height};var n,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return b.pgrid.filteredDataSource[e]});r=e.rowType===s.HeaderType.GRAND_TOTAL&&e.colType===s.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===s.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===s.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:r,comp:{type:h,props:{headers:b.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:b.pgrid.config.theme}},theme:b.pgrid.config.theme,style:m.fontStyle})}},t()}},{"./orb.axe":36,"./orb.pgrid":42,"./orb.ui.cols":48,"./orb.ui.header":49,"./orb.ui.rows":51,"./react/orb.react.Dialog.jsx":55,"./react/orb.react.Grid.jsx":62,"./react/orb.react.PivotChart.jsx":65,"./react/orb.react.PivotTable.jsx":74,react:"react","react-dom":"react-dom"}],51:[function(e,t,r){var n=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var r=e[e.length-1],n=0;n0)for(var s=e.length-1,l=e[s],u=l.length>0?l[l.length-1]:null,c=0;c0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(r(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),r(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(n.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(n.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],52:[function(e,t,r){function n(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),r=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-r.left,y:t.top-r.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,r){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(n=t(e[o],o),!n||r===!0);o++);return n},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var r=0;r-1?void 0:r}return(0,a["default"])(e,r,2)},addEventListener:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):e["on"+t]=r},removeEventListener:function(e,t,r){e.removeEventListener?e.removeEventListener(t,r,!1):e.detachEvent?e.detachEvent("on"+t,r):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,r=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,r=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:r}}},function(e){function t(e){this.message=e}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.name="InvalidCharacterError",e.btoa=r&&r.btoa?function(e){return r.btoa(e)}:function(e){for(var r,o,a=String(e),i=0,s=n,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&r>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new t("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|o}return l},e.atob=r&&r.atob?function(e){return r.atob(e)}:function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=r.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=n.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/json/stringify":1}],54:[function(e,t,r){var n=e("react"),o=e("react-dom");t.exports=n.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var r=0;ro?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(n>l?(n-l)/2:0)+"px",e.style.left=(r>s?(r-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;t!=this.overlayElement&&"button-close"!==t.className||(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":53,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){var n=e("react-dom"),o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){u?i(u,function(){u=e,a(e,t)}):(u=e,a(e,t))}function r(e){c?i(c,function(){c=e,a(e)}):(c=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,u=null,c=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(u){var a=null!=c?c.position:null;s.moveButton(o,u.component.props.axetype,a)}d=null,t(null),r(null)}else d=n.findDOMNode(l)},registerTarget:function(e,t,r,n){p.push({component:e,axetype:t,onDragOver:r,onDragEnd:n})},unregisterTarget:function(e){for(var t,r=0;r0&&(t=s[s.length-1])}r(t)})}}}}()},{"../orb.utils":53,"react-dom":"react-dom"}],57:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx");t.exports=n.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),n.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":56,react:"react"}],58:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=n.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,r){return rs;)i.call(e,o=a[s++])&&t.push(o);return t}},{"./$":23}],14:[function(e,t,r){var n=e("./$.global"),o=e("./$.core"),a=e("./$.ctx"),i="prototype",s=function(e,t,r){var l,u,c,d=e&s.F,p=e&s.G,h=e&s.S,f=e&s.P,g=e&s.B,m=e&s.W,b=p?o:o[t]||(o[t]={}),v=p?n:h?n[t]:(n[t]||{})[i];p&&(r=t);for(l in r)u=!d&&v&&l in v,u&&l in b||(c=u?v[l]:r[l],b[l]=p&&"function"!=typeof v[l]?r[l]:g&&u?a(c,n):m&&v[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[i]=e[i],t}(c):f&&"function"==typeof c?a(Function.call,c):c,f&&((b[i]||(b[i]={}))[l]=c))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},{"./$.core":9,"./$.ctx":10,"./$.global":17}],15:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],16:[function(e,t,r){var n=e("./$.to-iobject"),o=e("./$").getNames,a={}.toString,i="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return o(e)}catch(t){return i.slice()}};t.exports.get=function(e){return i&&"[object Window]"==a.call(e)?s(e):o(n(e))}},{"./$":23,"./$.to-iobject":30}],17:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],18:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],19:[function(e,t,r){var n=e("./$"),o=e("./$.property-desc");t.exports=e("./$.descriptors")?function(e,t,r){return n.setDesc(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./$":23,"./$.descriptors":12,"./$.property-desc":26}],20:[function(e,t,r){var n=e("./$.cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./$.cof":8}],21:[function(e,t,r){var n=e("./$.cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./$.cof":8}],22:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],23:[function(e,t,r){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},{}],24:[function(e,t,r){var n=e("./$"),o=e("./$.to-iobject");t.exports=function(e,t){for(var r,a=o(e),i=n.getKeys(a),s=i.length,l=0;s>l;)if(a[r=i[l++]]===t)return r}},{"./$":23,"./$.to-iobject":30}],25:[function(e,t,r){t.exports=!0},{}],26:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],27:[function(e,t,r){t.exports=e("./$.hide")},{"./$.hide":19}],28:[function(e,t,r){var n=e("./$").setDesc,o=e("./$.has"),a=e("./$.wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},{"./$":23,"./$.has":18,"./$.wks":32}],29:[function(e,t,r){var n=e("./$.global"),o="__core-js_shared__",a=n[o]||(n[o]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./$.global":17}],30:[function(e,t,r){var n=e("./$.iobject"),o=e("./$.defined");t.exports=function(e){return n(o(e))}},{"./$.defined":11,"./$.iobject":20}],31:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],32:[function(e,t,r){var n=e("./$.shared")("wks"),o=e("./$.uid"),a=e("./$.global").Symbol;t.exports=function(e){return n[e]||(n[e]=a&&a[e]||(a||o)("Symbol."+e))}},{"./$.global":17,"./$.shared":29,"./$.uid":31}],33:[function(e,t,r){},{}],34:[function(e,t,r){var n=e("./$"),o=e("./$.global"),a=e("./$.has"),i=e("./$.descriptors"),s=e("./$.export"),l=e("./$.redefine"),u=e("./$.fails"),c=e("./$.shared"),d=e("./$.set-to-string-tag"),p=e("./$.uid"),h=e("./$.wks"),f=e("./$.keyof"),g=e("./$.get-names"),m=e("./$.enum-keys"),b=e("./$.is-array"),v=e("./$.an-object"),y=e("./$.to-iobject"),x=e("./$.property-desc"),w=n.getDesc,T=n.setDesc,C=n.create,E=g.get,S=o.Symbol,N=o.JSON,F=N&&N.stringify,M=!1,D=h("_hidden"),O=n.isEnum,A=c("symbol-registry"),L=c("symbols"),R="function"==typeof S,_=Object.prototype,k=i&&u(function(){return 7!=C(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=w(_,t);n&&delete _[t],T(e,t,r),n&&e!==_&&T(_,t,n)}:T,P=function(e){var t=L[e]=C(S.prototype);return t._k=e,i&&M&&k(_,e,{configurable:!0,set:function(t){a(this,D)&&a(this[D],e)&&(this[D][e]=!1),k(this,e,x(1,t))}}),t},B=function(e){return"symbol"==typeof e},j=function(e,t,r){return r&&a(L,t)?(r.enumerable?(a(e,D)&&e[D][t]&&(e[D][t]=!1),r=C(r,{enumerable:x(0,!1)})):(a(e,D)||T(e,D,x(1,{})),e[D][t]=!0),k(e,t,r)):T(e,t,r)},H=function(e,t){v(e);for(var r,n=m(t=y(t)),o=0,a=n.length;a>o;)j(e,r=n[o++],t[r]);return e},W=function(e,t){return void 0===t?C(e):H(C(e),t)},$=function(e){var t=O.call(this,e);return t||!a(this,e)||!a(L,e)||a(this,D)&&this[D][e]?t:!0},z=function(e,t){var r=w(e=y(e),t);return!r||!a(L,t)||a(e,D)&&e[D][t]||(r.enumerable=!0),r},U=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])||t==D||n.push(t);return n},I=function(e){for(var t,r=E(y(e)),n=[],o=0;r.length>o;)a(L,t=r[o++])&&n.push(L[t]);return n},G=function(e){if(void 0!==e&&!B(e)){for(var t,r,n=[e],o=1,a=arguments;a.length>o;)n.push(a[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&b(t)||(t=function(e,t){return r&&(t=r.call(this,e,t)),B(t)?void 0:t}),n[1]=t,F.apply(N,n)}},V=u(function(){var e=S();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))});R||(S=function(){if(B(this))throw TypeError("Symbol is not a constructor");return P(p(arguments.length>0?arguments[0]:void 0))},l(S.prototype,"toString",function(){return this._k}),B=function(e){return e instanceof S},n.create=W,n.isEnum=$,n.getDesc=z,n.setDesc=j,n.setDescs=H,n.getNames=g.get=U,n.getSymbols=I,i&&!e("./$.library")&&l(_,"propertyIsEnumerable",$,!0));var q={"for":function(e){return a(A,e+="")?A[e]:A[e]=S(e)},keyFor:function(e){return f(A,e)},useSetter:function(){M=!0},useSimple:function(){M=!1}};n.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(e){var t=h(e);q[e]=R?t:P(t)}),M=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",q),s(s.S+s.F*!R,"Object",{create:W,defineProperty:j,defineProperties:H,getOwnPropertyDescriptor:z,getOwnPropertyNames:U,getOwnPropertySymbols:I}),N&&s(s.S+s.F*(!R||V),"JSON",{stringify:G}),d(S,"Symbol"),d(Math,"Math",!0),d(o.JSON,"JSON",!0)},{"./$":23,"./$.an-object":7,"./$.descriptors":12,"./$.enum-keys":13,"./$.export":14,"./$.fails":15,"./$.get-names":16,"./$.global":17,"./$.has":18,"./$.is-array":21,"./$.keyof":24,"./$.library":25,"./$.property-desc":26,"./$.redefine":27,"./$.set-to-string-tag":28,"./$.shared":29,"./$.to-iobject":30,"./$.uid":31,"./$.wks":32}],35:[function(e,t,r){function n(e,t,r,n){var a=0,i=0,s=("all"===t?r:t).length;return s>0&&(n||s>1?(o(e,t,r,function(e){i+=e}),i/=s,o(e,t,r,function(e){a+=(e-i)*(e-i)}),a/=n?s:s-1):a=NaN),a}function o(e,t,r,n){var o="all"===t;if(t=o?r:t,t.length>0)for(var a=0;ae)&&(s=e)}),s},max:function l(e,t,r){var l=null;return o(e,t,r,function(e){(null==l||e>l)&&(l=e)}),l},avg:function u(e,t,r){var u=0,n=("all"===t?r:t).length;return n>0&&(o(e,t,r,function(e){u+=e}),u/=n),u},prod:function c(e,t,r){var c,n=("all"===t?r:t).length;return n>0&&(c=1,o(e,t,r,function(e){c*=e})),c},stdev:function(e,t,r){return Math.sqrt(n(e,t,r,!1))},stdevp:function(e,t,r){return Math.sqrt(n(e,t,r,!0))},"var":function(e,t,r){return n(e,t,r,!1)},varp:function(e,t,r){return n(e,t,r,!0)}}},{}],36:[function(e,t,r){var n=e("./orb.utils"),o=e("./orb.dimension"),a={COLUMNS:1,ROWS:2,DATA:3};t.exports=function(e,t){function r(e){for(var t=0;t0){var e=s.pgrid.filteredDataSource;if(null!=e&&n.isArray(e)&&e.length>0)for(var t=0,r=e.length;r>t;t++)for(var a=e[t],i=s.root,u=0;ut.name?1:0})})},t.exports.Type=a},{"./orb.dimension":38,"./orb.utils":53}],37:[function(e,t,r){function n(e,t,r){for(var n=0;n-1?e[r]:null}function n(e,t){for(var r=0;r=0?o.dataSourceFieldNames[t]:e},this.nameToCaption=function(e){var t=o.dataSourceFieldNames.indexOf(e);return t>=0?o.dataSourceFieldCaptions[t]:e},this.setTheme=function(e){return o.theme.current()!==o.theme.current(e)},this.allFields=(e.fields||[]).map(function(e){var t=new g(e);return o.dataSourceFieldNames.push(t.name),o.dataSourceFieldCaptions.push(t.caption),t}),this.rowFields=(e.rows||[]).map(function(e){return e=t(e),a(o,d.Type.ROWS,e,r(o.allFields,e.name))}),this.columnFields=(e.columns||[]).map(function(e){return e=t(e),a(o,d.Type.COLUMNS,e,r(o.allFields,e.name))}),this.dataFields=(e.data||[]).map(function(e){return e=t(e),a(o,d.Type.DATA,e,r(o.allFields,e.name))}),this.dataFieldsCount=this.dataFields?this.dataFields.length||1:1;var l={subtotals:{rows:void 0!==o.rowSettings.subTotal.visible?o.rowSettings.subTotal.visible:!0,columns:void 0!==o.columnSettings.subTotal.visible?o.columnSettings.subTotal.visible:!0}};this.getField=function(e){return r(o.allFields,e)},this.getRowField=function(e){return r(o.rowFields,e)},this.getColumnField=function(e){return r(o.columnFields,e)},this.getDataField=function(e){return r(o.dataFields,e)},this.availablefields=function(){return o.allFields.filter(function(e){var t=function(t){return e.name!==t.name};return o.dataFields.every(t)&&o.rowFields.every(t)&&o.columnFields.every(t)})},this.getDataSourceFieldCaptions=function(){var e;if(o.dataSource&&(e=o.dataSource[0])){for(var t=c.ownProperties(e),r=[],n=0;n',l="";t.exports=function(e){function t(e){return"'+e+""}function r(e,r,n,o){var a,i=o||"";for(a=0;r>a;a++)i+="";for(i+=e.reduce(function(e,r){return e+=t(r.caption)},""),a=0;n>a;a++)i+="";return i+""}function u(e){return n.btoa(unescape(encodeURIComponent(e)))}var c=e.pgrid.config,d=a.current();d="bootstrap"===d?"white":d;var p="white"===d,h=p?"black":"white",f=a.themes[d],g=a.utils.fadeoutColor(f,.1),m='style="font-weight: bold; color: '+h+"; background-color: "+f+';" bgcolor="'+f+'"',b='style="background-color: '+g+';" bgcolor="'+g+'"',v=Math.max(c.dataFields.length+1,e.layout.pivotTable.width),y=r(c.dataFields,0,v-c.dataFields.length,'Data'),x='',w=r(c.columnFields,e.layout.rowHeaders.width,v-(e.layout.rowHeaders.width+c.columnFields.length)),T=function(){for(var r,n="",a=0;a";if(a";else s+=c.rowFields.reduce(function(e,r){return e+=t(r.caption)},"");s+=i.reduce(function(e,t){var r=t.type===o.HeaderType.DATA_HEADER?t.value.caption:t.value;return e+="'+r+""},""),n+=s+""}return n}(),C=function(){for(var t="",r=0;r";o+=n.reduce(function(e,t){return e+="'+t.value+""},"");var a=e.dataRows[r];o+=a.reduce(function(e,t,r){var n=c.dataFields[r%=c.dataFields.length].formatFunc,o=null==t.value?"":n?n()(t.value):t.value;return e+=""+o+""},""),t+=o+""}return t}();return i+u(s+""+y+x+w+T+C+"
"+l)}},{"./orb.themes":46,"./orb.ui.header":49,"./orb.utils":53}],40:[function(e,t,r){var n=e("./orb.utils"),o=t.exports={ALL:"#All#",NONE:"#None#",BLANK:'#Blank#"'};o.expressionFilter=function(e,t,r,i){var s=this;this.operator=a.get(e),this.regexpMode=!1,this.term=t||null,this.term&&this.operator&&this.operator.regexpSupported&&n.isRegExp(this.term)&&(this.regexpMode=!0,this.term.ignoreCase||(this.term=new RegExp(this.term.source,"i"))),this.staticValue=r,this.excludeStatic=i,this.test=function(e){if(n.isArray(s.staticValue)){var t=s.staticValue.indexOf(e)>=0;return s.excludeStatic&&!t||!s.excludeStatic&&t}return s.term?s.operator.func(e,s.term):s.staticValue===!0||s.staticValue===o.ALL?!0:s.staticValue!==!1&&s.staticValue!==o.NONE},this.isAlwaysTrue=function(){return!(s.term||n.isArray(s.staticValue)||s.staticValue===o.NONE||s.staticValue===!1)}};var a=o.Operators={get:function(e){switch(e){case a.MATCH.name:return a.MATCH;case a.NOTMATCH.name:return a.NOTMATCH;case a.EQ.name:return a.EQ;case a.NEQ.name:return a.NEQ;case a.GT.name:return a.GT;case a.GTE.name:return a.GTE;case a.LT.name:return a.LT;case a.LTE.name:return a.LTE;default:return a.NONE}},NONE:null,MATCH:{name:"Matches",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))>=0:!t},regexpSupported:!0},NOTMATCH:{name:"Does Not Match",func:function(e,t){return e?e.toString().search(n.isRegExp(t)?t:new RegExp(t,"i"))<0:!!t},regexpSupported:!0},EQ:{name:"=",func:function(e,t){return e==t},regexpSupported:!1},NEQ:{name:"<>",func:function(e,t){return e!=t},regexpSupported:!1},GT:{name:">",func:function(e,t){return e>t},regexpSupported:!1},GTE:{name:">=",func:function(e,t){return e>=t},regexpSupported:!1},LT:{name:"<",func:function(e,t){return t>e},regexpSupported:!1},LTE:{name:"<=",func:function(e,t){return t>=e},regexpSupported:!1}}},{"./orb.utils":53}],41:[function(e,t,r){t.exports.utils=e("./orb.utils"),t.exports.pgrid=e("./orb.pgrid"),t.exports.pgridwidget=e("./orb.ui.pgridwidget"),t.exports.query=e("./orb.query"),t.exports["export"]=e("./orb.export.excel")},{"./orb.export.excel":39,"./orb.pgrid":42,"./orb.query":44,"./orb.ui.pgridwidget":50,"./orb.utils":53}],42:[function(e,t,r){var n=e("./orb.pubsub"),o=e("./orb.axe"),a=e("./orb.config").config,i=e("./orb.filtering"),s=e("./orb.query"),l=e("./orb.utils"),u=t.exports=function(e){function t(e){e!==!1&&r(),f.rows.update(),f.columns.update(),p(),f.publish(u.EVENT_UPDATED)}function r(){var e=l.ownProperties(f.filters);if(e.length>0){f.filteredDataSource=[];for(var t=0;t0){var i;if(null==e)i=t;else if(null==t)i=e;else{i=[];for(var s=0;s=0){var u=t.indexOf(l);u>=0&&(e[s]=0-(l+2),i.push(l))}}}var c,d=i&&0===i.length,p=(f.filteredDataSource,[]);if(n)for(var h=0;h0)for(var n=0,o=[f.columns.root];np&&(h[u].push(0-(p+2)),i[d]=-1)}}}h["c"+a.id]=void 0,n++}return t}}function p(){if(f.dataMatrix={},h={},f.dataMatrix[f.rows.root.id]=d(f.rows.root),f.rows.dimensionsCount>0)for(var e,t=[f.rows.root],r=0;r1){l.isNumber(r[0])||l.isDate(r[0])?r.sort(function(e,t){return e?t?e-t:1:t?-1:0}):r.sort();for(var u=0;u0?" - ":"")+e[r].caption;return t}for(var t=f.config,r=e(t.columnFields),n=t.dataFields[0].aggregateFuncName+"("+t.dataFields[0].caption+")",o=e(t.rowFields),a=f.rows.flattenValues(),i=f.columns.flattenValues(),s=[],l=0;l1},this.toggleFieldExpansion=function(e,t){for(var r,n=[],a=!0,i=0;i0){for(r=0;r0){var r=i.headers[i.headers.length-1],n=r[0];if(n){for(var o,s=n.parent,l=0;l1&&t.push(i.headers[0][i.headers[0].length-1])}}if(i.isMultiDataFields()){i.leafsHeaders=[];for(var d=0;d0||i.axe.pgrid.config.grandTotal.columnsvisible){for(var e=i.axe.root.depth;e>1;e--)i.headers.push([]),r(e,i.headers);i.axe.pgrid.config.grandTotal.columnsvisible&&(i.headers[0]=i.headers[0]||[]).push(new a.header(n.Type.COLUMNS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()))}0===i.headers.length&&i.headers.push([new a.header(n.Type.COLUMNS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),t()}},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],49:[function(e,t,r){function n(e){this.axetype=e.axetype,this.type=e.type,this.template=e.template,this.value=e.value,this.expanded=!0,this.cssclass=e.cssclass,this.hspan=e.hspan||function(){return 1},this.vspan=e.vspan||function(){return 1},this.visible=e.isvisible||function(){return!0},this.key=this.axetype+this.type+this.value,this.getState=function(){return a.get(this.key)},this.setState=function(e){a.set(this.key,e)}}var o=e("./orb.axe"),a=new(e("./orb.state")),i=t.exports.HeaderType={EMPTY:1,DATA_HEADER:2,DATA_VALUE:3,FIELD_BUTTON:4,INNER:5,WRAPPER:6,SUB_TOTAL:7,GRAND_TOTAL:8,getHeaderClass:function(e,t){var r=t===o.Type.ROWS?"header-row":t===o.Type.COLUMNS?"header-col":"";switch(e){case i.EMPTY:case i.FIELD_BUTTON:r="empty";break;case i.INNER:r="header "+r;break;case i.WRAPPER:r="header "+r;break;case i.SUB_TOTAL:r="header header-st "+r;break;case i.GRAND_TOTAL:r="header header-gt "+r}return r},getCellClass:function(e,t){var r="";switch(e){case i.GRAND_TOTAL:r="cell-gt";break;case i.SUB_TOTAL:r=t===i.GRAND_TOTAL?"cell-gt":"cell-st";break;default:r=t===i.GRAND_TOTAL?"cell-gt":t===i.SUB_TOTAL?"cell-st":""}return r}};t.exports.header=function(e,t,r,a,s,l){function u(){if(f.type===i.SUB_TOTAL){for(var e=f.parent;null!=e;){if(e.subtotalHeader&&!e.subtotalHeader.expanded)return!1;e=e.parent}return!0}var t=f.dim.isRoot||f.dim.isLeaf||!f.dim.field.subTotal.visible||f.subtotalHeader.expanded;if(!t)return!1;for(var r=f.parent;null!=r&&(!r.dim.field.subTotal.visible||null!=r.subtotalHeader&&r.subtotalHeader.expanded);)r=r.parent;return null==r||null==r.subtotalHeader?t:r.subtotalHeader.expanded}function c(e){var t,r=0,n=!1;if(g||e||f.visible()){if(f.dim.isLeaf)return s;if(f.subheaders.length>0)for(var o=0;o1?"rows"===e.config.dataHeadersLocation?r.value:o.value:e.config.dataFields[0],n.call(this,{axetype:null,type:i.DATA_VALUE,template:"cell-template-datavalue",value:e.getData(this.datafield?this.datafield.name:null,this.rowDimension,this.columnDimension),cssclass:"cell "+i.getCellClass(this.rowType,this.colType),isvisible:t})},t.exports.buttonCell=function(e){n.call(this,{axetype:null,type:i.FIELD_BUTTON,template:"cell-template-fieldbutton",value:e,cssclass:i.getHeaderClass(i.FIELD_BUTTON)})},t.exports.emptyCell=function(e,t){n.call(this,{axetype:null,type:i.EMPTY,template:"cell-template-empty",value:null,cssclass:i.getHeaderClass(i.EMPTY),hspan:function(){return e},vspan:function(){return t}})}},{"./orb.axe":36,"./orb.state":45}],50:[function(e,t,r){var n=e("react-dom"),o=e("react"),a=e("./orb.axe"),i=e("./orb.pgrid"),s=e("./orb.ui.header"),l=e("./orb.ui.rows"),u=e("./orb.ui.cols"),c=e("./react/orb.react.Dialog.jsx"),d=e("./react/orb.react.PivotChart.jsx"),p=e("./react/orb.react.PivotTable.jsx"),h=e("./react/orb.react.Grid.jsx");t.exports=function(e){function t(){b.pgrid.subscribe(i.EVENT_UPDATED,f),b.pgrid.subscribe(i.EVENT_SORT_CHANGED,f),b.pgrid.subscribe(i.EVENT_CONFIG_CHANGED,f),r()}function r(){function e(e,t){return function(){return e()&&t()}}b.rows=new l(b.pgrid.rows),b.columns=new u(b.pgrid.columns);var t=b.rows.headers,r=b.columns.leafsHeaders;b.layout={rowHeaders:{width:(b.pgrid.rows.fields.length||1)+("rows"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0),height:t.length},columnHeaders:{width:b.columns.leafsHeaders.length,height:(b.pgrid.columns.fields.length||1)+("columns"===b.pgrid.config.dataHeadersLocation&&b.pgrid.config.dataFieldsCount>1?1:0)}},b.layout.pivotTable={width:b.layout.rowHeaders.width+b.layout.columnHeaders.width,height:b.layout.rowHeaders.height+b.layout.columnHeaders.height};var n,o=[];if(t.length>0)for(var a=0;a=0}).map(function(e){return b.pgrid.filteredDataSource[e]});r=e.rowType===s.HeaderType.GRAND_TOTAL&&e.colType===s.HeaderType.GRAND_TOTAL?"Grand total":e.rowType===s.HeaderType.GRAND_TOTAL?e.columnDimension.value+"/Grand total ":e.colType===s.HeaderType.GRAND_TOTAL?e.rowDimension.value+"/Grand total ":e.rowDimension.value+"/"+e.columnDimension.value,v.show({title:r,comp:{type:h,props:{headers:b.pgrid.config.getDataSourceFieldCaptions(),data:o,theme:b.pgrid.config.theme}},theme:b.pgrid.config.theme,style:m.fontStyle})}},t()}},{"./orb.axe":36,"./orb.pgrid":42,"./orb.ui.cols":48,"./orb.ui.header":49,"./orb.ui.rows":51,"./react/orb.react.Dialog.jsx":55,"./react/orb.react.Grid.jsx":62,"./react/orb.react.PivotChart.jsx":65,"./react/orb.react.PivotTable.jsx":74,react:"react","react-dom":"react-dom"}],51:[function(e,t,r){var n=e("./orb.axe"),o=e("./orb.ui.axe"),a=e("./orb.ui.header");t.exports=function(e){function t(e,t){if(i.isMultiDataFields())for(var r=e[e.length-1],n=0;n0)for(var s=e.length-1,l=e[s],u=l.length>0?l[l.length-1]:null,c=0;c0&&e.push(l=[]),l.push(f),h.isLeaf?t(e,f):(r(e,h),h.field.subTotal.visible&&(e.push([d]),t(e,d)))}}var i=this;o.call(i,e),this.build=function(){var e,o=[];if(null!=i.axe){if((i.axe.root.values.length>0||i.axe.pgrid.config.grandTotal.rowsvisible)&&(o.push([]),r(o,i.axe.root),i.axe.pgrid.config.grandTotal.rowsvisible)){var s=o[o.length-1];e=new a.header(n.Type.ROWS,a.HeaderType.GRAND_TOTAL,i.axe.root,null,i.dataFieldsCount()),0===s.length?s.push(e):o.push([e])}0===o.length&&o.push([e=new a.header(n.Type.ROWS,a.HeaderType.INNER,i.axe.root,null,i.dataFieldsCount())]),e&&t(o,e)}i.headers=o},this.build()}},{"./orb.axe":36,"./orb.ui.axe":47,"./orb.ui.header":49}],52:[function(e,t,r){function n(e){return e.replace(o,function(e,t){return t.toUpperCase()})}t.exports.removeClass=function(e,t){if(e&&t)for(;e.className.indexOf(t)>=0;)e.className=e.className.replace(t,"")},t.exports.addClass=function(e,t){e&&t&&e.className.indexOf(t)<0&&(e.className+=" "+t)},t.exports.getOffset=function(e){if(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top}}return{x:0,y:0}},t.exports.getParentOffset=function(e){if(e){var t=e.getBoundingClientRect(),r=null!=e.parentNode?e.parentNode.getBoundingClientRect():{top:0,left:0};return{x:t.left-r.left,y:t.top-r.top}}return{x:0,y:0}},t.exports.getSize=function(e){if(e){var t=e.getBoundingClientRect();return{width:t.right-t.left,height:t.bottom-t.top}}return{width:0,height:0}};var o=/\-(\w)/g;t.exports.getStyle=function(e,t,r){var o=[];if(e&&t){var a,i,s;e.currentStyle?(a=e.currentStyle,i=function(e){return a[e]},s=!0):window&&window.getComputedStyle&&(a=window.getComputedStyle(e,null),i=function(e){return a.getPropertyValue(e)});for(var l=0;lo&&(n=t(e[o],o),!n||r===!0);o++);return n},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isNumber:function(e){return"[object Number]"===Object.prototype.toString.apply(e)},isDate:function(e){return"[object Date]"===Object.prototype.toString.apply(e)},isString:function(e){return"[object String]"===Object.prototype.toString.apply(e)},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.apply(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.apply(e)},escapeRegex:function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},findInArray:function(e,t){if(this.isArray(e)&&t)for(var r=0;r-1?void 0:r}return(0,a["default"])(e,r,2)},addEventListener:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):e["on"+t]=r},removeEventListener:function(e,t,r){e.removeEventListener?e.removeEventListener(t,r,!1):e.detachEvent?e.detachEvent("on"+t,r):e["on"+t]=null},preventDefault:function(e){e=e||window.event,e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},getEventButton:function(e){var t=e.button;return"which"in e?t:1===t?0:4===t?1:2},getMousePageXY:function(e){e=e||window.event;var t=e.pageX,r=e.pageY;return void 0===t&&(t=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,r=e.clientY+document.body.scrollTop+document.documentElement.scrollTop),{pageX:t,pageY:r}}},function(e){function t(e){this.message=e}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.prototype=new Error,t.prototype.name="InvalidCharacterError",e.btoa=r&&r.btoa?function(e){return r.btoa(e)}:function(e){for(var r,o,a=String(e),i=0,s=n,l="";a.charAt(0|i)||(s="=",i%1);l+=s.charAt(63&r>>8-i%1*8)){if(o=a.charCodeAt(i+=.75),o>255)throw new t("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|o}return l},e.atob=r&&r.atob?function(e){return r.atob(e)}:function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new t("'atob' failed: The string to be decoded is not correctly encoded.");for(var o,a,i=0,s=0,l="";a=r.charAt(s++);~a&&(o=i%4?64*o+a:a,i++%4)?l+=String.fromCharCode(255&o>>(-2*i&6)):0)a=n.indexOf(a);return l}}(t.exports)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/json/stringify":1}],54:[function(e,t,r){var n=e("react"),o=e("react-dom");t.exports=n.createClass({displayName:"exports",getInitialState:function(){return{canRender:!1}},canRender:function(){return this.state.canRender&&"string"==typeof this.props.chartMode.type&&"function"==typeof google.visualization[this.props.chartMode.type]},drawChart:function(){if(this.canRender()){var e=this.props.pivotTableComp.pgridwidget.pgrid.getChartData(),t=new google.visualization.DataTable;t.addColumn("string",e.hAxisLabel);for(var r=0;ro?301:o;var s=e.offsetWidth+(e.offsetHeight>o?11:0),l=e.offsetHeight>o?o:e.offsetHeight;e.style.top=(n>l?(n-l)/2:0)+"px",e.style.left=(r>s?(r-s)/2:0)+"px",e.style.height=l+"px",t.style.width=s+"px",t.style.height=l-45+"px"},close:function(e){var t=e.target||e.srcElement;t!=this.overlayElement&&"button-close"!==t.className||(i.removeEventListener(this.overlayElement,"click",this.close),a.unmountComponentAtNode(this.overlayElement),this.setOverlayClass(!1))},render:function(){if(this.props.comp){var e=o.createElement(this.props.comp.type,this.props.comp.props),t=this.props.theme.getDialogClasses();return o.createElement("div",{className:t.dialog,style:this.props.style||{}},o.createElement("div",{className:t.content},o.createElement("div",{className:t.header},o.createElement("div",{className:"button-close",onClick:this.close}),o.createElement("div",{className:t.title},this.props.title)),o.createElement("div",{className:t.body},e)))}}})},{"../orb.utils":53,react:"react","react-dom":"react-dom"}],56:[function(e,t,r){var n=e("react-dom"),o=e("../orb.utils");t.exports=function(){function e(e,t){return!(e.rightt.right||e.bottomt.bottom)}function t(e,t){u?i(u,function(){u=e,a(e,t)}):(u=e,a(e,t))}function r(e){c?i(c,function(){c=e,a(e)}):(c=e,a(e))}function a(e,t){e&&e.onDragOver?e.onDragOver(t):t&&t()}function i(e,t){e&&e.onDragEnd?e.onDragEnd(t):t&&t()}var s=null,l=null,u=null,c=null,d=null,p=[],h=[],f=!1;return{init:function(e){f=!0,s=e},setDragElement:function(e){var o=l;if(l=e,l!=o)if(null==e){if(u){var a=null!=c?c.position:null;s.moveButton(o,u.component.props.axetype,a)}d=null,t(null),r(null)}else d=n.findDOMNode(l)},registerTarget:function(e,t,r,n){p.push({component:e,axetype:t,onDragOver:r,onDragEnd:n})},unregisterTarget:function(e){for(var t,r=0;r0&&(t=s[s.length-1])}r(t)})}}}}()},{"../orb.utils":53,"react-dom":"react-dom"}],57:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx");t.exports=n.createClass({displayName:"DropIndicator",getInitialState:function(){return o.registerIndicator(this,this.props.axetype,this.props.position,this.onDragOver,this.onDragEnd),{isover:!1}},componentWillUnmount:function(){o.unregisterIndicator(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e="drp-indic"+(this.props.isVertical?"-vertical":"");this.props.isFirst&&(e+=" drp-indic-first"),this.props.isLast&&(e+=" drp-indic-last");var t={};return this.state.isover&&(e+=" drp-indic-over"),n.createElement("div",{style:t,className:e})}})},{"./orb.react.DragManager.jsx":56,react:"react"}],58:[function(e,t,r){var n=e("react"),o=e("./orb.react.DragManager.jsx"),a=e("./orb.react.DropIndicator.jsx"),i=e("../orb.axe"),s=0;t.exports=n.createClass({displayName:"exports",getInitialState:function(){return this.dtid=++s,{isover:!1}},componentDidMount:function(){o.registerTarget(this,this.props.axetype,this.onDragOver,this.onDragEnd)},componentWillUnmount:function(){o.unregisterTarget(this)},onDragOver:function(e){this.isMounted()?this.setState({isover:!0},e):e&&e()},onDragEnd:function(e){this.isMounted()?this.setState({isover:!1},e):e&&e()},render:function(){var e=this,t=this.props.buttons.map(function(t,r){return r=h&&u.pageX=f&&u.pageY=n&&(e.style.width=m+"px"),b>=o&&(e.style.height=b+"px",t.tBodies[0].style.height=p.bottom-p.top+g.y+"px"),s.stopPropagation(l),s.preventDefault(l)}},s.addEventListener(r,"mousedown",this.resizeMouseDown),s.addEventListener(document,"mouseup",this.resizeMouseUp),s.addEventListener(document,"mousemove",this.resizeMouseMove)}var i,c,d=this,p="indeterminate",h=!1,f=!1,g=l.Operators.MATCH,m="",b={filterContainer:null,checkboxes:{},searchBox:null,operatorBox:null,allCheckbox:null,addCheckbox:null,enableRegexButton:null,clearSearchButton:null,okButton:null,cancelButton:null,resizeGrip:null};this.init=function(e){b.filterContainer=e,b.checkboxes={},b.searchBox=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0],b.clearSearchButton=b.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0],b.operatorBox=b.filterContainer.rows[0].cells[0].children[0],b.okButton=b.filterContainer.rows[2].cells[0].children[0],b.cancelButton=b.filterContainer.rows[2].cells[0].children[1],b.resizeGrip=b.filterContainer.rows[2].cells[1].children[0];for(var t=b.filterContainer.rows[1].cells[0].children[0].rows,r=0;ri/2+1,n=0;n=0;u.checked=t.toExclude?!c:c}}},this.updateAllCheckbox=function(){if(!h){for(var t=null,r=0;r0){for(var i=[],s=0;s0)for(var l=0;l2&&(r+=" header-gt-exp")),e.leftmost&&(r+=" "+("cell-template-datavalue"===t.template?"cell":"header")+"-leftmost"),e.topmost&&(r+=" cell-topmost"),r}var o=e("react"),a=e("react-dom"),i=e("../orb.ui.header"),s=e("../orb.utils.dom"),l=null,u=null;t.exports=o.createClass({displayName:"exports",expand:function(){this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell)},collapse:function(){this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell)},updateCellInfos:function(){var e=a.findDOMNode(this),t=this.props.cell;if(e.__orb=e.__orb||{},t.visible()){var r=this.refs.cellContent,n=[],o=null==l,i=!this.props.leftmost&&null==u,c=e.textContent||e.innerText;if(o&&n.push("padding-left"),i&&n.push("border-left-width"),n.length>0){var d=s.getStyle(e,n,!0);o&&(l=parseFloat(d[0])),i&&(u=parseFloat(d[o?1:0]))}s.removeClass(e,"cell-hidden"),e.__orb._visible=!0,c==e.__orb._lastText&&e.__orb._textWidth||(e.__orb._lastText=c,e.__orb._textWidth=s.getSize(r).width),e.__orb._colSpan=this.props.cell.hspan(!0)||1,e.__orb._rowSpan=this.props.cell.vspan(!0)||1,e.__orb._paddingLeft=l,e.__orb._paddingRight=l,e.__orb._borderLeftWidth=this.props.leftmost?0:u,e.__orb._borderRightWidth=0}else e.__orb._visible=!1},componentDidMount:function(){this.updateCellInfos()},componentDidUpdate:function(){this.updateCellInfos()},shouldComponentUpdate:function(e,t){return!(e.cell&&e.cell==this.props.cell&&!this._latestVisibleState&&!e.cell.visible())},_latestVisibleState:!1,render:function(){var e,t,r=this,a=this.props.cell,s=[],l=!1;switch(this._latestVisibleState=a.visible(),a.template){case"cell-template-row-header":case"cell-template-column-header":var u=a.type===i.HeaderType.WRAPPER&&a.dim.field.subTotal.visible&&a.dim.field.subTotal.collapsible,c=a.type===i.HeaderType.SUB_TOTAL&&!a.expanded;u||c?(l=!0,s.push(o.createElement("table",{key:"header-value",ref:"cellContent"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"orb-tgl-btn"},o.createElement("div",{className:"orb-tgl-btn-"+(u?"down":"right"),onClick:u?this.collapse:this.expand})),o.createElement("td",{className:"hdr-val"},o.createElement("div",{dangerouslySetInnerHTML:{__html:a.value||" "}}))))))):e=(a.value||" ")+(a.type===i.HeaderType.SUB_TOTAL?" Total":"");break;case"cell-template-dataheader":e=a.value.caption;break;case"cell-template-datavalue":e=a.datafield&&a.datafield.formatFunc?a.datafield.formatFunc()(a.value):a.value,t=function(){r.props.pivotTableComp.pgridwidget.drilldown(a,r.props.pivotTableComp.id)}}if(!l){var d;switch(a.template){case"cell-template-datavalue":d="cell-data";break;default:"cell-template-dataheader"!=a.template&&a.type!==i.HeaderType.GRAND_TOTAL&&(d="hdr-val")}s.push(o.createElement("div",{key:"cell-value",ref:"cellContent",className:d},o.createElement("div",{dangerouslySetInnerHTML:{__html:e||" "}})))}return o.createElement("td",{className:n(this.props),onDoubleClick:t,colSpan:a.hspan(),rowSpan:a.vspan()},o.createElement("div",null,s))}})},{"../orb.ui.header":49,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],65:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=(e("./orb.react.Toolbar.jsx"),e("./orb.react.PivotTable.UpperButtons.jsx")),l=e("./orb.react.PivotTable.ColumnButtons.jsx"),u=e("./orb.react.PivotTable.RowButtons.jsx"),c=e("./orb.react.Chart.jsx"),d=e("../orb.utils.dom"),p=1,h={};t.exports=n.createClass({displayName:"exports",id:p++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),h[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&h[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=h[this.id].indexOf(e))>=0&&h[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t0&&!r&&i.lastLeftMostCellVSpan--,n.createElement("tr",{style:s},e)}})},{"../orb.axe":36,"./orb.react.PivotCell.jsx":64,react:"react"}],67:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotButton.jsx"),i=e("./orb.react.DropTarget.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.columnFields.map(function(t,r){return n.createElement(a,{key:t.name,field:t,axetype:o.Type.COLUMNS,position:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement(i,{buttons:r,axetype:o.Type.COLUMNS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],68:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r=0===t.columns.headers.length?"":" columns-cntr",i={lastLeftMostCellVSpan:0,topMostCells:{}},s=t.columns.headers.map(function(t,r){return n.createElement(a,{key:r,row:t,axetype:o.Type.COLUMNS,pivotTableComp:e.props.pivotTableComp,layoutInfos:i})});return n.createElement("div",{className:"inner-table-container"+r,onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,s)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],69:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("./orb.react.PivotRow.jsx");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget,r={lastLeftMostCellVSpan:0,topMostCells:{}},i=t.dataRows.map(function(t,i){return n.createElement(a,{key:i,row:t,axetype:o.Type.DATA,layoutInfos:r,pivotTableComp:e.props.pivotTableComp})});return n.createElement("div",{className:"inner-table-container data-cntr",onWheel:this.props.pivotTableComp.onWheel},n.createElement("table",{className:"inner-table"},n.createElement("colgroup",null),n.createElement("tbody",null,i)))}})},{"../orb.axe":36,"./orb.react.PivotRow.jsx":66,react:"react"}],70:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("./orb.react.DropTargetVertical.jsx"),s=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e=this,t=this.props.pivotTableComp.pgridwidget.pgrid.config,r=t.rowFields.map(function(t,r){return n.createElement(o,{key:t.name,field:t,axetype:s.Type.ROWS,position:r,pivotTableComp:e.props.pivotTableComp})});return t.chartMode.enabled?n.createElement(i,{buttons:r,axetype:s.Type.ROWS}):n.createElement(a,{buttons:r,axetype:s.Type.ROWS})}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.DropTargetVertical.jsx":59,"./orb.react.PivotButton.jsx":63,react:"react"}],71:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.PivotRow.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",setColGroup:function(e){var t=o.findDOMNode(this),r=this.refs.colgroup;t.style.tableLayout="auto",r.innerHTML="";for(var n=0;n0&&(s.w+=e,s.colWidths[s.colWidths.length-1]+=e)},"table"===r&&o(this)}function o(e){if(e&&e.node){for(var t=e.node,r=[],n=0;n1&&l.__orb._rowSpan>=t.rows.length-n,0);c0;)i.inhibit--,a++,i=r[a];r.length-1r[a].width&&(r[a].width=u),r[a].inhibit=l.__orb._rowSpan-1,a++}}for(i=r[a];i;)i.inhibit>0&&i.inhibit--,a++,i=r[a]}e.w=0,e.colWidths=r.map(function(t,r){return e.w+=t.width,t.width})}}var a=e("react-dom"),i=e("../orb.utils.dom"),s=t.exports={synchronizeWidths:function(e){return e.pgridwidget.pgrid.config.chartMode.enabled?s.synchronizePivotChartWidths(e):void s.synchronizePivotTableWidths(e)},synchronizePivotChartWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.upperButtons),a=new n(e.refs.colButtons),s=new n(e.refs.rowButtons),l=(new n(e.refs.chart),Math.max(s.w,67)),u=r.w-l,c=e.pgridwidget.pgrid.config.height,d=c?c-(o.h+a.h):null;return i.updateTableColGroup(t,[l,u]),{width:u,height:d}},synchronizePivotTableWidths:function(e){var t=e.refs.pivotWrapperTable,r=new n(e.refs.pivot),o=new n(e.refs.toolbar),a=new n(e.refs.colHeaders,!0,"table"),s=new n(e.refs.rowHeaders,!0,"table"),l=new n(e.refs.dataCells,!0,"table"),u=new n(e.refs.upperButtons),c=new n(e.refs.colButtons),d=new n(e.refs.rowButtons,!0),p=new n(e.refs.horizontalScrollBar),h=new n(e.refs.verticalScrollBar),f=l.getLargestWidths(a),g=Math.max(s.w,d.w,67),m=Math.min(f.total+1,r.w-g-h.w),b=e.pgridwidget.pgrid.config.height,v=b?b-(o?o.h+17:0)-(u.h+c.h+a.h+p.h):null,y=v?Math.ceil(Math.min(v,l.h)):null;s.addToWidth(g-s.w),i.updateTableColGroup(l.node,f.max),i.updateTableColGroup(a.node,f.max),i.updateTableColGroup(s.node,s.colWidths),l.setStyle("width",f.total),a.setStyle("width",f.total),s.setStyle("width",g),l.setParentStyle("width",m),a.setParentStyle("width",m),y&&(l.setParentStyle("height",y),s.setParentStyle("height",y)),i.updateTableColGroup(t,[g,m,h.w,Math.max(r.w-(g+m+h.w),0)]),e.refs.horizontalScrollBar.refresh(),e.refs.verticalScrollBar.refresh()}}},{"../orb.utils.dom":52,"react-dom":"react-dom"}],73:[function(e,t,r){var n=e("react"),o=e("./orb.react.PivotButton.jsx"),a=e("./orb.react.DropTarget.jsx"),i=e("../orb.axe");t.exports=n.createClass({displayName:"exports",render:function(){var e,t=this,r=this.props.pivotTableComp.pgridwidget.pgrid.config;if(r.canMoveFields){var s=r.availablefields().map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:null,position:r,pivotTableComp:t.props.pivotTableComp})});e=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap av-flds text-muted"},n.createElement("div",null,"Fields")),n.createElement("td",{className:"av-flds"},n.createElement(a,{buttons:s,axetype:null})))}else e=null;var l=r.dataFields.map(function(e,r){return n.createElement(o,{key:e.name,field:e,axetype:i.Type.DATA,position:r,pivotTableComp:t.props.pivotTableComp})}),u=n.createElement("tr",null,n.createElement("td",{className:"flds-grp-cap text-muted"},n.createElement("div",null,"Data")),n.createElement("td",{className:"empty"},n.createElement(a,{buttons:l,axetype:i.Type.DATA})));return n.createElement("table",{className:"inner-table upper-buttons"},n.createElement("tbody",null,e,u))}})},{"../orb.axe":36,"./orb.react.DropTarget.jsx":58,"./orb.react.PivotButton.jsx":63,react:"react"}],74:[function(e,t,r){var n=e("react"),o=e("react-dom"),a=e("./orb.react.DragManager.jsx"),i=e("./orb.react.PivotTable.SizingManager.jsx"),s=e("./orb.react.Toolbar.jsx"),l=e("./orb.react.PivotTable.UpperButtons.jsx"),u=e("./orb.react.PivotTable.ColumnButtons.jsx"),c=e("./orb.react.PivotTable.RowButtons.jsx"),d=e("./orb.react.PivotTable.RowHeaders.jsx"),p=e("./orb.react.PivotTable.ColumnHeaders.jsx"),h=e("./orb.react.PivotTable.DataCells.jsx"),f=e("./orb.react.ScrollBars.jsx"),g=f.HorizontalScrollBar,m=f.VerticalScrollBar,b=e("../orb.utils"),v=e("../orb.utils.dom"),y=1,x={};t.exports=n.createClass({displayName:"exports",id:y++,pgrid:null,pgridwidget:null,fontStyle:null,getInitialState:function(){return a.init(this),x[this.id]=[],this.registerThemeChanged(this.updateClasses),this.pgridwidget=this.props.pgridwidget,this.pgrid=this.pgridwidget.pgrid,{}},sort:function(e,t){this.pgridwidget.sort(e,t)},moveButton:function(e,t,r){this.pgridwidget.moveField(e.props.field.name,e.props.axetype,t,r)},toggleSubtotals:function(e){this.pgridwidget.toggleSubtotals(e)},toggleGrandtotal:function(e){this.pgridwidget.toggleGrandtotal(e)},applyFilter:function(e,t,r,n,o){this.pgridwidget.applyFilter(e,t,r,n,o)},registerThemeChanged:function(e){e&&x[this.id].push(e)},unregisterThemeChanged:function(e){var t;e&&(t=x[this.id].indexOf(e))>=0&&x[this.id].splice(t,1)},changeTheme:function(e){if(this.pgridwidget.pgrid.config.setTheme(e))for(var t=0;t=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),r=s.getSize(e),n=this.getScrollSize(),o=t[this.sizeProp]>=r[this.sizeProp]?0:t[this.sizeProp]/r[this.sizeProp]*n;this.setState({containerSize:n,size:o,thumbOffset:Math.min(this.state.thumbOffset,n-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var r=this.getScrollSize()-this.state.size,n=this.state.thumbOffset+e;if(0>n&&(n=0),n>r&&(n=r),this.state.thumbOffset!=n)return this.setState({thumbOffset:n},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var r="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,n=this.state.size<=0?null:o.createElement("div",{className:r,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},n)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":53,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],76:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=n.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;e=e?0:this.state.thumbOffset/e},refresh:function(){if(this.scrollClient){var e=this.scrollClient.children[0],t=s.getSize(this.scrollClient),r=s.getSize(e),n=this.getScrollSize(),o=t[this.sizeProp]>=r[this.sizeProp]?0:t[this.sizeProp]/r[this.sizeProp]*n;this.setState({containerSize:n,size:o,thumbOffset:Math.min(this.state.thumbOffset,n-o)},this.scrollEvent.raise)}},scroll:function(e,t){if(this.state.size>0){1==t&&(e*=8);var r=this.getScrollSize()-this.state.size,n=this.state.thumbOffset+e;if(0>n&&(n=0),n>r&&(n=r),this.state.thumbOffset!=n)return this.setState({thumbOffset:n},this.scrollEvent.raise),!0}return!1},onWheel:function(e){this.scroll(e.deltaY,e.deltaMode),i.stopPropagation(e),i.preventDefault(e)},render:function(){var e={padding:0};e[this.sizeProp]=this.state.size,e[this.offsetCssProp]=this.state.thumbOffset;var t={};t[this.sizeProp]=this.state.containerSize;var r="orb-scrollthumb "+this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar,n=this.state.size<=0?null:o.createElement("div",{className:r,style:e,ref:"scrollThumb",onMouseDown:this.onMouseDown});return o.createElement("div",{className:this.cssClass,style:t,onWheel:this.onWheel},n)}};t.exports.HorizontalScrollBar=o.createClass({displayName:"HorizontalScrollBar",mixins:[l],posProp:"x",mousePosProp:"pageX",sizeProp:"width",offsetCssProp:"left",cssClass:"orb-h-scrollbar"}),t.exports.VerticalScrollBar=o.createClass({displayName:"VerticalScrollBar",mixins:[l],posProp:"y",mousePosProp:"pageY",sizeProp:"height",offsetCssProp:"top",cssClass:"orb-v-scrollbar"})},{"../orb.utils":53,"../orb.utils.dom":52,react:"react","react-dom":"react-dom"}],76:[function(e,t,r){var n=e("react"),o=e("../orb.axe"),a=e("../orb.utils.dom");t.exports=n.createClass({displayName:"exports",_toInit:[],componentDidMount:function(){for(var e=0;e.\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/json/stringify\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/json/stringify\": 4\n }],\n 2: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/symbol\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/symbol\": 5\n }],\n 3: [function(_dereq_, module, exports) {\n\n var _Symbol = _dereq_(\"babel-runtime/core-js/symbol\")[\"default\"];\n\n exports[\"default\"] = function(obj) {\n return obj && obj.constructor === _Symbol ? \"symbol\" : typeof obj;\n };\n\n exports.__esModule = true;\n }, {\n \"babel-runtime/core-js/symbol\": 2\n }],\n 4: [function(_dereq_, module, exports) {\n var core = _dereq_('../../modules/$.core');\n module.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments);\n };\n }, {\n \"../../modules/$.core\": 9\n }],\n 5: [function(_dereq_, module, exports) {\n _dereq_('../../modules/es6.symbol');\n _dereq_('../../modules/es6.object.to-string');\n module.exports = _dereq_('../../modules/$.core').Symbol;\n }, {\n \"../../modules/$.core\": 9,\n \"../../modules/es6.object.to-string\": 33,\n \"../../modules/es6.symbol\": 34\n }],\n 6: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n }, {}],\n 7: [function(_dereq_, module, exports) {\n var isObject = _dereq_('./$.is-object');\n module.exports = function(it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n }, {\n \"./$.is-object\": 22\n }],\n 8: [function(_dereq_, module, exports) {\n var toString = {}.toString;\n\n module.exports = function(it) {\n return toString.call(it).slice(8, -1);\n };\n }, {}],\n 9: [function(_dereq_, module, exports) {\n var core = module.exports = {\n version: '1.2.6'\n };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n }, {}],\n 10: [function(_dereq_, module, exports) {\n // optional / simple context binding\n var aFunction = _dereq_('./$.a-function');\n module.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n };\n }, {\n \"./$.a-function\": 6\n }],\n 11: [function(_dereq_, module, exports) {\n // 7.2.1 RequireObjectCoercible(argument)\n module.exports = function(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n }, {}],\n 12: [function(_dereq_, module, exports) {\n // Thank's IE8 for his funny defineProperty\n module.exports = !_dereq_('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {\n get: function() {\n return 7;\n }\n }).a != 7;\n });\n }, {\n \"./$.fails\": 15\n }],\n 13: [function(_dereq_, module, exports) {\n // all enumerable object keys, includes symbols\n var $ = _dereq_('./$');\n module.exports = function(it) {\n var keys = $.getKeys(it),\n getSymbols = $.getSymbols;\n if (getSymbols) {\n var symbols = getSymbols(it),\n isEnum = $.isEnum,\n i = 0,\n key;\n while (symbols.length > i)\n if (isEnum.call(it, key = symbols[i++])) keys.push(key);\n }\n return keys;\n };\n }, {\n \"./$\": 23\n }],\n 14: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n core = _dereq_('./$.core'),\n ctx = _dereq_('./$.ctx'),\n PROTOTYPE = 'prototype';\n\n var $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && key in target;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n };\n // type bitmap\n $export.F = 1; // forced\n $export.G = 2; // global\n $export.S = 4; // static\n $export.P = 8; // proto\n $export.B = 16; // bind\n $export.W = 32; // wrap\n module.exports = $export;\n }, {\n \"./$.core\": 9,\n \"./$.ctx\": 10,\n \"./$.global\": 17\n }],\n 15: [function(_dereq_, module, exports) {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n }, {}],\n 16: [function(_dereq_, module, exports) {\n // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n var toIObject = _dereq_('./$.to-iobject'),\n getNames = _dereq_('./$').getNames,\n toString = {}.toString;\n\n var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\n\n var getWindowNames = function(it) {\n try {\n return getNames(it);\n } catch (e) {\n return windowNames.slice();\n }\n };\n\n module.exports.get = function getOwnPropertyNames(it) {\n if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it);\n return getNames(toIObject(it));\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 17: [function(_dereq_, module, exports) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n }, {}],\n 18: [function(_dereq_, module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n module.exports = function(it, key) {\n return hasOwnProperty.call(it, key);\n };\n }, {}],\n 19: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n createDesc = _dereq_('./$.property-desc');\n module.exports = _dereq_('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n }, {\n \"./$\": 23,\n \"./$.descriptors\": 12,\n \"./$.property-desc\": 26\n }],\n 20: [function(_dereq_, module, exports) {\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n var cof = _dereq_('./$.cof');\n module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n };\n }, {\n \"./$.cof\": 8\n }],\n 21: [function(_dereq_, module, exports) {\n // 7.2.2 IsArray(argument)\n var cof = _dereq_('./$.cof');\n module.exports = Array.isArray || function(arg) {\n return cof(arg) == 'Array';\n };\n }, {\n \"./$.cof\": 8\n }],\n 22: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n }, {}],\n 23: [function(_dereq_, module, exports) {\n var $Object = Object;\n module.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n };\n }, {}],\n 24: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n toIObject = _dereq_('./$.to-iobject');\n module.exports = function(object, el) {\n var O = toIObject(object),\n keys = $.getKeys(O),\n length = keys.length,\n index = 0,\n key;\n while (length > index)\n if (O[key = keys[index++]] === el) return key;\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 25: [function(_dereq_, module, exports) {\n module.exports = true;\n }, {}],\n 26: [function(_dereq_, module, exports) {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n }, {}],\n 27: [function(_dereq_, module, exports) {\n module.exports = _dereq_('./$.hide');\n }, {\n \"./$.hide\": 19\n }],\n 28: [function(_dereq_, module, exports) {\n var def = _dereq_('./$').setDesc,\n has = _dereq_('./$.has'),\n TAG = _dereq_('./$.wks')('toStringTag');\n\n module.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n };\n }, {\n \"./$\": 23,\n \"./$.has\": 18,\n \"./$.wks\": 32\n }],\n 29: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\n module.exports = function(key) {\n return store[key] || (store[key] = {});\n };\n }, {\n \"./$.global\": 17\n }],\n 30: [function(_dereq_, module, exports) {\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n var IObject = _dereq_('./$.iobject'),\n defined = _dereq_('./$.defined');\n module.exports = function(it) {\n return IObject(defined(it));\n };\n }, {\n \"./$.defined\": 11,\n \"./$.iobject\": 20\n }],\n 31: [function(_dereq_, module, exports) {\n var id = 0,\n px = Math.random();\n module.exports = function(key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n }, {}],\n 32: [function(_dereq_, module, exports) {\n var store = _dereq_('./$.shared')('wks'),\n uid = _dereq_('./$.uid'),\n Symbol = _dereq_('./$.global').Symbol;\n module.exports = function(name) {\n return store[name] || (store[name] =\n Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n };\n }, {\n \"./$.global\": 17,\n \"./$.shared\": 29,\n \"./$.uid\": 31\n }],\n 33: [function(_dereq_, module, exports) {\n\n }, {}],\n 34: [function(_dereq_, module, exports) {\n\n // ECMAScript 6 symbols shim\n var $ = _dereq_('./$'),\n global = _dereq_('./$.global'),\n has = _dereq_('./$.has'),\n DESCRIPTORS = _dereq_('./$.descriptors'),\n $export = _dereq_('./$.export'),\n redefine = _dereq_('./$.redefine'),\n $fails = _dereq_('./$.fails'),\n shared = _dereq_('./$.shared'),\n setToStringTag = _dereq_('./$.set-to-string-tag'),\n uid = _dereq_('./$.uid'),\n wks = _dereq_('./$.wks'),\n keyOf = _dereq_('./$.keyof'),\n $names = _dereq_('./$.get-names'),\n enumKeys = _dereq_('./$.enum-keys'),\n isArray = _dereq_('./$.is-array'),\n anObject = _dereq_('./$.an-object'),\n toIObject = _dereq_('./$.to-iobject'),\n createDesc = _dereq_('./$.property-desc'),\n getDesc = $.getDesc,\n setDesc = $.setDesc,\n _create = $.create,\n getNames = $names.get,\n $Symbol = global.Symbol,\n $JSON = global.JSON,\n _stringify = $JSON && $JSON.stringify,\n setter = false,\n HIDDEN = wks('_hidden'),\n isEnum = $.isEnum,\n SymbolRegistry = shared('symbol-registry'),\n AllSymbols = shared('symbols'),\n useNative = typeof $Symbol == 'function',\n ObjectProto = Object.prototype;\n\n // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n var setSymbolDesc = DESCRIPTORS && $fails(function() {\n return _create(setDesc({}, 'a', {\n get: function() {\n return setDesc(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n }) ? function(it, key, D) {\n var protoDesc = getDesc(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n setDesc(it, key, D);\n if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc);\n } : setDesc;\n\n var wrap = function(tag) {\n var sym = AllSymbols[tag] = _create($Symbol.prototype);\n sym._k = tag;\n DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: function(value) {\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n }\n });\n return sym;\n };\n\n var isSymbol = function(it) {\n return typeof it == 'symbol';\n };\n\n var $defineProperty = function defineProperty(it, key, D) {\n if (D && has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n return setSymbolDesc(it, key, D);\n }\n return setDesc(it, key, D);\n };\n var $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P)),\n i = 0,\n l = keys.length,\n key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n };\n var $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n };\n var $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key);\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n };\n var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n var D = getDesc(it = toIObject(it), key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n };\n var $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key);\n return result;\n };\n var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]);\n return result;\n };\n var $stringify = function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it],\n i = 1,\n $$ = arguments,\n replacer, $replacer;\n while ($$.length > i) args.push($$[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function(key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n };\n var buggyJSON = $fails(function() {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n });\n\n // 19.4.1.1 Symbol([description])\n if (!useNative) {\n $Symbol = function Symbol() {\n if (isSymbol(this)) throw TypeError('Symbol is not a constructor');\n return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));\n };\n redefine($Symbol.prototype, 'toString', function toString() {\n return this._k;\n });\n\n isSymbol = function(it) {\n return it instanceof $Symbol;\n };\n\n $.create = $create;\n $.isEnum = $propertyIsEnumerable;\n $.getDesc = $getOwnPropertyDescriptor;\n $.setDesc = $defineProperty;\n $.setDescs = $defineProperties;\n $.getNames = $names.get = $getOwnPropertyNames;\n $.getSymbols = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_('./$.library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n }\n\n var symbolStatics = {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n return keyOf(SymbolRegistry, key);\n },\n useSetter: function() {\n setter = true;\n },\n useSimple: function() {\n setter = false;\n }\n };\n // 19.4.2.2 Symbol.hasInstance\n // 19.4.2.3 Symbol.isConcatSpreadable\n // 19.4.2.4 Symbol.iterator\n // 19.4.2.6 Symbol.match\n // 19.4.2.8 Symbol.replace\n // 19.4.2.9 Symbol.search\n // 19.4.2.10 Symbol.species\n // 19.4.2.11 Symbol.split\n // 19.4.2.12 Symbol.toPrimitive\n // 19.4.2.13 Symbol.toStringTag\n // 19.4.2.14 Symbol.unscopables\n $.each.call((\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +\n 'species,split,toPrimitive,toStringTag,unscopables'\n ).split(','), function(it) {\n var sym = wks(it);\n symbolStatics[it] = useNative ? sym : wrap(sym);\n });\n\n setter = true;\n\n $export($export.G + $export.W, {\n Symbol: $Symbol\n });\n\n $export($export.S, 'Symbol', symbolStatics);\n\n $export($export.S + $export.F * !useNative, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n });\n\n // 24.3.2 JSON.stringify(value [, replacer [, space]])\n $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {\n stringify: $stringify\n });\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag]\n setToStringTag($Symbol, 'Symbol');\n // 20.2.1.9 Math[@@toStringTag]\n setToStringTag(Math, 'Math', true);\n // 24.3.3 JSON[@@toStringTag]\n setToStringTag(global.JSON, 'JSON', true);\n }, {\n \"./$\": 23,\n \"./$.an-object\": 7,\n \"./$.descriptors\": 12,\n \"./$.enum-keys\": 13,\n \"./$.export\": 14,\n \"./$.fails\": 15,\n \"./$.get-names\": 16,\n \"./$.global\": 17,\n \"./$.has\": 18,\n \"./$.is-array\": 21,\n \"./$.keyof\": 24,\n \"./$.library\": 25,\n \"./$.property-desc\": 26,\n \"./$.redefine\": 27,\n \"./$.set-to-string-tag\": 28,\n \"./$.shared\": 29,\n \"./$.to-iobject\": 30,\n \"./$.uid\": 31,\n \"./$.wks\": 32\n }],\n 35: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function toAggregateFunc(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function count(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function sum(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function min(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function max(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function avg(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function prod(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function stdev(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function stdevp(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function _var(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function varp(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 36: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n }();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 38,\n \"./orb.utils\": 53\n }],\n 37: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, null)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc || defaultFormatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function notequalfield(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.filtering\": 40,\n \"./orb.themes\": 46,\n \"./orb.utils\": 53\n }],\n 38: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 39: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n var rowHeadersAndDataCells = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 46,\n \"./orb.ui.header\": 49,\n \"./orb.utils\": 53\n }],\n 40: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function get(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function func(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function func(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function func(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function func(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function func(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function func(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 41: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 39,\n \"./orb.pgrid\": 42,\n \"./orb.query\": 44,\n \"./orb.ui.pgridwidget\": 50,\n \"./orb.utils\": 53\n }],\n 42: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.config\": 37,\n \"./orb.filtering\": 40,\n \"./orb.pubsub\": 43,\n \"./orb.query\": 44,\n \"./orb.utils\": 53\n }],\n 43: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 44: [function(_dereq_, module, exports) {\n\n var _typeof2 = _dereq_('babel-runtime/helpers/typeof');\n\n var _typeof3 = _interopRequireDefault(_typeof2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function queryBase(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function pgridQuery(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function arrayQuery(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.utils\": 53,\n \"babel-runtime/helpers/typeof\": 3\n }],\n 45: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 46: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function rgbaToHex(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function rgbaToHexA(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function fadeoutColor(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n }();\n\n }, {}],\n 47: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.header\": 49\n }],\n 48: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 49: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function getHeaderClass(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function getCellClass(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(_hspan, _vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function hspan() {\n return _hspan;\n },\n vspan: function vspan() {\n return _vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.state\": 45\n }],\n 50: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n React = _dereq_('react'),\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.pgrid\": 42,\n \"./orb.ui.cols\": 48,\n \"./orb.ui.header\": 49,\n \"./orb.ui.rows\": 51,\n \"./react/orb.react.Dialog.jsx\": 55,\n \"./react/orb.react.Grid.jsx\": 62,\n \"./react/orb.react.PivotChart.jsx\": 65,\n \"./react/orb.react.PivotTable.jsx\": 74,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 51: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 52: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function f(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function f(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 53: [function(_dereq_, module, exports) {\n (function(global) {\n\n var _stringify = _dereq_('babel-runtime/core-js/json/stringify');\n\n var _stringify2 = _interopRequireDefault(_stringify);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n module.exports = {\n\n ns: function ns(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function ownProperties(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function forEach(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function isArray(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function isNumber(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function isDate(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function isString(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function isRegExp(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function escapeRegex(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function findInArray(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function jsonStringify(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return (0, _stringify2.default)(obj, censor, 2);\n },\n addEventListener: function addEventListener(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function removeEventListener(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function preventDefault(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function getEventButton(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function getMousePageXY(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {\n \"babel-runtime/core-js/json/stringify\": 1\n }],\n 54: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n return {\n canRender: false\n };\n },\n canRender: function canRender() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function drawChart() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.drawChart();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.drawChart();\n },\n render: function render() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 55: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function create() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function show(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function setOverlayClass(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function componentDidMount() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function close(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function render() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 56: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n module.exports = function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function init(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function setDragElement(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function unregisterTarget(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function unregisterIndicator(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function elementMoved() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n }();\n\n }, {\n \"../orb.utils\": 53,\n \"react-dom\": \"react-dom\"\n }],\n 57: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function getInitialState() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"react\": \"react\"\n }],\n 58: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 59: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 60: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function openOrClose(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function onMouseEnter() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function onMouseLeave() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function componentDidMount() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function selectValue(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function render() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 61: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function getInitialState() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function destroy() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function onFilter(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function onMouseDown(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function onMouseWheel(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function componentWillMount() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function componentDidMount() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function render() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 40,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.Dropdown.jsx\": 60,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 62: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 63: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function getInitialState() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function onFilterMouseDown(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function onMouseDown(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function onMouseMove(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function updateClasses() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function render() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.FilterPanel.jsx\": 61,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 64: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function expand() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function collapse() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function updateCellInfos() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function componentDidMount() {\n this.updateCellInfos();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function render() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function cellClick() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 49,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 65: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function synchronizeWidths() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 52,\n \"./orb.react.Chart.jsx\": 54,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 66: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotCell.jsx\": 64,\n \"react\": \"react\"\n }],\n 67: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 68: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 69: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 70: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.DropTargetVertical.jsx\": 59,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 71: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function setColGroup(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 72: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function synchronizeWidths(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 52,\n \"react-dom\": \"react-dom\"\n }],\n 73: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 74: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function onWheel(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function synchronizeWidths() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 68,\n \"./orb.react.PivotTable.DataCells.jsx\": 69,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 71,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.ScrollBars.jsx\": 75,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 75: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function getInitialState() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function componentDidMount() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function onMouseDown(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function onMouseMove(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function getScrollSize() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function setScrollClient(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function getScrollPercent() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function refresh() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function scroll(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function onWheel(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function render() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 76: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function componentDidMount() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function createCallback(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function render() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function exportToExcel(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function expandAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function collapseAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function expandAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function collapseAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function initSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function initGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.export.excel\": 39,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\"\n }]\n }, {}, [41])(41)\n});"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["orb.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","orb","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","default","__esModule","core-js/library/fn/json/stringify",2,"core-js/library/fn/symbol",3,"_Symbol","obj","constructor","babel-runtime/core-js/symbol",4,"core","it","JSON","stringify","apply","arguments","../../modules/$.core",5,"Symbol","../../modules/es6.object.to-string","../../modules/es6.symbol",6,"TypeError",7,"isObject","./$.is-object",8,"toString","slice",9,"version","__e",10,"aFunction","fn","that","undefined","b","c","./$.a-function",11,12,"Object","defineProperty","get","./$.fails",13,"$","keys","getKeys","getSymbols","key","symbols","isEnum","push","./$",14,"ctx","PROTOTYPE","$export","type","name","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","target","C","param","Function","./$.core","./$.ctx","./$.global",15,"exec",16,"toIObject","getNames","windowNames","getOwnPropertyNames","getWindowNames","./$.to-iobject",17,"Math","__g",18,"hasOwnProperty",19,"createDesc","object","value","setDesc","./$.descriptors","./$.property-desc",20,"cof","propertyIsEnumerable","split","./$.cof",21,"Array","isArray","arg",22,23,"$Object","create","getProto","getPrototypeOf","getDesc","getOwnPropertyDescriptor","setDescs","defineProperties","getOwnPropertySymbols","each","forEach",24,"el","O","index",25,26,"bitmap","enumerable","configurable","writable",27,"./$.hide",28,"def","has","TAG","tag","stat","prototype","./$.has","./$.wks",29,"SHARED","store",30,"IObject","defined","./$.defined","./$.iobject",31,"id","px","random","concat",32,"uid","./$.shared","./$.uid",33,34,"DESCRIPTORS","redefine","$fails","shared","setToStringTag","wks","keyOf","$names","enumKeys","anObject","_create","$Symbol","$JSON","_stringify","setter","HIDDEN","SymbolRegistry","AllSymbols","useNative","ObjectProto","setSymbolDesc","D","protoDesc","wrap","sym","_k","set","isSymbol","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","result","$getOwnPropertySymbols","$stringify","replacer","$replacer","args","$$","buggyJSON","symbolStatics","for","keyFor","useSetter","useSimple","./$.an-object","./$.enum-keys","./$.export","./$.get-names","./$.is-array","./$.keyof","./$.library","./$.redefine","./$.set-to-string-tag",35,"calcVariance","datafield","intersection","datasource","population","variance","avg","len","forEachIntersection","val","NaN","callback","all","Aggregations","toAggregateFunc","func","sum","count","min","max","prod","stdev","sqrt","stdevp","var","varp",36,"utils","Dimension","AxeType","COLUMNS","ROWS","DATA","pgrid","getfieldindex","field","fields","fill","filteredDataSource","dimensionsCount","rowIndex","dataLength","row","dim","root","findex","depth","subfield","subvalue","subdimvals","values","dimid","rowIndexes","dimensionsByDepth","config","columnFields","rowFields","dataFields","update","ffield","sort","order","donottoggle","parents","customfunc","reverse","flattenValues","map","currDim","isRoot","parent","Type","./orb.dimension","./orb.utils",37,"getpropertyvalue","property","configs","defaultvalue","mergefieldconfigs","merged","sorts","subtotals","functions","nnconfig","subTotal","aggregateFuncName","aggregateFunc","formatFunc","createfield","rootconfig","axetype","fieldconfig","defaultfieldconfig","defaultFormatFunc","axeconfig","fieldAxeconfig","axe","rowSettings","columnSettings","dataSettings","Field","caption","visible","collapsible","collapsed","aggregation","GrandTotalConfig","options","rowsvisible","columnsvisible","SubTotalConfig","setdefaults","defaults","SortConfig","ChartConfig","enabled","filtering","themeManager","createSubOptions","_aggregatefunc","_formatfunc","isString","ensureFieldConfig","captionToName","getfield","axefields","fieldname","fieldindex","fi","dataSource","canMoveFields","dataHeadersLocation","grandTotal","width","height","toolbar","theme","chartMode","current","dataSourceFieldNames","dataSourceFieldCaptions","fcaptionIndex","indexOf","nameToCaption","fnameIndex","setTheme","newTheme","allFields","rows","columns","data","dataFieldsCount","runtimeVisibility","getField","getRowField","getColumnField","getDataField","availablefields","filter","notequalfield","otherfield","every","getDataSourceFieldCaptions","row0","fieldNames","ownProperties","headers","getPreFilters","prefilters","preFilters","filteredField","prefilterConfig","expressionFilter","opname","moveField","oldaxetype","newaxetype","position","oldaxe","oldposition","newaxe","fieldConfig","defaultFieldConfig","newAxeSubtotalsState","areSubtotalsVisible","splice","toggleSubtotals","axeFields","newState","toggleGrandtotal","isGrandtotalVisible","./orb.aggregation","./orb.axe","./orb.filtering","./orb.themes",38,"isLeaf","getRowIndexes","j",39,"uiheaders","uriHeader","docHeader","docFooter","pgridwidget","createButtonCell","buttonStyle","buttonTextColor","createButtons","buttons","cellsCountBefore","cellsCountAfter","prefix","str","reduce","tr","toBase64","btoa","unescape","encodeURIComponent","currTheme","override","themeColor","themes","themeFadeout","fadeoutColor","headerStyle","cellsHorizontalCount","layout","pivotTable","sep","rowHeaders","columnHeaders","currRow","rowStr","header","HeaderType","DATA_HEADER","hspan","vspan","rowHeadersAndDataCells","dataRow","dataRows","dataCell","./orb.ui.header",40,"ALL","NONE","BLANK","operator","term","staticValue","excludeStatic","ops","regexpMode","regexpSupported","isRegExp","ignoreCase","RegExp","test","found","isAlwaysTrue","Operators","MATCH","NOTMATCH","EQ","NEQ","GT","GTE","LT","LTE","search",41,"query","./orb.export.excel","./orb.pgrid","./orb.query","./orb.ui.pgridwidget",42,"PubSub","configuration","refresh","refreshFilters","refreshFilteredDataSource","computeValues","publish","EVENT_UPDATED","filterFields","filters","exclude","fieldFilter","computeValue","colIndexes","origRowIndexes","res","ri","rowindex","colrowindex","emptyIntersection","datafields","fieldnameIndex","datafieldIndex","defaultfield","dfi","computeRowValues","rowDim","rid","_iCache","p","rowindexes","subdim","cid","ur","vr","dataMatrix","EVENT_SORT_CHANGED","applyFilter","refreshData","EVENT_CONFIG_CHANGED","getFieldValues","filterFunc","values1","containsBlank","isNumber","isDate","vi","unshift","getFieldFilter","isFieldFiltered","getData","rowdim","coldim","datafieldName","calcAggregation","getChartData","getAxisLabel","axisFields","ti","hAxisLabel","vAxisLabel","legendsLabel","rowLeafDimensions","colLeafDimensions","ci","cdim","currData","rri","title","colNames","d","dataTable","./orb.config","./orb.pubsub",43,"_topics","subscribe","topic","isFunction",44,"_interopRequireDefault","_typeof2","_typeof3","queryBase","extractResult","aggs","outerArgs","multi","ai","multiFieldNames","getCaptionName","datafieldname","measureFunc","fieldsConfig","cleanOptions","compute","setDefaultAggFunctions","valname","aggFunctions","funcIndex","funcName","pgridQuery","filterDimensions","upperDims","some","upperDim","innerArgs","opts","setup","parameters","fIndex","colFields","df","dfname","dfcaption","applyFilters","sortedFilters","f1","f2","currAxe","filterIndex","filtered","rowdims","coldims","rdi","cdi","arrayQuery","array","setCaptionName","fname","fcaption","toAggregate","include","aggFunc","babel-runtime/helpers/typeof",45,"states","state",46,"isBootstrap","currentTheme","red","blue","green","orange","flower","gray","black","white","rfi","validateTheme","themeName","trim","getPivotClasses","container","table","getButtonClasses","pivotButton","orbButton","scrollBar","getFilterClasses","getGridClasses","getDialogClasses","classes","overlay","dialog","content","body","hexToRgb","hex","parseInt","rgbaToHex","rgba","matches","match","alpha","parseFloat","applyAlphaAndToHex","rgbaToHexA","floor","substr","color",47,"axeModel","isMultiDataFields","toggleFieldExpansion","hIndex","toToggle","allExpanded","SUB_TOTAL","expanded","collapse","expand",48,"axeUi","columnsAxe","generateLeafsHeaders","pushsubtotal","pheader","leafsHeaders","subtotalHeader","infos","currparent","prevpar","grandpar","prevgrandpar","leafIndex","datafieldindex","dataHeader","getUiInfo","pi","parentDim","di","build","GRAND_TOTAL","INNER","./orb.ui.axe",49,"CellBase","template","cssclass","isvisible","getState","setState","EMPTY","DATA_VALUE","FIELD_BUTTON","WRAPPER","getHeaderClass","headerType","getCellClass","rowHeaderType","colHeaderType","datafieldscount","isParentExpanded","hparent","isexpanded","par","calcSpan","ignoreVisibility","subSpan","tspan","addone","isRowsAxe","subheaders","subheader","rowinfo","colinfo","rowDimension","columnDimension","rowType","colType","buttonCell","emptyCell","_hspan","_vspan","./orb.state",50,"ReactDOM","React","uirows","uicols","Dialog","PivotChart","PivotTable","Grid","init","buildUiAndRender","buildUi","createVisibleFunc","rowvisible","colvisible","rowsHeaders","columnsLeafHeaders","arr","rowHeadersRow","rowLeafHeader","colHeaderIndex","columnLeafHeader","render","renderElement","pivotComponent","expandRow","cell","collapseRow","oldAxeType","newAxeType","axeToExpand","changeTheme","element","pivotTableFactory","createFactory","pivottable","drilldown","pivotId","show","comp","props","style","fontStyle","./orb.ui.cols","./orb.ui.rows","./react/orb.react.Dialog.jsx","./react/orb.react.Grid.jsx","./react/orb.react.PivotChart.jsx","./react/orb.react.PivotTable.jsx","react","react-dom",51,"rowsAxe","addDataHeaders","lastInfosArray","dimension","infosMaxIndex","valIndex","subTotalHeader","newHeader","grandtotalHeader","lastrow",52,"replaceHyphenByUcase","replace","reHyphenToUcase","m","m1","toUpperCase","removeClass","classname","className","addClass","getOffset","rect","getBoundingClientRect","x","left","y","top","getParentOffset","rectParent","parentNode","getSize","right","bottom","getStyle","styleProps","keepString","currStyle","fixProp","currentStyle","prop","getComputedStyle","getPropertyValue","ceil","isVisible","display","offsetWidth","offsetHeight","updateTableColGroup","tableNode","widths","colGroupNode","firstChild","nodeName","tableLayout","removeChild","col","document","createElement","appendChild",53,"_stringify2","ns","identifier","parts","list","forceContinue","ret","escapeRegex","re","findInArray","predicate","item","jsonStringify","censorKeywords","censor","addEventListener","eventName","handler","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","stopPropagation","cancelBubble","getEventButton","button","getMousePageXY","pageX","pageY","clientX","scrollLeft","documentElement","clientY","scrollTop","InvalidCharacterError","message","chars","input","block","charCode","String","idx","output","charAt","charCodeAt","atob","bs","buffer","bc","fromCharCode","babel-runtime/core-js/json/stringify",54,"createClass","displayName","getInitialState","canRender","google","visualization","drawChart","chartData","pivotTableComp","DataTable","addColumn","addRows","fontName","chartStyle","fontFamily","fontSize","hAxis","vAxis","chart","findDOMNode","draw","componentDidMount","componentDidUpdate",55,"createOverlay","overlayElement","statics","dialogFactory","setOverlayClass","close","dialogElement","children","dialogBodyElement","screenWidth","clientWidth","innerWidth","screenHeight","clientHeight","innerHeight","maxHeight","dWidth","dHeight","srcElement","unmountComponentAtNode","onClick","../orb.utils",56,"doElementsOverlap","elem1Rect","elem2Rect","setCurrDropTarget","dropTarget","_currDropTarget","signalDragEnd","signalDragOver","setCurrDropIndicator","dropIndicator","_currDropIndicator","onDragOver","onDragEnd","_pivotComp","_currDragElement","_dragNode","_dropTargets","_dropIndicators","_initialized","pivotComp","setDragElement","elem","prevDragElement","moveButton","component","registerTarget","dragOverHandler","dargEndHandler","unregisterTarget","tindex","registerIndicator","indicator","unregisterIndicator","iindex","elementMoved","foundTarget","dragNodeRect","tnodeRect","isOverlap","foundIndicator","elementOwnIndicator","targetIndicator","axeIndicators",57,"DragManager","isover","componentWillUnmount","isMounted","isVertical","isFirst","isLast","./orb.react.DragManager.jsx",58,"DropIndicator","dtid","../orb.axe","./orb.react.DropIndicator.jsx",59,"currButton",60,"openOrClose","valueNode","refs","valueElement","valuesListNode","valuesList","onMouseEnter","backgroundPosition","onMouseLeave","selectValue","listNode","isli","textContent","onValueChanged","dangerouslySetInnerHTML","__html","ref","selectedValue",61,"FilterManager","reactComp","initialFilterObject","checkboxVisible","checkbox","applyInitialFilterObject","staticInfos","toExclude","isSearchMode","toggleRegexpButtonVisibility","isRegexMode","toggleRegexpButtonState","lastSearchTerm","elems","searchBox","applyFilterTerm","savedCheckedValues","updateCheckboxes","updateAllCheckbox","addEventListeners","filterContainer","valueChecked","searchChanged","clearSearchButton","clearSearchBox","okButton","checkedObj","getCheckedValues","onFilter","cancelButton","destroy","ResizeManager","outerContainerElem","valuesTableElem","resizeGripElem","minContainerWidth","minContainerHeight","mousedownpos","isMouseDown","resizeMouseDown","mousePageXY","cursor","resizeMouseUp","resizeMouseMove","resizeGripSize","outerContainerSize","valuesTableSize","tBodies","outerContainerWidth","outerContainerHeight","offset","newContainerWidth","newContainerHeight","resizeManager","INDETERMINATE","checkboxes","operatorBox","allCheckbox","addCheckbox","enableRegexButton","resizeGrip","filterContainerElement","cells","blanckCheckbox","onOperatorChanged","newOperator","regexpActiveChanged","domUtils","checked","defaultVisible","opterm","previousIsSearchMode","indeterminate","valuesCount","checkedCount","excludeUnchecked","checkedList","allchecked","valInList","Dropdown","filterManager","onMouseDown","onMouseWheel","valuesTable","scrollHeight","componentWillMount","addCheckboxRow","text","defaultChecked","buttonClass","currentFilter","placeholder","clearFilter","colSpan","float","../orb.filtering","../orb.utils.dom","./orb.react.Dropdown.jsx",62,"tableClasses","headerRow","h",63,"FilterPanel","pbid","pos","startpos","mousedown","dragging","onFilterMouseDown","filterButton","filterButtonPos","filterPanelFactory","filterPanel","onMouseMove","registerThemeChanged","updateClasses","unregisterThemeChanged","ctrlKey","thispos","mouseoffset","onMouseUp","isdragged","size","newpos","divstyle","zIndex","sortDirectionClass","filterClass","fieldAggFunc","./orb.react.FilterPanel.jsx",64,"getClassname","compProps","leftmost","topmost","_paddingLeft","_borderLeft","updateCellInfos","node","__orb","cellContentNode","cellContent","propList","retPaddingLeft","retBorderLeft","innerText","nodeStyle","_visible","_lastText","_textWidth","_colSpan","_rowSpan","_paddingRight","_borderLeftWidth","_borderRightWidth","shouldComponentUpdate","nextProps","nextState","_latestVisibleState","cellClick","divcontent","headerPushed","isWrapper","isSubtotal","headerClassName","onDoubleClick","rowSpan","../orb.ui.header",65,"SizingManager","UpperButtons","ColumnButtons","RowButtons","Chart","themeChangeCallbacks","compCallback","thisnode","synchronizeWidths","fontInfos","tblStyle","padding","./orb.react.Chart.jsx","./orb.react.PivotTable.ColumnButtons.jsx","./orb.react.PivotTable.RowButtons.jsx","./orb.react.PivotTable.SizingManager.jsx","./orb.react.PivotTable.UpperButtons.jsx","./orb.react.Toolbar.jsx",66,"PivotCell","leftmostCellFound","layoutInfos","rowstyle","istopmost","isleftmost","topMostCells","lastLeftMostCellVSpan","./orb.react.PivotCell.jsx",67,"PivotButton","DropTarget","columnButtons","./orb.react.DropTarget.jsx","./orb.react.PivotButton.jsx",68,"PivotRow","cntrClass","onWheel","./orb.react.PivotRow.jsx",69,"dataCells",70,"DropTargetVertical","rowButtons","./orb.react.DropTargetVertical.jsx",71,"setColGroup","colgroup","innerHTML",72,"ComponentSizeInfo","childType","w","setStyle","styleProp","setParentStyle","getLargestWidths","otherCompInfo","total","colWidths","addToWidth","getAllColumnsWidth","tblObject","tbl","arrayIndex","currWidth","cellIndex","currCell","cellwidth","cspan","inhibit","synchronizePivotChartWidths","synchronizePivotTableWidths","pivotWrapperTable","pivot","topBtns","upperButtons","cBtns","colButtons","rBtnsTbl","rBtnsWidth","chartWidth","pivotHeight","chartHeight","cHeadersTbl","colHeaders","rHeadersTbl","dataCellsTbl","hScroll","horizontalScrollBar","vScroll","verticalScrollBar","dataCellsWidths","rHeadersWidth","dataCellsContainerWidth","dataCellsRemHeight","dataCellsTableHeight",73,"fieldsDropTarget","fieldsButtons","dataButtons","dataDropTarget",74,"Toolbar","RowHeaders","ColumnHeaders","DataCells","ScrollBars","HorizontalScrollBar","VerticalScrollBar","dataCellsNode","dataCellsTableNode","colHeadersNode","rowHeadersNode","setScrollClient","scrollPercent","scrollAmount","scrollbar","amount","currentTarget","deltaX","deltaY","scroll","deltaMode","./orb.react.PivotTable.ColumnHeaders.jsx","./orb.react.PivotTable.DataCells.jsx","./orb.react.PivotTable.RowHeaders.jsx","./orb.react.ScrollBars.jsx",75,"ScrollEvent","scrollBarComp","raise","getScrollPercent","scrollBarMixin","scrollEvent","scrollClient","thumbOffset","thumbElem","scrollThumb","thumbposInParent","mousePosProp","posProp","getScrollSize","sizeProp","scrollCallback","maxOffset","scrolledElement","clientSize","elementSize","scrollBarContainerSize","newSize","containerSize","mode","newOffset","thumbStyle","offsetCssProp","thisStyle","thumbClass","cssClass","mixins",76,"_toInit","btn","createCallback","action","pgridComponent","configButtons","defaultToolbarConfig","btnConfig","refName","tooltip","excelExport","exportToExcel","download","href","click","expandAllRows","collapseAllRows","expandAllColumns","collapseAllColumns","updateSubtotalsButton","subTotalsState","classToAdd","classToRemove","initSubtotals","updateGrandtotalButton","initGrandtotal","../orb.export.excel"],"mappings":"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","file":"orb-1.1.0.min.js","sourcesContent":["/**\n * orb v1.1.0, Pivot table javascript library.\n *\n * Copyright (c) 2014-2016 Najmeddine Nouri .\n *\n * @version v1.1.0\n * @link http://orbjs.net/\n * @license MIT\n */\n\n/* global module, require, define, window, document, global, React */\n/*jshint node: true, eqnull: true*/\n\n'use strict';\n(function(f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f()\n } else if (typeof define === \"function\" && define.amd) {\n define([], f)\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window\n } else if (typeof global !== \"undefined\") {\n g = global\n } else if (typeof self !== \"undefined\") {\n g = self\n } else {\n g = this\n }\n g.orb = f()\n }\n})(function() {\n var define, module, exports;\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require == \"function\" && require;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f\n }\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function(e) {\n var n = t[o][1][e];\n return s(n ? n : e)\n }, l, l.exports, e, t, n, r)\n }\n return n[o].exports\n }\n var i = typeof require == \"function\" && require;\n for (var o = 0; o < r.length; o++) s(r[o]);\n return s\n })({\n 1: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/json/stringify\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/json/stringify\": 4\n }],\n 2: [function(_dereq_, module, exports) {\n module.exports = {\n \"default\": _dereq_(\"core-js/library/fn/symbol\"),\n __esModule: true\n };\n }, {\n \"core-js/library/fn/symbol\": 5\n }],\n 3: [function(_dereq_, module, exports) {\n\n var _Symbol = _dereq_(\"babel-runtime/core-js/symbol\")[\"default\"];\n\n exports[\"default\"] = function(obj) {\n return obj && obj.constructor === _Symbol ? \"symbol\" : typeof obj;\n };\n\n exports.__esModule = true;\n }, {\n \"babel-runtime/core-js/symbol\": 2\n }],\n 4: [function(_dereq_, module, exports) {\n var core = _dereq_('../../modules/$.core');\n module.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return (core.JSON && core.JSON.stringify || JSON.stringify).apply(JSON, arguments);\n };\n }, {\n \"../../modules/$.core\": 9\n }],\n 5: [function(_dereq_, module, exports) {\n _dereq_('../../modules/es6.symbol');\n _dereq_('../../modules/es6.object.to-string');\n module.exports = _dereq_('../../modules/$.core').Symbol;\n }, {\n \"../../modules/$.core\": 9,\n \"../../modules/es6.object.to-string\": 33,\n \"../../modules/es6.symbol\": 34\n }],\n 6: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n }, {}],\n 7: [function(_dereq_, module, exports) {\n var isObject = _dereq_('./$.is-object');\n module.exports = function(it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n }, {\n \"./$.is-object\": 22\n }],\n 8: [function(_dereq_, module, exports) {\n var toString = {}.toString;\n\n module.exports = function(it) {\n return toString.call(it).slice(8, -1);\n };\n }, {}],\n 9: [function(_dereq_, module, exports) {\n var core = module.exports = {\n version: '1.2.6'\n };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n }, {}],\n 10: [function(_dereq_, module, exports) {\n // optional / simple context binding\n var aFunction = _dereq_('./$.a-function');\n module.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n };\n }, {\n \"./$.a-function\": 6\n }],\n 11: [function(_dereq_, module, exports) {\n // 7.2.1 RequireObjectCoercible(argument)\n module.exports = function(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n }, {}],\n 12: [function(_dereq_, module, exports) {\n // Thank's IE8 for his funny defineProperty\n module.exports = !_dereq_('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {\n get: function() {\n return 7;\n }\n }).a != 7;\n });\n }, {\n \"./$.fails\": 15\n }],\n 13: [function(_dereq_, module, exports) {\n // all enumerable object keys, includes symbols\n var $ = _dereq_('./$');\n module.exports = function(it) {\n var keys = $.getKeys(it),\n getSymbols = $.getSymbols;\n if (getSymbols) {\n var symbols = getSymbols(it),\n isEnum = $.isEnum,\n i = 0,\n key;\n while (symbols.length > i)\n if (isEnum.call(it, key = symbols[i++])) keys.push(key);\n }\n return keys;\n };\n }, {\n \"./$\": 23\n }],\n 14: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n core = _dereq_('./$.core'),\n ctx = _dereq_('./$.ctx'),\n PROTOTYPE = 'prototype';\n\n var $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && key in target;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n };\n // type bitmap\n $export.F = 1; // forced\n $export.G = 2; // global\n $export.S = 4; // static\n $export.P = 8; // proto\n $export.B = 16; // bind\n $export.W = 32; // wrap\n module.exports = $export;\n }, {\n \"./$.core\": 9,\n \"./$.ctx\": 10,\n \"./$.global\": 17\n }],\n 15: [function(_dereq_, module, exports) {\n module.exports = function(exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n }, {}],\n 16: [function(_dereq_, module, exports) {\n // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\n var toIObject = _dereq_('./$.to-iobject'),\n getNames = _dereq_('./$').getNames,\n toString = {}.toString;\n\n var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\n\n var getWindowNames = function(it) {\n try {\n return getNames(it);\n } catch (e) {\n return windowNames.slice();\n }\n };\n\n module.exports.get = function getOwnPropertyNames(it) {\n if (windowNames && toString.call(it) == '[object Window]') return getWindowNames(it);\n return getNames(toIObject(it));\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 17: [function(_dereq_, module, exports) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n }, {}],\n 18: [function(_dereq_, module, exports) {\n var hasOwnProperty = {}.hasOwnProperty;\n module.exports = function(it, key) {\n return hasOwnProperty.call(it, key);\n };\n }, {}],\n 19: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n createDesc = _dereq_('./$.property-desc');\n module.exports = _dereq_('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n } : function(object, key, value) {\n object[key] = value;\n return object;\n };\n }, {\n \"./$\": 23,\n \"./$.descriptors\": 12,\n \"./$.property-desc\": 26\n }],\n 20: [function(_dereq_, module, exports) {\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n var cof = _dereq_('./$.cof');\n module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n };\n }, {\n \"./$.cof\": 8\n }],\n 21: [function(_dereq_, module, exports) {\n // 7.2.2 IsArray(argument)\n var cof = _dereq_('./$.cof');\n module.exports = Array.isArray || function(arg) {\n return cof(arg) == 'Array';\n };\n }, {\n \"./$.cof\": 8\n }],\n 22: [function(_dereq_, module, exports) {\n module.exports = function(it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n }, {}],\n 23: [function(_dereq_, module, exports) {\n var $Object = Object;\n module.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n };\n }, {}],\n 24: [function(_dereq_, module, exports) {\n var $ = _dereq_('./$'),\n toIObject = _dereq_('./$.to-iobject');\n module.exports = function(object, el) {\n var O = toIObject(object),\n keys = $.getKeys(O),\n length = keys.length,\n index = 0,\n key;\n while (length > index)\n if (O[key = keys[index++]] === el) return key;\n };\n }, {\n \"./$\": 23,\n \"./$.to-iobject\": 30\n }],\n 25: [function(_dereq_, module, exports) {\n module.exports = true;\n }, {}],\n 26: [function(_dereq_, module, exports) {\n module.exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n }, {}],\n 27: [function(_dereq_, module, exports) {\n module.exports = _dereq_('./$.hide');\n }, {\n \"./$.hide\": 19\n }],\n 28: [function(_dereq_, module, exports) {\n var def = _dereq_('./$').setDesc,\n has = _dereq_('./$.has'),\n TAG = _dereq_('./$.wks')('toStringTag');\n\n module.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n };\n }, {\n \"./$\": 23,\n \"./$.has\": 18,\n \"./$.wks\": 32\n }],\n 29: [function(_dereq_, module, exports) {\n var global = _dereq_('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\n module.exports = function(key) {\n return store[key] || (store[key] = {});\n };\n }, {\n \"./$.global\": 17\n }],\n 30: [function(_dereq_, module, exports) {\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n var IObject = _dereq_('./$.iobject'),\n defined = _dereq_('./$.defined');\n module.exports = function(it) {\n return IObject(defined(it));\n };\n }, {\n \"./$.defined\": 11,\n \"./$.iobject\": 20\n }],\n 31: [function(_dereq_, module, exports) {\n var id = 0,\n px = Math.random();\n module.exports = function(key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n }, {}],\n 32: [function(_dereq_, module, exports) {\n var store = _dereq_('./$.shared')('wks'),\n uid = _dereq_('./$.uid'),\n Symbol = _dereq_('./$.global').Symbol;\n module.exports = function(name) {\n return store[name] || (store[name] =\n Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n };\n }, {\n \"./$.global\": 17,\n \"./$.shared\": 29,\n \"./$.uid\": 31\n }],\n 33: [function(_dereq_, module, exports) {\n\n }, {}],\n 34: [function(_dereq_, module, exports) {\n\n // ECMAScript 6 symbols shim\n var $ = _dereq_('./$'),\n global = _dereq_('./$.global'),\n has = _dereq_('./$.has'),\n DESCRIPTORS = _dereq_('./$.descriptors'),\n $export = _dereq_('./$.export'),\n redefine = _dereq_('./$.redefine'),\n $fails = _dereq_('./$.fails'),\n shared = _dereq_('./$.shared'),\n setToStringTag = _dereq_('./$.set-to-string-tag'),\n uid = _dereq_('./$.uid'),\n wks = _dereq_('./$.wks'),\n keyOf = _dereq_('./$.keyof'),\n $names = _dereq_('./$.get-names'),\n enumKeys = _dereq_('./$.enum-keys'),\n isArray = _dereq_('./$.is-array'),\n anObject = _dereq_('./$.an-object'),\n toIObject = _dereq_('./$.to-iobject'),\n createDesc = _dereq_('./$.property-desc'),\n getDesc = $.getDesc,\n setDesc = $.setDesc,\n _create = $.create,\n getNames = $names.get,\n $Symbol = global.Symbol,\n $JSON = global.JSON,\n _stringify = $JSON && $JSON.stringify,\n setter = false,\n HIDDEN = wks('_hidden'),\n isEnum = $.isEnum,\n SymbolRegistry = shared('symbol-registry'),\n AllSymbols = shared('symbols'),\n useNative = typeof $Symbol == 'function',\n ObjectProto = Object.prototype;\n\n // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n var setSymbolDesc = DESCRIPTORS && $fails(function() {\n return _create(setDesc({}, 'a', {\n get: function() {\n return setDesc(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n }) ? function(it, key, D) {\n var protoDesc = getDesc(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n setDesc(it, key, D);\n if (protoDesc && it !== ObjectProto) setDesc(ObjectProto, key, protoDesc);\n } : setDesc;\n\n var wrap = function(tag) {\n var sym = AllSymbols[tag] = _create($Symbol.prototype);\n sym._k = tag;\n DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: function(value) {\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n }\n });\n return sym;\n };\n\n var isSymbol = function(it) {\n return typeof it == 'symbol';\n };\n\n var $defineProperty = function defineProperty(it, key, D) {\n if (D && has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) setDesc(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n return setSymbolDesc(it, key, D);\n }\n return setDesc(it, key, D);\n };\n var $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P)),\n i = 0,\n l = keys.length,\n key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n };\n var $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n };\n var $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key);\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n };\n var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n var D = getDesc(it = toIObject(it), key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n };\n var $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN) result.push(key);\n return result;\n };\n var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var names = getNames(toIObject(it)),\n result = [],\n i = 0,\n key;\n while (names.length > i)\n if (has(AllSymbols, key = names[i++])) result.push(AllSymbols[key]);\n return result;\n };\n var $stringify = function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it],\n i = 1,\n $$ = arguments,\n replacer, $replacer;\n while ($$.length > i) args.push($$[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function(key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n };\n var buggyJSON = $fails(function() {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n });\n\n // 19.4.1.1 Symbol([description])\n if (!useNative) {\n $Symbol = function Symbol() {\n if (isSymbol(this)) throw TypeError('Symbol is not a constructor');\n return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));\n };\n redefine($Symbol.prototype, 'toString', function toString() {\n return this._k;\n });\n\n isSymbol = function(it) {\n return it instanceof $Symbol;\n };\n\n $.create = $create;\n $.isEnum = $propertyIsEnumerable;\n $.getDesc = $getOwnPropertyDescriptor;\n $.setDesc = $defineProperty;\n $.setDescs = $defineProperties;\n $.getNames = $names.get = $getOwnPropertyNames;\n $.getSymbols = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !_dereq_('./$.library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n }\n\n var symbolStatics = {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key) {\n return keyOf(SymbolRegistry, key);\n },\n useSetter: function() {\n setter = true;\n },\n useSimple: function() {\n setter = false;\n }\n };\n // 19.4.2.2 Symbol.hasInstance\n // 19.4.2.3 Symbol.isConcatSpreadable\n // 19.4.2.4 Symbol.iterator\n // 19.4.2.6 Symbol.match\n // 19.4.2.8 Symbol.replace\n // 19.4.2.9 Symbol.search\n // 19.4.2.10 Symbol.species\n // 19.4.2.11 Symbol.split\n // 19.4.2.12 Symbol.toPrimitive\n // 19.4.2.13 Symbol.toStringTag\n // 19.4.2.14 Symbol.unscopables\n $.each.call((\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +\n 'species,split,toPrimitive,toStringTag,unscopables'\n ).split(','), function(it) {\n var sym = wks(it);\n symbolStatics[it] = useNative ? sym : wrap(sym);\n });\n\n setter = true;\n\n $export($export.G + $export.W, {\n Symbol: $Symbol\n });\n\n $export($export.S, 'Symbol', symbolStatics);\n\n $export($export.S + $export.F * !useNative, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n });\n\n // 24.3.2 JSON.stringify(value [, replacer [, space]])\n $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {\n stringify: $stringify\n });\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag]\n setToStringTag($Symbol, 'Symbol');\n // 20.2.1.9 Math[@@toStringTag]\n setToStringTag(Math, 'Math', true);\n // 24.3.3 JSON[@@toStringTag]\n setToStringTag(global.JSON, 'JSON', true);\n }, {\n \"./$\": 23,\n \"./$.an-object\": 7,\n \"./$.descriptors\": 12,\n \"./$.enum-keys\": 13,\n \"./$.export\": 14,\n \"./$.fails\": 15,\n \"./$.get-names\": 16,\n \"./$.global\": 17,\n \"./$.has\": 18,\n \"./$.is-array\": 21,\n \"./$.keyof\": 24,\n \"./$.library\": 25,\n \"./$.property-desc\": 26,\n \"./$.redefine\": 27,\n \"./$.set-to-string-tag\": 28,\n \"./$.shared\": 29,\n \"./$.to-iobject\": 30,\n \"./$.uid\": 31,\n \"./$.wks\": 32\n }],\n 35: [function(_dereq_, module, exports) {\n\n var Aggregations = module.exports = {\n toAggregateFunc: function toAggregateFunc(func) {\n if (func) {\n if (typeof func === 'string' && Aggregations[func]) {\n return Aggregations[func];\n } else if (typeof func === 'function') {\n return func;\n } else {\n return Aggregations.sum;\n }\n } else {\n return Aggregations.sum;\n }\n },\n count: function count(datafield, intersection, datasource) {\n return intersection === 'all' ? datasource.length : intersection.length;\n },\n sum: function sum(datafield, intersection, datasource) {\n var sum = 0;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n sum += val;\n });\n return sum;\n },\n min: function min(datafield, intersection, datasource) {\n var min = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (min == null || val < min) {\n min = val;\n }\n });\n return min;\n },\n max: function max(datafield, intersection, datasource) {\n var max = null;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n if (max == null || val > max) {\n max = val;\n }\n });\n return max;\n },\n avg: function avg(datafield, intersection, datasource) {\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n }\n return avg;\n },\n prod: function prod(datafield, intersection, datasource) {\n var prod;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n prod = 1;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n prod *= val;\n });\n }\n return prod;\n },\n stdev: function stdev(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, false));\n },\n stdevp: function stdevp(datafield, intersection, datasource) {\n return Math.sqrt(calcVariance(datafield, intersection, datasource, true));\n },\n 'var': function _var(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, false);\n },\n varp: function varp(datafield, intersection, datasource) {\n return calcVariance(datafield, intersection, datasource, true);\n }\n };\n\n function calcVariance(datafield, intersection, datasource, population) {\n var variance = 0;\n var avg = 0;\n var len = (intersection === 'all' ? datasource : intersection).length;\n if (len > 0) {\n if (population || len > 1) {\n forEachIntersection(datafield, intersection, datasource, function(val) {\n avg += val;\n });\n avg /= len;\n forEachIntersection(datafield, intersection, datasource, function(val) {\n variance += (val - avg) * (val - avg);\n });\n variance = variance / (population ? len : len - 1);\n } else {\n variance = NaN;\n }\n }\n return variance;\n }\n\n function forEachIntersection(datafield, intersection, datasource, callback) {\n var all = intersection === 'all';\n intersection = all ? datasource : intersection;\n if (intersection.length > 0) {\n for (var i = 0; i < intersection.length; i++) {\n callback((all ? intersection[i] : datasource[intersection[i]])[datafield]);\n }\n }\n }\n\n }, {}],\n 36: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var Dimension = _dereq_('./orb.dimension');\n\n var AxeType = {\n COLUMNS: 1,\n ROWS: 2,\n DATA: 3\n };\n\n module.exports = function(pgrid, type) {\n\n var self = this;\n var dimid = 0;\n\n if (pgrid != null && pgrid.config != null) {\n\n\n this.pgrid = pgrid;\n\n\n this.type = type;\n\n\n this.fields = function() {\n switch (type) {\n case AxeType.COLUMNS:\n return self.pgrid.config.columnFields;\n case AxeType.ROWS:\n return self.pgrid.config.rowFields;\n case AxeType.DATA:\n return self.pgrid.config.dataFields;\n default:\n return [];\n }\n }();\n\n\n this.dimensionsCount = null;\n\n\n this.root = null;\n\n\n this.dimensionsByDepth = null;\n\n this.update = function() {\n self.dimensionsCount = self.fields.length;\n self.root = new Dimension(++dimid, null, null, null, self.dimensionsCount + 1, true);\n\n self.dimensionsByDepth = {};\n for (var depth = 1; depth <= self.dimensionsCount; depth++) {\n self.dimensionsByDepth[depth] = [];\n }\n\n // fill data\n fill();\n\n // initial sort\n for (var findex = 0; findex < self.fields.length; findex++) {\n var ffield = self.fields[findex];\n if (ffield.sort.order === 'asc' || ffield.sort.order === 'desc') {\n self.sort(ffield, true);\n }\n }\n };\n\n this.sort = function(field, donottoggle) {\n if (field != null) {\n if (donottoggle !== true) {\n if (field.sort.order !== 'asc') {\n field.sort.order = 'asc';\n } else {\n field.sort.order = 'desc';\n }\n }\n\n var depth = self.dimensionsCount - getfieldindex(field);\n var parents = depth === self.dimensionsCount ? [self.root] : self.dimensionsByDepth[depth + 1];\n for (var i = 0; i < parents.length; i++) {\n if (field.sort.customfunc != null) {\n parents[i].values.sort(field.sort.customfunc);\n } else {\n parents[i].values.sort();\n }\n if (field.sort.order === 'desc') {\n parents[i].values.reverse();\n }\n }\n }\n };\n\n this.flattenValues = function() {\n return self.dimensionsByDepth[1].map(function(dim) {\n var name = '';\n var currDim = dim;\n while (!currDim.isRoot) {\n name = currDim.value + (name !== '' ? '-' + name : '');\n currDim = currDim.parent;\n }\n return {\n name: name,\n dim: dim\n };\n }).sort(function(a, b) {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n };\n }\n\n function getfieldindex(field) {\n for (var i = 0; i < self.fields.length; i++) {\n if (self.fields[i].name === field.name) {\n return i;\n }\n }\n return -1;\n }\n\n\n function fill() {\n\n if (self.pgrid.filteredDataSource != null && self.dimensionsCount > 0) {\n\n var datasource = self.pgrid.filteredDataSource;\n if (datasource != null && utils.isArray(datasource) && datasource.length > 0) {\n for (var rowIndex = 0, dataLength = datasource.length; rowIndex < dataLength; rowIndex++) {\n var row = datasource[rowIndex];\n var dim = self.root;\n for (var findex = 0; findex < self.dimensionsCount; findex++) {\n var depth = self.dimensionsCount - findex;\n var subfield = self.fields[findex];\n var subvalue = row[subfield.name];\n var subdimvals = dim.subdimvals;\n\n if (subdimvals[subvalue] !== undefined) {\n dim = subdimvals[subvalue];\n } else {\n dim.values.push(subvalue);\n dim = new Dimension(++dimid, dim, subvalue, subfield, depth, false, findex == self.dimensionsCount - 1);\n subdimvals[subvalue] = dim;\n dim.rowIndexes = [];\n self.dimensionsByDepth[depth].push(dim);\n }\n\n dim.rowIndexes.push(rowIndex);\n }\n }\n }\n }\n }\n };\n\n module.exports.Type = AxeType;\n\n }, {\n \"./orb.dimension\": 38,\n \"./orb.utils\": 53\n }],\n 37: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n var filtering = _dereq_('./orb.filtering');\n var themeManager = _dereq_('./orb.themes');\n\n function getpropertyvalue(property, configs, defaultvalue) {\n for (var i = 0; i < configs.length; i++) {\n if (configs[i][property] != null) {\n return configs[i][property];\n }\n }\n return defaultvalue;\n }\n\n function mergefieldconfigs() {\n\n var merged = {\n configs: [],\n sorts: [],\n subtotals: [],\n functions: []\n };\n\n for (var i = 0; i < arguments.length; i++) {\n var nnconfig = arguments[i] || {};\n merged.configs.push(nnconfig);\n merged.sorts.push(nnconfig.sort || {});\n merged.subtotals.push(nnconfig.subTotal || {});\n merged.functions.push({\n aggregateFuncName: nnconfig.aggregateFuncName,\n aggregateFunc: i === 0 ? nnconfig.aggregateFunc : nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null,\n formatFunc: i === 0 ? nnconfig.formatFunc : nnconfig.formatFunc ? nnconfig.formatFunc() : null\n });\n }\n\n return merged;\n }\n\n function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) {\n\n var axeconfig;\n var fieldAxeconfig;\n\n if (defaultfieldconfig) {\n switch (axetype) {\n case axe.Type.ROWS:\n axeconfig = rootconfig.rowSettings;\n fieldAxeconfig = defaultfieldconfig.rowSettings;\n break;\n case axe.Type.COLUMNS:\n axeconfig = rootconfig.columnSettings;\n fieldAxeconfig = defaultfieldconfig.columnSettings;\n break;\n case axe.Type.DATA:\n axeconfig = rootconfig.dataSettings;\n fieldAxeconfig = defaultfieldconfig.dataSettings;\n break;\n default:\n axeconfig = null;\n fieldAxeconfig = null;\n break;\n }\n } else {\n axeconfig = null;\n fieldAxeconfig = null;\n }\n\n var merged = mergefieldconfigs(fieldconfig, fieldAxeconfig, axeconfig, defaultfieldconfig, rootconfig);\n\n function defaultFormatFunc(val) {\n return val != null ? val.toString() : '';\n }\n\n return new Field({\n name: getpropertyvalue('name', merged.configs, ''),\n\n caption: getpropertyvalue('caption', merged.configs, ''),\n\n sort: {\n order: getpropertyvalue('order', merged.sorts, null),\n customfunc: getpropertyvalue('customfunc', merged.sorts, null)\n },\n subTotal: {\n visible: getpropertyvalue('visible', merged.subtotals, true),\n collapsible: getpropertyvalue('collapsible', merged.subtotals, true),\n collapsed: getpropertyvalue('collapsed', merged.subtotals, false) && getpropertyvalue('collapsible', merged.subtotals, true)\n },\n\n aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'),\n aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum),\n formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc)\n }, false);\n }\n\n function GrandTotalConfig(options) {\n\n options = options || {};\n\n this.rowsvisible = options.rowsvisible !== undefined ? options.rowsvisible : true;\n this.columnsvisible = options.columnsvisible !== undefined ? options.columnsvisible : true;\n }\n\n function SubTotalConfig(options, setdefaults) {\n\n var defaults = {\n visible: setdefaults === true ? true : undefined,\n collapsible: setdefaults === true ? true : undefined,\n collapsed: setdefaults === true ? false : undefined\n };\n options = options || {};\n\n this.visible = options.visible !== undefined ? options.visible : defaults.visible;\n this.collapsible = options.collapsible !== undefined ? options.collapsible : defaults.collapsible;\n this.collapsed = options.collapsed !== undefined ? options.collapsed : defaults.collapsed;\n }\n\n function SortConfig(options) {\n options = options || {};\n\n this.order = options.order || (options.customfunc ? 'asc' : null);\n this.customfunc = options.customfunc;\n }\n\n function ChartConfig(options) {\n options = options || {};\n\n this.enabled = options.enabled || false;\n // type can be: 'LineChart', 'AreaChart', 'ColumnChart', 'BarChart', 'SteppedAreaChart'\n this.type = options.type || 'LineChart';\n }\n\n var Field = module.exports.field = function(options, createSubOptions) {\n\n options = options || {};\n\n // field name\n this.name = options.name;\n\n // shared settings\n this.caption = options.caption || this.name;\n\n // rows & columns settings\n this.sort = new SortConfig(options.sort);\n this.subTotal = new SubTotalConfig(options.subTotal);\n\n // data settings\n var _aggregatefunc;\n var _formatfunc;\n\n this.aggregateFunc = function(func) {\n if (func) {\n _aggregatefunc = aggregation.toAggregateFunc(func);\n } else {\n return _aggregatefunc;\n }\n };\n\n this.formatFunc = function(func) {\n if (func) {\n _formatfunc = func;\n } else {\n return _formatfunc;\n }\n };\n\n this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? utils.isString(options.aggregateFunc) ? options.aggregateFunc : 'custom' : null);\n\n this.aggregateFunc(options.aggregateFunc);\n this.formatFunc(options.formatFunc);\n\n if (createSubOptions !== false) {\n (this.rowSettings = new Field(options.rowSettings, false)).name = this.name;\n (this.columnSettings = new Field(options.columnSettings, false)).name = this.name;\n (this.dataSettings = new Field(options.dataSettings, false)).name = this.name;\n }\n };\n\n module.exports.config = function(config) {\n\n var self = this;\n\n this.dataSource = config.dataSource || [];\n this.canMoveFields = config.canMoveFields !== undefined ? !!config.canMoveFields : true;\n this.dataHeadersLocation = config.dataHeadersLocation === 'columns' ? 'columns' : 'rows';\n this.grandTotal = new GrandTotalConfig(config.grandTotal);\n this.subTotal = new SubTotalConfig(config.subTotal, true);\n this.width = config.width;\n this.height = config.height;\n this.toolbar = config.toolbar;\n this.theme = themeManager;\n this.chartMode = new ChartConfig(config.chartMode);\n\n themeManager.current(config.theme);\n\n this.rowSettings = new Field(config.rowSettings, false);\n this.columnSettings = new Field(config.columnSettings, false);\n this.dataSettings = new Field(config.dataSettings, false);\n\n // datasource field names\n this.dataSourceFieldNames = [];\n // datasource field captions\n this.dataSourceFieldCaptions = [];\n\n this.captionToName = function(caption) {\n var fcaptionIndex = self.dataSourceFieldCaptions.indexOf(caption);\n return fcaptionIndex >= 0 ? self.dataSourceFieldNames[fcaptionIndex] : caption;\n };\n\n this.nameToCaption = function(name) {\n var fnameIndex = self.dataSourceFieldNames.indexOf(name);\n return fnameIndex >= 0 ? self.dataSourceFieldCaptions[fnameIndex] : name;\n };\n\n this.setTheme = function(newTheme) {\n return self.theme.current() !== self.theme.current(newTheme);\n };\n\n this.allFields = (config.fields || []).map(function(fieldconfig) {\n var f = new Field(fieldconfig);\n // map fields names to captions\n self.dataSourceFieldNames.push(f.name);\n self.dataSourceFieldCaptions.push(f.caption);\n return f;\n });\n\n function ensureFieldConfig(obj) {\n if (typeof obj === 'string') {\n return {\n name: self.captionToName(obj)\n };\n }\n return obj;\n }\n\n this.rowFields = (config.rows || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.ROWS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.columnFields = (config.columns || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.COLUMNS, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFields = (config.data || []).map(function(fieldconfig) {\n fieldconfig = ensureFieldConfig(fieldconfig);\n return createfield(self, axe.Type.DATA, fieldconfig, getfield(self.allFields, fieldconfig.name));\n });\n\n this.dataFieldsCount = this.dataFields ? this.dataFields.length || 1 : 1;\n\n var runtimeVisibility = {\n subtotals: {\n rows: self.rowSettings.subTotal.visible !== undefined ? self.rowSettings.subTotal.visible : true,\n columns: self.columnSettings.subTotal.visible !== undefined ? self.columnSettings.subTotal.visible : true\n }\n };\n\n function getfield(axefields, fieldname) {\n var fieldindex = getfieldindex(axefields, fieldname);\n if (fieldindex > -1) {\n return axefields[fieldindex];\n }\n return null;\n }\n\n function getfieldindex(axefields, fieldname) {\n for (var fi = 0; fi < axefields.length; fi++) {\n if (axefields[fi].name === fieldname) {\n return fi;\n }\n }\n return -1;\n }\n\n this.getField = function(fieldname) {\n return getfield(self.allFields, fieldname);\n };\n\n this.getRowField = function(fieldname) {\n return getfield(self.rowFields, fieldname);\n };\n\n this.getColumnField = function(fieldname) {\n return getfield(self.columnFields, fieldname);\n };\n\n this.getDataField = function(fieldname) {\n return getfield(self.dataFields, fieldname);\n };\n\n this.availablefields = function() {\n return self.allFields.filter(function(field) {\n var notequalfield = function notequalfield(otherfield) {\n return field.name !== otherfield.name;\n };\n\n return self.dataFields.every(notequalfield) && self.rowFields.every(notequalfield) && self.columnFields.every(notequalfield);\n });\n };\n\n this.getDataSourceFieldCaptions = function() {\n var row0;\n if (self.dataSource && (row0 = self.dataSource[0])) {\n var fieldNames = utils.ownProperties(row0);\n var headers = [];\n for (var i = 0; i < fieldNames.length; i++) {\n headers.push(self.nameToCaption(fieldNames[i]));\n }\n return headers;\n }\n return null;\n };\n\n this.getPreFilters = function() {\n var prefilters = {};\n if (config.preFilters) {\n utils.forEach(utils.ownProperties(config.preFilters), function(filteredField) {\n var prefilterConfig = config.preFilters[filteredField];\n if (utils.isArray(prefilterConfig)) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(null, null, prefilterConfig, false);\n } else {\n var opname = utils.ownProperties(prefilterConfig)[0];\n if (opname) {\n prefilters[self.captionToName(filteredField)] = new filtering.expressionFilter(opname, prefilterConfig[opname]);\n }\n }\n });\n }\n\n return prefilters;\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n\n var oldaxe, oldposition;\n var newaxe;\n var fieldConfig;\n var defaultFieldConfig = getfield(self.allFields, fieldname);\n\n if (defaultFieldConfig) {\n\n switch (oldaxetype) {\n case axe.Type.ROWS:\n oldaxe = self.rowFields;\n break;\n case axe.Type.COLUMNS:\n oldaxe = self.columnFields;\n break;\n case axe.Type.DATA:\n oldaxe = self.dataFields;\n break;\n default:\n break;\n }\n\n switch (newaxetype) {\n case axe.Type.ROWS:\n newaxe = self.rowFields;\n fieldConfig = self.getRowField(fieldname);\n break;\n case axe.Type.COLUMNS:\n newaxe = self.columnFields;\n fieldConfig = self.getColumnField(fieldname);\n break;\n case axe.Type.DATA:\n newaxe = self.dataFields;\n fieldConfig = self.getDataField(fieldname);\n break;\n default:\n break;\n }\n\n if (oldaxe || newaxe) {\n\n var newAxeSubtotalsState = self.areSubtotalsVisible(newaxetype);\n\n if (oldaxe) {\n oldposition = getfieldindex(oldaxe, fieldname);\n if (oldaxetype === newaxetype) {\n if (oldposition == oldaxe.length - 1 && position == null || oldposition === position - 1) {\n return false;\n }\n }\n oldaxe.splice(oldposition, 1);\n }\n\n var field = createfield(self, newaxetype, fieldConfig, defaultFieldConfig);\n\n if (!newAxeSubtotalsState && field.subTotal.visible !== false) {\n field.subTotal.visible = null;\n }\n\n if (newaxe) {\n if (position != null) {\n newaxe.splice(position, 0, field);\n } else {\n newaxe.push(field);\n }\n }\n\n // update data fields count\n self.dataFieldsCount = self.dataFields ? self.dataFields.length || 1 : 1;\n\n return true;\n }\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n\n var i;\n var axeFields;\n var newState = !self.areSubtotalsVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n runtimeVisibility.subtotals.rows = newState;\n axeFields = self.rowFields;\n } else if (axetype === axe.Type.COLUMNS) {\n runtimeVisibility.subtotals.columns = newState;\n axeFields = self.columnFields;\n } else {\n return false;\n }\n\n newState = newState === false ? null : true;\n for (i = 0; i < axeFields.length; i++) {\n if (axeFields[i].subTotal.visible !== false) {\n axeFields[i].subTotal.visible = newState;\n }\n }\n return true;\n };\n\n this.areSubtotalsVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return runtimeVisibility.subtotals.rows;\n } else if (axetype === axe.Type.COLUMNS) {\n return runtimeVisibility.subtotals.columns;\n } else {\n return null;\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n var newState = !self.isGrandtotalVisible(axetype);\n\n if (axetype === axe.Type.ROWS) {\n self.grandTotal.rowsvisible = newState;\n } else if (axetype === axe.Type.COLUMNS) {\n self.grandTotal.columnsvisible = newState;\n } else {\n return false;\n }\n return true;\n };\n\n this.isGrandtotalVisible = function(axetype) {\n if (axetype === axe.Type.ROWS) {\n return self.grandTotal.rowsvisible;\n } else if (axetype === axe.Type.COLUMNS) {\n return self.grandTotal.columnsvisible;\n } else {\n return false;\n }\n };\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.filtering\": 40,\n \"./orb.themes\": 46,\n \"./orb.utils\": 53\n }],\n 38: [function(_dereq_, module, exports) {\n\n module.exports = function(id, parent, value, field, depth, isRoot, isLeaf) {\n\n var self = this;\n\n this.id = id;\n\n this.parent = parent;\n\n this.value = value;\n\n this.isRoot = isRoot;\n\n this.isLeaf = isLeaf;\n\n this.field = field;\n\n this.depth = depth;\n\n this.values = [];\n\n this.subdimvals = {};\n\n this.rowIndexes = null;\n\n this.getRowIndexes = function(result) {\n if (self.rowIndexes == null) {\n self.rowIndexes = [];\n for (var i = 0; i < self.values.length; i++) {\n self.subdimvals[self.values[i]].getRowIndexes(self.rowIndexes);\n }\n }\n if (result != null) {\n for (var j = 0; j < self.rowIndexes.length; j++) {\n result.push(self.rowIndexes[j]);\n }\n return result;\n } else {\n return self.rowIndexes;\n }\n };\n };\n\n }, {}],\n 39: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n var uiheaders = _dereq_('./orb.ui.header');\n var themeManager = _dereq_('./orb.themes');\n\n var uriHeader = 'data:application/vnd.ms-excel;base64,';\n var docHeader = '' + '' + '' + '' + '' + '';\n var docFooter = '';\n\n module.exports = function(pgridwidget) {\n\n var config = pgridwidget.pgrid.config;\n\n var currTheme = themeManager.current();\n currTheme = currTheme === 'bootstrap' ? 'white' : currTheme;\n var override = currTheme === 'white';\n\n var buttonTextColor = override ? 'black' : 'white';\n var themeColor = themeManager.themes[currTheme];\n var themeFadeout = themeManager.utils.fadeoutColor(themeColor, 0.1);\n\n var buttonStyle = 'style=\"font-weight: bold; color: ' + buttonTextColor + '; background-color: ' + themeColor + ';\" bgcolor=\"' + themeColor + '\"';\n var headerStyle = 'style=\"background-color: ' + themeFadeout + ';\" bgcolor=\"' + themeFadeout + '\"';\n\n function createButtonCell(caption) {\n return '' + caption + '';\n }\n\n function createButtons(buttons, cellsCountBefore, cellsCountAfter, prefix) {\n var i;\n var str = prefix || '';\n for (i = 0; i < cellsCountBefore; i++) {\n str += '';\n }\n\n str += buttons.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n\n for (i = 0; i < cellsCountAfter; i++) {\n str += '';\n }\n return str + '';\n }\n\n var cellsHorizontalCount = Math.max(config.dataFields.length + 1, pgridwidget.layout.pivotTable.width);\n\n var dataFields = createButtons(config.dataFields, 0, cellsHorizontalCount - config.dataFields.length, 'Data');\n\n var sep = '';\n\n var columnFields = createButtons(config.columnFields, pgridwidget.layout.rowHeaders.width, cellsHorizontalCount - (pgridwidget.layout.rowHeaders.width + config.columnFields.length));\n\n var columnHeaders = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.columns.headers.length; i++) {\n var currRow = pgridwidget.columns.headers[i];\n var rowStr = '';\n if (i < pgridwidget.columns.headers.length - 1) {\n for (j = 0; j < pgridwidget.layout.rowHeaders.width; j++) {\n rowStr += '';\n }\n } else {\n rowStr += config.rowFields.reduce(function(tr, field) {\n return tr += createButtonCell(field.caption);\n }, '');\n }\n\n rowStr += currRow.reduce(function(tr, header) {\n var value = header.type === uiheaders.HeaderType.DATA_HEADER ? header.value.caption : header.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n var rowHeadersAndDataCells = function() {\n var str = '';\n var j;\n for (var i = 0; i < pgridwidget.rows.headers.length; i++) {\n var currRow = pgridwidget.rows.headers[i];\n var rowStr = '';\n rowStr += currRow.reduce(function(tr, header) {\n return tr += '' + header.value + '';\n }, '');\n var dataRow = pgridwidget.dataRows[i];\n rowStr += dataRow.reduce(function(tr, dataCell, index) {\n var formatFunc = config.dataFields[index = index % config.dataFields.length].formatFunc;\n var value = dataCell.value == null ? '' : formatFunc ? formatFunc()(dataCell.value) : dataCell.value;\n return tr += '' + value + '';\n }, '');\n str += rowStr + '';\n }\n return str;\n }();\n\n function toBase64(str) {\n return utils.btoa(unescape(encodeURIComponent(str)));\n }\n\n return uriHeader + toBase64(docHeader + '' + dataFields + sep + columnFields + columnHeaders + rowHeadersAndDataCells + '
' + docFooter);\n };\n\n }, {\n \"./orb.themes\": 46,\n \"./orb.ui.header\": 49,\n \"./orb.utils\": 53\n }],\n 40: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n var filtering = module.exports = {\n ALL: '#All#',\n NONE: '#None#',\n BLANK: '#Blank#\"'\n };\n\n filtering.expressionFilter = function(operator, term, staticValue, excludeStatic) {\n var self = this;\n\n this.operator = ops.get(operator);\n this.regexpMode = false;\n this.term = term || null;\n if (this.term && this.operator && this.operator.regexpSupported) {\n if (utils.isRegExp(this.term)) {\n this.regexpMode = true;\n if (!this.term.ignoreCase) {\n this.term = new RegExp(this.term.source, 'i');\n }\n }\n }\n\n this.staticValue = staticValue;\n this.excludeStatic = excludeStatic;\n\n this.test = function(value) {\n if (utils.isArray(self.staticValue)) {\n var found = self.staticValue.indexOf(value) >= 0;\n return self.excludeStatic && !found || !self.excludeStatic && found;\n } else if (self.term) {\n return self.operator.func(value, self.term);\n } else if (self.staticValue === true || self.staticValue === filtering.ALL) {\n return true;\n } else if (self.staticValue === false || self.staticValue === filtering.NONE) {\n return false;\n } else {\n return true;\n }\n };\n\n this.isAlwaysTrue = function() {\n return !(self.term || utils.isArray(self.staticValue) || self.staticValue === filtering.NONE || self.staticValue === false);\n };\n };\n\n var ops = filtering.Operators = {\n get: function get(opname) {\n switch (opname) {\n case ops.MATCH.name:\n return ops.MATCH;\n case ops.NOTMATCH.name:\n return ops.NOTMATCH;\n case ops.EQ.name:\n return ops.EQ;\n case ops.NEQ.name:\n return ops.NEQ;\n case ops.GT.name:\n return ops.GT;\n case ops.GTE.name:\n return ops.GTE;\n case ops.LT.name:\n return ops.LT;\n case ops.LTE.name:\n return ops.LTE;\n default:\n return ops.NONE;\n }\n },\n NONE: null,\n MATCH: {\n name: 'Matches',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) >= 0;\n } else {\n return !!!term;\n }\n },\n regexpSupported: true\n },\n NOTMATCH: {\n name: 'Does Not Match',\n func: function func(value, term) {\n if (value) {\n return value.toString().search(utils.isRegExp(term) ? term : new RegExp(term, 'i')) < 0;\n } else {\n return !!term;\n }\n },\n regexpSupported: true\n },\n EQ: {\n name: '=',\n func: function func(value, term) {\n return value == term;\n },\n regexpSupported: false\n },\n NEQ: {\n name: '<>',\n func: function func(value, term) {\n return value != term;\n },\n regexpSupported: false\n },\n GT: {\n name: '>',\n func: function func(value, term) {\n return value > term;\n },\n regexpSupported: false\n },\n GTE: {\n name: '>=',\n func: function func(value, term) {\n return value >= term;\n },\n regexpSupported: false\n },\n LT: {\n name: '<',\n func: function func(value, term) {\n return value < term;\n },\n regexpSupported: false\n },\n LTE: {\n name: '<=',\n func: function func(value, term) {\n return value <= term;\n },\n regexpSupported: false\n }\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 41: [function(_dereq_, module, exports) {\n\n module.exports.utils = _dereq_('./orb.utils');\n module.exports.pgrid = _dereq_('./orb.pgrid');\n module.exports.pgridwidget = _dereq_('./orb.ui.pgridwidget');\n module.exports.query = _dereq_('./orb.query');\n module.exports['export'] = _dereq_('./orb.export.excel');\n\n }, {\n \"./orb.export.excel\": 39,\n \"./orb.pgrid\": 42,\n \"./orb.query\": 44,\n \"./orb.ui.pgridwidget\": 50,\n \"./orb.utils\": 53\n }],\n 42: [function(_dereq_, module, exports) {\n\n var PubSub = _dereq_('./orb.pubsub'),\n axe = _dereq_('./orb.axe'),\n configuration = _dereq_('./orb.config').config,\n filtering = _dereq_('./orb.filtering'),\n query = _dereq_('./orb.query'),\n utils = _dereq_('./orb.utils');\n\n var pgrid = module.exports = function(config) {\n\n var self = this,\n defaultfield = {\n name: '#undefined#'\n },\n _iCache;\n\n // inherit PubSub\n PubSub.call(this);\n\n this.config = new configuration(config);\n this.filters = self.config.getPreFilters();\n this.filteredDataSource = self.config.dataSource;\n\n this.rows = new axe(self, axe.Type.ROWS);\n this.columns = new axe(self, axe.Type.COLUMNS);\n this.dataMatrix = {};\n\n function refresh(refreshFilters) {\n if (refreshFilters !== false) {\n refreshFilteredDataSource();\n }\n self.rows.update();\n self.columns.update();\n computeValues();\n\n // publish updated event\n self.publish(pgrid.EVENT_UPDATED);\n }\n\n function refreshFilteredDataSource() {\n var filterFields = utils.ownProperties(self.filters);\n if (filterFields.length > 0) {\n self.filteredDataSource = [];\n\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var exclude = false;\n for (var fi = 0; fi < filterFields.length; fi++) {\n var fieldname = filterFields[fi];\n var fieldFilter = self.filters[fieldname];\n\n if (fieldFilter && !fieldFilter.test(row[fieldname])) {\n exclude = true;\n break;\n }\n }\n if (!exclude) {\n self.filteredDataSource.push(row);\n }\n }\n } else {\n self.filteredDataSource = self.config.dataSource;\n }\n }\n\n this.sort = function(axetype, field) {\n if (axetype === axe.Type.ROWS) {\n self.rows.sort(field);\n } else if (axetype === axe.Type.COLUMNS) {\n self.columns.sort(field);\n } else {\n return;\n }\n\n self.publish(pgrid.EVENT_SORT_CHANGED);\n };\n\n this.moveField = function(fieldname, oldaxetype, newaxetype, position) {\n if (self.config.moveField(fieldname, oldaxetype, newaxetype, position)) {\n refresh(false);\n return true;\n }\n return false;\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.filters[fieldname] = new filtering.expressionFilter(operator, term, staticValue, excludeStatic);\n refresh();\n };\n\n this.refreshData = function(data) {\n self.config.dataSource = data;\n refresh();\n };\n\n this.toggleSubtotals = function(axetype) {\n if (self.config.toggleSubtotals(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.toggleGrandtotal = function(axetype) {\n if (self.config.toggleGrandtotal(axetype)) {\n self.publish(pgrid.EVENT_CONFIG_CHANGED);\n }\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.config.areSubtotalsVisible(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.config.isGrandtotalVisible(axetype);\n };\n\n this.getFieldValues = function(field, filterFunc) {\n var values1 = [];\n var values = [];\n var containsBlank = false;\n for (var i = 0; i < self.config.dataSource.length; i++) {\n var row = self.config.dataSource[i];\n var val = row[field];\n if (filterFunc !== undefined) {\n if (filterFunc === true || typeof filterFunc === 'function' && filterFunc(val)) {\n values1.push(val);\n }\n } else {\n if (val != null) {\n values1.push(val);\n } else {\n containsBlank = true;\n }\n }\n }\n if (values1.length > 1) {\n if (utils.isNumber(values1[0]) || utils.isDate(values1[0])) {\n values1.sort(function(a, b) {\n return a ? b ? a - b : 1 : b ? -1 : 0;\n });\n } else {\n values1.sort();\n }\n\n for (var vi = 0; vi < values1.length; vi++) {\n if (vi === 0 || values1[vi] !== values[values.length - 1]) {\n values.push(values1[vi]);\n }\n }\n } else {\n values = values1;\n }\n if (containsBlank) {\n values.unshift(null);\n }\n return values;\n };\n\n this.getFieldFilter = function(field) {\n return self.filters[field];\n };\n\n this.isFieldFiltered = function(field) {\n var filter = self.getFieldFilter(field);\n return filter != null && !filter.isAlwaysTrue();\n };\n\n this.getData = function(field, rowdim, coldim, aggregateFunc) {\n var value;\n if (rowdim && coldim) {\n\n var datafieldName = field || (self.config.dataFields[0] || defaultfield).name;\n var datafield = self.config.getDataField(datafieldName);\n\n if (!datafield || aggregateFunc && datafield.aggregateFunc != aggregateFunc) {\n value = self.calcAggregation(rowdim.isRoot ? null : rowdim.getRowIndexes().slice(0), coldim.isRoot ? null : coldim.getRowIndexes().slice(0), [datafieldName], aggregateFunc)[datafieldName];\n } else {\n if (self.dataMatrix[rowdim.id] && self.dataMatrix[rowdim.id][coldim.id]) {\n value = self.dataMatrix[rowdim.id][coldim.id][datafieldName];\n } else {\n value = null;\n }\n }\n }\n\n return value === undefined ? null : value;\n };\n\n this.calcAggregation = function(rowIndexes, colIndexes, fieldNames, aggregateFunc) {\n return computeValue(rowIndexes, colIndexes, rowIndexes, fieldNames, aggregateFunc);\n };\n\n this.getChartData = function() {\n\n var config = self.config;\n\n function getAxisLabel(axisFields) {\n var str = '';\n for (var ti = 0; ti < axisFields.length; ti++) {\n str += (ti > 0 ? ' - ' : '') + axisFields[ti].caption;\n }\n return str;\n }\n\n var hAxisLabel = getAxisLabel(config.columnFields);\n var vAxisLabel = config.dataFields[0].aggregateFuncName + '(' + config.dataFields[0].caption + ')';\n var legendsLabel = getAxisLabel(config.rowFields);\n\n var rowLeafDimensions = self.rows.flattenValues();\n var colLeafDimensions = self.columns.flattenValues();\n var data = [];\n\n for (var ci = 0; ci < colLeafDimensions.length; ci++) {\n var cdim = colLeafDimensions[ci];\n var currData = [cdim.name];\n for (var rri = 0; rri < rowLeafDimensions.length; rri++) {\n currData.push(self.getData(config.dataFields[0].name, rowLeafDimensions[rri].dim, cdim.dim));\n }\n data.push(currData);\n }\n\n return {\n title: vAxisLabel + ': ' + hAxisLabel + ' by ' + legendsLabel,\n hAxisLabel: hAxisLabel,\n vAxisLabel: vAxisLabel,\n legendsLabel: legendsLabel,\n colNames: rowLeafDimensions.map(function(d) {\n return d.name;\n }),\n dataTable: data\n };\n };\n\n this.query = query(self);\n\n refresh();\n\n function computeValue(rowIndexes, colIndexes, origRowIndexes, fieldNames, aggregateFunc) {\n\n var res = {};\n\n if (self.config.dataFieldsCount > 0) {\n\n var intersection;\n\n if (rowIndexes == null) {\n intersection = colIndexes;\n } else if (colIndexes == null) {\n intersection = rowIndexes;\n } else {\n intersection = [];\n for (var ri = 0; ri < rowIndexes.length; ri++) {\n var rowindex = rowIndexes[ri];\n if (rowindex >= 0) {\n var colrowindex = colIndexes.indexOf(rowindex);\n if (colrowindex >= 0) {\n rowIndexes[ri] = 0 - (rowindex + 2);\n intersection.push(rowindex);\n }\n }\n }\n }\n\n var emptyIntersection = intersection && intersection.length === 0;\n var datasource = self.filteredDataSource;\n var datafield;\n var datafields = [];\n\n if (fieldNames) {\n for (var fieldnameIndex = 0; fieldnameIndex < fieldNames.length; fieldnameIndex++) {\n datafield = self.config.getDataField(fieldNames[fieldnameIndex]);\n if (!aggregateFunc) {\n if (!datafield) {\n datafield = self.config.getField(fieldNames[fieldnameIndex]);\n if (datafield) {\n aggregateFunc = datafield.dataSettings ? datafield.dataSettings.aggregateFunc() : datafield.aggregateFunc();\n }\n } else {\n aggregateFunc = datafield.aggregateFunc();\n }\n }\n\n if (datafield && aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc\n });\n }\n }\n } else {\n for (var datafieldIndex = 0; datafieldIndex < self.config.dataFieldsCount; datafieldIndex++) {\n datafield = self.config.dataFields[datafieldIndex] || defaultfield;\n if (aggregateFunc || datafield.aggregateFunc) {\n datafields.push({\n field: datafield,\n aggregateFunc: aggregateFunc || datafield.aggregateFunc()\n });\n }\n }\n }\n\n for (var dfi = 0; dfi < datafields.length; dfi++) {\n datafield = datafields[dfi];\n // no data\n if (emptyIntersection) {\n res[datafield.field.name] = null;\n } else {\n res[datafield.field.name] = datafield.aggregateFunc(datafield.field.name, intersection || 'all', self.filteredDataSource, origRowIndexes || rowIndexes, colIndexes);\n }\n }\n }\n\n return res;\n }\n\n function computeRowValues(rowDim) {\n\n if (rowDim) {\n var data = {};\n var rid = 'r' + rowDim.id;\n\n // set cached row indexes for current row dimension\n if (_iCache[rid] === undefined) {\n _iCache[rid] = rowDim.isRoot ? null : _iCache[rowDim.parent.id] || rowDim.getRowIndexes();\n }\n\n // calc grand-total cell\n data[self.columns.root.id] = computeValue(rowDim.isRoot ? null : _iCache[rid].slice(0), null);\n\n if (self.columns.dimensionsCount > 0) {\n var p = 0;\n var parents = [self.columns.root];\n\n while (p < parents.length) {\n var parent = parents[p];\n var rowindexes = rowDim.isRoot ? null : parent.isRoot ? _iCache[rid].slice(0) : _iCache['c' + parent.id].slice(0);\n\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n var cid = 'c' + subdim.id;\n\n // set cached row indexes for this column leaf dimension\n if (_iCache[cid] === undefined) {\n _iCache[cid] = _iCache[cid] || subdim.getRowIndexes().slice(0);\n }\n\n data[subdim.id] = computeValue(rowindexes, _iCache[cid], rowDim.isRoot ? null : rowDim.getRowIndexes());\n\n if (!subdim.isLeaf) {\n parents.push(subdim);\n if (rowindexes) {\n _iCache[cid] = [];\n for (var ur = 0; ur < rowindexes.length; ur++) {\n var vr = rowindexes[ur];\n if (vr != -1 && vr < 0) {\n _iCache[cid].push(0 - (vr + 2));\n rowindexes[ur] = -1;\n }\n }\n }\n }\n }\n _iCache['c' + parent.id] = undefined;\n p++;\n }\n }\n\n return data;\n }\n }\n\n function computeValues() {\n self.dataMatrix = {};\n _iCache = {};\n\n // calc grand total row\n self.dataMatrix[self.rows.root.id] = computeRowValues(self.rows.root);\n\n if (self.rows.dimensionsCount > 0) {\n var parents = [self.rows.root];\n var p = 0;\n var parent;\n while (p < parents.length) {\n parent = parents[p];\n // calc children rows\n for (var i = 0; i < parent.values.length; i++) {\n var subdim = parent.subdimvals[parent.values[i]];\n // calc child row\n self.dataMatrix[subdim.id] = computeRowValues(subdim);\n // if row is not a leaf, add it to parents array to process its children\n if (!subdim.isLeaf) {\n parents.push(subdim);\n }\n }\n // next parent\n p++;\n }\n }\n }\n };\n\n // pgrid events\n pgrid.EVENT_UPDATED = 'pgrid:updated';\n pgrid.EVENT_SORT_CHANGED = 'pgrid:sort-changed';\n pgrid.EVENT_CONFIG_CHANGED = 'pgrid:config-changed';\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.config\": 37,\n \"./orb.filtering\": 40,\n \"./orb.pubsub\": 43,\n \"./orb.query\": 44,\n \"./orb.utils\": 53\n }],\n 43: [function(_dereq_, module, exports) {\n\n var utils = _dereq_('./orb.utils');\n\n module.exports = function() {\n var _topics = {};\n\n this.subscribe = function(topic, callback) {\n if (utils.isString(topic) && utils.isFunction(callback)) {\n _topics[topic] = _topics[topic] || [];\n _topics[topic].push(callback);\n }\n };\n\n this.publish = function(topic) {\n if (utils.isString(topic)) {\n utils.forEach(_topics[topic], function(callback) {\n callback.apply(null, [topic].concat(Array.prototype.slice.call(arguments, 1)));\n });\n }\n };\n };\n\n }, {\n \"./orb.utils\": 53\n }],\n 44: [function(_dereq_, module, exports) {\n\n var _typeof2 = _dereq_('babel-runtime/helpers/typeof');\n\n var _typeof3 = _interopRequireDefault(_typeof2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var utils = _dereq_('./orb.utils');\n var axe = _dereq_('./orb.axe');\n var aggregation = _dereq_('./orb.aggregation');\n\n var queryBase = function queryBase(source, query, filters) {\n\n var self = this;\n\n this.source = source;\n this.query = query;\n this.filters = filters;\n\n this.extractResult = function(aggs, options, outerArgs) {\n if (outerArgs.multi === true) {\n var res = {};\n for (var ai = 0; ai < options.multiFieldNames.length; ai++) {\n res[options.multiFieldNames[ai]] = aggs[self.getCaptionName(options.multiFieldNames[ai])];\n }\n return res;\n } else {\n return aggs[outerArgs.datafieldname];\n }\n };\n\n this.measureFunc = function(datafieldname, multi, aggregateFunc, fieldsConfig) {\n\n var outerArgs = {\n datafieldname: self.getCaptionName(datafieldname),\n multi: multi,\n aggregateFunc: aggregateFunc\n };\n\n return function(options) {\n options = self.cleanOptions(options, arguments, outerArgs);\n var aggs = self.compute(options, fieldsConfig, multi);\n return self.extractResult(aggs, options, outerArgs);\n };\n };\n\n this.setDefaultAggFunctions = function(param) {\n\n // if there is a registered field with a name or caption 'val', use 'val_'\n var valname = self.query.val ? 'val_' : 'val';\n self.query[valname] = self.measureFunc(undefined, true, undefined, param);\n\n\n var aggFunctions = utils.ownProperties(aggregation);\n for (var funcIndex = 0; funcIndex < aggFunctions.length; funcIndex++) {\n var funcName = aggFunctions[funcIndex];\n if (funcName !== 'toAggregateFunc') {\n self.query[funcName] = self.measureFunc(undefined, true, aggregation[funcName], param);\n }\n }\n };\n };\n\n var pgridQuery = function pgridQuery(pgrid) {\n\n queryBase.call(this, pgrid, {}, {});\n\n var self = this;\n\n this.getCaptionName = function(caption) {\n return self.source.config.captionToName(caption);\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n if (opts.aggregateFunc) {\n opts.aggregateFunc = aggregation.toAggregateFunc(opts.aggregateFunc);\n }\n\n return opts;\n };\n\n this.setup = function(parameters) {\n var rowFields = self.source.config.rowFields;\n var colFields = self.source.config.columnFields;\n var datafields = self.source.config.dataFields;\n var fIndex;\n\n // row fields setup\n for (fIndex = 0; fIndex < rowFields.length; fIndex++) {\n self.slice(rowFields[fIndex], axe.Type.ROWS, rowFields.length - fIndex);\n }\n\n // column fields setup\n for (fIndex = 0; fIndex < colFields.length; fIndex++) {\n self.slice(colFields[fIndex], axe.Type.COLUMNS, colFields.length - fIndex);\n }\n\n // data fields setup\n for (fIndex = 0; fIndex < datafields.length; fIndex++) {\n var df = datafields[fIndex];\n var dfname = df.name;\n var dfcaption = df.caption || dfname;\n\n self.query[dfname] = self.query[dfcaption] = self.measureFunc(dfname);\n }\n\n if (parameters) {\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n self.query[param](parameters[param]);\n }\n }\n }\n\n self.setDefaultAggFunctions();\n\n return self.query;\n };\n\n this.slice = function(field, axetype, depth) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n var f = {\n name: field.name,\n val: val,\n depth: depth\n };\n (self.filters[axetype] = self.filters[axetype] || []).push(f);\n return self.query;\n };\n };\n\n function filterDimensions(upperDims, filter) {\n return function(dim) {\n return dim.value === filter.val && (!upperDims || upperDims.some(function(upperDim) {\n var parent = dim.parent;\n if (parent) {\n while (parent.depth < upperDim.depth) {\n parent = parent.parent;\n }\n }\n return parent === upperDim;\n }));\n };\n }\n\n this.applyFilters = function(axetype) {\n if (self.filters[axetype]) {\n var sortedFilters = self.filters[axetype].sort(function(f1, f2) {\n return f2.depth - f1.depth;\n });\n\n var currAxe = self.source[axetype === axe.Type.ROWS ? 'rows' : 'columns'];\n var filterIndex = 0;\n var filtered = null;\n while (filterIndex < sortedFilters.length) {\n var filter = sortedFilters[filterIndex];\n filtered = currAxe.dimensionsByDepth[filter.depth].filter(filterDimensions(filtered, filter));\n filterIndex++;\n }\n return filtered;\n }\n return null;\n };\n\n this.compute = function(options) {\n var rowdims = self.applyFilters(axe.Type.ROWS) || [self.source.rows.root];\n var coldims = self.applyFilters(axe.Type.COLUMNS) || [self.source.columns.root];\n\n var aggs;\n\n if (rowdims.length === 1 && coldims.length === 1) {\n aggs = {};\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n aggs[options.fieldNames[ai]] = self.source.getData(options.fieldNames[ai], rowdims[0], coldims[0], options.aggregateFunc);\n }\n } else {\n var rowIndexes = [];\n var colIndexes = [];\n\n for (var rdi = 0; rdi < rowdims.length; rdi++) {\n rowIndexes = rowIndexes.concat(rowdims[rdi].getRowIndexes());\n }\n for (var cdi = 0; cdi < coldims.length; cdi++) {\n colIndexes = colIndexes.concat(coldims[cdi].getRowIndexes());\n }\n\n aggs = self.source.calcAggregation(rowIndexes, colIndexes, options.fieldNames, options.aggregateFunc);\n }\n\n return aggs;\n };\n };\n\n var arrayQuery = function arrayQuery(array) {\n\n queryBase.call(this, array, {}, []);\n\n var self = this;\n var captionToName = {};\n\n this.setCaptionName = function(caption, name) {\n captionToName[caption || name] = name;\n };\n\n this.getCaptionName = function(caption) {\n return captionToName[caption] || caption;\n };\n\n this.cleanOptions = function(options, innerArgs, outerArgs) {\n var opts = {\n fieldNames: []\n };\n\n if (outerArgs.multi === true) {\n if (options && (typeof options === 'undefined' ? 'undefined' : (0, _typeof3.default)(options)) === 'object') {\n opts.aggregateFunc = options.aggregateFunc;\n opts.multiFieldNames = options.fields;\n } else {\n opts.aggregateFunc = outerArgs.aggregateFunc;\n opts.multiFieldNames = innerArgs;\n }\n\n for (var ai = 0; ai < opts.multiFieldNames.length; ai++) {\n opts.fieldNames.push(self.getCaptionName(opts.multiFieldNames[ai]));\n }\n } else {\n opts.aggregateFunc = options || outerArgs.aggregateFunc;\n opts.fieldNames.push(outerArgs.datafieldname);\n }\n\n return opts;\n };\n\n this.setup = function(fieldsConfig) {\n\n self.query.slice = function(field, val) {\n var f = {\n name: field,\n val: val\n };\n self.filters.push(f);\n return self.query;\n };\n\n if (fieldsConfig) {\n\n var fieldNames = utils.ownProperties(fieldsConfig);\n\n for (var fi = 0; fi < fieldNames.length; fi++) {\n var fname = fieldNames[fi];\n var f = fieldsConfig[fname];\n var fcaption = f.caption || f.name;\n f.name = fname;\n\n self.setCaptionName(fcaption, fname);\n\n if (f.toAggregate) {\n self.query[fname] = self.query[fcaption] = self.measureFunc(fname, false, f.aggregateFunc);\n } else {\n self.slice(f);\n }\n }\n }\n\n self.setDefaultAggFunctions(fieldsConfig);\n\n return self.query;\n };\n\n this.slice = function(field) {\n self.query[field.name] = self.query[field.caption || field.name] = function(val) {\n return self.query.slice(field.name, val);\n };\n };\n\n this.applyFilters = function() {\n var rowIndexes = [];\n\n for (var i = 0; i < self.source.length; i++) {\n var row = self.source[i];\n var include = true;\n for (var j = 0; j < self.filters.length; j++) {\n var filter = self.filters[j];\n if (row[filter.name] !== filter.val) {\n include = false;\n break;\n }\n }\n if (include) {\n rowIndexes.push(i);\n }\n }\n\n return rowIndexes;\n };\n\n this.compute = function(options, fieldsConfig, multi) {\n var rowIndexes = self.applyFilters();\n\n var aggs = {};\n\n for (var ai = 0; ai < options.fieldNames.length; ai++) {\n var datafield = options.fieldNames[ai];\n var aggFunc = aggregation.toAggregateFunc(multi === true ? options.aggregateFunc || (fieldsConfig && fieldsConfig[datafield] ? fieldsConfig[datafield].aggregateFunc : undefined) : options.aggregateFunc);\n\n aggs[datafield] = aggFunc(datafield, rowIndexes || 'all', self.source, rowIndexes, null);\n }\n\n return aggs;\n };\n };\n\n module.exports = function(source, fieldsConfig) {\n if (utils.isArray(source)) {\n return new arrayQuery(source).setup(fieldsConfig);\n } else {\n // assume it's a pgrid\n return function(parameters) {\n return new pgridQuery(source).setup(parameters);\n };\n }\n };\n\n }, {\n \"./orb.aggregation\": 35,\n \"./orb.axe\": 36,\n \"./orb.utils\": 53,\n \"babel-runtime/helpers/typeof\": 3\n }],\n 45: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n var states = {};\n\n this.set = function(key, state) {\n states[key] = state;\n };\n\n this.get = function(key) {\n return states[key];\n };\n };\n\n }, {}],\n 46: [function(_dereq_, module, exports) {\n\n module.exports = function() {\n\n var currentTheme = 'blue';\n var themeManager = {};\n\n function isBootstrap() {\n return currentTheme === 'bootstrap';\n }\n\n themeManager.themes = {\n red: '#C72C48',\n blue: '#5bc0de',\n green: '#3fb618',\n orange: '#df691a',\n flower: '#A74AC7',\n gray: '#808080',\n black: '#000000',\n white: '#FFFFFF',\n rfi: '#9F313A'\n };\n\n themeManager.current = function(newTheme) {\n if (newTheme) {\n currentTheme = themeManager.validateTheme(newTheme);\n }\n\n return currentTheme;\n };\n\n themeManager.validateTheme = function(themeName) {\n themeName = (themeName || '').toString().trim();\n if (!themeManager.themes[themeName] && themeName !== 'bootstrap') {\n return 'blue';\n } else {\n return themeName;\n }\n };\n\n themeManager.getPivotClasses = function() {\n return {\n container: 'orb-container orb-' + currentTheme,\n table: 'orb' + (isBootstrap() ? ' table' : '')\n };\n };\n\n themeManager.getButtonClasses = function() {\n return {\n pivotButton: 'fld-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n orbButton: 'orb-btn' + (isBootstrap() ? ' btn btn-default btn-xs' : ''),\n scrollBar: isBootstrap() ? ' btn btn-default btn-xs' : ''\n };\n };\n\n themeManager.getFilterClasses = function() {\n return {\n container: 'orb-' + currentTheme + ' orb fltr-cntnr'\n };\n };\n\n themeManager.getGridClasses = function() {\n return {\n table: isBootstrap() ? 'table table-condensed' : 'orb-table'\n };\n };\n\n themeManager.getDialogClasses = function(visible) {\n var classes = {\n overlay: 'orb-overlay orb-overlay-' + (visible ? 'visible' : 'hidden') + ' orb-' + currentTheme,\n dialog: 'orb-dialog',\n content: '',\n header: 'orb-dialog-header',\n title: '',\n body: 'orb-dialog-body'\n };\n\n if (isBootstrap()) {\n classes.overlay += ' modal';\n classes.dialog += ' modal-dialog';\n classes.content = 'modal-content';\n classes.header += ' modal-header';\n classes.title = 'modal-title';\n classes.body += ' modal-body';\n }\n return classes;\n };\n\n var utils = themeManager.utils = {\n hexToRgb: function hexToRgb(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n },\n rgbaToHex: function rgbaToHex(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(matches[1], alpha) + utils.applyAlphaAndToHex(matches[2], alpha) + utils.applyAlphaAndToHex(matches[3], alpha);\n }\n return null;\n },\n rgbaToHexA: function rgbaToHexA(rgba) {\n var matches = rgba.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*\\)/);\n if (matches) {\n var alpha = parseFloat(matches[4]);\n return '#' + utils.applyAlphaAndToHex(0, alpha) + utils.applyAlphaAndToHex(matches[1], 1) + utils.applyAlphaAndToHex(matches[2], 1) + utils.applyAlphaAndToHex(matches[3], 1);\n }\n return null;\n },\n applyAlphaAndToHex: function applyAlphaAndToHex(value, alpha) {\n return (Math.floor(alpha * parseInt(value) + (1 - alpha) * 255) + 256).toString(16).substr(1, 2);\n },\n fadeoutColor: function fadeoutColor(color, alpha) {\n color = utils.hexToRgb(color);\n return '#' + utils.applyAlphaAndToHex(color.r, alpha) + utils.applyAlphaAndToHex(color.g, alpha) + utils.applyAlphaAndToHex(color.b, alpha);\n }\n };\n\n return themeManager;\n }();\n\n }, {}],\n 47: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(axeModel) {\n\n var self = this;\n\n\n this.axe = axeModel;\n\n\n this.headers = [];\n\n this.dataFieldsCount = function() {\n return self.axe.pgrid.config.dataHeadersLocation === 'columns' && self.axe.type === axe.Type.COLUMNS || self.axe.pgrid.config.dataHeadersLocation === 'rows' && self.axe.type === axe.Type.ROWS ? self.axe.pgrid.config.dataFieldsCount : 1;\n };\n\n this.isMultiDataFields = function() {\n return self.dataFieldsCount() > 1;\n };\n\n this.toggleFieldExpansion = function(field, newState) {\n var toToggle = [];\n var allExpanded = true;\n var hIndex;\n\n for (var i = 0; i < this.headers.length; i++) {\n for (hIndex = 0; hIndex < this.headers[i].length; hIndex++) {\n var header = this.headers[i][hIndex];\n if (header.type === uiheaders.HeaderType.SUB_TOTAL && (field == null || header.dim.field.name == field.name)) {\n toToggle.push(header);\n allExpanded = allExpanded && header.expanded;\n }\n }\n }\n\n if (newState !== undefined) {\n allExpanded = !newState;\n }\n\n if (toToggle.length > 0) {\n for (hIndex = 0; hIndex < toToggle.length; hIndex++) {\n if (allExpanded) {\n toToggle[hIndex].collapse();\n } else {\n toToggle[hIndex].expand();\n }\n }\n return true;\n }\n\n return false;\n };\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.header\": 49\n }],\n 48: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(columnsAxe) {\n\n var self = this;\n\n axeUi.call(self, columnsAxe);\n\n this.leafsHeaders = null;\n\n this.build = function() {\n self.headers = [];\n\n if (self.axe != null) {\n // Fill columns layout infos\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.columnsvisible) {\n for (var depth = self.axe.root.depth; depth > 1; depth--) {\n self.headers.push([]);\n getUiInfo(depth, self.headers);\n }\n\n if (self.axe.pgrid.config.grandTotal.columnsvisible) {\n // add grandtotal header\n (self.headers[0] = self.headers[0] || []).push(new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount()));\n }\n }\n\n if (self.headers.length === 0) {\n self.headers.push([new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n // generate leafs headers\n generateLeafsHeaders();\n }\n };\n\n function generateLeafsHeaders() {\n\n var leafsHeaders = [];\n\n function pushsubtotal(pheader) {\n if (pheader && pheader.dim.field.subTotal.visible) {\n leafsHeaders.push(pheader.subtotalHeader);\n }\n }\n\n if (self.headers.length > 0) {\n // last headers row\n var infos = self.headers[self.headers.length - 1];\n var header = infos[0];\n\n if (header) {\n var currparent,\n prevpar = header.parent;\n\n for (var i = 0; i < infos.length; i++) {\n header = infos[i];\n currparent = header.parent;\n // if current header parent is different than previous header parent,\n // add previous parent\n if (currparent != prevpar) {\n pushsubtotal(prevpar);\n if (currparent != null) {\n // walk up parent hierarchy and add grand parents if different\n // than current header grand parents\n var grandpar = currparent.parent;\n var prevgrandpar = prevpar ? prevpar.parent : null;\n while (grandpar != prevgrandpar && prevgrandpar != null) {\n pushsubtotal(prevgrandpar);\n grandpar = grandpar ? grandpar.parent : null;\n prevgrandpar = prevgrandpar ? prevgrandpar.parent : null;\n }\n }\n // update previous parent variable\n prevpar = currparent;\n }\n // push current header\n leafsHeaders.push(infos[i]);\n\n // if it's the last header, add all of its parents up to the top\n if (i === infos.length - 1) {\n while (prevpar != null) {\n pushsubtotal(prevpar);\n prevpar = prevpar.parent;\n }\n }\n }\n // grandtotal is visible for columns and if there is more than one dimension in this axe\n if (self.axe.pgrid.config.grandTotal.columnsvisible && self.axe.dimensionsCount > 1) {\n // push also grand total header\n leafsHeaders.push(self.headers[0][self.headers[0].length - 1]);\n }\n }\n }\n\n // add data headers if more than 1 data field and they willbe the leaf headers\n if (self.isMultiDataFields()) {\n self.leafsHeaders = [];\n for (var leafIndex = 0; leafIndex < leafsHeaders.length; leafIndex++) {\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n self.leafsHeaders.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], leafsHeaders[leafIndex]));\n }\n }\n self.headers.push(self.leafsHeaders);\n } else {\n self.leafsHeaders = leafsHeaders;\n }\n }\n\n this.build();\n\n\n function getUiInfo(depth, headers) {\n\n var infos = headers[headers.length - 1];\n var parents = self.axe.root.depth === depth ? [null] : headers[self.axe.root.depth - depth - 1].filter(function(p) {\n return p.type !== uiheaders.HeaderType.SUB_TOTAL;\n });\n\n for (var pi = 0; pi < parents.length; pi++) {\n\n var parent = parents[pi];\n var parentDim = parent == null ? self.axe.root : parent.dim;\n\n for (var di = 0; di < parentDim.values.length; di++) {\n\n var subvalue = parentDim.values[di];\n var subdim = parentDim.subdimvals[subvalue];\n\n var subtotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subtotalHeader = new uiheaders.header(axe.Type.COLUMNS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subtotalHeader = null;\n }\n\n var header = new uiheaders.header(axe.Type.COLUMNS, null, subdim, parent, self.dataFieldsCount(), subtotalHeader);\n infos.push(header);\n\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n infos.push(subtotalHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 49: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe'),\n state = new(_dereq_('./orb.state'))();\n\n var HeaderType = module.exports.HeaderType = {\n EMPTY: 1,\n DATA_HEADER: 2,\n DATA_VALUE: 3,\n FIELD_BUTTON: 4,\n INNER: 5,\n WRAPPER: 6,\n SUB_TOTAL: 7,\n GRAND_TOTAL: 8,\n getHeaderClass: function getHeaderClass(headerType, axetype) {\n var cssclass = axetype === axe.Type.ROWS ? 'header-row' : axetype === axe.Type.COLUMNS ? 'header-col' : '';\n switch (headerType) {\n case HeaderType.EMPTY:\n case HeaderType.FIELD_BUTTON:\n cssclass = 'empty';\n break;\n case HeaderType.INNER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.WRAPPER:\n cssclass = 'header ' + cssclass;\n break;\n case HeaderType.SUB_TOTAL:\n cssclass = 'header header-st ' + cssclass;\n break;\n case HeaderType.GRAND_TOTAL:\n cssclass = 'header header-gt ' + cssclass;\n break;\n }\n\n return cssclass;\n },\n getCellClass: function getCellClass(rowHeaderType, colHeaderType) {\n var cssclass = '';\n switch (rowHeaderType) {\n case HeaderType.GRAND_TOTAL:\n cssclass = 'cell-gt';\n break;\n case HeaderType.SUB_TOTAL:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else {\n cssclass = 'cell-st';\n }\n break;\n default:\n if (colHeaderType === HeaderType.GRAND_TOTAL) {\n cssclass = 'cell-gt';\n } else if (colHeaderType === HeaderType.SUB_TOTAL) {\n cssclass = 'cell-st';\n } else {\n cssclass = '';\n }\n }\n return cssclass;\n }\n };\n\n function CellBase(options) {\n\n this.axetype = options.axetype;\n\n this.type = options.type;\n\n this.template = options.template;\n\n this.value = options.value;\n\n this.expanded = true;\n\n this.cssclass = options.cssclass;\n\n this.hspan = options.hspan || function() {\n return 1;\n };\n\n this.vspan = options.vspan || function() {\n return 1;\n };\n\n this.visible = options.isvisible || function() {\n return true;\n };\n\n this.key = this.axetype + this.type + this.value;\n this.getState = function() {\n return state.get(this.key);\n };\n this.setState = function(newState) {\n state.set(this.key, newState);\n };\n }\n\n module.exports.header = function(axetype, headerType, dim, parent, datafieldscount, subtotalHeader) {\n\n var self = this;\n\n var hspan;\n var vspan;\n var value;\n\n var isRowsAxe = axetype === axe.Type.ROWS;\n headerType = headerType || (dim.depth === 1 ? HeaderType.INNER : HeaderType.WRAPPER);\n\n switch (headerType) {\n case HeaderType.GRAND_TOTAL:\n value = 'Grand Total';\n hspan = isRowsAxe ? dim.depth - 1 || 1 : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth - 1 || 1;\n break;\n case HeaderType.SUB_TOTAL:\n value = dim.value;\n hspan = isRowsAxe ? dim.depth : datafieldscount;\n vspan = isRowsAxe ? datafieldscount : dim.depth;\n break;\n default:\n value = dim.value;\n hspan = isRowsAxe ? 1 : null;\n vspan = isRowsAxe ? null : 1;\n break;\n }\n\n CellBase.call(this, {\n axetype: axetype,\n type: headerType,\n template: isRowsAxe ? 'cell-template-row-header' : 'cell-template-column-header',\n value: value,\n cssclass: HeaderType.getHeaderClass(headerType, axetype),\n hspan: hspan != null ? function() {\n return hspan;\n } : calcSpan,\n vspan: vspan != null ? function() {\n return vspan;\n } : calcSpan,\n isvisible: isParentExpanded\n });\n\n this.subtotalHeader = subtotalHeader;\n this.parent = parent;\n this.subheaders = [];\n this.dim = dim;\n this.expanded = this.getState() ? this.getState().expanded : headerType !== HeaderType.SUB_TOTAL || !dim.field.subTotal.collapsed;\n\n this.expand = function() {\n self.expanded = true;\n this.setState({\n expanded: self.expanded\n });\n };\n this.collapse = function() {\n self.expanded = false;\n this.setState({\n expanded: self.expanded\n });\n };\n\n if (parent != null) {\n parent.subheaders.push(this);\n }\n\n function isParentExpanded() {\n if (self.type === HeaderType.SUB_TOTAL) {\n var hparent = self.parent;\n while (hparent != null) {\n if (hparent.subtotalHeader && !hparent.subtotalHeader.expanded) {\n return false;\n }\n hparent = hparent.parent;\n }\n return true;\n } else {\n\n var isexpanded = self.dim.isRoot || self.dim.isLeaf || !self.dim.field.subTotal.visible || self.subtotalHeader.expanded;\n if (!isexpanded) {\n return false;\n }\n\n var par = self.parent;\n while (par != null && (!par.dim.field.subTotal.visible || par.subtotalHeader != null && par.subtotalHeader.expanded)) {\n par = par.parent;\n }\n return par == null || par.subtotalHeader == null ? isexpanded : par.subtotalHeader.expanded;\n }\n }\n\n function calcSpan(ignoreVisibility) {\n var tspan = 0;\n var subSpan;\n var addone = false;\n\n if (isRowsAxe || ignoreVisibility || self.visible()) {\n if (!self.dim.isLeaf) {\n // subdimvals 'own' properties are the set of values for this dimension\n if (self.subheaders.length > 0) {\n for (var i = 0; i < self.subheaders.length; i++) {\n var subheader = self.subheaders[i];\n // if its not an array\n if (!subheader.dim.isLeaf) {\n subSpan = isRowsAxe ? subheader.vspan() : subheader.hspan();\n tspan += subSpan;\n if (i === 0 && subSpan === 0) {\n addone = true;\n }\n } else {\n tspan += datafieldscount;\n }\n }\n } else {\n tspan += datafieldscount;\n }\n } else {\n return datafieldscount;\n }\n return tspan + (addone ? 1 : 0);\n }\n return tspan;\n }\n };\n\n module.exports.dataHeader = function(datafield, parent) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_HEADER,\n template: 'cell-template-dataheader',\n value: datafield,\n cssclass: HeaderType.getHeaderClass(parent.type, parent.axetype),\n isvisible: parent.visible\n });\n\n this.parent = parent;\n };\n\n module.exports.dataCell = function(pgrid, isvisible, rowinfo, colinfo) {\n\n this.rowDimension = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.dim : rowinfo.dim;\n this.columnDimension = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.dim : colinfo.dim;\n this.rowType = rowinfo.type === HeaderType.DATA_HEADER ? rowinfo.parent.type : rowinfo.type;\n this.colType = colinfo.type === HeaderType.DATA_HEADER ? colinfo.parent.type : colinfo.type;\n\n this.datafield = pgrid.config.dataFieldsCount > 1 ? pgrid.config.dataHeadersLocation === 'rows' ? rowinfo.value : colinfo.value : pgrid.config.dataFields[0];\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.DATA_VALUE,\n template: 'cell-template-datavalue',\n value: pgrid.getData(this.datafield ? this.datafield.name : null, this.rowDimension, this.columnDimension),\n cssclass: 'cell ' + HeaderType.getCellClass(this.rowType, this.colType),\n isvisible: isvisible\n });\n };\n\n module.exports.buttonCell = function(field) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.FIELD_BUTTON,\n template: 'cell-template-fieldbutton',\n value: field,\n cssclass: HeaderType.getHeaderClass(HeaderType.FIELD_BUTTON)\n });\n };\n\n module.exports.emptyCell = function(_hspan, _vspan) {\n\n CellBase.call(this, {\n axetype: null,\n type: HeaderType.EMPTY,\n template: 'cell-template-empty',\n value: null,\n cssclass: HeaderType.getHeaderClass(HeaderType.EMPTY),\n hspan: function hspan() {\n return _hspan;\n },\n vspan: function vspan() {\n return _vspan;\n }\n });\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.state\": 45\n }],\n 50: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n React = _dereq_('react'),\n axe = _dereq_('./orb.axe'),\n pgrid = _dereq_('./orb.pgrid'),\n uiheaders = _dereq_('./orb.ui.header'),\n uirows = _dereq_('./orb.ui.rows'),\n uicols = _dereq_('./orb.ui.cols'),\n Dialog = _dereq_('./react/orb.react.Dialog.jsx'),\n PivotChart = _dereq_('./react/orb.react.PivotChart.jsx'),\n PivotTable = _dereq_('./react/orb.react.PivotTable.jsx'),\n Grid = _dereq_('./react/orb.react.Grid.jsx');\n\n module.exports = function(config) {\n\n var self = this;\n var renderElement;\n var pivotComponent;\n var dialog = Dialog.create();\n\n\n this.pgrid = new pgrid(config);\n\n\n this.rows = null;\n\n this.columns = null;\n\n\n this.dataRows = [];\n\n this.layout = {\n rowHeaders: {\n\n width: null,\n\n height: null\n },\n columnHeaders: {\n\n width: null,\n\n height: null\n },\n pivotTable: {\n\n width: null,\n\n height: null\n }\n };\n\n this.expandRow = function(cell) {\n cell.expand();\n this.render();\n };\n\n this.collapseRow = function(cell) {\n cell.subtotalHeader.collapse();\n this.render();\n };\n\n this.sort = function(axetype, field) {\n self.pgrid.sort(axetype, field);\n };\n\n this.refreshData = function(data) {\n self.pgrid.refreshData(data);\n };\n\n this.applyFilter = function(fieldname, operator, term, staticValue, excludeStatic) {\n self.pgrid.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n };\n\n this.moveField = function(field, oldAxeType, newAxeType, position) {\n self.pgrid.moveField(field, oldAxeType, newAxeType, position);\n };\n\n this.toggleFieldExpansion = function(axetype, field, newState) {\n var axeToExpand = axetype === axe.Type.ROWS ? self.rows : axetype === axe.Type.COLUMNS ? self.columns : null;\n\n if (axeToExpand && axeToExpand.toggleFieldExpansion(field, newState)) {\n self.render();\n }\n };\n\n this.toggleSubtotals = function(axetype) {\n self.pgrid.toggleSubtotals(axetype);\n };\n\n this.areSubtotalsVisible = function(axetype) {\n return self.pgrid.areSubtotalsVisible(axetype);\n };\n\n this.toggleGrandtotal = function(axetype) {\n self.pgrid.toggleGrandtotal(axetype);\n };\n\n this.isGrandtotalVisible = function(axetype) {\n return self.pgrid.isGrandtotalVisible(axetype);\n };\n\n this.changeTheme = function(newTheme) {\n pivotComponent.changeTheme(newTheme);\n };\n\n this.render = function(element) {\n renderElement = element || renderElement;\n if (renderElement) {\n var pivotTableFactory = React.createFactory(self.pgrid.config.chartMode.enabled ? PivotChart : PivotTable);\n var pivottable = pivotTableFactory({\n pgridwidget: self\n });\n\n pivotComponent = ReactDOM.render(pivottable, renderElement);\n }\n };\n\n this.drilldown = function(dataCell, pivotId) {\n if (dataCell) {\n var colIndexes = dataCell.columnDimension.getRowIndexes();\n var data = dataCell.rowDimension.getRowIndexes().filter(function(index) {\n return colIndexes.indexOf(index) >= 0;\n }).map(function(index) {\n return self.pgrid.filteredDataSource[index];\n });\n\n var title;\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL && dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = 'Grand total';\n } else {\n if (dataCell.rowType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.columnDimension.value + '/Grand total ';\n } else if (dataCell.colType === uiheaders.HeaderType.GRAND_TOTAL) {\n title = dataCell.rowDimension.value + '/Grand total ';\n } else {\n title = dataCell.rowDimension.value + '/' + dataCell.columnDimension.value;\n }\n }\n\n dialog.show({\n title: title,\n comp: {\n type: Grid,\n props: {\n headers: self.pgrid.config.getDataSourceFieldCaptions(),\n data: data,\n theme: self.pgrid.config.theme\n }\n },\n theme: self.pgrid.config.theme,\n style: pivotComponent.fontStyle\n });\n }\n };\n\n function init() {\n self.pgrid.subscribe(pgrid.EVENT_UPDATED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_SORT_CHANGED, buildUiAndRender);\n self.pgrid.subscribe(pgrid.EVENT_CONFIG_CHANGED, buildUiAndRender);\n\n buildUi();\n }\n\n function buildUi() {\n\n // build row and column headers\n self.rows = new uirows(self.pgrid.rows);\n self.columns = new uicols(self.pgrid.columns);\n\n var rowsHeaders = self.rows.headers;\n var columnsLeafHeaders = self.columns.leafsHeaders;\n\n // set control layout infos\n self.layout = {\n rowHeaders: {\n width: (self.pgrid.rows.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'rows' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0),\n height: rowsHeaders.length\n },\n columnHeaders: {\n width: self.columns.leafsHeaders.length,\n height: (self.pgrid.columns.fields.length || 1) + (self.pgrid.config.dataHeadersLocation === 'columns' && self.pgrid.config.dataFieldsCount > 1 ? 1 : 0)\n }\n };\n\n self.layout.pivotTable = {\n width: self.layout.rowHeaders.width + self.layout.columnHeaders.width,\n height: self.layout.rowHeaders.height + self.layout.columnHeaders.height\n };\n\n var dataRows = [];\n var arr;\n\n function createVisibleFunc(rowvisible, colvisible) {\n return function() {\n return rowvisible() && colvisible();\n };\n }\n if (rowsHeaders.length > 0) {\n for (var ri = 0; ri < rowsHeaders.length; ri++) {\n var rowHeadersRow = rowsHeaders[ri];\n var rowLeafHeader = rowHeadersRow[rowHeadersRow.length - 1];\n\n arr = [];\n for (var colHeaderIndex = 0; colHeaderIndex < columnsLeafHeaders.length; colHeaderIndex++) {\n var columnLeafHeader = columnsLeafHeaders[colHeaderIndex];\n var isvisible = createVisibleFunc(rowLeafHeader.visible, columnLeafHeader.visible);\n arr[colHeaderIndex] = new uiheaders.dataCell(self.pgrid, isvisible, rowLeafHeader, columnLeafHeader);\n }\n dataRows.push(arr);\n }\n }\n self.dataRows = dataRows;\n }\n\n function buildUiAndRender() {\n buildUi();\n self.render();\n }\n\n init();\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.pgrid\": 42,\n \"./orb.ui.cols\": 48,\n \"./orb.ui.header\": 49,\n \"./orb.ui.rows\": 51,\n \"./react/orb.react.Dialog.jsx\": 55,\n \"./react/orb.react.Grid.jsx\": 62,\n \"./react/orb.react.PivotChart.jsx\": 65,\n \"./react/orb.react.PivotTable.jsx\": 74,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 51: [function(_dereq_, module, exports) {\n\n var axe = _dereq_('./orb.axe');\n var axeUi = _dereq_('./orb.ui.axe');\n var uiheaders = _dereq_('./orb.ui.header');\n\n module.exports = function(rowsAxe) {\n\n var self = this;\n\n axeUi.call(self, rowsAxe);\n\n this.build = function() {\n var headers = [];\n var grandtotalHeader;\n\n if (self.axe != null) {\n if (self.axe.root.values.length > 0 || self.axe.pgrid.config.grandTotal.rowsvisible) {\n headers.push([]);\n\n // Fill Rows layout infos\n getUiInfo(headers, self.axe.root);\n\n if (self.axe.pgrid.config.grandTotal.rowsvisible) {\n var lastrow = headers[headers.length - 1];\n grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.GRAND_TOTAL, self.axe.root, null, self.dataFieldsCount());\n if (lastrow.length === 0) {\n lastrow.push(grandtotalHeader);\n } else {\n headers.push([grandtotalHeader]);\n }\n }\n }\n\n if (headers.length === 0) {\n headers.push([grandtotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.INNER, self.axe.root, null, self.dataFieldsCount())]);\n }\n\n if (grandtotalHeader) {\n // add grand-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(headers, grandtotalHeader);\n }\n }\n self.headers = headers;\n };\n\n this.build();\n\n function addDataHeaders(infos, parent) {\n if (self.isMultiDataFields()) {\n var lastInfosArray = infos[infos.length - 1];\n for (var datafieldindex = 0; datafieldindex < self.dataFieldsCount(); datafieldindex++) {\n lastInfosArray.push(new uiheaders.dataHeader(self.axe.pgrid.config.dataFields[datafieldindex], parent));\n if (datafieldindex < self.dataFieldsCount() - 1) {\n infos.push(lastInfosArray = []);\n }\n }\n }\n }\n\n\n function getUiInfo(infos, dimension) {\n if (dimension.values.length > 0) {\n\n var infosMaxIndex = infos.length - 1;\n var lastInfosArray = infos[infosMaxIndex];\n var parent = lastInfosArray.length > 0 ? lastInfosArray[lastInfosArray.length - 1] : null;\n\n for (var valIndex = 0; valIndex < dimension.values.length; valIndex++) {\n var subvalue = dimension.values[valIndex];\n var subdim = dimension.subdimvals[subvalue];\n\n var subTotalHeader;\n if (!subdim.isLeaf && subdim.field.subTotal.visible) {\n subTotalHeader = new uiheaders.header(axe.Type.ROWS, uiheaders.HeaderType.SUB_TOTAL, subdim, parent, self.dataFieldsCount());\n } else {\n subTotalHeader = null;\n }\n\n var newHeader = new uiheaders.header(axe.Type.ROWS, null, subdim, parent, self.dataFieldsCount(), subTotalHeader);\n\n if (valIndex > 0) {\n infos.push(lastInfosArray = []);\n }\n\n lastInfosArray.push(newHeader);\n\n if (!subdim.isLeaf) {\n getUiInfo(infos, subdim);\n if (subdim.field.subTotal.visible) {\n infos.push([subTotalHeader]);\n\n // add sub-total data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, subTotalHeader);\n }\n } else {\n // add data headers if more than 1 data field and they will be the leaf headers\n addDataHeaders(infos, newHeader);\n }\n }\n }\n }\n };\n\n }, {\n \"./orb.axe\": 36,\n \"./orb.ui.axe\": 47,\n \"./orb.ui.header\": 49\n }],\n 52: [function(_dereq_, module, exports) {\n\n module.exports.removeClass = function(element, classname) {\n if (element && classname) {\n while (element.className.indexOf(classname) >= 0) {\n element.className = element.className.replace(classname, '');\n }\n }\n };\n\n module.exports.addClass = function(element, classname) {\n if (element && classname) {\n if (element.className.indexOf(classname) < 0) {\n element.className += ' ' + classname;\n }\n }\n };\n\n module.exports.getOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n x: rect.left,\n y: rect.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getParentOffset = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n var rectParent = element.parentNode != null ? element.parentNode.getBoundingClientRect() : {\n top: 0,\n left: 0\n };\n return {\n x: rect.left - rectParent.left,\n y: rect.top - rectParent.top\n };\n }\n return {\n x: 0,\n y: 0\n };\n };\n\n module.exports.getSize = function(element) {\n if (element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return {\n width: 0,\n height: 0\n };\n };\n\n var reHyphenToUcase = /\\-(\\w)/g;\n\n function replaceHyphenByUcase(val) {\n return val.replace(reHyphenToUcase, function(m, m1) {\n return m1.toUpperCase();\n });\n }\n\n module.exports.getStyle = function(element, styleProps, keepString) {\n var values = [];\n if (element && styleProps) {\n var currStyle, f, fixProp;\n if (element.currentStyle) {\n currStyle = element.currentStyle;\n f = function f(prop) {\n return currStyle[prop];\n };\n fixProp = true;\n } else if (window && window.getComputedStyle) {\n currStyle = window.getComputedStyle(element, null);\n f = function f(prop) {\n return currStyle.getPropertyValue(prop);\n };\n }\n\n for (var i = 0; i < styleProps.length; i++) {\n var val = f(fixProp ? replaceHyphenByUcase(styleProps[i]) : styleProps[i]);\n values.push(val && keepString !== true ? Math.ceil(parseFloat(val)) : val);\n }\n }\n return values;\n };\n\n module.exports.isVisible = function(element) {\n if (element) {\n return element.style.display !== 'none' && (element.offsetWidth !== 0 || element.offsetHeight !== 0);\n }\n return false;\n };\n\n module.exports.updateTableColGroup = function(tableNode, widths) {\n if (tableNode) {\n var colGroupNode = tableNode.firstChild;\n if (colGroupNode && colGroupNode.nodeName === 'COLGROUP') {\n tableNode.style.tableLayout = 'auto';\n tableNode.style.width = '';\n\n while (colGroupNode.firstChild) {\n colGroupNode.removeChild(colGroupNode.firstChild);\n }\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 'px';\n colGroupNode.appendChild(col);\n }\n tableNode.style.tableLayout = 'fixed';\n }\n }\n };\n\n }, {}],\n 53: [function(_dereq_, module, exports) {\n (function(global) {\n\n var _stringify = _dereq_('babel-runtime/core-js/json/stringify');\n\n var _stringify2 = _interopRequireDefault(_stringify);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n module.exports = {\n\n ns: function ns(identifier, parent) {\n var parts = identifier.split('.');\n var i = 0;\n parent = parent || window;\n while (i < parts.length) {\n parent[parts[i]] = parent[parts[i]] || {};\n parent = parent[parts[i]];\n i++;\n }\n return parent;\n },\n\n ownProperties: function ownProperties(obj) {\n var arr = [];\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n arr.push(prop);\n }\n }\n return arr;\n },\n\n forEach: function forEach(list, callback, forceContinue) {\n var ret;\n if (list) {\n for (var i = 0, l = list.length; i < l; i++) {\n ret = callback(list[i], i);\n if (ret && forceContinue !== true) {\n break;\n }\n }\n }\n return ret;\n },\n\n isArray: function isArray(obj) {\n return Object.prototype.toString.apply(obj) === '[object Array]';\n },\n\n isNumber: function isNumber(obj) {\n return Object.prototype.toString.apply(obj) === '[object Number]';\n },\n\n isDate: function isDate(obj) {\n return Object.prototype.toString.apply(obj) === '[object Date]';\n },\n\n isString: function isString(obj) {\n return Object.prototype.toString.apply(obj) === '[object String]';\n },\n\n isRegExp: function isRegExp(obj) {\n return Object.prototype.toString.apply(obj) === '[object RegExp]';\n },\n\n isFunction: function isFunction(obj) {\n return Object.prototype.toString.apply(obj) === '[object Function]';\n },\n\n escapeRegex: function escapeRegex(re) {\n return re.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n },\n\n findInArray: function findInArray(array, predicate) {\n if (this.isArray(array) && predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item)) {\n return item;\n }\n }\n }\n return undefined;\n },\n\n jsonStringify: function jsonStringify(obj, censorKeywords) {\n function censor(key, value) {\n return censorKeywords && censorKeywords.indexOf(key) > -1 ? undefined : value;\n }\n return (0, _stringify2.default)(obj, censor, 2);\n },\n addEventListener: function addEventListener(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n } else {\n element[\"on\" + eventName] = handler;\n }\n },\n removeEventListener: function removeEventListener(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent(\"on\" + eventName, handler);\n } else {\n element[\"on\" + eventName] = null;\n }\n },\n preventDefault: function preventDefault(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n },\n stopPropagation: function stopPropagation(e) {\n e = e || window.event;\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n },\n getEventButton: function getEventButton(e) {\n var button = e.button;\n if ('which' in e) {\n return button;\n }\n // IE 8\n return button === 1 ? 0 : // left\n button === 4 ? 1 : // middle\n 2; // right\n },\n getMousePageXY: function getMousePageXY(e) {\n e = e || window.event;\n\n var pageX = e.pageX;\n var pageY = e.pageY;\n if (pageX === undefined) {\n pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n };\n\n // from: https://github.com/davidchambers/Base64.js\n\n (function(object) {\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error();\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa = global && global.btoa ? function(str) {\n return global.btoa(str);\n } : function(input) {\n var str = String(input);\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n };\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob = global && global.atob ? function(str) {\n return global.atob(str);\n } : function(input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n })(module.exports);\n\n }).call(this, typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n }, {\n \"babel-runtime/core-js/json/stringify\": 1\n }],\n 54: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n return {\n canRender: false\n };\n },\n canRender: function canRender() {\n return this.state.canRender && typeof this.props.chartMode.type === 'string' && typeof google.visualization[this.props.chartMode.type] === 'function';\n },\n drawChart: function drawChart() {\n if (this.canRender()) {\n var chartData = this.props.pivotTableComp.pgridwidget.pgrid.getChartData();\n var data = new google.visualization.DataTable();\n\n data.addColumn('string', chartData.hAxisLabel);\n for (var ri = 0; ri < chartData.colNames.length; ri++) {\n data.addColumn('number', chartData.colNames[ri]);\n }\n\n data.addRows(chartData.dataTable);\n\n var options = {\n title: chartData.title,\n //isStacked: true,\n fontName: this.state.chartStyle.fontFamily,\n fontSize: parseFloat(this.state.chartStyle.fontSize),\n hAxis: {\n title: chartData.hAxisLabel\n },\n vAxis: {\n title: chartData.vAxisLabel\n }\n };\n\n if (typeof google.visualization[this.props.chartMode.type] === 'function') {\n var chart = new google.visualization[this.props.chartMode.type](ReactDOM.findDOMNode(this));\n chart.draw(data, options);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.drawChart();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.drawChart();\n },\n render: function render() {\n if (this.canRender()) {\n return React.createElement('div', {\n className: 'chart',\n style: this.state.chartStyle\n });\n }\n return null;\n }\n });\n\n }, {\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 55: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n function createOverlay() {\n var overlayElement = document.createElement('div');\n overlayElement.className = 'orb-overlay orb-overlay-hidden';\n document.body.appendChild(overlayElement);\n return overlayElement;\n }\n\n var Dialog = module.exports = React.createClass({\n displayName: 'exports',\n\n statics: {\n create: function create() {\n var dialogFactory = React.createFactory(Dialog);\n var overlay = createOverlay();\n\n return {\n show: function show(props) {\n ReactDOM.render(dialogFactory(props), overlay);\n }\n };\n }\n },\n overlayElement: null,\n setOverlayClass: function setOverlayClass(visible) {\n this.overlayElement.className = this.props.theme.getDialogClasses(visible).overlay;\n },\n componentDidMount: function componentDidMount() {\n this.overlayElement = ReactDOM.findDOMNode(this).parentNode;\n this.setOverlayClass(true);\n utils.addEventListener(this.overlayElement, 'click', this.close);\n\n var dialogElement = this.overlayElement.children[0];\n var dialogBodyElement = dialogElement.children[0].children[1];\n\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n var screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n var maxHeight = 2 * screenHeight / 3;\n maxHeight = maxHeight < 301 ? 301 : maxHeight;\n var dWidth = dialogElement.offsetWidth + (dialogElement.offsetHeight > maxHeight ? 11 : 0);\n var dHeight = dialogElement.offsetHeight > maxHeight ? maxHeight : dialogElement.offsetHeight;\n\n dialogElement.style.top = (screenHeight > dHeight ? (screenHeight - dHeight) / 2 : 0) + 'px';\n dialogElement.style.left = (screenWidth > dWidth ? (screenWidth - dWidth) / 2 : 0) + 'px';\n dialogElement.style.height = dHeight + 'px';\n dialogBodyElement.style.width = dWidth + 'px';\n dialogBodyElement.style.height = dHeight - 45 + 'px';\n },\n close: function close(e) {\n var target = e.target || e.srcElement;\n if (target == this.overlayElement || target.className === 'button-close') {\n utils.removeEventListener(this.overlayElement, 'click', this.close);\n ReactDOM.unmountComponentAtNode(this.overlayElement);\n this.setOverlayClass(false);\n }\n },\n render: function render() {\n if (this.props.comp) {\n var comp = React.createElement(this.props.comp.type, this.props.comp.props);\n var classes = this.props.theme.getDialogClasses();\n\n return React.createElement(\n 'div', {\n className: classes.dialog,\n style: this.props.style || {}\n },\n React.createElement(\n 'div', {\n className: classes.content\n },\n React.createElement(\n 'div', {\n className: classes.header\n },\n React.createElement('div', {\n className: 'button-close',\n onClick: this.close\n }),\n React.createElement(\n 'div', {\n className: classes.title\n },\n this.props.title\n )\n ),\n React.createElement(\n 'div', {\n className: classes.body\n },\n comp\n )\n )\n );\n }\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 56: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils');\n\n module.exports = function() {\n\n var _pivotComp = null;\n\n var _currDragElement = null;\n var _currDropTarget = null;\n var _currDropIndicator = null;\n\n var _dragNode = null;\n var _dropTargets = [];\n var _dropIndicators = [];\n\n function doElementsOverlap(elem1Rect, elem2Rect) {\n return !(elem1Rect.right < elem2Rect.left || elem1Rect.left > elem2Rect.right || elem1Rect.bottom < elem2Rect.top || elem1Rect.top > elem2Rect.bottom);\n }\n\n function setCurrDropTarget(dropTarget, callback) {\n if (_currDropTarget) {\n signalDragEnd(_currDropTarget, function() {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n });\n } else {\n _currDropTarget = dropTarget;\n signalDragOver(dropTarget, callback);\n }\n }\n\n function setCurrDropIndicator(dropIndicator) {\n if (_currDropIndicator) {\n signalDragEnd(_currDropIndicator, function() {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n });\n } else {\n _currDropIndicator = dropIndicator;\n signalDragOver(dropIndicator);\n }\n }\n\n function signalDragOver(target, callback) {\n if (target && target.onDragOver) {\n target.onDragOver(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function signalDragEnd(target, callback) {\n if (target && target.onDragEnd) {\n target.onDragEnd(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function getDropTarget() {\n return utils.forEach(_dropTargets, function(target) {\n if (target.component.state.isover) {\n return target;\n }\n });\n }\n\n function getDropIndicator() {\n return utils.forEach(_dropIndicators, function(indicator) {\n if (indicator.component.state.isover) {\n return indicator;\n }\n });\n }\n\n var _initialized = false;\n\n return {\n init: function init(pivotComp) {\n _initialized = true;\n _pivotComp = pivotComp;\n },\n setDragElement: function setDragElement(elem) {\n\n var prevDragElement = _currDragElement;\n _currDragElement = elem;\n if (_currDragElement != prevDragElement) {\n if (elem == null) {\n\n if (_currDropTarget) {\n var position = _currDropIndicator != null ? _currDropIndicator.position : null;\n _pivotComp.moveButton(prevDragElement, _currDropTarget.component.props.axetype, position);\n }\n\n _dragNode = null;\n setCurrDropTarget(null);\n setCurrDropIndicator(null);\n } else {\n _dragNode = ReactDOM.findDOMNode(_currDragElement);\n }\n }\n },\n registerTarget: function registerTarget(target, axetype, dragOverHandler, dargEndHandler) {\n _dropTargets.push({\n component: target,\n axetype: axetype,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterTarget: function unregisterTarget(target) {\n var tindex;\n for (var i = 0; i < _dropTargets.length; i++) {\n if (_dropTargets[i].component == target) {\n tindex = i;\n break;\n }\n }\n if (tindex != null) {\n _dropTargets.splice(tindex, 1);\n }\n },\n registerIndicator: function registerIndicator(indicator, axetype, position, dragOverHandler, dargEndHandler) {\n _dropIndicators.push({\n component: indicator,\n axetype: axetype,\n position: position,\n onDragOver: dragOverHandler,\n onDragEnd: dargEndHandler\n });\n },\n unregisterIndicator: function unregisterIndicator(indicator) {\n var iindex;\n for (var i = 0; i < _dropIndicators.length; i++) {\n if (_dropIndicators[i].component == indicator) {\n iindex = i;\n break;\n }\n }\n if (iindex != null) {\n _dropIndicators.splice(iindex, 1);\n }\n },\n elementMoved: function elementMoved() {\n if (_currDragElement != null) {\n var dragNodeRect = _dragNode.getBoundingClientRect();\n var foundTarget;\n\n utils.forEach(_dropTargets, function(target) {\n if (!foundTarget) {\n var tnodeRect = ReactDOM.findDOMNode(target.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundTarget = target;\n return;\n }\n }\n });\n\n if (foundTarget) {\n setCurrDropTarget(foundTarget, function() {\n var foundIndicator = null;\n\n utils.forEach(_dropIndicators, function(indicator, index) {\n if (!foundIndicator) {\n var elementOwnIndicator = indicator.component.props.axetype === _currDragElement.props.axetype && indicator.component.props.position === _currDragElement.props.position;\n\n var targetIndicator = indicator.component.props.axetype === foundTarget.component.props.axetype;\n if (targetIndicator && !elementOwnIndicator) {\n var tnodeRect = ReactDOM.findDOMNode(indicator.component).getBoundingClientRect();\n var isOverlap = doElementsOverlap(dragNodeRect, tnodeRect);\n if (isOverlap) {\n foundIndicator = indicator;\n return true;\n }\n }\n }\n });\n\n if (!foundIndicator) {\n var axeIndicators = _dropIndicators.filter(function(indicator) {\n return indicator.component.props.axetype === foundTarget.component.props.axetype;\n });\n if (axeIndicators.length > 0) {\n foundIndicator = axeIndicators[axeIndicators.length - 1];\n }\n }\n setCurrDropIndicator(foundIndicator);\n });\n }\n }\n }\n };\n }();\n\n }, {\n \"../orb.utils\": 53,\n \"react-dom\": \"react-dom\"\n }],\n 57: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx');\n\n module.exports = React.createClass({\n displayName: 'DropIndicator',\n getInitialState: function getInitialState() {\n DragManager.registerIndicator(this, this.props.axetype, this.props.position, this.onDragOver, this.onDragEnd);\n return {\n isover: false\n };\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterIndicator(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var classname = 'drp-indic' + (this.props.isVertical ? '-vertical' : '');\n\n if (this.props.isFirst) {\n classname += ' drp-indic-first';\n }\n\n if (this.props.isLast) {\n classname += ' drp-indic-last';\n }\n\n var style = {};\n if (this.state.isover) {\n classname += ' drp-indic-over';\n }\n\n return React.createElement('div', {\n style: style,\n className: classname\n });\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"react\": \"react\"\n }],\n 58: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n axe = _dereq_('../orb.axe'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n if (index < self.props.buttons.length - 1) {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n )];\n } else {\n return [React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype\n })\n ), React.createElement(\n 'td',\n null,\n button\n ), React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype\n })\n )];\n }\n });\n\n var style = self.props.axetype === axe.Type.ROWS ? {\n position: 'absolute',\n left: 0,\n bottom: 11\n } : null;\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-empty' : ''),\n style: style\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n buttons\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 59: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n DropIndicator = _dereq_('./orb.react.DropIndicator.jsx'),\n dtid = 0;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n getInitialState: function getInitialState() {\n this.dtid = ++dtid;\n return {\n isover: false\n };\n },\n componentDidMount: function componentDidMount() {\n DragManager.registerTarget(this, this.props.axetype, this.onDragOver, this.onDragEnd);\n },\n componentWillUnmount: function componentWillUnmount() {\n DragManager.unregisterTarget(this);\n },\n onDragOver: function onDragOver(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: true\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n onDragEnd: function onDragEnd(callback) {\n if (this.isMounted()) {\n this.setState({\n isover: false\n }, callback);\n } else if (callback) {\n callback();\n }\n },\n render: function render() {\n var self = this;\n\n var buttons = this.props.buttons.map(function(button, index) {\n var currButton = [React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isFirst: index === 0,\n position: index,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ), React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n button\n )\n )];\n\n if (index == self.props.buttons.length - 1) {\n currButton.push(React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(DropIndicator, {\n isLast: true,\n position: null,\n axetype: self.props.axetype,\n isVertical: true\n })\n )\n ));\n }\n\n return currButton;\n });\n\n return React.createElement(\n 'div', {\n className: 'drp-trgt-vertical' + (this.state.isover ? ' drp-trgt-over' : '') + (buttons.length === 0 ? ' drp-trgt-vertical-empty' : '')\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n buttons\n )\n )\n );\n }\n });\n\n }, {\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.DropIndicator.jsx\": 57,\n \"react\": \"react\"\n }],\n 60: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n openOrClose: function openOrClose(e) {\n var valueNode = this.refs.valueElement;\n var valuesListNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n\n if (target === valueNode && valuesListNode.style.display === 'none') {\n valuesListNode.style.display = 'block';\n } else {\n valuesListNode.style.display = 'none';\n }\n },\n onMouseEnter: function onMouseEnter() {\n var valueNode = this.refs.valueElement;\n valueNode.className = \"orb-tgl-btn-down\";\n valueNode.style.backgroundPosition = 'right center';\n },\n onMouseLeave: function onMouseLeave() {\n this.refs.valueElement.className = \"\";\n },\n componentDidMount: function componentDidMount() {\n utils.addEventListener(document, 'click', this.openOrClose);\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'click', this.openOrClose);\n },\n selectValue: function selectValue(e) {\n var listNode = this.refs.valuesList;\n var target = e.target || e.srcElement;\n var isli = false;\n while (!isli && target != null) {\n if (target.parentNode == listNode) {\n isli = true;\n break;\n }\n target = target.parentNode;\n }\n\n if (isli) {\n var value = target.textContent;\n var valueElement = this.refs.valueElement;\n if (valueElement.textContent != value) {\n valueElement.textContent = value;\n if (this.props.onValueChanged) {\n this.props.onValueChanged(value);\n }\n }\n }\n },\n render: function render() {\n function createSelectValueFunc(value) {\n return function() {\n this.selectValue(value);\n };\n }\n\n var values = [];\n for (var i = 0; i < this.props.values.length; i++) {\n values.push(React.createElement('li', {\n key: 'item' + i,\n dangerouslySetInnerHTML: {\n __html: this.props.values[i]\n }\n }));\n }\n\n return React.createElement(\n 'div', {\n className: 'orb-select'\n },\n React.createElement('div', {\n ref: 'valueElement',\n dangerouslySetInnerHTML: {\n __html: this.props.selectedValue\n },\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave\n }),\n React.createElement(\n 'ul', {\n ref: 'valuesList',\n style: {\n display: 'none'\n },\n onClick: this.selectValue\n },\n values\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 61: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n Dropdown = _dereq_('./orb.react.Dropdown.jsx'),\n utils = _dereq_('../orb.utils'),\n filtering = _dereq_('../orb.filtering'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n pgridwidget: null,\n values: null,\n filterManager: null,\n getInitialState: function getInitialState() {\n this.pgridwidget = this.props.pivotTableComp.pgridwidget;\n return {};\n },\n destroy: function destroy() {\n var container = ReactDOM.findDOMNode(this).parentNode;\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n },\n onFilter: function onFilter(operator, term, staticValue, excludeStatic) {\n this.props.pivotTableComp.applyFilter(this.props.field, operator, term, staticValue, excludeStatic);\n this.destroy();\n },\n onMouseDown: function onMouseDown(e) {\n var container = ReactDOM.findDOMNode(this).parentNode;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == container) {\n return true;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n onMouseWheel: function onMouseWheel(e) {\n var valuesTable = this.refs.valuesTable;\n var target = e.target || e.srcElement;\n while (target != null) {\n if (target == valuesTable) {\n if (valuesTable.scrollHeight <= valuesTable.clientHeight) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n return;\n }\n target = target.parentNode;\n }\n\n this.destroy();\n },\n componentWillMount: function componentWillMount() {\n utils.addEventListener(document, 'mousedown', this.onMouseDown);\n utils.addEventListener(document, 'wheel', this.onMouseWheel);\n utils.addEventListener(window, 'resize', this.destroy);\n },\n componentDidMount: function componentDidMount() {\n this.filterManager.init(ReactDOM.findDOMNode(this));\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousedown', this.onMouseDown);\n utils.removeEventListener(document, 'wheel', this.onMouseWheel);\n utils.removeEventListener(window, 'resize', this.destroy);\n },\n render: function render() {\n var checkboxes = [];\n\n this.filterManager = new FilterManager(this, this.pgridwidget.pgrid.getFieldFilter(this.props.field));\n this.values = this.pgridwidget.pgrid.getFieldValues(this.props.field);\n\n function addCheckboxRow(value, text) {\n return checkboxes.push(React.createElement(\n 'tr', {\n key: value\n },\n React.createElement(\n 'td', {\n className: 'fltr-chkbox'\n },\n React.createElement('input', {\n type: 'checkbox',\n value: value,\n defaultChecked: 'checked'\n })\n ),\n React.createElement(\n 'td', {\n className: 'fltr-val',\n title: text || value\n },\n text || value\n )\n ));\n }\n\n addCheckboxRow(filtering.ALL, '(Show All)');\n\n for (var i = 0; i < this.values.length; i++) {\n if (this.values[i] != null) {\n addCheckboxRow(this.values[i]);\n } else {\n addCheckboxRow(filtering.BLANK, '(Blank)');\n }\n }\n\n var buttonClass = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().orbButton;\n var style = this.props.pivotTableComp.fontStyle;\n\n var currentFilter = this.pgridwidget.pgrid.getFieldFilter(this.props.field);\n\n return React.createElement(\n 'table', {\n className: 'fltr-scntnr',\n style: style\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'srchop-col'\n },\n React.createElement(Dropdown, {\n values: [filtering.Operators.MATCH.name, filtering.Operators.NOTMATCH.name, filtering.Operators.EQ.name, filtering.Operators.NEQ.name, filtering.Operators.GT.name, filtering.Operators.GTE.name, filtering.Operators.LT.name, filtering.Operators.LTE.name],\n selectedValue: currentFilter && currentFilter.operator ? currentFilter.operator.name : filtering.Operators.MATCH.name,\n onValueChanged: this.filterManager.onOperatorChanged\n })\n ),\n React.createElement(\n 'td', {\n className: 'srchtyp-col',\n title: 'Enable/disable Regular expressions'\n },\n '.*'\n ),\n React.createElement(\n 'td', {\n className: 'srchbox-col'\n },\n React.createElement(\n 'table', {\n style: {\n width: '100%'\n }\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'text',\n placeholder: 'search'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'div', {\n className: 'srchclear-btn',\n onClick: this.clearFilter\n },\n 'x'\n )\n )\n )\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n colSpan: '3',\n className: 'fltr-vals-col'\n },\n React.createElement(\n 'table', {\n className: 'fltr-vals-tbl',\n ref: 'valuesTable'\n },\n React.createElement(\n 'tbody',\n null,\n checkboxes\n )\n )\n )\n ),\n React.createElement(\n 'tr', {\n className: 'bottom-row'\n },\n React.createElement(\n 'td', {\n className: 'cnfrm-btn-col',\n colSpan: '2'\n },\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Ok',\n style: {\n float: 'left'\n }\n }),\n React.createElement('input', {\n type: 'button',\n className: buttonClass,\n value: 'Cancel',\n style: {\n float: 'left'\n }\n })\n ),\n React.createElement(\n 'td', {\n className: 'resize-col'\n },\n React.createElement('div', null)\n )\n )\n )\n );\n }\n });\n\n function FilterManager(reactComp, initialFilterObject) {\n\n var self = this;\n var INDETERMINATE = 'indeterminate';\n\n var savedCheckedValues;\n var isSearchMode = false;\n var isRegexMode = false;\n var operator = filtering.Operators.MATCH;\n var lastSearchTerm = '';\n\n var elems = {\n filterContainer: null,\n checkboxes: {},\n searchBox: null,\n operatorBox: null,\n allCheckbox: null,\n addCheckbox: null,\n enableRegexButton: null,\n clearSearchButton: null,\n okButton: null,\n cancelButton: null,\n resizeGrip: null\n };\n\n var resizeManager;\n\n this.init = function(filterContainerElement) {\n\n elems.filterContainer = filterContainerElement;\n elems.checkboxes = {};\n elems.searchBox = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[0].children[0];\n elems.clearSearchButton = elems.filterContainer.rows[0].cells[2].children[0].rows[0].cells[1].children[0];\n elems.operatorBox = elems.filterContainer.rows[0].cells[0].children[0];\n elems.okButton = elems.filterContainer.rows[2].cells[0].children[0];\n elems.cancelButton = elems.filterContainer.rows[2].cells[0].children[1];\n elems.resizeGrip = elems.filterContainer.rows[2].cells[1].children[0];\n\n var rows = elems.filterContainer.rows[1].cells[0].children[0].rows;\n for (var i = 0; i < rows.length; i++) {\n var checkbox = rows[i].cells[0].children[0];\n elems.checkboxes[checkbox.value] = checkbox;\n }\n\n elems.allCheckbox = elems.checkboxes[filtering.ALL];\n elems.blanckCheckbox = elems.checkboxes[filtering.BLANK];\n elems.addCheckbox = null;\n elems.enableRegexButton = elems.filterContainer.rows[0].cells[1];\n\n resizeManager = new ResizeManager(elems.filterContainer.parentNode, elems.filterContainer.rows[1].cells[0].children[0], elems.resizeGrip);\n\n applyInitialFilterObject();\n addEventListeners();\n };\n\n this.onOperatorChanged = function(newOperator) {\n if (operator.name !== newOperator) {\n operator = filtering.Operators.get(newOperator);\n self.toggleRegexpButtonVisibility();\n self.searchChanged('operatorChanged');\n }\n };\n\n function checkboxVisible(checkbox, isVisible) {\n if (isVisible != null) {\n checkbox.parentNode.parentNode.style.display = isVisible ? '' : 'none';\n } else {\n return checkbox.parentNode.parentNode.style.display != 'none';\n }\n }\n\n function applyInitialFilterObject() {\n if (initialFilterObject) {\n var staticInfos = {\n values: initialFilterObject.staticValue,\n toExclude: initialFilterObject.excludeStatic\n };\n\n if (initialFilterObject.term) {\n isSearchMode = true;\n\n operator = initialFilterObject.operator;\n self.toggleRegexpButtonVisibility();\n\n if (initialFilterObject.regexpMode) {\n isRegexMode = true;\n self.toggleRegexpButtonState();\n lastSearchTerm = initialFilterObject.term.source;\n } else {\n lastSearchTerm = initialFilterObject.term;\n }\n\n elems.searchBox.value = lastSearchTerm;\n\n self.applyFilterTerm(initialFilterObject.operator, initialFilterObject.term);\n } else {\n savedCheckedValues = staticInfos;\n }\n\n self.updateCheckboxes(staticInfos);\n self.updateAllCheckbox();\n }\n }\n\n function addEventListeners() {\n self.toggleRegexpButtonVisibility();\n\n utils.addEventListener(elems.filterContainer, 'click', self.valueChecked);\n utils.addEventListener(elems.searchBox, 'keyup', self.searchChanged);\n\n utils.addEventListener(elems.clearSearchButton, 'click', self.clearSearchBox);\n\n utils.addEventListener(elems.okButton, 'click', function() {\n var checkedObj = self.getCheckedValues();\n reactComp.onFilter(operator.name, operator.regexpSupported && isSearchMode && isRegexMode ? new RegExp(lastSearchTerm, 'i') : lastSearchTerm, checkedObj.values, checkedObj.toExclude);\n });\n utils.addEventListener(elems.cancelButton, 'click', function() {\n reactComp.destroy();\n });\n }\n\n function ResizeManager(outerContainerElem, valuesTableElem, resizeGripElem) {\n\n var minContainerWidth = 301;\n var minContainerHeight = 223;\n\n var mousedownpos = {\n x: 0,\n y: 0\n };\n var isMouseDown = false;\n\n this.resizeMouseDown = function(e) {\n // drag/sort with left mouse button\n if (utils.getEventButton(e) !== 0) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n isMouseDown = true;\n document.body.style.cursor = 'se-resize';\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n this.resizeMouseUp = function() {\n isMouseDown = false;\n document.body.style.cursor = 'auto';\n return true;\n };\n\n this.resizeMouseMove = function(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!isMouseDown) return;\n\n var mousePageXY = utils.getMousePageXY(e);\n\n var resizeGripSize = resizeGripElem.getBoundingClientRect();\n var outerContainerSize = outerContainerElem.getBoundingClientRect();\n var valuesTableSize = valuesTableElem.tBodies[0].getBoundingClientRect();\n\n var outerContainerWidth = outerContainerSize.right - outerContainerSize.left;\n var outerContainerHeight = outerContainerSize.bottom - outerContainerSize.top;\n\n var offset = {\n x: outerContainerWidth <= minContainerWidth && mousePageXY.pageX < resizeGripSize.left ? 0 : mousePageXY.pageX - mousedownpos.x,\n y: outerContainerHeight <= minContainerHeight && mousePageXY.pageY < resizeGripSize.top ? 0 : mousePageXY.pageY - mousedownpos.y\n };\n\n var newContainerWidth = outerContainerWidth + offset.x;\n var newContainerHeight = outerContainerHeight + offset.y;\n\n mousedownpos.x = mousePageXY.pageX;\n mousedownpos.y = mousePageXY.pageY;\n\n if (newContainerWidth >= minContainerWidth) {\n outerContainerElem.style.width = newContainerWidth + 'px';\n }\n\n if (newContainerHeight >= minContainerHeight) {\n outerContainerElem.style.height = newContainerHeight + 'px';\n valuesTableElem.tBodies[0].style.height = valuesTableSize.bottom - valuesTableSize.top + offset.y + 'px';\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n };\n\n utils.addEventListener(resizeGripElem, 'mousedown', this.resizeMouseDown);\n utils.addEventListener(document, 'mouseup', this.resizeMouseUp);\n utils.addEventListener(document, 'mousemove', this.resizeMouseMove);\n }\n\n this.clearSearchBox = function() {\n elems.searchBox.value = '';\n self.searchChanged();\n };\n\n this.toggleRegexpButtonVisibility = function() {\n if (operator.regexpSupported) {\n utils.addEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n } else {\n utils.removeEventListener(elems.enableRegexButton, 'click', self.regexpActiveChanged);\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-hidden');\n }\n };\n\n this.toggleRegexpButtonState = function() {\n elems.enableRegexButton.className = elems.enableRegexButton.className.replace('srchtyp-col-active', '');\n if (isRegexMode) {\n domUtils.addClass(elems.enableRegexButton, 'srchtyp-col-active');\n } else {\n domUtils.removeClass(elems.enableRegexButton, 'srchtyp-col-active');\n }\n };\n\n this.regexpActiveChanged = function() {\n isRegexMode = !isRegexMode;\n self.toggleRegexpButtonState();\n self.searchChanged('regexModeChanged');\n };\n\n this.valueChecked = function(e) {\n var target = e.target || e.srcElement;\n if (target && target.type && target.type === 'checkbox') {\n if (target == elems.allCheckbox) {\n self.updateCheckboxes({\n values: elems.allCheckbox.checked\n });\n } else {\n self.updateAllCheckbox();\n }\n }\n };\n\n this.applyFilterTerm = function(operator, term) {\n var defaultVisible = term ? false : true;\n var opterm = operator.regexpSupported && isSearchMode ? isRegexMode ? term : utils.escapeRegex(term) : term;\n checkboxVisible(elems.allCheckbox, defaultVisible);\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n var visible = !isSearchMode || operator.func(val, opterm);\n checkboxVisible(checkbox, visible);\n checkbox.checked = visible;\n }\n };\n\n this.searchChanged = function(e) {\n var search = (elems.searchBox.value || '').trim();\n if (e === 'operatorChanged' || e === 'regexModeChanged' && search || search != lastSearchTerm) {\n lastSearchTerm = search;\n\n var previousIsSearchMode = isSearchMode;\n isSearchMode = search !== '';\n\n if (isSearchMode && !previousIsSearchMode) {\n savedCheckedValues = self.getCheckedValues();\n }\n\n //var searchTerm = operator.regexpSupported && isSearchMode ? new RegExp(isRegexMode ? search : utils.escapeRegex(search), 'i') : search;\n if (e !== 'operatorChanged' || isSearchMode) {\n self.applyFilterTerm(operator, search);\n }\n\n if (!isSearchMode && previousIsSearchMode) {\n self.updateCheckboxes(savedCheckedValues);\n }\n\n self.updateAllCheckbox();\n }\n };\n\n this.getCheckedValues = function() {\n if (!isSearchMode && !elems.allCheckbox.indeterminate) {\n return {\n values: elems.allCheckbox.checked ? filtering.ALL : filtering.NONE,\n toExclude: false\n };\n } else {\n var staticValue;\n var i, val, checkbox;\n var valuesCount = 0,\n checkedCount = 0;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n valuesCount++;\n if (checkbox.checked) {\n checkedCount++;\n }\n }\n }\n\n var excludeUnchecked = false;\n\n if (checkedCount === 0) {\n staticValue = filtering.NONE;\n } else if (checkedCount == valuesCount) {\n staticValue = filtering.ALL;\n } else {\n staticValue = [];\n excludeUnchecked = checkedCount > valuesCount / 2 + 1;\n\n for (i = 0; i < reactComp.values.length; i++) {\n val = reactComp.values[i];\n checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (!excludeUnchecked && checkbox.checked || excludeUnchecked && !checkbox.checked) {\n staticValue.push(val);\n }\n }\n }\n }\n return {\n values: staticValue,\n toExclude: excludeUnchecked\n };\n }\n };\n\n this.updateCheckboxes = function(checkedList) {\n var values = checkedList ? checkedList.values : null;\n var allchecked = utils.isArray(values) ? null : values == null || values === filtering.ALL ? true : values === filtering.NONE ? false : !!values;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (checkboxVisible(checkbox)) {\n if (allchecked != null) {\n checkbox.checked = allchecked;\n } else {\n var valInList = values.indexOf(val) >= 0;\n checkbox.checked = checkedList.toExclude ? !valInList : valInList;\n }\n }\n }\n };\n\n this.updateAllCheckbox = function() {\n if (!isSearchMode) {\n var allchecked = null;\n for (var i = 0; i < reactComp.values.length; i++) {\n var val = reactComp.values[i];\n var checkbox = val != null ? elems.checkboxes[val] : elems.blanckCheckbox;\n if (allchecked == null) {\n allchecked = checkbox.checked;\n } else {\n if (allchecked !== checkbox.checked) {\n allchecked = INDETERMINATE;\n break;\n }\n }\n }\n\n if (allchecked === INDETERMINATE) {\n elems.allCheckbox.indeterminate = true;\n elems.allCheckbox.checked = false;\n } else {\n elems.allCheckbox.indeterminate = false;\n elems.allCheckbox.checked = allchecked;\n }\n }\n };\n }\n\n }, {\n \"../orb.filtering\": 40,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.Dropdown.jsx\": 60,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 62: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n utils = _dereq_('../orb.utils');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var data = this.props.data;\n var headers = this.props.headers;\n var tableClasses = this.props.theme.getGridClasses();\n\n var rows = [];\n\n if (headers && headers.length > 0) {\n var headerRow = [];\n for (var h = 0; h < headers.length; h++) {\n headerRow.push(React.createElement(\n 'th', {\n key: 'h' + h\n },\n headers[h]\n ));\n }\n rows.push(React.createElement(\n 'tr', {\n key: 'h'\n },\n headerRow\n ));\n }\n\n if (data && data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n var row = [];\n if (utils.isArray(data[i])) {\n for (var j = 0; j < data[i].length; j++) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + j\n },\n data[i][j]\n ));\n }\n } else {\n for (var prop in data[i]) {\n if (data[i].hasOwnProperty(prop)) {\n row.push(React.createElement(\n 'td', {\n key: i + '' + prop\n },\n data[i][prop]\n ));\n }\n }\n }\n rows.push(React.createElement(\n 'tr', {\n key: i\n },\n row\n ));\n }\n }\n\n return React.createElement(\n 'table', {\n className: tableClasses.table\n },\n React.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"react\": \"react\"\n }],\n 63: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n FilterPanel = _dereq_('./orb.react.FilterPanel.jsx'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n utils = _dereq_('../orb.utils'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom'),\n pbid = 0;\n\n module.exports = React.createClass({\n displayName: 'PivotButton',\n getInitialState: function getInitialState() {\n this.pbid = ++pbid;\n\n // initial state, all zero.\n return {\n pos: {\n x: 0,\n y: 0\n },\n startpos: {\n x: 0,\n y: 0\n },\n mousedown: false,\n dragging: false\n };\n },\n onFilterMouseDown: function onFilterMouseDown(e) {\n // left mouse button only\n if (e.button !== 0) return;\n\n var filterButton = this.refs.filterButton;\n var filterButtonPos = domUtils.getOffset(filterButton);\n var filterContainer = document.createElement('div');\n\n var filterPanelFactory = React.createFactory(FilterPanel);\n var filterPanel = filterPanelFactory({\n field: this.props.field.name,\n pivotTableComp: this.props.pivotTableComp\n });\n\n filterContainer.className = this.props.pivotTableComp.pgrid.config.theme.getFilterClasses().container;\n filterContainer.style.top = filterButtonPos.y + 'px';\n filterContainer.style.left = filterButtonPos.x + 'px';\n document.body.appendChild(filterContainer);\n\n ReactDOM.render(filterPanel, filterContainer);\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (this.props.pivotTableComp.pgrid.config.canMoveFields) {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n DragManager.setDragElement(null);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n DragManager.setDragElement(this);\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n }\n }\n },\n componentDidMount: function componentDidMount() {\n this.props.pivotTableComp.registerThemeChanged(this.updateClasses);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.props.pivotTableComp.unregisterThemeChanged(this.updateClasses);\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n },\n onMouseDown: function onMouseDown(e) {\n // drag/sort with left mouse button\n if (e.button !== 0) return;\n\n if (e.ctrlKey) {\n this.props.pivotTableComp.pgridwidget.toggleFieldExpansion(this.props.axetype, this.props.field);\n } else {\n\n var thispos = domUtils.getOffset(ReactDOM.findDOMNode(this));\n var mousePageXY = utils.getMousePageXY(e);\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: {\n x: thispos.x - mousePageXY.pageX,\n y: thispos.y - mousePageXY.pageY\n },\n startpos: {\n x: mousePageXY.pageX,\n y: mousePageXY.pageY\n }\n });\n }\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp(e) {\n\n var isdragged = this.state.dragging;\n\n this.setState({\n mousedown: false,\n dragging: false,\n size: null,\n pos: {\n x: 0,\n y: 0\n }\n });\n\n if (!e.ctrlKey && !isdragged) {\n // if button was not dragged, proceed as a click\n this.props.pivotTableComp.sort(this.props.axetype, this.props.field);\n }\n },\n onMouseMove: function onMouseMove(e) {\n // if the mouse is not down while moving, return (no drag)\n if (!this.props.pivotTableComp.pgrid.config.canMoveFields || !this.state.mousedown) return;\n\n var size = null;\n var mousePageXY = utils.getMousePageXY(e);\n\n if (!this.state.dragging) {\n size = domUtils.getSize(ReactDOM.findDOMNode(this));\n } else {\n size = this.state.size;\n }\n\n var newpos = {\n x: mousePageXY.pageX + this.state.mouseoffset.x,\n y: mousePageXY.pageY + this.state.mouseoffset.y\n };\n\n if (!this.state.dragging || newpos.x != this.state.pos.x || newpos.y != this.state.pos.y) {\n this.setState({\n dragging: true,\n size: size,\n pos: newpos\n });\n\n DragManager.elementMoved();\n }\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n updateClasses: function updateClasses() {\n ReactDOM.findDOMNode(this).className = this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton;\n },\n render: function render() {\n var self = this;\n var divstyle = {\n left: self.state.pos.x + 'px',\n top: self.state.pos.y + 'px',\n position: self.state.dragging ? 'fixed' : '',\n zIndex: 101\n };\n\n if (self.state.size) {\n divstyle.width = self.state.size.width + 'px';\n }\n\n var sortDirectionClass = self.props.field.sort.order === 'asc' ? 'sort-asc' :\n //' \\u2191' :\n self.props.field.sort.order === 'desc' ? 'sort-desc' :\n //' \\u2193' :\n '';\n var filterClass = (self.state.dragging ? '' : 'fltr-btn') + (this.props.pivotTableComp.pgrid.isFieldFiltered(this.props.field.name) ? ' fltr-btn-active' : '');\n var fieldAggFunc = '';\n if (self.props.axetype === axe.Type.DATA) {\n fieldAggFunc = React.createElement(\n 'small',\n null,\n ' (' + self.props.field.aggregateFuncName + ')'\n );\n }\n\n return React.createElement(\n 'div', {\n key: self.props.field.name,\n className: this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().pivotButton,\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n style: divstyle\n },\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'caption'\n },\n self.props.field.caption,\n fieldAggFunc\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('div', {\n className: 'sort-indicator ' + sortDirectionClass\n })\n ),\n React.createElement(\n 'td', {\n className: 'filter'\n },\n React.createElement('div', {\n ref: 'filterButton',\n className: filterClass,\n onMouseDown: self.state.dragging ? null : this.onFilterMouseDown\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.FilterPanel.jsx\": 61,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 64: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n uiheaders = _dereq_('../orb.ui.header'),\n domUtils = _dereq_('../orb.utils.dom'),\n _paddingLeft = null,\n _borderLeft = null;\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n expand: function expand() {\n this.props.pivotTableComp.pgridwidget.expandRow(this.props.cell);\n },\n collapse: function collapse() {\n this.props.pivotTableComp.pgridwidget.collapseRow(this.props.cell);\n },\n updateCellInfos: function updateCellInfos() {\n var node = ReactDOM.findDOMNode(this);\n var cell = this.props.cell;\n node.__orb = node.__orb || {};\n\n if (!cell.visible()) {\n\n node.__orb._visible = false;\n } else {\n var cellContentNode = this.refs.cellContent;\n\n var propList = [];\n var retPaddingLeft = _paddingLeft == null;\n var retBorderLeft = !this.props.leftmost && _borderLeft == null;\n var text = node.textContent || node.innerText;\n\n if (retPaddingLeft) {\n propList.push('padding-left');\n }\n\n if (retBorderLeft) {\n propList.push('border-left-width');\n }\n\n if (propList.length > 0) {\n var nodeStyle = domUtils.getStyle(node, propList, true);\n\n if (retPaddingLeft) {\n _paddingLeft = parseFloat(nodeStyle[0]);\n }\n\n if (retBorderLeft) {\n _borderLeft = parseFloat(nodeStyle[retPaddingLeft ? 1 : 0]);\n }\n }\n\n domUtils.removeClass(node, 'cell-hidden');\n\n node.__orb._visible = true;\n if (text != node.__orb._lastText || !node.__orb._textWidth) {\n node.__orb._lastText = text;\n node.__orb._textWidth = domUtils.getSize(cellContentNode).width;\n }\n node.__orb._colSpan = this.props.cell.hspan(true) || 1;\n node.__orb._rowSpan = this.props.cell.vspan(true) || 1;\n node.__orb._paddingLeft = _paddingLeft;\n node.__orb._paddingRight = _paddingLeft;\n node.__orb._borderLeftWidth = this.props.leftmost ? 0 : _borderLeft;\n node.__orb._borderRightWidth = 0;\n }\n },\n componentDidMount: function componentDidMount() {\n this.updateCellInfos();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.updateCellInfos();\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.cell && nextProps.cell == this.props.cell && !this._latestVisibleState && !nextProps.cell.visible()) {\n return false;\n }\n return true;\n },\n _latestVisibleState: false,\n render: function render() {\n var self = this;\n var cell = this.props.cell;\n var divcontent = [];\n var value;\n var cellClick;\n var headerPushed = false;\n\n this._latestVisibleState = cell.visible();\n\n switch (cell.template) {\n case 'cell-template-row-header':\n case 'cell-template-column-header':\n var isWrapper = cell.type === uiheaders.HeaderType.WRAPPER && cell.dim.field.subTotal.visible && cell.dim.field.subTotal.collapsible;\n var isSubtotal = cell.type === uiheaders.HeaderType.SUB_TOTAL && !cell.expanded;\n if (isWrapper || isSubtotal) {\n headerPushed = true;\n\n divcontent.push(React.createElement(\n 'table', {\n key: 'header-value',\n ref: 'cellContent'\n },\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'orb-tgl-btn'\n },\n React.createElement('div', {\n className: 'orb-tgl-btn-' + (isWrapper ? 'down' : 'right'),\n onClick: isWrapper ? this.collapse : this.expand\n })\n ),\n React.createElement(\n 'td', {\n className: 'hdr-val'\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: cell.value || ' '\n }\n })\n )\n )\n )\n ));\n } else {\n value = (cell.value || ' ') + (cell.type === uiheaders.HeaderType.SUB_TOTAL ? ' Total' : '');\n }\n break;\n case 'cell-template-dataheader':\n value = cell.value.caption;\n break;\n case 'cell-template-datavalue':\n value = cell.datafield && cell.datafield.formatFunc ? cell.datafield.formatFunc()(cell.value) : cell.value;\n cellClick = function cellClick() {\n self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);\n };\n break;\n default:\n break;\n }\n\n if (!headerPushed) {\n var headerClassName;\n switch (cell.template) {\n case 'cell-template-datavalue':\n headerClassName = 'cell-data';\n break;\n default:\n if (cell.template != 'cell-template-dataheader' && cell.type !== uiheaders.HeaderType.GRAND_TOTAL) {\n headerClassName = 'hdr-val';\n }\n }\n divcontent.push(React.createElement(\n 'div', {\n key: 'cell-value',\n ref: 'cellContent',\n className: headerClassName\n },\n React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: value || ' '\n }\n })\n ));\n }\n\n return React.createElement(\n 'td', {\n className: getClassname(this.props),\n onDoubleClick: cellClick,\n colSpan: cell.hspan(),\n rowSpan: cell.vspan()\n },\n React.createElement(\n 'div',\n null,\n divcontent\n )\n );\n }\n });\n\n function getClassname(compProps) {\n var cell = compProps.cell;\n var classname = cell.cssclass;\n var isEmpty = cell.template === 'cell-template-empty';\n\n if (!cell.visible()) {\n classname += ' cell-hidden';\n }\n\n if (cell.type === uiheaders.HeaderType.SUB_TOTAL && cell.expanded) {\n classname += ' header-st-exp';\n }\n\n if (cell.type === uiheaders.HeaderType.GRAND_TOTAL) {\n if (cell.dim.depth === 1) {\n classname += ' header-nofields';\n } else if (cell.dim.depth > 2) {\n classname += ' header-gt-exp';\n }\n }\n\n if (compProps.leftmost) {\n classname += ' ' + (cell.template === 'cell-template-datavalue' ? 'cell' : 'header') + '-leftmost';\n }\n\n if (compProps.topmost) {\n classname += ' cell-topmost';\n }\n\n return classname;\n }\n\n }, {\n \"../orb.ui.header\": 49,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 65: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n Chart = _dereq_('./orb.react.Chart.jsx'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n this.synchronizeWidths();\n },\n synchronizeWidths: function synchronizeWidths() {\n var chartStyle = SizingManager.synchronizeWidths(this);\n chartStyle.fontFamily = this.fontStyle.fontFamily;\n chartStyle.fontSize = this.fontStyle.fontSize;\n\n this.refs.chart.setState({\n canRender: true,\n chartStyle: chartStyle\n });\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons'\n },\n React.createElement(\n 'td', {\n colSpan: '2'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(Chart, {\n pivotTableComp: self,\n chartMode: config.chartMode,\n ref: 'chart'\n })\n )\n )\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.utils.dom\": 52,\n \"./orb.react.Chart.jsx\": 54,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 66: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotCell = _dereq_('./orb.react.PivotCell.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n\n var lastCellIndex = this.props.row.length - 1;\n var cell0 = this.props.row[0];\n var leftmostCellFound = false;\n var layoutInfos = self.props.layoutInfos;\n var cells;\n\n var rowstyle = {};\n\n var istopmost = false;\n\n cells = this.props.row.map(function(cell, index) {\n\n var isleftmost = false;\n\n // If current cells are column/data headers and left most cell is not found yet\n // and last row left most cell does not span vertically over the current one and current one is visible\n // then mark IT as the left most cell\n if (cell.visible() && layoutInfos) {\n if (cell.dim) {\n if (cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth - 1] === undefined || !cell.dim.isRoot && layoutInfos.topMostCells[cell.dim.depth] === undefined && (cell.dim.parent.isRoot || layoutInfos.topMostCells[cell.dim.depth + 1] === cell.dim.parent)) {\n istopmost = true;\n layoutInfos.topMostCells[cell.dim.depth] = cell.dim;\n }\n } else if (!layoutInfos.topMostCells['0']) {\n istopmost = layoutInfos.topMostCells['0'] = true;\n }\n\n if (!leftmostCellFound && (self.props.axetype === axe.Type.DATA || self.props.axetype === axe.Type.COLUMNS) && layoutInfos.lastLeftMostCellVSpan === 0) {\n\n isleftmost = leftmostCellFound = true;\n layoutInfos.lastLeftMostCellVSpan = cell.vspan() - 1;\n }\n }\n\n return React.createElement(PivotCell, {\n key: index,\n cell: cell,\n leftmost: isleftmost,\n topmost: istopmost,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n // decrement lastLeftMostCellVSpan\n if (layoutInfos && layoutInfos.lastLeftMostCellVSpan > 0 && !leftmostCellFound) {\n layoutInfos.lastLeftMostCellVSpan--;\n }\n\n return React.createElement(\n 'tr', {\n style: rowstyle\n },\n cells\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotCell.jsx\": 64,\n \"react\": \"react\"\n }],\n 67: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var columnButtons = config.columnFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.COLUMNS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(DropTarget, {\n buttons: columnButtons,\n axetype: axe.Type.COLUMNS\n });\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 68: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.columns.headers.length === 0 ? '' : ' columns-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var columnHeaders = pgridwidget.columns.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.COLUMNS,\n pivotTableComp: self.props.pivotTableComp,\n layoutInfos: layoutInfos\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n columnHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 69: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var dataCells = pgridwidget.dataRows.map(function(dataRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: dataRow,\n axetype: axe.Type.DATA,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container data-cntr',\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', null),\n React.createElement(\n 'tbody',\n null,\n dataCells\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\"\n }],\n 70: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n DropTargetVertical = _dereq_('./orb.react.DropTargetVertical.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var rowButtons = config.rowFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.ROWS,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n if (config.chartMode.enabled) {\n return React.createElement(DropTargetVertical, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n } else {\n return React.createElement(DropTarget, {\n buttons: rowButtons,\n axetype: axe.Type.ROWS\n });\n }\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.DropTargetVertical.jsx\": 59,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 71: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n PivotRow = _dereq_('./orb.react.PivotRow.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n setColGroup: function setColGroup(widths) {\n var node = ReactDOM.findDOMNode(this);\n var colGroupNode = this.refs.colgroup;\n node.style.tableLayout = 'auto';\n\n colGroupNode.innerHTML = '';\n for (var i = 0; i < widths.length; i++) {\n var col = document.createElement('col');\n col.style.width = widths[i] + 8 + 'px';\n colGroupNode.appendChild(col);\n }\n node.style.tableLayout = 'fixed';\n },\n render: function render() {\n var self = this;\n var pgridwidget = this.props.pivotTableComp.pgridwidget;\n var cntrClass = pgridwidget.rows.headers.length === 0 ? '' : ' rows-cntr';\n\n var layoutInfos = {\n lastLeftMostCellVSpan: 0,\n topMostCells: {}\n };\n\n var rowHeaders = pgridwidget.rows.headers.map(function(headerRow, index) {\n return React.createElement(PivotRow, {\n key: index,\n row: headerRow,\n axetype: axe.Type.ROWS,\n layoutInfos: layoutInfos,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n return React.createElement(\n 'div', {\n className: 'inner-table-container' + cntrClass,\n onWheel: this.props.pivotTableComp.onWheel\n },\n React.createElement(\n 'table', {\n className: 'inner-table'\n },\n React.createElement('colgroup', {\n ref: 'colgroup'\n }),\n React.createElement(\n 'tbody',\n null,\n rowHeaders\n )\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.PivotRow.jsx\": 66,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 72: [function(_dereq_, module, exports) {\n\n var ReactDOM = _dereq_('react-dom'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var SizingManager = module.exports = {\n synchronizeWidths: function synchronizeWidths(pivotComp) {\n if (pivotComp.pgridwidget.pgrid.config.chartMode.enabled) {\n return SizingManager.synchronizePivotChartWidths(pivotComp);\n } else {\n SizingManager.synchronizePivotTableWidths(pivotComp);\n }\n },\n synchronizePivotChartWidths: function synchronizePivotChartWidths(pivotComp) {\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons),\n chart = new ComponentSizeInfo(pivotComp.refs.chart),\n rBtnsWidth = Math.max(rBtnsTbl.w, 67),\n chartWidth = pivot.w - rBtnsWidth,\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n chartHeight = !pivotHeight ? null : pivotHeight - (topBtns.h + cBtns.h);\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rBtnsWidth, chartWidth]);\n\n return {\n width: chartWidth,\n height: chartHeight\n };\n },\n synchronizePivotTableWidths: function synchronizePivotTableWidths(pivotComp) {\n\n var pivotWrapperTable = pivotComp.refs.pivotWrapperTable,\n pivot = new ComponentSizeInfo(pivotComp.refs.pivot),\n toolbar = new ComponentSizeInfo(pivotComp.refs.toolbar),\n cHeadersTbl = new ComponentSizeInfo(pivotComp.refs.colHeaders, true, 'table'),\n rHeadersTbl = new ComponentSizeInfo(pivotComp.refs.rowHeaders, true, 'table'),\n dataCellsTbl = new ComponentSizeInfo(pivotComp.refs.dataCells, true, 'table'),\n topBtns = new ComponentSizeInfo(pivotComp.refs.upperButtons),\n cBtns = new ComponentSizeInfo(pivotComp.refs.colButtons),\n rBtnsTbl = new ComponentSizeInfo(pivotComp.refs.rowButtons, true),\n hScroll = new ComponentSizeInfo(pivotComp.refs.horizontalScrollBar),\n vScroll = new ComponentSizeInfo(pivotComp.refs.verticalScrollBar),\n dataCellsWidths = dataCellsTbl.getLargestWidths(cHeadersTbl),\n rHeadersWidth = Math.max(rHeadersTbl.w, rBtnsTbl.w, 67),\n dataCellsContainerWidth = Math.min(dataCellsWidths.total + 1, pivot.w - rHeadersWidth - vScroll.w),\n pivotHeight = pivotComp.pgridwidget.pgrid.config.height,\n dataCellsRemHeight = !pivotHeight ? null : pivotHeight - (toolbar ? toolbar.h + 17 : 0) - (topBtns.h + cBtns.h + cHeadersTbl.h + hScroll.h),\n dataCellsTableHeight = !dataCellsRemHeight ? null : Math.ceil(Math.min(dataCellsRemHeight, dataCellsTbl.h));\n\n // get rowHeaders table width to match with rowButtons table width\n rHeadersTbl.addToWidth(rHeadersWidth - rHeadersTbl.w);\n\n // Set dataCellsTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(dataCellsTbl.node, dataCellsWidths.max);\n\n // Set colHeadersTable cells widths according to the computed dataCellsWidths\n domUtils.updateTableColGroup(cHeadersTbl.node, dataCellsWidths.max);\n\n // Set rowHeadersTable cells widths\n domUtils.updateTableColGroup(rHeadersTbl.node, rHeadersTbl.colWidths);\n\n dataCellsTbl.setStyle('width', dataCellsWidths.total);\n cHeadersTbl.setStyle('width', dataCellsWidths.total);\n rHeadersTbl.setStyle('width', rHeadersWidth);\n\n // Adjust data cells container and column headers container width\n dataCellsTbl.setParentStyle('width', dataCellsContainerWidth);\n cHeadersTbl.setParentStyle('width', dataCellsContainerWidth);\n\n if (dataCellsTableHeight) {\n // Adjust data cells container and row headers container height\n dataCellsTbl.setParentStyle('height', dataCellsTableHeight);\n rHeadersTbl.setParentStyle('height', dataCellsTableHeight);\n }\n\n // set pivotWrapperTable columns width to fixed value\n domUtils.updateTableColGroup(pivotWrapperTable, [rHeadersWidth, dataCellsContainerWidth, vScroll.w, Math.max(pivot.w - (rHeadersWidth + dataCellsContainerWidth + vScroll.w), 0)]);\n\n pivotComp.refs.horizontalScrollBar.refresh();\n pivotComp.refs.verticalScrollBar.refresh();\n }\n };\n\n function ComponentSizeInfo(component, isWrapper, childType) {\n var self = this,\n node = ReactDOM.findDOMNode(component),\n size;\n\n this.node = isWrapper ? node.children[0] : node;\n\n size = domUtils.getSize(this.node);\n this.w = size.width;\n this.h = size.height;\n\n this.setStyle = function(styleProp, value) {\n self.node.style[styleProp] = value + 'px';\n };\n\n this.setParentStyle = function(styleProp, value) {\n self.node.parentNode.style[styleProp] = value + 'px';\n };\n\n this.getLargestWidths = function(otherCompInfo) {\n var result = {\n max: [],\n total: 0\n };\n\n // get the array of max widths between dataCellsTable and colHeadersTable\n for (var i = 0; i < self.colWidths.length; i++) {\n result.max.push(Math.max(self.colWidths[i], otherCompInfo.colWidths[i]));\n result.total += result.max[i];\n }\n\n return result;\n };\n\n this.addToWidth = function(value) {\n if (value > 0) {\n self.w += value;\n self.colWidths[self.colWidths.length - 1] += value;\n }\n };\n\n if (childType === 'table') {\n // get array of column widths\n getAllColumnsWidth(this);\n }\n }\n\n function getAllColumnsWidth(tblObject) {\n if (tblObject && tblObject.node) {\n\n var tbl = tblObject.node;\n var colWidths = [];\n\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n // current row\n var currRow = tbl.rows[rowIndex];\n // reset colWidths index\n var arrayIndex = 0;\n var currWidth = null;\n\n // get the width of each cell within current row\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n // current cell\n var currCell = currRow.cells[cellIndex];\n\n if (currCell.__orb._visible) {\n // cell width\n //var cellwidth = Math.ceil(domUtils.getSize(currCell.children[0]).width/currCell.colSpan);\n var cellwidth = Math.ceil(currCell.__orb._textWidth / currCell.__orb._colSpan + currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n // whether current cell spans vertically to the last row\n var rowsSpan = currCell.__orb._rowSpan > 1 && currCell.__orb._rowSpan >= tbl.rows.length - rowIndex;\n\n // if current cell spans over more than one column, add its width (its) 'colSpan' number of times\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n // If cell span over more than 1 row: insert its width into colWidths at arrayIndex\n // Else: either expand colWidths if necessary or replace the width if its smaller than current cell width\n\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (colWidths.length - 1 < arrayIndex) {\n colWidths.push({\n width: cellwidth\n });\n } else if (cellwidth > colWidths[arrayIndex].width) {\n colWidths[arrayIndex].width = cellwidth;\n }\n\n colWidths[arrayIndex].inhibit = currCell.__orb._rowSpan - 1;\n\n // increment colWidths index\n arrayIndex++;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n\n // set colWidths to the tblObject\n tblObject.w = 0;\n tblObject.colWidths = colWidths.map(function(item, index) {\n tblObject.w += item.width;\n return item.width;\n });\n }\n }\n\n function setTableWidths(tblObject, colWidths) {\n if (tblObject && tblObject.node) {\n\n // reset table width\n (tblObject.size = tblObject.size || {}).width = 0;\n\n var tbl = tblObject.node;\n\n // for each row, set its cells width\n for (var rowIndex = 0; rowIndex < tbl.rows.length; rowIndex++) {\n\n // current row\n var currRow = tbl.rows[rowIndex];\n // index in colWidths\n var arrayIndex = 0;\n var currWidth = null;\n\n // set width of each cell\n for (var cellIndex = 0; cellIndex < currRow.cells.length; cellIndex++) {\n\n // current cell\n var currCell = currRow.cells[cellIndex];\n if (currCell.__orb._visible) {\n // cell width\n var newCellWidth = 0;\n // whether current cell spans vertically more than 1 row\n var rowsSpan = currCell.__orb._rowSpan > 1 && rowIndex < tbl.rows.length - 1;\n\n // current cell width is the sum of (its) \"colspan\" items in colWidths starting at 'arrayIndex'\n // 'arrayIndex' should be incremented by an amount equal to current cell 'colspan' but should also skip 'inhibited' cells\n for (var cspan = 0; cspan < currCell.__orb._colSpan; cspan++) {\n currWidth = colWidths[arrayIndex];\n // skip inhibited widths (width that belongs to an upper cell than spans vertically to current row)\n while (currWidth && currWidth.inhibit > 0) {\n currWidth.inhibit--;\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n\n if (currWidth) {\n // add width of cells participating in the span\n newCellWidth += currWidth.width;\n // if current cell spans vertically more than 1 row, mark its width as inhibited for all cells participating in this span\n if (rowsSpan) {\n currWidth.inhibit = currCell.__orb._rowSpan - 1;\n }\n\n // advance colWidths index\n arrayIndex++;\n }\n }\n\n currCell.children[0].style.width = newCellWidth + 'px';\n\n // set table width (only in first iteration)\n if (rowIndex === 0) {\n var outerCellWidth = 0;\n if (currCell.__orb) {\n outerCellWidth = currCell.__orb._colSpan * Math.ceil(currCell.__orb._paddingLeft + currCell.__orb._paddingRight + currCell.__orb._borderLeftWidth + currCell.__orb._borderRightWidth);\n }\n tblObject.w += newCellWidth + outerCellWidth;\n }\n }\n }\n\n // decrement inhibited state of all widths unsed in colWidths (not reached by current row cells)\n currWidth = colWidths[arrayIndex];\n while (currWidth) {\n if (currWidth.inhibit > 0) {\n currWidth.inhibit--;\n }\n arrayIndex++;\n currWidth = colWidths[arrayIndex];\n }\n }\n }\n }\n\n }, {\n \"../orb.utils.dom\": 52,\n \"react-dom\": \"react-dom\"\n }],\n 73: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n PivotButton = _dereq_('./orb.react.PivotButton.jsx'),\n DropTarget = _dereq_('./orb.react.DropTarget.jsx'),\n axe = _dereq_('../orb.axe');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n render: function render() {\n var self = this;\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n var fieldsDropTarget;\n if (config.canMoveFields) {\n var fieldsButtons = config.availablefields().map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: null,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n fieldsDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap av-flds text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Fields'\n )\n ),\n React.createElement(\n 'td', {\n className: 'av-flds'\n },\n React.createElement(DropTarget, {\n buttons: fieldsButtons,\n axetype: null\n })\n )\n );\n } else {\n fieldsDropTarget = null;\n }\n\n var dataButtons = config.dataFields.map(function(field, index) {\n return React.createElement(PivotButton, {\n key: field.name,\n field: field,\n axetype: axe.Type.DATA,\n position: index,\n pivotTableComp: self.props.pivotTableComp\n });\n });\n\n var dataDropTarget = React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n className: 'flds-grp-cap text-muted'\n },\n React.createElement(\n 'div',\n null,\n 'Data'\n )\n ),\n React.createElement(\n 'td', {\n className: 'empty'\n },\n React.createElement(DropTarget, {\n buttons: dataButtons,\n axetype: axe.Type.DATA\n })\n )\n );\n\n return React.createElement(\n 'table', {\n className: 'inner-table upper-buttons'\n },\n React.createElement(\n 'tbody',\n null,\n fieldsDropTarget,\n dataDropTarget\n )\n );\n }\n });\n\n }, {\n \"../orb.axe\": 36,\n \"./orb.react.DropTarget.jsx\": 58,\n \"./orb.react.PivotButton.jsx\": 63,\n \"react\": \"react\"\n }],\n 74: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n DragManager = _dereq_('./orb.react.DragManager.jsx'),\n SizingManager = _dereq_('./orb.react.PivotTable.SizingManager.jsx'),\n Toolbar = _dereq_('./orb.react.Toolbar.jsx'),\n UpperButtons = _dereq_('./orb.react.PivotTable.UpperButtons.jsx'),\n ColumnButtons = _dereq_('./orb.react.PivotTable.ColumnButtons.jsx'),\n RowButtons = _dereq_('./orb.react.PivotTable.RowButtons.jsx'),\n RowHeaders = _dereq_('./orb.react.PivotTable.RowHeaders.jsx'),\n ColumnHeaders = _dereq_('./orb.react.PivotTable.ColumnHeaders.jsx'),\n DataCells = _dereq_('./orb.react.PivotTable.DataCells.jsx'),\n ScrollBars = _dereq_('./orb.react.ScrollBars.jsx'),\n HorizontalScrollBar = ScrollBars.HorizontalScrollBar,\n VerticalScrollBar = ScrollBars.VerticalScrollBar,\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom'),\n pivotId = 1,\n themeChangeCallbacks = {};\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n id: pivotId++,\n pgrid: null,\n pgridwidget: null,\n fontStyle: null,\n getInitialState: function getInitialState() {\n DragManager.init(this);\n\n themeChangeCallbacks[this.id] = [];\n this.registerThemeChanged(this.updateClasses);\n\n this.pgridwidget = this.props.pgridwidget;\n this.pgrid = this.pgridwidget.pgrid;\n return {};\n },\n sort: function sort(axetype, field) {\n this.pgridwidget.sort(axetype, field);\n },\n moveButton: function moveButton(button, newAxeType, position) {\n this.pgridwidget.moveField(button.props.field.name, button.props.axetype, newAxeType, position);\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n this.pgridwidget.toggleSubtotals(axetype);\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n this.pgridwidget.toggleGrandtotal(axetype);\n },\n applyFilter: function applyFilter(fieldname, operator, term, staticValue, excludeStatic) {\n this.pgridwidget.applyFilter(fieldname, operator, term, staticValue, excludeStatic);\n },\n registerThemeChanged: function registerThemeChanged(compCallback) {\n if (compCallback) {\n themeChangeCallbacks[this.id].push(compCallback);\n }\n },\n unregisterThemeChanged: function unregisterThemeChanged(compCallback) {\n var i;\n if (compCallback && (i = themeChangeCallbacks[this.id].indexOf(compCallback)) >= 0) {\n themeChangeCallbacks[this.id].splice(i, 1);\n }\n },\n changeTheme: function changeTheme(newTheme) {\n if (this.pgridwidget.pgrid.config.setTheme(newTheme)) {\n // notify self/sub-components of the theme change\n for (var i = 0; i < themeChangeCallbacks[this.id].length; i++) {\n themeChangeCallbacks[this.id][i]();\n }\n }\n },\n updateClasses: function updateClasses() {\n var thisnode = ReactDOM.findDOMNode(this);\n var classes = this.pgridwidget.pgrid.config.theme.getPivotClasses();\n thisnode.className = classes.container;\n thisnode.children[1].className = classes.table;\n },\n componentDidUpdate: function componentDidUpdate() {\n this.synchronizeWidths();\n },\n componentDidMount: function componentDidMount() {\n var fontInfos = domUtils.getStyle(ReactDOM.findDOMNode(this), ['font-family', 'font-size'], true);\n this.fontStyle = {\n fontFamily: fontInfos[0],\n fontSize: fontInfos[1]\n };\n\n var dataCellsNode = ReactDOM.findDOMNode(this.refs.dataCells);\n var dataCellsTableNode = dataCellsNode.children[0];\n var colHeadersNode = ReactDOM.findDOMNode(this.refs.colHeaders);\n var rowHeadersNode = ReactDOM.findDOMNode(this.refs.rowHeaders);\n\n this.refs.horizontalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).width - domUtils.getSize(dataCellsNode).width));\n colHeadersNode.scrollLeft = scrollAmount;\n dataCellsNode.scrollLeft = scrollAmount;\n });\n\n this.refs.verticalScrollBar.setScrollClient(dataCellsNode, function(scrollPercent) {\n var scrollAmount = Math.ceil(scrollPercent * (domUtils.getSize(dataCellsTableNode).height - domUtils.getSize(dataCellsNode).height));\n rowHeadersNode.scrollTop = scrollAmount;\n dataCellsNode.scrollTop = scrollAmount;\n });\n\n this.synchronizeWidths();\n },\n onWheel: function onWheel(e) {\n var elem;\n var scrollbar;\n var amount;\n\n if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.colHeaders))) {\n scrollbar = this.refs.horizontalScrollBar;\n amount = e.deltaX || e.deltaY;\n } else if (e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.rowHeaders)) || e.currentTarget == (elem = ReactDOM.findDOMNode(this.refs.dataCells))) {\n scrollbar = this.refs.verticalScrollBar;\n amount = e.deltaY;\n }\n\n if (scrollbar && scrollbar.scroll(amount, e.deltaMode)) {\n utils.stopPropagation(e);\n utils.preventDefault(e);\n }\n },\n synchronizeWidths: function synchronizeWidths() {\n SizingManager.synchronizeWidths(this);\n this.refs.horizontalScrollBar.refresh();\n this.refs.verticalScrollBar.refresh();\n },\n render: function render() {\n\n var self = this;\n\n var config = this.pgridwidget.pgrid.config;\n var classes = config.theme.getPivotClasses();\n\n var tblStyle = {};\n if (config.width) {\n tblStyle.width = config.width;\n }\n if (config.height) {\n tblStyle.height = config.height;\n }\n\n return React.createElement(\n 'div', {\n className: classes.container,\n style: tblStyle,\n ref: 'pivot'\n },\n config.toolbar && config.toolbar.visible ? React.createElement(\n 'div', {\n ref: 'toolbar',\n className: 'orb-toolbar'\n },\n React.createElement(Toolbar, {\n pivotTableComp: self\n })\n ) : null,\n React.createElement(\n 'table', {\n id: 'tbl-' + self.id,\n ref: 'pivotWrapperTable',\n className: classes.table,\n style: {\n tableLayout: 'fixed'\n }\n },\n React.createElement(\n 'colgroup',\n null,\n React.createElement('col', {\n ref: 'column1'\n }),\n React.createElement('col', {\n ref: 'column2'\n }),\n React.createElement('col', {\n ref: 'column3'\n }),\n React.createElement('col', {\n ref: 'column4'\n })\n ),\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr', {\n ref: 'upperButtons',\n className: 'orb-upper-buttons'\n },\n React.createElement(\n 'td', {\n colSpan: '4'\n },\n React.createElement(UpperButtons, {\n pivotTableComp: self\n })\n )\n ),\n React.createElement(\n 'tr', {\n ref: 'colButtons',\n className: 'orb-column-buttons'\n },\n React.createElement('td', null),\n React.createElement(\n 'td', {\n style: {\n padding: '11px 4px !important'\n }\n },\n React.createElement(ColumnButtons, {\n pivotTableComp: self\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td', {\n style: {\n position: 'relative'\n }\n },\n React.createElement(RowButtons, {\n pivotTableComp: self,\n ref: 'rowButtons'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(ColumnHeaders, {\n pivotTableComp: self,\n ref: 'colHeaders'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(RowHeaders, {\n pivotTableComp: self,\n ref: 'rowHeaders'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(DataCells, {\n pivotTableComp: self,\n ref: 'dataCells'\n })\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(VerticalScrollBar, {\n pivotTableComp: self,\n ref: 'verticalScrollBar'\n })\n ),\n React.createElement('td', null)\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement('td', null),\n React.createElement(\n 'td',\n null,\n React.createElement(HorizontalScrollBar, {\n pivotTableComp: self,\n ref: 'horizontalScrollBar'\n })\n ),\n React.createElement('td', {\n colSpan: '2'\n })\n )\n )\n ),\n React.createElement('div', {\n className: 'orb-overlay orb-overlay-hidden',\n id: 'drilldialog' + self.id\n })\n );\n }\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"./orb.react.DragManager.jsx\": 56,\n \"./orb.react.PivotTable.ColumnButtons.jsx\": 67,\n \"./orb.react.PivotTable.ColumnHeaders.jsx\": 68,\n \"./orb.react.PivotTable.DataCells.jsx\": 69,\n \"./orb.react.PivotTable.RowButtons.jsx\": 70,\n \"./orb.react.PivotTable.RowHeaders.jsx\": 71,\n \"./orb.react.PivotTable.SizingManager.jsx\": 72,\n \"./orb.react.PivotTable.UpperButtons.jsx\": 73,\n \"./orb.react.ScrollBars.jsx\": 75,\n \"./orb.react.Toolbar.jsx\": 76,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 75: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n ReactDOM = _dereq_('react-dom'),\n utils = _dereq_('../orb.utils'),\n domUtils = _dereq_('../orb.utils.dom');\n\n var scrollBarMixin = {\n scrollEvent: null,\n scrollClient: null,\n getInitialState: function getInitialState() {\n // initial state, all zero.\n return {\n size: 16,\n mousedown: false,\n thumbOffset: 0\n };\n },\n componentDidMount: function componentDidMount() {\n this.scrollEvent = new ScrollEvent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n if (!this.state.mousedown) {\n // mouse not down, don't care about mouse up/move events.\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n } else if (this.state.mousedown) {\n // mouse down, interested by mouse up/move events.\n utils.addEventListener(document, 'mousemove', this.onMouseMove);\n utils.addEventListener(document, 'mouseup', this.onMouseUp);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n utils.removeEventListener(document, 'mousemove', this.onMouseMove);\n utils.removeEventListener(document, 'mouseup', this.onMouseUp);\n },\n onMouseDown: function onMouseDown(e) {\n // drag with left mouse button\n if (e.button !== 0) return;\n\n var thumbElem = this.refs.scrollThumb;\n var thumbposInParent = domUtils.getParentOffset(thumbElem);\n var mousePageXY = utils.getMousePageXY(e);\n\n domUtils.addClass(thumbElem, 'orb-scrollthumb-hover');\n\n // inform mousedown, save start pos\n this.setState({\n mousedown: true,\n mouseoffset: mousePageXY[this.mousePosProp],\n thumbOffset: thumbposInParent[this.posProp]\n });\n\n // prevent event bubbling (to prevent text selection while dragging for example)\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n onMouseUp: function onMouseUp() {\n\n if (this.state.mousedown) {\n var thumbElem = this.refs.scrollThumb;\n domUtils.removeClass(thumbElem, 'orb-scrollthumb-hover');\n }\n\n this.setState({\n mousedown: false\n });\n },\n onMouseMove: function onMouseMove(e) {\n\n // if the mouse is not down while moving, return (no drag)\n if (!this.state.mousedown) return;\n\n utils.stopPropagation(e);\n utils.preventDefault(e);\n\n var mousePageXY = utils.getMousePageXY(e);\n var amount = mousePageXY[this.mousePosProp] - this.state.mouseoffset;\n this.state.mouseoffset = mousePageXY[this.mousePosProp];\n\n this.scroll(amount);\n },\n getScrollSize: function getScrollSize() {\n if (this.scrollClient != null) {\n return domUtils.getSize(this.scrollClient)[this.sizeProp];\n } else {\n return domUtils.getSize(ReactDOM.findDOMNode(this))[this.sizeProp];\n }\n },\n setScrollClient: function setScrollClient(scrollClient, scrollCallback) {\n this.scrollClient = scrollClient;\n this.scrollEvent.callback = scrollCallback;\n },\n getScrollPercent: function getScrollPercent() {\n var maxOffset = this.getScrollSize() - this.state.size;\n return maxOffset <= 0 ? 0 : this.state.thumbOffset / maxOffset;\n },\n refresh: function refresh() {\n if (this.scrollClient) {\n var scrolledElement = this.scrollClient.children[0];\n\n var clientSize = domUtils.getSize(this.scrollClient);\n var elementSize = domUtils.getSize(scrolledElement);\n\n var scrollBarContainerSize = this.getScrollSize();\n var newSize = clientSize[this.sizeProp] >= elementSize[this.sizeProp] ? 0 : clientSize[this.sizeProp] / elementSize[this.sizeProp] * scrollBarContainerSize;\n\n this.setState({\n containerSize: scrollBarContainerSize,\n size: newSize,\n thumbOffset: Math.min(this.state.thumbOffset, scrollBarContainerSize - newSize)\n }, this.scrollEvent.raise);\n }\n },\n scroll: function scroll(amount, mode) {\n if (this.state.size > 0) {\n if (mode == 1) amount *= 8;\n\n var maxOffset = this.getScrollSize() - this.state.size;\n var newOffset = this.state.thumbOffset + amount;\n if (newOffset < 0) newOffset = 0;\n if (newOffset > maxOffset) newOffset = maxOffset;\n\n if (this.state.thumbOffset != newOffset) {\n this.setState({\n thumbOffset: newOffset\n }, this.scrollEvent.raise);\n return true;\n }\n }\n return false;\n },\n onWheel: function onWheel(e) {\n this.scroll(e.deltaY, e.deltaMode);\n utils.stopPropagation(e);\n utils.preventDefault(e);\n },\n render: function render() {\n var self = this;\n\n var thumbStyle = {\n padding: 0\n };\n thumbStyle[this.sizeProp] = this.state.size;\n thumbStyle[this.offsetCssProp] = this.state.thumbOffset;\n\n var thisStyle = {};\n thisStyle[this.sizeProp] = this.state.containerSize;\n\n var thumbClass = \"orb-scrollthumb \" + this.props.pivotTableComp.pgrid.config.theme.getButtonClasses().scrollBar;\n\n var scrollThumb = this.state.size <= 0 ? null : React.createElement('div', {\n className: thumbClass,\n style: thumbStyle,\n ref: 'scrollThumb',\n onMouseDown: this.onMouseDown\n });\n\n return React.createElement(\n 'div', {\n className: this.cssClass,\n style: thisStyle,\n onWheel: this.onWheel\n },\n scrollThumb\n );\n }\n };\n\n function ScrollEvent(scrollBarComp) {\n var self = this;\n this.scrollBarComp = scrollBarComp;\n this.callback = null;\n this.raise = function() {\n if (self.callback) {\n self.callback(self.scrollBarComp.getScrollPercent());\n }\n };\n }\n\n module.exports.HorizontalScrollBar = React.createClass({\n displayName: 'HorizontalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'x',\n mousePosProp: 'pageX',\n sizeProp: 'width',\n offsetCssProp: 'left',\n cssClass: 'orb-h-scrollbar'\n });\n\n module.exports.VerticalScrollBar = React.createClass({\n displayName: 'VerticalScrollBar',\n\n mixins: [scrollBarMixin],\n posProp: 'y',\n mousePosProp: 'pageY',\n sizeProp: 'height',\n offsetCssProp: 'top',\n cssClass: 'orb-v-scrollbar'\n });\n\n }, {\n \"../orb.utils\": 53,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\",\n \"react-dom\": \"react-dom\"\n }],\n 76: [function(_dereq_, module, exports) {\n\n var React = _dereq_('react'),\n axe = _dereq_('../orb.axe'),\n domUtils = _dereq_('../orb.utils.dom');\n\n module.exports = React.createClass({\n displayName: 'exports',\n\n _toInit: [],\n componentDidMount: function componentDidMount() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n for (var i = 0; i < this._toInit.length; i++) {\n var btn = this._toInit[i];\n btn.init(this.props.pivotTableComp, this.refs[btn.ref]);\n }\n },\n createCallback: function createCallback(action) {\n if (action != null) {\n var pgridComponent = this.props.pivotTableComp;\n return function(e) {\n action(pgridComponent, e.target || e.srcElement);\n };\n }\n return null;\n },\n render: function render() {\n\n var config = this.props.pivotTableComp.pgridwidget.pgrid.config;\n\n if (config.toolbar && config.toolbar.visible) {\n\n var configButtons = config.toolbar.buttons ? defaultToolbarConfig.buttons.concat(config.toolbar.buttons) : defaultToolbarConfig.buttons;\n\n var buttons = [];\n for (var i = 0; i < configButtons.length; i++) {\n var btnConfig = configButtons[i];\n var refName = 'btn' + i;\n\n if (btnConfig.type == 'separator') {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-sep'\n }));\n } else if (btnConfig.type == 'label') {\n buttons.push(React.createElement(\n 'div', {\n key: i,\n className: 'orb-tlbr-lbl'\n },\n btnConfig.text\n ));\n } else {\n buttons.push(React.createElement('div', {\n key: i,\n className: 'orb-tlbr-btn ' + btnConfig.cssClass,\n title: btnConfig.tooltip,\n ref: refName,\n onClick: this.createCallback(btnConfig.action)\n }));\n }\n if (btnConfig.init) {\n this._toInit.push({\n ref: refName,\n init: btnConfig.init\n });\n }\n }\n\n return React.createElement(\n 'div',\n null,\n buttons\n );\n }\n\n return React.createElement('div', null);\n }\n });\n\n var excelExport = _dereq_('../orb.export.excel');\n\n var defaultToolbarConfig = {\n exportToExcel: function exportToExcel(pgridComponent, button) {\n var a = document.createElement('a');\n a.download = \"orbpivotgrid.xls\";\n a.href = excelExport(pgridComponent.props.pgridwidget);\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n expandAllRows: function expandAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, true);\n },\n collapseAllRows: function collapseAllRows(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.ROWS, null, false);\n },\n expandAllColumns: function expandAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, true);\n },\n collapseAllColumns: function collapseAllColumns(pgridComponent, button) {\n pgridComponent.pgridwidget.toggleFieldExpansion(axe.Type.COLUMNS, null, false);\n },\n updateSubtotalsButton: function updateSubtotalsButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.areSubtotalsVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'subtotals-visible';\n classToRemove = 'subtotals-hidden';\n } else {\n classToAdd = 'subtotals-hidden';\n classToRemove = 'subtotals-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initSubtotals: function initSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n toggleSubtotals: function toggleSubtotals(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleSubtotals(axetype);\n self.updateSubtotalsButton(axetype, pgridComponent, button);\n };\n },\n updateGrandtotalButton: function updateGrandtotalButton(axetype, pgridComponent, button) {\n var subTotalsState = pgridComponent.pgridwidget.isGrandtotalVisible(axetype);\n button.style.display = subTotalsState === null ? 'none' : '';\n\n var classToAdd = '';\n var classToRemove = '';\n if (subTotalsState) {\n classToAdd = 'grndtotal-visible';\n classToRemove = 'grndtotal-hidden';\n } else {\n classToAdd = 'grndtotal-hidden';\n classToRemove = 'grndtotal-visible';\n }\n\n domUtils.removeClass(button, classToRemove);\n domUtils.addClass(button, classToAdd);\n },\n initGrandtotal: function initGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n },\n toggleGrandtotal: function toggleGrandtotal(axetype) {\n var self = this;\n return function(pgridComponent, button) {\n pgridComponent.toggleGrandtotal(axetype);\n self.updateGrandtotalButton(axetype, pgridComponent, button);\n };\n }\n };\n\n defaultToolbarConfig.buttons = [{\n type: 'label',\n text: 'Rows:'\n }, {\n type: 'button',\n tooltip: 'Expand all rows',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllRows\n }, {\n type: 'button',\n tooltip: 'Collapse all rows',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllRows\n }, {\n type: 'button',\n tooltip: 'Toggle rows sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.ROWS)\n }, {\n type: 'button',\n tooltip: 'Toggle rows grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.ROWS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.ROWS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Columns:'\n }, {\n type: 'button',\n tooltip: 'Expand all columns',\n cssClass: 'expand-all',\n action: defaultToolbarConfig.expandAllColumns\n }, {\n type: 'button',\n tooltip: 'Collapse all columns',\n cssClass: 'collapse-all',\n action: defaultToolbarConfig.collapseAllColumns\n }, {\n type: 'button',\n tooltip: 'Toggle columns sub totals',\n init: defaultToolbarConfig.initSubtotals(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleSubtotals(axe.Type.COLUMNS)\n }, {\n type: 'button',\n tooltip: 'Toggle columns grand total',\n init: defaultToolbarConfig.initGrandtotal(axe.Type.COLUMNS),\n action: defaultToolbarConfig.toggleGrandtotal(axe.Type.COLUMNS)\n }, {\n type: 'separator'\n }, {\n type: 'label',\n text: 'Export:'\n }, {\n type: 'button',\n tooltip: 'Export to Excel',\n cssClass: 'export-xls',\n action: defaultToolbarConfig.exportToExcel\n }];\n\n }, {\n \"../orb.axe\": 36,\n \"../orb.export.excel\": 39,\n \"../orb.utils.dom\": 52,\n \"react\": \"react\"\n }]\n }, {}, [41])(41)\n});"],"sourceRoot":"/source/"} \ No newline at end of file From 0fc3086936593f4668d97108667d2bdcba1f86b8 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Mon, 11 Apr 2016 15:32:04 -0400 Subject: [PATCH 08/13] use orb.js as main file --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e7bab38..2f55b52 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "aggregation", "dimension" ], - "main": "dist/orb.js", + "main": "src/js/orb.js", "files": [ "README.md", "LICENCE", From 343c6a6492e28fde614997cbb03c3351e182c17c Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Mon, 11 Apr 2016 16:05:17 -0400 Subject: [PATCH 09/13] Use onClick for filter button (to work around issue woth dashboard) --- src/js/react/orb.react.PivotButton.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/react/orb.react.PivotButton.jsx b/src/js/react/orb.react.PivotButton.jsx index 0be93c8..4e59c46 100644 --- a/src/js/react/orb.react.PivotButton.jsx +++ b/src/js/react/orb.react.PivotButton.jsx @@ -189,7 +189,7 @@ module.exports = React.createClass({ {self.props.field.caption}{fieldAggFunc}
-
+
From 16d65bb89bd207e1132476152ae80e9b2a79c52f Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Wed, 20 Apr 2016 09:09:04 -0400 Subject: [PATCH 10/13] Allow styleFunc setting for applying data driven css class --- src/js/orb.config.js | 15 ++++++++++++++- src/js/react/orb.react.PivotCell.jsx | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/js/orb.config.js b/src/js/orb.config.js index 611a218..4ae9fa2 100644 --- a/src/js/orb.config.js +++ b/src/js/orb.config.js @@ -1,3 +1,4 @@ + /** * @fileOverview Pivot Grid axe viewmodel * @author Najmeddine Nouri @@ -40,6 +41,7 @@ function mergefieldconfigs() { merged.functions.push({ aggregateFuncName: nnconfig.aggregateFuncName, aggregateFunc: i === 0 ? nnconfig.aggregateFunc : (nnconfig.aggregateFunc ? nnconfig.aggregateFunc() : null), + styleFunc: i === 0 ? nnconfig.styleFunc : (nnconfig.styleFunc ? nnconfig.styleFunc() : null), formatFunc: i === 0 ? nnconfig.formatFunc : (nnconfig.formatFunc ? nnconfig.formatFunc() : null) }); } @@ -99,7 +101,8 @@ function createfield(rootconfig, axetype, fieldconfig, defaultfieldconfig) { aggregateFuncName: getpropertyvalue('aggregateFuncName', merged.functions, 'sum'), aggregateFunc: getpropertyvalue('aggregateFunc', merged.functions, aggregation.sum), - formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc) + formatFunc: getpropertyvalue('formatFunc', merged.functions, defaultFormatFunc), + styleFunc: getpropertyvalue('styleFunc', merged.functions, null) }, false); } @@ -157,6 +160,7 @@ var Field = module.exports.field = function(options, createSubOptions) { // data settings var _aggregatefunc; var _formatfunc; + var _styleFunc; this.aggregateFunc = function(func) { if (func) { @@ -174,6 +178,14 @@ var Field = module.exports.field = function(options, createSubOptions) { } }; + this.styleFunc = function(func) { + if (func) { + _styleFunc = func; + } else { + return _styleFunc; + } + } + this.aggregateFuncName = options.aggregateFuncName || (options.aggregateFunc ? (utils.isString(options.aggregateFunc) ? @@ -183,6 +195,7 @@ var Field = module.exports.field = function(options, createSubOptions) { this.aggregateFunc(options.aggregateFunc); this.formatFunc(options.formatFunc); + this.styleFunc(options.styleFunc); if (createSubOptions !== false) { (this.rowSettings = new Field(options.rowSettings, false)).name = this.name; diff --git a/src/js/react/orb.react.PivotCell.jsx b/src/js/react/orb.react.PivotCell.jsx index 1fa32f4..c0fcf9f 100644 --- a/src/js/react/orb.react.PivotCell.jsx +++ b/src/js/react/orb.react.PivotCell.jsx @@ -1,3 +1,4 @@ + /* global module, require, React */ /*jshint eqnull: true*/ @@ -113,6 +114,7 @@ module.exports = React.createClass({ value = cell.value.caption; break; case 'cell-template-datavalue': + console.log(cell.datafield); value = (cell.datafield && cell.datafield.formatFunc) ? cell.datafield.formatFunc()(cell.value) : cell.value; cellClick = function() { self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id); @@ -160,6 +162,10 @@ function getClassname(compProps) { classname += ' header-st-exp'; } + if(cell.type == uiheaders.HeaderType.DATA_VALUE && cell.datafield && cell.datafield.styleFunc()) { + classname += ' ' + cell.datafield.styleFunc()(cell.value); + } + if(cell.type === uiheaders.HeaderType.GRAND_TOTAL) { if(cell.dim.depth === 1) { classname += ' header-nofields'; From 2e317b262e8a99f1a7cc1827a94d592900c8aafb Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Wed, 20 Apr 2016 14:11:05 -0400 Subject: [PATCH 11/13] doc for styleFunc --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1465cfc..4c6f93f 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Pivot grid javascript library. - Data headers location - Grand totals visibility - Sub totals visibility & collapsed state -- Data cells aggregate & format functions +- Data cells aggregate, style & format functions - Theming: built-in & Bootstrap #### Data query @@ -91,5 +91,6 @@ q.val({ ``` + ## Licence [MIT](https://github.com/nnajm/orb/blob/master/LICENSE) From 21c91cb7a999dfe92cbad77acf98329275d2d623 Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Wed, 20 Apr 2016 14:11:30 -0400 Subject: [PATCH 12/13] rendered event on pgridwidget --- src/js/orb.ui.pgridwidget.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/js/orb.ui.pgridwidget.js b/src/js/orb.ui.pgridwidget.js index 3c51213..fd8998c 100644 --- a/src/js/orb.ui.pgridwidget.js +++ b/src/js/orb.ui.pgridwidget.js @@ -15,6 +15,7 @@ var ReactDOM = require('react-dom'), uiheaders = require('./orb.ui.header'), uirows = require('./orb.ui.rows'), uicols = require('./orb.ui.cols'), + PubSub = require('./orb.pubsub'), Dialog = require('./react/orb.react.Dialog.jsx'), PivotChart = require('./react/orb.react.PivotChart.jsx'), @@ -27,13 +28,16 @@ var ReactDOM = require('react-dom'), * @memberOf orb.ui * @param {object} pgrid - pivot grid instance */ -module.exports = function(config) { +var pgridwidget = module.exports = function(config) { var self = this; var renderElement; var pivotComponent; var dialog = Dialog.create(); + // inherit PubSub + PubSub.call(this); + /** * Parent pivot grid * @type {orb.pgrid} @@ -167,6 +171,7 @@ module.exports = function(config) { }); pivotComponent = ReactDOM.render(pivottable, renderElement); + this.publish(pgridwidget.EVENT_RENDERED); } }; @@ -276,3 +281,7 @@ module.exports = function(config) { init(); }; + +// event raised when the grid is re-rendered +// (as the grid is re-rendered when it is sorted, filtered etc, this also applies to these events) +pgridwidget.EVENT_RENDERED = 'pgridwidget:rendered'; From f4e3d8283c2c4939f06eb11ca3c2336f4fd45f1c Mon Sep 17 00:00:00 2001 From: Nicolas Galler Date: Wed, 20 Apr 2016 14:24:09 -0400 Subject: [PATCH 13/13] stray console.log --- src/js/react/orb.react.PivotCell.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/js/react/orb.react.PivotCell.jsx b/src/js/react/orb.react.PivotCell.jsx index c0fcf9f..9ddb817 100644 --- a/src/js/react/orb.react.PivotCell.jsx +++ b/src/js/react/orb.react.PivotCell.jsx @@ -114,7 +114,6 @@ module.exports = React.createClass({ value = cell.value.caption; break; case 'cell-template-datavalue': - console.log(cell.datafield); value = (cell.datafield && cell.datafield.formatFunc) ? cell.datafield.formatFunc()(cell.value) : cell.value; cellClick = function() { self.props.pivotTableComp.pgridwidget.drilldown(cell, self.props.pivotTableComp.id);