/*! mason_viewer.js github.com/yeastrc/mason The Mason Viewer is created by calling MasonViewer.createMasonViewer = function ( $rootDiv, requestParams, configParams, callbackFunctionsObj ) { where MasonViewer is an object at window.MasonViewer. configParams is merged with the following parameters MasonViewerPerInstanceRenderOnPage.prototype.configDisplayOptionDefaults = { TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE : 2, LABEL_FONT_SIZE : 12, ROW_HEIGHT : 15, // Adjust the ROW_HEIGHT to accommodate the height of the label BLOCK_HEIGHT : 14, // Adjust the BLOCK_HEIGHT to accommodate the height of the label LABEL_WIDTH : 100, // Adjust the LABEL_WIDTH to accommodate the width of the longest label ICON_EXPAND_ROW_STARTING_POSITION : 1, ICON_EXPAND_ROW_WIDTH : 15, ICON_EXPAND_ROW_SPACE_AFTER : 2, ROW_TOTALS_BAR_RIGHT_MAX_WIDTH : 30, ROW_TOTAL_BLOCK_MINIMUM_SIZE : 1, ROW_TOTALS_BAR_RIGHT_SPACE_FROM_MAIN_GRID : 10, ROW_TOTALS_BAR_RIGHT_SPACE_FROM_RIGHT_EDGE : 4, BORDER_COLOR : "black", BORDER_WIDTH : 1, FOOTER_HEIGHT : 2, // Tool tip text CLICK_TO_CONTRACT_TO_HIDE_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT_PREFIX : "Click to hide individual ", CLICK_TO_EXPAND_TO_SHOW_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT_PREFIX : "Click to show individual ", blockTypeLabelPlural : "blocks", BLOCK_HIGHLIGHT_BORDER_COLOR : "pink", BLOCK_HIGHLIGHT_BORDER_WIDTH : 2, createCombinedLineOnly : undefined, // set to true to only create combined line skipCreateCombinedLine : undefined, // set to true to skip create combined line combinedLineLabel : "Combined", // label on left for combined line combinedLineTooltipHTML : undefined, // tool tip for label on left for combined line ALIGNMENT_LINE_COLOR : "black", ALIGNMENT_LINE_WIDTH : 2 }; */ (function(window){var MasonViewer=function(){};MasonViewer.prototype.instanceCounter=0;MasonViewer.prototype.createMasonViewer=function($rootDiv,requestParams,configParams,callbackFunctionsObj){if($rootDiv===undefined||$rootDiv===null){throw"$rootDiv is missing or null"}if(requestParams===undefined||requestParams===null){throw"requestParams is missing or null"}if(configParams===undefined||configParams===null){throw"configParams is missing or null"}if(callbackFunctionsObj===undefined||callbackFunctionsObj===null){throw"callbackFunctionsObj is missing or null"}var rootDivLength=$rootDiv.length;if(rootDivLength!=1){throw"Error calling 'MasonViewer.createMasonViewer': $rootDiv must contain exactly one element"}var svgSupport=Modernizr.svg;if(!svgSupport){throw"SVG not supported"}this.instanceCounter++;var internalParams={masonViewerMain:this,instanceCounter:this.instanceCounter};var masonViewerInstance=new MasonViewerPerInstance($rootDiv,requestParams,configParams,callbackFunctionsObj,internalParams);return masonViewerInstance};MasonViewer.prototype.getDataElement=function(){return"MasonViewer"};MasonViewer.prototype.getProtCovObjectStorageClassName=function(){return"ProtCovObjectStorageClass"};var MasonViewer=new MasonViewer();window.MasonViewer=MasonViewer;"use strict";"use strict";var MasonViewerPerInstance=function($rootDiv,requestParams,configParams,callbackFunctionsObj,internalParams){var objectThis=this;var rootDivLength=$rootDiv.length;if(rootDivLength!=1){throw"Error calling 'MasonViewer.createMasonViewer': $rootDiv must contain exactly one element"}var masonViewerMain=internalParams.masonViewerMain;var protCovObjectStorageNodeHTML=' <div class="'+masonViewerMain.getProtCovObjectStorageClassName()+'" >';$(protCovObjectStorageNodeHTML).appendTo($rootDiv);var protCovObjectStorageNodeSelector="."+masonViewerMain.getProtCovObjectStorageClassName();var $protCovObjectStorageNode=$rootDiv.children(protCovObjectStorageNodeSelector);if($protCovObjectStorageNode.size()===0){throw"Unable to find protCovObjectStorageNode under $rootDiv, protCovObjectStorageNodeSelector = "+protCovObjectStorageNodeSelector}$protCovObjectStorageNode.data(masonViewerMain.getDataElement(),this);var dataReformattedToInternalFormat=objectThis.reformatDataToInternalFormat(requestParams);var computedRepresentation=objectThis.computeRepresentation($rootDiv,dataReformattedToInternalFormat,requestParams,configParams);objectThis.renderViewerOnThePage($rootDiv,computedRepresentation,requestParams,configParams,callbackFunctionsObj,internalParams)};MasonViewerPerInstance.prototype.renderViewerOnThePage=function($rootDiv,data,requestParams,configParams,callbackFunctionsObj,internalParams){var objectThisMasonViewerPerInstanceCopy=this;this.masonViewerPerInstanceRenderOnPage=new MasonViewerPerInstanceRenderOnPage($rootDiv,data,requestParams,configParams,callbackFunctionsObj,internalParams,objectThisMasonViewerPerInstanceCopy);this.masonViewerPerInstanceRenderOnPage.renderViewerOnThePageMain()};MasonViewerPerInstance.prototype.MESSAGE_TYPE_RENDER_ON_PAGE="RENDER_ON_PAGE";MasonViewerPerInstance.prototype.hideVerticalDataLines=function(){this.masonViewerPerInstanceRenderOnPage.hideVerticalDataLines()};MasonViewerPerInstance.prototype.showVerticalDataLines=function(){this.masonViewerPerInstanceRenderOnPage.showVerticalDataLines()};MasonViewerPerInstance.prototype.deleteViewer=function(){this.masonViewerPerInstanceRenderOnPage.deleteViewer()};MasonViewerPerInstance.prototype.acceptMessage=function(message){if(message.type===MasonViewerPerInstance.prototype.MESSAGE_TYPE_RENDER_ON_PAGE){this.masonViewerPerInstanceRenderOnPage.acceptMessage(message.data)}else{throw"unknown type in message at 'MasonViewerPerInstance.prototype.acceptMessage'. type: "+message.type}};MasonViewerPerInstance.prototype.registerBlockHoverListener=function(params){this.masonViewerPerInstanceRenderOnPage.registerBlockHoverListener(params)};"use strict";MasonViewerPerInstance.prototype.computeRepresentation=function($rootDiv,dataReformattedToInternalFormat,requestParams,configParams){var objectThis=this;var computedData={outputRows:[]};var outputRows=computedData.outputRows; var inputData=dataReformattedToInternalFormat;var rowItems=inputData.rowItems;for(var rowItemsIndex=0;rowItemsIndex<rowItems.length;rowItemsIndex++){var rowItem=rowItems[rowItemsIndex];var blockItems=rowItem.blockItems;var splitOutput=objectThis.combineOverlapsProteinPositionBased(blockItems);var mainLineBlocks=splitOutput.outputList;var outputRow={label:rowItem.label,mainLineBlocks:mainLineBlocks,blockItems:blockItems,splitAnyEntries:splitOutput.splitAnyEntries,inputRowItem:rowItem.inputRowItem,vertLinesItems:rowItem.vertLinesItems};outputRows.push(outputRow)}return computedData};"use strict";MasonViewerPerInstance.prototype.combineOverlaps_Z_compareForSortBlocks=function(a,b){if(a.blockStartPos===b.blockStartPos){return b.blockEndPos-a.blockEndPos}return a.blockStartPos-b.blockStartPos};MasonViewerPerInstance.prototype.copyArray=function(inputArray){var outputArray=inputArray.concat();return outputArray};MasonViewerPerInstance.prototype.concatArrays=function(inputArray1,inputArray2){var outputArray=inputArray1.concat(inputArray2);return outputArray};MasonViewerPerInstance.prototype.combineOverlapsProteinPositionBased=function(blockItemsInputParam){var splitAnyEntries=false;var splitAnEntryThisIterationOfLoop=true;var numTimesSplitAnEntryLoop=0;var blockItemListInput=null;var blockItemListOutput=this.combineEntriesProteinPositionBased(numTimesSplitAnEntryLoop,blockItemsInputParam);while(splitAnEntryThisIterationOfLoop){numTimesSplitAnEntryLoop++;if(numTimesSplitAnEntryLoop>200){var errorMsg="combineOverlapsProteinPositionBased(...): numTimesSplitAnEntryLoop > 200 so throwing exception. ";throw errorMsg}splitAnEntryThisIterationOfLoop=false;blockItemListInput=blockItemListOutput;blockItemListOutput=[];blockItemListInput.sort(this.combineOverlaps_Z_compareForSortBlocks);var index=-1;while((++index)<blockItemListInput.length){var blockItem=blockItemListInput[index];if(index===(blockItemListInput.length-1)){blockItemListOutput.push(blockItem)}else{var blockItemNext=blockItemListInput[index+1];if(blockItem.blockEndPos<blockItemNext.blockStartPos){blockItemListOutput.push(blockItem)}else{splitAnEntryThisIterationOfLoop=true;splitAnyEntries=true;if(blockItem.blockStartPos===blockItemNext.blockStartPos){var blockItemSplitBefore={blockDataItems:this.copyArray(blockItem.blockDataItems),blockStartPos:blockItem.blockStartPos,blockEndPos:blockItemNext.blockEndPos};var blockItemSplitAfter={blockDataItems:this.copyArray(blockItem.blockDataItems),blockStartPos:blockItemNext.blockEndPos+1,blockEndPos:blockItem.blockEndPos};blockItemListOutput.push(blockItemSplitBefore);blockItemListOutput.push(blockItemSplitAfter)}else{var blockItemSplitBefore={blockDataItems:this.copyArray(blockItem.blockDataItems),blockStartPos:blockItem.blockStartPos,blockEndPos:(blockItemNext.blockStartPos-1)};var blockItemSplitAfter={blockDataItems:this.copyArray(blockItem.blockDataItems),blockStartPos:blockItemNext.blockStartPos,blockEndPos:blockItem.blockEndPos};blockItemListOutput.push(blockItemSplitBefore);blockItemListOutput.push(blockItemSplitAfter)}}}}blockItemListOutput=this.combineEntriesProteinPositionBased(numTimesSplitAnEntryLoop,blockItemListOutput)}var finalOutput={splitAnyEntries:splitAnyEntries,outputList:blockItemListOutput};return finalOutput};MasonViewerPerInstance.prototype.combineEntriesProteinPositionBased=function(numTimesSplitAnEntryLoop,blockItemListInput){var blockItemListOutput=[];var index;blockItemListInput.sort(this.combineOverlaps_Z_compareForSortBlocks);index=-1;while((++index)<blockItemListInput.length){var blockItem=blockItemListInput[index];if(index===(blockItemListInput.length-1)){blockItemListOutput.push(blockItem)}else{var indexNext=index;while((++indexNext)<blockItemListInput.length){var blockItemNext=blockItemListInput[indexNext];if(blockItem.blockStartPos===blockItemNext.blockStartPos&&blockItem.blockEndPos===blockItemNext.blockEndPos){index=indexNext;blockItem.blockDataItems=this.concatArrays(blockItem.blockDataItems,blockItemNext.blockDataItems)}else{break}}blockItemListOutput.push(blockItem)}}return blockItemListOutput};"use strict";MasonViewerPerInstance.prototype.reformatDataToInternalFormat=function(requestParams){var inputData=requestParams.inputData;if(!inputData){throw"requestParams.inputData is missing or null"}if(inputData.maxSequenceLength===undefined||inputData.maxSequenceLength===null||typeof inputData.maxSequenceLength!=="number"){throw"requestParams.inputData.maxSequenceLength is missing or null or is not a number"}var outputRowItems=[];var inputDataReformatted={maxSequenceLength:inputData.maxSequenceLength,rowItems:outputRowItems,vertLinesAllRowsItems:inputData.vertLinesAllRowsItems};var rowItems=inputData.rowItems;if(!inputData.rowItems){throw"requestParams.inputData.rowItems is missing or null"}if(inputData.rowItems.length===0){throw"requestParams.inputData.rowItems is empty"}for(var rowItemsIdx=0;rowItemsIdx<rowItems.length;rowItemsIdx++){var rowItem=rowItems[rowItemsIdx];if(rowItem.label===undefined||rowItem.label===null||rowItem.label===""){throw"requestParams.inputData.rowItems.rowItem[ index ].label is missing or null or is empty for index = "+rowItemsIdx}var outputBlockItems=[];var blockItems=rowItem.blockItems;if(!blockItems){throw"requestParams.inputData.rowItems.rowItem[ index ].blockItems is missing or null for index = "+rowItemsIdx}for(var blockItemsIdx=0;blockItemsIdx<blockItems.length;blockItemsIdx++){var blockItem=blockItems[blockItemsIdx];if(blockItem.startPos===undefined){throw"requestParams.inputData.rowItems.rowItem[ rowItemsIdx ].blockItem[ blockItemsIdx ] is missing property 'startPos' rowItemsIdx = "+rowItemsIdx+", and blockItemsIdx = "+blockItemsIdx}if(blockItem.endPos===undefined){throw"requestParams.inputData.rowItems.rowItem[ rowItemsIdx ].blockItem[ blockItemsIdx ] is missing property 'endPos' rowItemsIdx = "+rowItemsIdx+", and blockItemsIdx = "+blockItemsIdx}if(blockItem.blockData===undefined){throw"requestParams.inputData.rowItems.rowItem[ rowItemsIdx ].blockItem[ blockItemsIdx ] is missing property 'blockData' rowItemsIdx = "+rowItemsIdx+", and blockItemsIdx = "+blockItemsIdx }var outputBlockItem={blockStartPos:blockItem.startPos,blockEndPos:blockItem.endPos,blockDataItems:[blockItem.blockData]};outputBlockItems.push(outputBlockItem)}var outputRowItem={label:rowItem.label,blockItems:outputBlockItems,inputRowItem:rowItem,vertLinesItems:rowItem.vertLinesItems};outputRowItems.push(outputRowItem)}return inputDataReformatted};"use strict";var ProgramaticDataStorageGroupOfRows=function(){this.SVGGroup=undefined;this.firstOutputRowSVGGroup=undefined;this.nextProgramaticDataStorageGroupOfRows=undefined};ProgramaticDataStorageGroupOfRows.prototype.getSVGGroup=function(){return this.SVGGroup};ProgramaticDataStorageGroupOfRows.prototype.setSVGGroup=function(SVGGroup_){this.SVGGroup=SVGGroup_};ProgramaticDataStorageGroupOfRows.prototype.getFirstOutputRowSVGGroup=function(){return this.firstOutputRowSVGGroup};ProgramaticDataStorageGroupOfRows.prototype.setFirstOutputRowSVGGroup=function(firstOutputRowSVGGroup_){this.firstOutputRowSVGGroup=firstOutputRowSVGGroup_};ProgramaticDataStorageGroupOfRows.prototype.getNextProgramaticDataStorageGroupOfRows=function(){return this.nextProgramaticDataStorageGroupOfRows};ProgramaticDataStorageGroupOfRows.prototype.setNextProgramaticDataStorageGroupOfRows=function(nextProgramaticDataStorageGroupOfRows_){this.nextProgramaticDataStorageGroupOfRows=nextProgramaticDataStorageGroupOfRows_};var ProgramaticDataStorage=function(){this.outputRow=undefined;this.rowIdx=undefined;this.rowOffset=undefined;this.createHiddenBlocksIfNotCreatedCallback=undefined;this.SVGRowXmainBlocksGROUP=undefined;this.groupToMoveForExpansion=undefined;this.hiddenBlocksVisible=false;this.hiddenBlocksForRowSet=undefined;this.hiddenBlocksHeight=0;this.SVGGroupExpansionIcon=undefined;this.mainBlocksBoxUnderEachRow=undefined;this.hiddenBlocksBoxUnderEachRow=undefined;this.toolTipHTML=undefined};ProgramaticDataStorage.prototype.getCreateHiddenBlocksIfNotCreatedCallback=function(){return this.createHiddenBlocksIfNotCreatedCallback};ProgramaticDataStorage.prototype.setCreateHiddenBlocksIfNotCreatedCallback=function(createHiddenBlocksIfNotCreatedCallback_){this.createHiddenBlocksIfNotCreatedCallback=createHiddenBlocksIfNotCreatedCallback_};ProgramaticDataStorage.prototype.getOutputRow=function(){return this.outputRow};ProgramaticDataStorage.prototype.setOutputRow=function(outputRow_){this.outputRow=outputRow_};ProgramaticDataStorage.prototype.getRowOffset=function(){return this.rowOffset};ProgramaticDataStorage.prototype.setRowOffset=function(rowOffset_){this.rowOffset=rowOffset_};ProgramaticDataStorage.prototype.getRowIdx=function(){return this.rowIdx};ProgramaticDataStorage.prototype.setRowIdx=function(rowIdx_){this.rowIdx=rowIdx_};ProgramaticDataStorage.prototype.getSVGRowXmainBlocksGROUP=function(){return this.SVGRowXmainBlocksGROUP};ProgramaticDataStorage.prototype.setSVGRowXmainBlocksGROUP=function(SVGRowXmainBlocksGROUP_){this.SVGRowXmainBlocksGROUP=SVGRowXmainBlocksGROUP_};ProgramaticDataStorage.prototype.getGroupToMoveForExpansion=function(){return this.groupToMoveForExpansion};ProgramaticDataStorage.prototype.setGroupToMoveForExpansion=function(groupToMoveForExpansion_){this.groupToMoveForExpansion=groupToMoveForExpansion_};ProgramaticDataStorage.prototype.getHiddenBlocksVisible=function(){return this.hiddenBlocksVisible};ProgramaticDataStorage.prototype.setHiddenBlocksVisible=function(hiddenBlocksVisible_){this.hiddenBlocksVisible=hiddenBlocksVisible_};ProgramaticDataStorage.prototype.getHiddenBlocksForRowSet=function(){return this.hiddenBlocksForRowSet};ProgramaticDataStorage.prototype.setHiddenBlocksForRowSet=function(hiddenBlocksForRowSet_){this.hiddenBlocksForRowSet=hiddenBlocksForRowSet_};ProgramaticDataStorage.prototype.getHiddenBlocksHeight=function(){return this.hiddenBlocksHeight};ProgramaticDataStorage.prototype.setHiddenBlocksHeight=function(hiddenBlocksHeight_){this.hiddenBlocksHeight=hiddenBlocksHeight_};ProgramaticDataStorage.prototype.getSVGGroupExpansionIcon=function(){return this.SVGGroupExpansionIcon};ProgramaticDataStorage.prototype.setSVGGroupExpansionIcon=function(SVGGroupExpansionIcon_){this.SVGGroupExpansionIcon=SVGGroupExpansionIcon_};ProgramaticDataStorage.prototype.getMainBlocksBoxUnderEachRow=function(){return this.mainBlocksBoxUnderEachRow};ProgramaticDataStorage.prototype.setMainBlocksBoxUnderEachRow=function(mainBlocksBoxUnderEachRow_){this.mainBlocksBoxUnderEachRow=mainBlocksBoxUnderEachRow_};ProgramaticDataStorage.prototype.getHiddenBlocksBoxUnderEachRow=function(){return this.hiddenBlocksBoxUnderEachRow};ProgramaticDataStorage.prototype.setHiddenBlocksBoxUnderEachRow=function(hiddenBlocksBoxUnderEachRow){this.hiddenBlocksBoxUnderEachRow=hiddenBlocksBoxUnderEachRow};ProgramaticDataStorage.prototype.getToolTipHTML=function(){return this.toolTipHTML};ProgramaticDataStorage.prototype.setToolTipHTML=function(toolTipHTML){this.toolTipHTML=toolTipHTML};"use strict";var MasonViewerPerInstanceRenderOnPage=function($rootDiv,data,requestParams,configParams,callbackFunctionsObj,internalParams,objectThisMasonViewerPerInstance){this.constructorParams={$rootDiv:$rootDiv,data:data,requestParams:requestParams,configParams:configParams,callbackFunctionsObj:callbackFunctionsObj,internalParams:internalParams,objectThisMasonViewerPerInstance:objectThisMasonViewerPerInstance};this.configDisplayOptions={};$.extend(this.configDisplayOptions,MasonViewerPerInstanceRenderOnPage.prototype.configDisplayOptionDefaults,configParams);this.configDisplayOptions.LABEL_STARTING_POSITION=this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH+this.configDisplayOptions.ICON_EXPAND_ROW_SPACE_AFTER;this.configDisplayOptions.MAIN_BOX_STARTING_POSITION=this.configDisplayOptions.LABEL_STARTING_POSITION+this.configDisplayOptions.LABEL_WIDTH;this.configDisplayOptions.CLICK_TO_CONTRACT_TO_HIDE_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT=this.configDisplayOptions.CLICK_TO_CONTRACT_TO_HIDE_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT_PREFIX+this.configDisplayOptions.blockTypeLabelPlural; this.configDisplayOptions.CLICK_TO_EXPAND_TO_SHOW_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT=this.configDisplayOptions.CLICK_TO_EXPAND_TO_SHOW_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT_PREFIX+this.configDisplayOptions.blockTypeLabelPlural;this.GLOBALS={masonViewerSVG:undefined,overallWidth:undefined,sequenceWidth:undefined,sequenceMultiplier:undefined,rowsPerGroup:undefined,viewerHeightInsideTheBox:undefined,arrayOfcurrentSVGgroupOfRowXandBelow:[],setSVGVerticalDataLines:undefined,setSVGVerticalDataFullHeightLines:undefined,showVerticalDataLines:true};this.GLOBALS.MAIN_BOX_STARTING_POSITION=this.configDisplayOptions.MAIN_BOX_STARTING_POSITION};MasonViewerPerInstanceRenderOnPage.prototype.renderViewerOnThePageMain=function(){this.createSVG_Lib_Instance();this.putDataOnThePageMain();this.resizeOverallImageLength()};MasonViewerPerInstanceRenderOnPage.prototype.createSVG_Lib_Instance=function(){var overallWidth=this.constructorParams.$rootDiv.width();var masonViewerRootHTML_Element=this.constructorParams.$rootDiv[0];try{this.GLOBALS.masonViewerSVG=SVG(masonViewerRootHTML_Element).size(overallWidth,5)}catch(e){var stracktrace=e.stack;throw"Exception creating SVG. "+stracktrace}this.GLOBALS.setSVGVerticalDataLines=this.GLOBALS.masonViewerSVG.set();this.GLOBALS.overallWidth=overallWidth;this.GLOBALS.rowTotalsBarRightStartingPoint=overallWidth-(this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_MAX_WIDTH+this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_SPACE_FROM_RIGHT_EDGE);this.GLOBALS.sequenceWidth=overallWidth-(this.configDisplayOptions.LABEL_STARTING_POSITION+this.configDisplayOptions.LABEL_WIDTH)-(this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_MAX_WIDTH+this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_SPACE_FROM_MAIN_GRID+this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_SPACE_FROM_RIGHT_EDGE);this.GLOBALS.sequenceMultiplier=this.GLOBALS.sequenceWidth/(this.constructorParams.requestParams.inputData.maxSequenceLength),this.GLOBALS.leftLineX=this.configDisplayOptions.MAIN_BOX_STARTING_POSITION-0.5;this.GLOBALS.rightLineX=this.configDisplayOptions.MAIN_BOX_STARTING_POSITION+this.GLOBALS.sequenceWidth+0.5;var outputRowsLength=this.constructorParams.data.outputRows.length;this.GLOBALS.rowsPerGroup=Math.floor(Math.sqrt(outputRowsLength));if(this.GLOBALS.rowsPerGroup<MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.MIN_MAX_VALUES.MINIMUM_ROWS_PER_GROUP){this.GLOBALS.rowsPerGroup=MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.MIN_MAX_VALUES.MINIMUM_ROWS_PER_GROUP}if(MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.MIN_MAX_VALUES.MAXIMUM_ROWS_PER_GROUP){if(this.GLOBALS.rowsPerGroup>MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.MIN_MAX_VALUES.MAXIMUM_ROWS_PER_GROUP){this.GLOBALS.rowsPerGroup=MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.MIN_MAX_VALUES.MAXIMUM_ROWS_PER_GROUP}}};MasonViewerPerInstanceRenderOnPage.prototype.putDataOnThePageMain=function(){var outputRows=this.constructorParams.data.outputRows;this.add_callbackDataStorage_ToElementsIn_outputRows(outputRows);var SVGrootGroupInsideBoundingBox=this.GLOBALS.masonViewerSVG.group();SVGrootGroupInsideBoundingBox.attr("label","SVGrootGroupInsideBoundingBox");var currentGroupOfRowsSVGgroup=this.GLOBALS.masonViewerSVG.group();this.setupGroupOfRows(currentGroupOfRowsSVGgroup);var currentGroupOfRowsSVGgroupProgramaticStorage=this.getProgramaticDataStorageFromSVG_js_Item(currentGroupOfRowsSVGgroup);SVGrootGroupInsideBoundingBox.add(currentGroupOfRowsSVGgroup);var currentSVGgroupOfRowXandBelow=this.GLOBALS.masonViewerSVG.group();this.setupRootGroupForEachRow(currentSVGgroupOfRowXandBelow);var currentSVGgroupOfRowXandBelowProgramaticDataStorage=this.getProgramaticDataStorageFromSVG_js_Item(currentSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelowProgramaticDataStorage._type="currentSVGgroupOfRowXandBelow";currentSVGgroupOfRowXandBelowProgramaticDataStorage._attachedTo=currentSVGgroupOfRowXandBelow;currentGroupOfRowsSVGgroup.add(currentSVGgroupOfRowXandBelow);currentGroupOfRowsSVGgroupProgramaticStorage.setFirstOutputRowSVGGroup(currentSVGgroupOfRowXandBelow);var rowOffsetMainArea=0;if((outputRows.length>1||this.configDisplayOptions.createCombinedLineOnly)&&!this.configDisplayOptions.skipCreateCombinedLine){this.processCombinedRow(outputRows,0,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage);nextSVGgroupOfRowXandBelow=this.GLOBALS.masonViewerSVG.group();nextSVGgroupOfRowXandBelow.attr("label","nextSVGgroupOfRowXandBelow");currentSVGgroupOfRowXandBelow.add(nextSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelowProgramaticDataStorage.setGroupToMoveForExpansion(nextSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelow=nextSVGgroupOfRowXandBelow;this.setupRootGroupForEachRow(currentSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelowProgramaticDataStorage=this.getProgramaticDataStorageFromSVG_js_Item(currentSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelowProgramaticDataStorage._type="currentSVGgroupOfRowXandBelow";currentSVGgroupOfRowXandBelowProgramaticDataStorage._attachedTo=currentSVGgroupOfRowXandBelow;rowOffsetMainArea=1}this.precomputeValuesOnCreateForMainRows(outputRows);var rowCount=0;if(this.configDisplayOptions.createCombinedLineOnly!==true){rowCount=outputRows.length;for(var rowIdx=0;rowIdx<outputRows.length;rowIdx++){var rowOffset=rowIdx+rowOffsetMainArea;var outputRow=outputRows[rowIdx];currentSVGgroupOfRowXandBelow.data("row-rowIdx",rowIdx);var currentSVGgroupOfRowXandBelowProgramaticDataStorage=this.getProgramaticDataStorageFromSVG_js_Item(currentSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelowProgramaticDataStorage._type="currentSVGgroupOfRowXandBelow";currentSVGgroupOfRowXandBelowProgramaticDataStorage._attachedTo=currentSVGgroupOfRowXandBelow;currentSVGgroupOfRowXandBelowProgramaticDataStorage.setOutputRow(outputRow);currentSVGgroupOfRowXandBelowProgramaticDataStorage.setRowIdx(rowIdx);currentSVGgroupOfRowXandBelowProgramaticDataStorage.setRowOffset(rowOffset);var SVGRowXmainBlocksGROUP=this.GLOBALS.masonViewerSVG.group(); currentSVGgroupOfRowXandBelow.add(SVGRowXmainBlocksGROUP);SVGRowXmainBlocksGROUP.attr("label","SVGRowXmainBlocksGROUP");currentSVGgroupOfRowXandBelowProgramaticDataStorage.setSVGRowXmainBlocksGROUP(SVGRowXmainBlocksGROUP);this.addBoxUnderEachRowForMouseOver(SVGRowXmainBlocksGROUP,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowOffset);this.processLabelForRow(outputRow,currentSVGgroupOfRowXandBelow,rowOffset);var splitAnyEntries=outputRow.splitAnyEntries;if(splitAnyEntries){this.createMainLineHiddenBlocksIfNotCreatedCallbackCreator(outputRow,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowOffset);this.createHiddenBlocksExpansionIcon(this.configDisplayOptions.CLICK_TO_EXPAND_TO_SHOW_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT,SVGRowXmainBlocksGROUP,rowOffset,currentSVGgroupOfRowXandBelowProgramaticDataStorage)}this.processMainLineBlocksForRow(outputRow,currentSVGgroupOfRowXandBelow,SVGRowXmainBlocksGROUP,rowOffset);this.processRowTotalBlockForRow(outputRow,currentSVGgroupOfRowXandBelow,rowOffset);var nextSVGgroupOfRowXandBelow=this.GLOBALS.masonViewerSVG.group();nextSVGgroupOfRowXandBelow.attr("label","nextSVGgroupOfRowXandBelow");this.setupRootGroupForEachRow(nextSVGgroupOfRowXandBelow);if(rowIdx>0&&(rowIdx%this.GLOBALS.rowsPerGroup===0)){var nextGroupOfRowsSVGgroup=this.GLOBALS.masonViewerSVG.group();this.setupGroupOfRows(nextGroupOfRowsSVGgroup);var nextGroupOfRowsSVGgroupProgramaticStorage=this.getProgramaticDataStorageFromSVG_js_Item(nextGroupOfRowsSVGgroup);currentGroupOfRowsSVGgroup.add(nextGroupOfRowsSVGgroup);currentGroupOfRowsSVGgroupProgramaticStorage.setNextProgramaticDataStorageGroupOfRows(nextGroupOfRowsSVGgroupProgramaticStorage);currentGroupOfRowsSVGgroup=nextGroupOfRowsSVGgroup;currentGroupOfRowsSVGgroupProgramaticStorage=nextGroupOfRowsSVGgroupProgramaticStorage;currentGroupOfRowsSVGgroup.add(nextSVGgroupOfRowXandBelow);currentGroupOfRowsSVGgroupProgramaticStorage.setFirstOutputRowSVGGroup(nextSVGgroupOfRowXandBelow)}else{currentSVGgroupOfRowXandBelow.add(nextSVGgroupOfRowXandBelow);currentSVGgroupOfRowXandBelowProgramaticDataStorage.setGroupToMoveForExpansion(nextSVGgroupOfRowXandBelow)}currentSVGgroupOfRowXandBelow=nextSVGgroupOfRowXandBelow}}this.addFullHeightLines();this.addBottomLineAndBottomScale(currentSVGgroupOfRowXandBelow,rowCount);this.addTopLine(SVGrootGroupInsideBoundingBox)};MasonViewerPerInstanceRenderOnPage.prototype.addTopLine=function(currentSVGgroupOfRowXandBelow){var topLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.leftLineX-0.5,this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.rightLineX+0.5,this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});currentSVGgroupOfRowXandBelow.add(topLine)};MasonViewerPerInstanceRenderOnPage.prototype.addBottomLineAndBottomScale=function(currentSVGgroupOfRowXandBelow,rowCount){var bottomOfGrid=(rowCount+1)*this.configDisplayOptions.ROW_HEIGHT;if(rowCount<=1||this.configDisplayOptions.skipCreateCombinedLine){bottomOfGrid=(rowCount)*this.configDisplayOptions.ROW_HEIGHT}if(this.configDisplayOptions.createCombinedLineOnly){bottomOfGrid=(rowCount+1)*this.configDisplayOptions.ROW_HEIGHT}var leftScaleTextSVG=this.GLOBALS.masonViewerSVG.text("1");var textY=(bottomOfGrid)+(this.configDisplayOptions.ROW_HEIGHT/2);textY=textY+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;this.setSVGTextPosition({textSVG:leftScaleTextSVG,x:this.GLOBALS.leftLineX,y:textY});var rightScaleValue=this.constructorParams.requestParams.inputData.maxSequenceLength+"";var rightScaleTextSVG=this.GLOBALS.masonViewerSVG.text(rightScaleValue);this.clearStyleAnd_dy_OnSVGtextItem(rightScaleTextSVG);var textY=(bottomOfGrid)+(this.configDisplayOptions.ROW_HEIGHT/2);textY=textY+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;this.setSVGTextPosition({textSVG:rightScaleTextSVG,x:this.GLOBALS.rightLineX,y:textY,otherAttrsToSet:[{attrName:"text-anchor",attrValue:"end"}]});var bottomLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.leftLineX-0.5,(bottomOfGrid)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.rightLineX+0.5,(bottomOfGrid)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});currentSVGgroupOfRowXandBelow.add(leftScaleTextSVG);currentSVGgroupOfRowXandBelow.add(rightScaleTextSVG);currentSVGgroupOfRowXandBelow.add(bottomLine)};MasonViewerPerInstanceRenderOnPage.prototype.resizeOverallImageLength=function(){var visibleBlocksRowCount=this.constructorParams.data.outputRows.length;if(visibleBlocksRowCount>1&&(!this.configDisplayOptions.skipCreateCombinedLine)){visibleBlocksRowCount+=1}if(this.configDisplayOptions.createCombinedLineOnly){visibleBlocksRowCount=1}var visibleRowsHeight=this.configDisplayOptions.ROW_HEIGHT*visibleBlocksRowCount;var hiddenBlocksThatAreVisibleHeight=0;for(var index=0;index<this.GLOBALS.arrayOfcurrentSVGgroupOfRowXandBelow.length;index++){var SVGgroup=this.GLOBALS.arrayOfcurrentSVGgroupOfRowXandBelow[index];var SVGgroupProgramaticDataStorage=this.getProgramaticDataStorageFromSVG_js_Item(SVGgroup);if(SVGgroupProgramaticDataStorage.getHiddenBlocksVisible()){hiddenBlocksThatAreVisibleHeight+=SVGgroupProgramaticDataStorage.getHiddenBlocksHeight()}}var viewerHeightInsideTheBox=visibleRowsHeight+hiddenBlocksThatAreVisibleHeight;this.GLOBALS.viewerHeightInsideTheBox=viewerHeightInsideTheBox;var overallImageHeight=this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE+viewerHeightInsideTheBox+this.configDisplayOptions.ROW_HEIGHT+this.configDisplayOptions.FOOTER_HEIGHT;this.GLOBALS.masonViewerSVG.size(this.GLOBALS.overallWidth,overallImageHeight);this.updateFullHeightLines()};MasonViewerPerInstanceRenderOnPage.prototype.showHideAllVerticalDataLinesPer_GLOBALS_showVerticalDataLines=function(){if(this.GLOBALS.showVerticalDataLines){this.constructorParams.objectThisMasonViewerPerInstance.showVerticalDataLines() }else{this.constructorParams.objectThisMasonViewerPerInstance.hideVerticalDataLines()}};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.configDisplayOptionDefaults={TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE:2,LABEL_FONT_SIZE:12,ROW_HEIGHT:15,BLOCK_HEIGHT:14,LABEL_WIDTH:100,ICON_EXPAND_ROW_STARTING_POSITION:1,ICON_EXPAND_ROW_WIDTH:15,ICON_EXPAND_ROW_SPACE_AFTER:2,ROW_TOTALS_BAR_RIGHT_MAX_WIDTH:30,ROW_TOTAL_BLOCK_MINIMUM_SIZE:1,ROW_TOTALS_BAR_RIGHT_SPACE_FROM_MAIN_GRID:10,ROW_TOTALS_BAR_RIGHT_SPACE_FROM_RIGHT_EDGE:4,BORDER_COLOR:"black",BORDER_WIDTH:1,FOOTER_HEIGHT:2,CLICK_TO_CONTRACT_TO_HIDE_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT_PREFIX:"Click to hide individual ",CLICK_TO_EXPAND_TO_SHOW_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT_PREFIX:"Click to show individual ",blockTypeLabelPlural:"blocks",BLOCK_HIGHLIGHT_BORDER_COLOR:"pink",BLOCK_HIGHLIGHT_BORDER_WIDTH:2,createCombinedLineOnly:undefined,skipCreateCombinedLine:undefined,combinedLineLabel:"Combined",combinedLineTooltipHTML:undefined,ALIGNMENT_LINE_COLOR:"black",ALIGNMENT_LINE_WIDTH:2};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.deleteViewer=function(){var $SVGroot=this.constructorParams.$rootDiv.find("svg");$SVGroot.remove()};MasonViewerPerInstanceRenderOnPage.prototype.hideVerticalDataLines=function(){this.GLOBALS.setSVGVerticalDataLines.hide();this.GLOBALS.showVerticalDataLines=false};MasonViewerPerInstanceRenderOnPage.prototype.showVerticalDataLines=function(){this.GLOBALS.setSVGVerticalDataLines.show();this.GLOBALS.showVerticalDataLines=true};MasonViewerPerInstanceRenderOnPage.prototype.MESSAGE_TYPE_REMOVE_ALIGNMENTS="REMOVE_ALIGNMENTS";MasonViewerPerInstanceRenderOnPage.prototype.MESSAGE_TYPE_ADD_ALIGNMENTS="ADD_ALIGNMENTS";MasonViewerPerInstanceRenderOnPage.prototype.acceptMessage=function(message){if(message.type===MasonViewerPerInstanceRenderOnPage.prototype.MESSAGE_TYPE_REMOVE_ALIGNMENTS){this.removeAlignmentLines(message.data)}else{if(message.type===MasonViewerPerInstanceRenderOnPage.prototype.MESSAGE_TYPE_ADD_ALIGNMENTS){this.addAlignmentLines(message.data)}else{throw"unknown type in message at 'MasonViewerPerInstanceRenderOnPage.prototype.acceptMessage'. type: "+message.type}}};MasonViewerPerInstanceRenderOnPage.prototype.removeAlignmentLines=function(params){if(this.GLOBALS.setSVGAlignmentLines){this.GLOBALS.setSVGAlignmentLines.each(function(i){this.remove()});this.GLOBALS.setSVGAlignmentLines.clear()}};MasonViewerPerInstanceRenderOnPage.prototype.addAlignmentLines=function(params){var viewerHeightInsideTheBox=this.GLOBALS.viewerHeightInsideTheBox;this.GLOBALS.setSVGAlignmentLines=this.GLOBALS.masonViewerSVG.set();var linePosArray=params.linePosArray;for(var linePosArrayIndex=0;linePosArrayIndex<linePosArray.length;linePosArrayIndex++){var linePos=linePosArray[linePosArrayIndex];var linePixel=this.positionCharPositionToPixel(linePos);var centerOfAlignmentLine=linePixel+this.GLOBALS.MAIN_BOX_STARTING_POSITION;var halfOfAlignmentLineWidth=this.configDisplayOptions.ALIGNMENT_LINE_WIDTH/2;var x=centerOfAlignmentLine-halfOfAlignmentLineWidth;var y1=this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var y2=this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE+viewerHeightInsideTheBox;var verticalLineSVG=this.GLOBALS.masonViewerSVG.line(x,y1,x,y2).stroke({color:this.configDisplayOptions.ALIGNMENT_LINE_COLOR,width:this.configDisplayOptions.ALIGNMENT_LINE_WIDTH});this.GLOBALS.setSVGAlignmentLines.add(verticalLineSVG)}};MasonViewerPerInstanceRenderOnPage.prototype.registerBlockHoverListener=function(params){var hoverListener=params.hoverListener;if(!this.blockHoverCallList){this.blockHoverCallList=[]}this.blockHoverCallList.push(hoverListener)};MasonViewerPerInstanceRenderOnPage.prototype.callListenersForBlockMouseEnter=function(params){if(this.blockHoverCallList){var blockInfo=params.blockInfo;var startPos=blockInfo.startPos;var endPos=blockInfo.endPos;var line1=this.limitCharPositionMaxSeqLength(startPos-0.5);var line2=this.limitCharPositionMaxSeqLength(endPos+0.5);var callParams={linePosArray:[line1,line2]};var message=this.createAddAlignmentsMessage(callParams);for(var blockHoverCallListIndex=0;blockHoverCallListIndex<this.blockHoverCallList.length;blockHoverCallListIndex++){var blockHoverCallListItem=this.blockHoverCallList[blockHoverCallListIndex];blockHoverCallListItem.passMessage(message)}}};MasonViewerPerInstanceRenderOnPage.prototype.callListenersForBlockMouseLeave=function(params){if(this.blockHoverCallList){var message=this.createRemoveAlignmentsMessage({});for(var blockHoverCallListIndex=0;blockHoverCallListIndex<this.blockHoverCallList.length;blockHoverCallListIndex++){var blockHoverCallListItem=this.blockHoverCallList[blockHoverCallListIndex];blockHoverCallListItem.passMessage(message)}}};MasonViewerPerInstanceRenderOnPage.prototype.createAddAlignmentsMessage=function(data){var localMessage={type:MasonViewerPerInstanceRenderOnPage.prototype.MESSAGE_TYPE_ADD_ALIGNMENTS,data:data};var topLevelMessage=this.createMessage(localMessage);return topLevelMessage};MasonViewerPerInstanceRenderOnPage.prototype.createRemoveAlignmentsMessage=function(data){var localMessage={type:MasonViewerPerInstanceRenderOnPage.prototype.MESSAGE_TYPE_REMOVE_ALIGNMENTS,data:data};var topLevelMessage=this.createMessage(localMessage);return topLevelMessage};MasonViewerPerInstanceRenderOnPage.prototype.createMessage=function(data){var message={type:MasonViewerPerInstance.prototype.MESSAGE_TYPE_RENDER_ON_PAGE,data:data};return message};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.animateTransformY=function(params){var SVGoGroupToMove=params.SVGoGroupToMove;var yToTransformTo=params.yToTransformTo;var functionToRunAfterAnimate=params.functionToRunAfterAnimate;SVGoGroupToMove.animate({duration:150,ease:"-",delay:0}).transform({y:yToTransformTo}).after(functionToRunAfterAnimate)};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS={MIN_MAX_VALUES:{MINIMUM_ROWS_PER_GROUP:20},CLASSES:{PROT_COV_VIEWER_GROUP_OR_ROWS:"prot_cov_viewer_group_of_rows",PROT_COV_VIEWER_GROUP_ROW_MAIN:"prot_cov_viewer_group_row_main",PROT_COV_VIEWER_GROUP_ROW_VISIBLE:"prot_cov_viewer_group_row_visible"},JQUERY_DATA_LABELS:{JQUERY_DATA_LABEL_PROGRAMATIC:"programatic"}}; "use strict";MasonViewerPerInstanceRenderOnPage.prototype.addFullHeightLines=function(){var objectThis=this;var rowIdx=0;var vertLinesAllRowsItems=this.constructorParams.requestParams.inputData.vertLinesAllRowsItems;if(vertLinesAllRowsItems&&vertLinesAllRowsItems.length>0&&objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions.getColorForLine){this.GLOBALS.setSVGVerticalDataFullHeightLines=this.GLOBALS.masonViewerSVG.set();for(var vertLinesAllRowsItemsIdx=0;vertLinesAllRowsItemsIdx<vertLinesAllRowsItems.length;vertLinesAllRowsItemsIdx++){var lineData=vertLinesAllRowsItems[vertLinesAllRowsItemsIdx];var linePos=lineData.linePos;var vertLineData=lineData.vertLineData;if(vertLineData===undefined||vertLineData===null){throw" inputData.vertLinesAllRowsItems[ vertLinesAllRowsItemsIdx ].vertLineData is empty or null for vertLinesAllRowsItemsIdx = "+vertLinesAllRowsItemsIdx}if(linePos===undefined||linePos===null){throw" inputData.vertLinesAllRowsItems[ vertLinesAllRowsItemsIdx ].linePos is empty or null for vertLinesAllRowsItemsIdx = "+vertLinesAllRowsItemsIdx}lineData.callbackDataStorage={};if(objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={vertLineData:vertLineData,linePos:linePos,callbackDataStorage:lineData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}var linePixel=this.positionCharPositionToPixel(linePos);var x=linePixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y1=this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var y2=this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE+this.configDisplayOptions.ROW_HEIGHT;var getColorForLineParams={vertLineData:vertLineData,callbackDataStorage:lineData.callbackDataStorage,forHiddenLines:false};var colorForLine=objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions.getColorForLine(getColorForLineParams);this.isValidColor(colorForLine);var verticalLineSVG=this.GLOBALS.masonViewerSVG.line(x,y1,x,y2).stroke({color:colorForLine,width:this.configDisplayOptions.BORDER_WIDTH});this.GLOBALS.setSVGVerticalDataLines.add(verticalLineSVG);this.GLOBALS.setSVGVerticalDataFullHeightLines.add(verticalLineSVG);this.addProgramaticDataStorageToSVG_js_Item(verticalLineSVG);verticalLineSVG.data("row-rowIdx",rowIdx);verticalLineSVG.data("placement","primary row lines");verticalLineSVG.data("block-id",lineData.id);var attachMouseOverVerticalLineParams={verticalLineSVG:verticalLineSVG,lineData:lineData,callbackFunctions:objectThis.constructorParams.callbackFunctionsObj.allRowsVerticalLines_callbackFunctions};this.attachMouseOverVerticalLine(attachMouseOverVerticalLineParams)}}};MasonViewerPerInstanceRenderOnPage.prototype.updateFullHeightLines=function(params){if(this.GLOBALS.setSVGVerticalDataFullHeightLines){var y2=this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE+this.GLOBALS.viewerHeightInsideTheBox;this.GLOBALS.setSVGVerticalDataFullHeightLines.each(function(index){this.attr("y2",y2)})}};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.convertBlockColorTo_SVGJS_FillColor=function(colorForBlock){if(colorForBlock===undefined||colorForBlock===null){throw"ERROR: colorForBlock === undefined || colorForBlock === null"}if(typeof colorForBlock=="string"||colorForBlock instanceof String){this.isValidColor(colorForBlock);return colorForBlock}else{var colorForBlockRoundedAndValidated=this.roundAndValidateColor(colorForBlock);var fillColor={r:colorForBlockRoundedAndValidated.red,g:colorForBlockRoundedAndValidated.green,b:colorForBlockRoundedAndValidated.blue};return fillColor}throw"Code error in 'convertBlockColorTo_SVGJS_FillColor', should have returned by this point: value passed is: "+colorForBlock};MasonViewerPerInstanceRenderOnPage.prototype.isValidColor=function(colorParam){if(typeof colorParam=="string"||colorParam instanceof String){}else{throw"'isValidColor' only valid for string input. colorParam: "+colorParam}if(/^#[a-f0-9]{6}$/i.test(colorParam)){return}throw"color is a string but is not a valid hex color with 6 positions (e.g. #ff0066): value passed is: "+colorParam};MasonViewerPerInstanceRenderOnPage.prototype.roundAndValidateColor=function(colorForBlock){if(colorForBlock===undefined||colorForBlock===null){throw"ERROR: colorForBlock === undefined || colorForBlock === null"}if(colorForBlock.red===undefined||colorForBlock.red===null){throw"ERROR: colorForBlock.red === undefined || colorForBlock.red === null"}if(colorForBlock.green===undefined||colorForBlock.green===null){throw"ERROR: colorForBlock.green === undefined || colorForBlock.green === null"}if(colorForBlock.blue===undefined||colorForBlock.blue===null){throw"ERROR: colorForBlock.blue === undefined || colorForBlock.blue === null"}var colorForBlockOut={red:Math.round(colorForBlock.red),green:Math.round(colorForBlock.green),blue:Math.round(colorForBlock.blue)};if(colorForBlockOut.red<0||colorForBlockOut.red>255){throw"colorForBlock.red calculated < 0 or > 255, is = "+colorForBlockOut.red}if(colorForBlockOut.green<0||colorForBlockOut.green>255){throw"colorForBlock.green calculated < 0 or > 255, is = "+colorForBlockOut.green}if(colorForBlockOut.blue<0||colorForBlockOut.blue>255){throw"colorForBlock.blue calculated < 0 or > 255, is = "+colorForBlockOut.blue}return colorForBlockOut};MasonViewerPerInstanceRenderOnPage.prototype.getIdForSVG_js_item=function(SVG_js_item){var id=SVG_js_item.attr("id");return id};MasonViewerPerInstanceRenderOnPage.prototype.getJQueryObjForRawSVGFromSVG_js_item=function(SVG_js_item){if(SVG_js_item===undefined||SVG_js_item===null){throw"ERROR: SVG_js_item === undefined || SVG_js_item === null" }var $jQueryObj=$(SVG_js_item.node);return $jQueryObj};MasonViewerPerInstanceRenderOnPage.prototype.getSVG_js_itemForJQueryObj=function($jQueryObj){if($jQueryObj===undefined||$jQueryObj===null){throw"ERROR: $jQueryObj === undefined || $jQueryObj === null"}if($jQueryObj.length===0){throw"ERROR: $jQueryObj.length === 0"}var SVG_js_item=$jQueryObj[0].instance;return SVG_js_item};MasonViewerPerInstanceRenderOnPage.prototype.addProgramaticDataStorageGroupOfRowsToJQueryItem=function($item){var programaticDataStorageGroupOfRows=new ProgramaticDataStorageGroupOfRows();$item.data(MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.JQUERY_DATA_LABELS.JQUERY_DATA_LABEL_PROGRAMATIC,programaticDataStorageGroupOfRows);programaticDataStorageGroupOfRows.$item=$item;return programaticDataStorageGroupOfRows};MasonViewerPerInstanceRenderOnPage.prototype.getProgramaticDataStorageGroupOfRowsFromJQueryItem=function($item){var programaticDataStorageGroupOfRows=$item.data(MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.JQUERY_DATA_LABELS.JQUERY_DATA_LABEL_PROGRAMATIC);if(programaticDataStorageGroupOfRows===undefined){}return programaticDataStorageGroupOfRows};MasonViewerPerInstanceRenderOnPage.prototype.addProgramaticDataStorageGroupOfRowsToSVG_js_Item=function(SVGitem){var $jQueryItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGitem);return this.addProgramaticDataStorageGroupOfRowsToJQueryItem($jQueryItem)};MasonViewerPerInstanceRenderOnPage.prototype.getProgramaticDataStorageGroupOfRowsFromSVG_js_Item=function(SVGitem){var $jQueryItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGitem);var programaticDataStorageGroupOfRows=this.getProgramaticDataStorageGroupOfRowsFromJQueryItem($jQueryItem);return programaticDataStorageGroupOfRows};MasonViewerPerInstanceRenderOnPage.prototype.addProgramaticDataStorageToJQueryItem=function($item){var programaticDataStorage=new ProgramaticDataStorage();$item.data(MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.JQUERY_DATA_LABELS.JQUERY_DATA_LABEL_PROGRAMATIC,programaticDataStorage);programaticDataStorage.$item=$item;return programaticDataStorage};MasonViewerPerInstanceRenderOnPage.prototype.getProgramaticDataStorageFromJQueryItem=function($item){var programaticDataStorage=$item.data(MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.JQUERY_DATA_LABELS.JQUERY_DATA_LABEL_PROGRAMATIC);if(programaticDataStorage===undefined){}return programaticDataStorage};MasonViewerPerInstanceRenderOnPage.prototype.addProgramaticDataStorageToSVG_js_Item=function(SVGitem){var $jQueryItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGitem);return this.addProgramaticDataStorageToJQueryItem($jQueryItem)};MasonViewerPerInstanceRenderOnPage.prototype.getProgramaticDataStorageFromSVG_js_Item=function(SVGitem){var $jQueryItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGitem);var programaticDataStorage=this.getProgramaticDataStorageFromJQueryItem($jQueryItem);return programaticDataStorage};MasonViewerPerInstanceRenderOnPage.prototype.set_class_directly_OnSVGItem_using_jQuery=function(SVGItem,classValue){var $SVGItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGItem);$SVGItem.attr("class",classValue)};MasonViewerPerInstanceRenderOnPage.prototype.set_attr_directly_OnSVGtextItem_using_jQuery=function(SVGtextItem,attrName,attrValue){var $SVGtextItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGtextItem);$SVGtextItem.attr(attrName,attrValue);var $tspanChild=$SVGtextItem.children("tspan");$tspanChild.attr(attrName,attrValue)};MasonViewerPerInstanceRenderOnPage.prototype.clearStyleAnd_dy_OnSVGtextItem=function(SVGtextItem){var $SVGtextItem=this.getJQueryObjForRawSVGFromSVG_js_item(SVGtextItem);$SVGtextItem.attr("style","");$SVGtextItem.attr("dy","");var $tspanChild=$SVGtextItem.children("tspan");$tspanChild.attr("style","");$tspanChild.attr("dy","")};MasonViewerPerInstanceRenderOnPage.prototype.attachToolTipToJqueryHtmlNode=function($htmlNode,getTooltipTextFcn,callbackFunctions){$htmlNode.mouseenter(function(eventObject){var text=getTooltipTextFcn();Tip(text,DELAY,0);if(callbackFunctions&&callbackFunctions.mouseenter){callbackFunctions.mouseenter(this)}});$htmlNode.mouseleave(function(eventObject){UnTip();if(callbackFunctions&&callbackFunctions.mouseleave){callbackFunctions.mouseleave(this)}})};MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverVerticalLine=function(params){var verticalLineSVG=params.verticalLineSVG;var lineData=params.lineData;var callbackFunctions=params.callbackFunctions;var $verticalLineSVG=this.getJQueryObjForRawSVGFromSVG_js_item(verticalLineSVG);var getToolTextParams={vertLineData:lineData.vertLineData,linePos:lineData.linePos,callbackDataStorage:lineData.callbackDataStorage};this.attachToolTipToJqueryHtmlNode($verticalLineSVG,function(tooltip,node){var tooltipHTML=callbackFunctions.getLinesToolTipText(getToolTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML})};MasonViewerPerInstanceRenderOnPage.prototype.get$groupOfRowsFor$currentElement=function($currentElement){var groupOfRowsSelector="g."+MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.CLASSES.PROT_COV_VIEWER_GROUP_OR_ROWS;var $groupOfRows=$currentElement.parent().closest(groupOfRowsSelector);if($groupOfRows.length===0){throw"Unable to find group of rows element using selector '"+groupOfRowsSelector+"'."}return $groupOfRows};MasonViewerPerInstanceRenderOnPage.prototype.get$rowMainGroupFor$currentElement=function($currentElement){var rowMainGroupSelector="g."+MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.CLASSES.PROT_COV_VIEWER_GROUP_ROW_MAIN;var $rowMainGroup=$currentElement.parent().closest(rowMainGroupSelector);if($rowMainGroup.length===0){throw"Unable to find main group element using selector '"+rowMainGroupSelector+"'."}return $rowMainGroup};MasonViewerPerInstanceRenderOnPage.prototype.attachClickShowHideToggleHiddenBlocksRow=function(SVGObject){var objectThis=this;var $SVGObject=this.getJQueryObjForRawSVGFromSVG_js_item(SVGObject);$SVGObject.click(function(event,ui){objectThis.clickShowHideToggleHiddenBlocksRow(event,ui,this) })};MasonViewerPerInstanceRenderOnPage.prototype.setSVGTextPosition=function(setSVGTextPositionParams){var textSVG=setSVGTextPositionParams.textSVG;var x=setSVGTextPositionParams.x;var y=setSVGTextPositionParams.y;var otherAttrsToSet=setSVGTextPositionParams.otherAttrsToSet;var additionalStyle=setSVGTextPositionParams.additionalStyle;if(additionalStyle===undefined||additionalStyle===null){additionalStyle=""}textSVG.move(x,y);this.set_attr_directly_OnSVGtextItem_using_jQuery(textSVG,"dy",".35em");this.set_attr_directly_OnSVGtextItem_using_jQuery(textSVG,"style","font-size:"+this.configDisplayOptions.LABEL_FONT_SIZE+"px;font-family:Helvetica, Arial, sans-serif"+additionalStyle);if(otherAttrsToSet!==undefined&&otherAttrsToSet!==null&&otherAttrsToSet instanceof Array&&otherAttrsToSet.length>0){for(var otherAttrsIdx=0;otherAttrsIdx<otherAttrsToSet.length;otherAttrsIdx++){var otherAttr=otherAttrsToSet[otherAttrsIdx];this.set_attr_directly_OnSVGtextItem_using_jQuery(textSVG,otherAttr.attrName,otherAttr.attrValue)}}};MasonViewerPerInstanceRenderOnPage.prototype.add_callbackDataStorage_ToElementsIn_outputRows=function(outputRows){for(var addDataStgRowIdx=0;addDataStgRowIdx<outputRows.length;addDataStgRowIdx++){var addDataStgRow=outputRows[addDataStgRowIdx];addDataStgRow.callbackDataStorage={}}};MasonViewerPerInstanceRenderOnPage.prototype.setupGroupOfRows=function(currentGroupOfRowsSVGgroup){this.set_class_directly_OnSVGItem_using_jQuery(currentGroupOfRowsSVGgroup,MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.CLASSES.PROT_COV_VIEWER_GROUP_OR_ROWS);var programaticDataStorageGroupOfRows=this.addProgramaticDataStorageGroupOfRowsToSVG_js_Item(currentGroupOfRowsSVGgroup);programaticDataStorageGroupOfRows.setSVGGroup(currentGroupOfRowsSVGgroup);return programaticDataStorageGroupOfRows};MasonViewerPerInstanceRenderOnPage.prototype.setupRootGroupForEachRow=function(currentSVGgroupOfRowXandBelow){this.GLOBALS.arrayOfcurrentSVGgroupOfRowXandBelow.push(currentSVGgroupOfRowXandBelow);this.set_class_directly_OnSVGItem_using_jQuery(currentSVGgroupOfRowXandBelow,MasonViewerPerInstanceRenderOnPage.prototype.CONSTANTS.CLASSES.PROT_COV_VIEWER_GROUP_ROW_MAIN);return this.addProgramaticDataStorageToSVG_js_Item(currentSVGgroupOfRowXandBelow)};MasonViewerPerInstanceRenderOnPage.prototype.highlightBoxUnderEachRow=function(SVGItem){var objectThis=this;var $SVGItem=$(SVGItem.node);var $rowMainGroup=this.get$rowMainGroupFor$currentElement($SVGItem);var SVGrowMainGroupProgramaticDataStorage=objectThis.getProgramaticDataStorageFromJQueryItem($rowMainGroup);var boxUnderEachRow=SVGrowMainGroupProgramaticDataStorage.getMainBlocksBoxUnderEachRow();if(SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksVisible()){boxUnderEachRow=SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksBoxUnderEachRow()}if(boxUnderEachRow===undefined){return}var $boxUnderEachRow=$(boxUnderEachRow.node);$boxUnderEachRow.css({stroke:"lightgreen","stroke-width":5})};MasonViewerPerInstanceRenderOnPage.prototype.unhighlightBoxUnderEachRow=function(SVGItem){if(SVGItem===undefined){return}var $SVGItem=$(SVGItem.node);var $rowMainGroup=this.get$rowMainGroupFor$currentElement($SVGItem);var SVGrowMainGroupProgramaticDataStorage=this.getProgramaticDataStorageFromJQueryItem($rowMainGroup);if(SVGrowMainGroupProgramaticDataStorage===undefined){return}var boxUnderEachRow=SVGrowMainGroupProgramaticDataStorage.getMainBlocksBoxUnderEachRow();if(SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksVisible()){boxUnderEachRow=SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksBoxUnderEachRow()}if(boxUnderEachRow===undefined){return}var $boxUnderEachRow=$(boxUnderEachRow.node);$boxUnderEachRow.css({stroke:"black","stroke-width":0})};MasonViewerPerInstanceRenderOnPage.prototype.addBoxUnderEachRowForMouseOver=function(currentSVGgroupOfRowXandBelow,SVGrowMainGroupProgramaticDataStorage,rowIdx){var objectThis=this;var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var blockSVG=this.GLOBALS.masonViewerSVG.rect(this.GLOBALS.sequenceWidth,this.configDisplayOptions.BLOCK_HEIGHT);currentSVGgroupOfRowXandBelow.add(blockSVG);SVGrowMainGroupProgramaticDataStorage.setMainBlocksBoxUnderEachRow(blockSVG);blockSVG.attr({fill:{r:255,g:255,b:255},stroke:{r:0,g:0,b:0},"stroke-width":0,"fill-opacity":0});blockSVG.attr("data-placement","mainBlocksBoxUnderEachMainRow");blockSVG.attr("rowIdx",rowIdx);blockSVG.move(this.configDisplayOptions.MAIN_BOX_STARTING_POSITION,y);this.addProgramaticDataStorageToSVG_js_Item(blockSVG);var $blockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockSVG);$blockSVG.hover(function(eventObject){objectThis.highlightBoxUnderEachRow(this.instance)},function(eventObject){objectThis.unhighlightBoxUnderEachRow(this.instance)})};MasonViewerPerInstanceRenderOnPage.prototype.addHiddenOrTotalsBlocksBoxUnderEachRowForMouseOver=function(placementLabel,hiddenBlocksRowsHeight,currentSVGgroupOfRowXandBelow,SVGrowMainGroupProgramaticDataStorage,rowIdx){var objectThis=this;var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var blockSVG=this.GLOBALS.masonViewerSVG.rect(this.GLOBALS.sequenceWidth,hiddenBlocksRowsHeight);currentSVGgroupOfRowXandBelow.add(blockSVG);SVGrowMainGroupProgramaticDataStorage.setHiddenBlocksBoxUnderEachRow(blockSVG);blockSVG.attr({fill:{r:255,g:255,b:255},stroke:{r:0,g:0,b:0},"stroke-width":0,"fill-opacity":0});blockSVG.attr("data-placement",placementLabel);blockSVG.attr("rowIdx",rowIdx);blockSVG.move(this.configDisplayOptions.MAIN_BOX_STARTING_POSITION,y);this.addProgramaticDataStorageToSVG_js_Item(blockSVG);var $blockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockSVG);$blockSVG.hover(function(eventObject){objectThis.highlightBoxUnderEachRow(this.instance)},function(eventObject){objectThis.unhighlightBoxUnderEachRow(this.instance)});blockSVG.hide()};MasonViewerPerInstanceRenderOnPage.prototype.addHiddenBlocksBoxUnderEachRowForMouseOver=function(hiddenBlocksRowsHeight,currentSVGgroupOfRowXandBelow,SVGrowMainGroupProgramaticDataStorage,rowIdx){this.addHiddenOrTotalsBlocksBoxUnderEachRowForMouseOver("hiddenBlocksBoxUnderEachMainRow",hiddenBlocksRowsHeight,currentSVGgroupOfRowXandBelow,SVGrowMainGroupProgramaticDataStorage,rowIdx) };MasonViewerPerInstanceRenderOnPage.prototype.addTotalsBlocksBoxUnderEachRowForMouseOver=function(hiddenBlocksRowsHeight,currentSVGgroupOfRowXandBelow,SVGrowMainGroupProgramaticDataStorage,rowIdx){this.addHiddenOrTotalsBlocksBoxUnderEachRowForMouseOver("TotalsBlocksBoxUnderCombinedRow",hiddenBlocksRowsHeight,currentSVGgroupOfRowXandBelow,SVGrowMainGroupProgramaticDataStorage,rowIdx)};MasonViewerPerInstanceRenderOnPage.prototype.createHiddenBlocksContractionIcon=function(tooltipText,currentSVGgroupOfRowXandBelow,rowIdx,currentSVGgroupOfRowXandBelowProgramaticDataStorage){var SVGGroupContractionIcon=this.GLOBALS.masonViewerSVG.group();currentSVGgroupOfRowXandBelow.add(SVGGroupContractionIcon);SVGGroupContractionIcon.attr("label","SVGGroupContractionIcon");this.attachClickShowHideToggleHiddenBlocksRow(SVGGroupContractionIcon);SVGGroupContractionIcon.attr("CreatedBy","createHiddenBlocksContractionIcon");var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+(this.configDisplayOptions.ROW_HEIGHT/4)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var rectSVG=this.GLOBALS.masonViewerSVG.rect(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/2,this.configDisplayOptions.ROW_HEIGHT/2);rectSVG.attr({fill:{r:255,g:255,b:255},stroke:{r:255,g:0,b:0},"fill-opacity":0});rectSVG.move(this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/4,y);this.attachToolTipToJqueryHtmlNode($(rectSVG.node),function(tooltip,node){$(tooltip).html(tooltipText);return tooltipText});var horizLineSVG=this.GLOBALS.masonViewerSVG.line(this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/4)+2,y+this.configDisplayOptions.ROW_HEIGHT/4,this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH-(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/2)+(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/4)-2,y+this.configDisplayOptions.ROW_HEIGHT/4).stroke({color:"#f06",width:1});this.attachToolTipToJqueryHtmlNode($(horizLineSVG.node),function(tooltip,node){$(tooltip).html(tooltipText);return tooltipText});rectSVG.attr("cursor","pointer");horizLineSVG.attr("cursor","pointer");SVGGroupContractionIcon.add(rectSVG);SVGGroupContractionIcon.add(horizLineSVG)};MasonViewerPerInstanceRenderOnPage.prototype.createHiddenBlocksExpansionIcon=function(tooltipText,currentSVGgroupOfRowXandBelow,rowIdx,currentSVGgroupOfRowXandBelowProgramaticDataStorage){var SVGGroupExpansionIcon=this.GLOBALS.masonViewerSVG.group();SVGGroupExpansionIcon.attr("label","SVGGroupExpansionIcon");var SVGSetExpansionIcon=this.GLOBALS.masonViewerSVG.set();currentSVGgroupOfRowXandBelow.add(SVGGroupExpansionIcon);this.attachClickShowHideToggleHiddenBlocksRow(SVGGroupExpansionIcon);currentSVGgroupOfRowXandBelowProgramaticDataStorage.setSVGGroupExpansionIcon(SVGSetExpansionIcon);var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+(this.configDisplayOptions.ROW_HEIGHT/4)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var rectSVG=this.GLOBALS.masonViewerSVG.rect(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/2,this.configDisplayOptions.ROW_HEIGHT/2);rectSVG.attr({fill:{r:255,g:255,b:255},stroke:{r:255,g:0,b:0},"fill-opacity":0});rectSVG.move(this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/4,y);var vertLineSVG=this.GLOBALS.masonViewerSVG.line(this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/2,y+2,this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/2,y+this.configDisplayOptions.ROW_HEIGHT/2-2).stroke({color:"#f06",width:1});var horizLineSVG=this.GLOBALS.masonViewerSVG.line(this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/4)+2,y+this.configDisplayOptions.ROW_HEIGHT/4,this.configDisplayOptions.ICON_EXPAND_ROW_STARTING_POSITION+this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH-(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/2)+(this.configDisplayOptions.ICON_EXPAND_ROW_WIDTH/4)-2,y+this.configDisplayOptions.ROW_HEIGHT/4).stroke({color:"#f06",width:1});rectSVG.attr("cursor","pointer");vertLineSVG.attr("cursor","pointer");horizLineSVG.attr("cursor","pointer");SVGGroupExpansionIcon.add(rectSVG);SVGGroupExpansionIcon.add(vertLineSVG);SVGGroupExpansionIcon.add(horizLineSVG);SVGSetExpansionIcon.add(rectSVG);SVGSetExpansionIcon.add(vertLineSVG);SVGSetExpansionIcon.add(horizLineSVG);this.attachToolTipToJqueryHtmlNode($(rectSVG.node),function(tooltip,node){$(tooltip).html(tooltipText);return tooltipText});this.attachToolTipToJqueryHtmlNode($(vertLineSVG.node),function(tooltip,node){$(tooltip).html(tooltipText);return tooltipText});this.attachToolTipToJqueryHtmlNode($(horizLineSVG.node),function(tooltip,node){$(tooltip).html(tooltipText);return tooltipText})};MasonViewerPerInstanceRenderOnPage.prototype.addMouseOverToBlocks=function(blockSVG){var objectThis=this;var $blockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockSVG);$blockSVG.hover(function(eventObject){var $this=$(this);$this.css({stroke:objectThis.configDisplayOptions.BLOCK_HIGHLIGHT_BORDER_COLOR,"stroke-width":objectThis.configDisplayOptions.BLOCK_HIGHLIGHT_BORDER_WIDTH});objectThis.highlightBoxUnderEachRow(this.instance)},function(eventObject){var $this=$(this);$this.css({stroke:"black","stroke-width":0});objectThis.unhighlightBoxUnderEachRow(this.instance)})};MasonViewerPerInstanceRenderOnPage.prototype.addMouseOverToLinesInsideMainBox=function(lineSVG){var objectThis=this;var $lineSVG=this.getJQueryObjForRawSVGFromSVG_js_item(lineSVG);$lineSVG.hover(function(eventObject){objectThis.highlightBoxUnderEachRow(this.instance)},function(eventObject){objectThis.unhighlightBoxUnderEachRow(this.instance)})};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.clickShowHideToggleHiddenBlocksRow=function(event,ui,clickThis){var objectThis=this; var $clickThis=$(clickThis);var $rowMainGroup=this.get$rowMainGroupFor$currentElement($clickThis);var SVGrowMainGroupProgramaticDataStorage=this.getProgramaticDataStorageFromJQueryItem($rowMainGroup);var createHiddenBlocksIfNotCreatedCallback=SVGrowMainGroupProgramaticDataStorage.getCreateHiddenBlocksIfNotCreatedCallback();createHiddenBlocksIfNotCreatedCallback();var hiddenBlocksForRowSet=SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksForRowSet();if(hiddenBlocksForRowSet!==undefined&&hiddenBlocksForRowSet!==null){var SVGRowXmainBlocksGROUP=SVGrowMainGroupProgramaticDataStorage.getSVGRowXmainBlocksGROUP();var hiddenBlocksHeight=SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksHeight();var SVGGroupExpansionIcon=SVGrowMainGroupProgramaticDataStorage.getSVGGroupExpansionIcon();var mainBlocksBoxUnderEachRow=SVGrowMainGroupProgramaticDataStorage.getMainBlocksBoxUnderEachRow();var hiddenBlocksBoxUnderEachRow=SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksBoxUnderEachRow();var SVGoGroupToMove=SVGrowMainGroupProgramaticDataStorage.getGroupToMoveForExpansion();var animateAdjustChildGroupOfRowsVerticalOffset=true;if(SVGoGroupToMove){animateAdjustChildGroupOfRowsVerticalOffset=false}if(SVGrowMainGroupProgramaticDataStorage.getHiddenBlocksVisible()){hiddenBlocksForRowSet.hide();if(hiddenBlocksBoxUnderEachRow!==undefined){hiddenBlocksBoxUnderEachRow.hide()}if(mainBlocksBoxUnderEachRow!==undefined){mainBlocksBoxUnderEachRow.show()}if(SVGRowXmainBlocksGROUP!==undefined){SVGRowXmainBlocksGROUP.show()}SVGGroupExpansionIcon.show();var yToTransformTo=0;var functionToRunAfterAnimate=function(){SVGrowMainGroupProgramaticDataStorage.setHiddenBlocksVisible(false);var adjustChildParams={animateAdjustChildGroupOfRowsVerticalOffset:animateAdjustChildGroupOfRowsVerticalOffset,$rowMainGroup:$rowMainGroup};objectThis.adjustChildGroupOfRowsVerticalOffset(adjustChildParams);objectThis.resizeOverallImageLength()};var animateTransformYParams={SVGoGroupToMove:SVGoGroupToMove,yToTransformTo:yToTransformTo,functionToRunAfterAnimate:functionToRunAfterAnimate};if(SVGoGroupToMove){this.animateTransformY(animateTransformYParams)}else{functionToRunAfterAnimate()}}else{if(SVGRowXmainBlocksGROUP!==undefined){SVGRowXmainBlocksGROUP.hide()}if(mainBlocksBoxUnderEachRow!==undefined){mainBlocksBoxUnderEachRow.hide()}var yToTransformTo=hiddenBlocksHeight;var functionToRunAfterAnimate=function(){hiddenBlocksForRowSet.show();if(hiddenBlocksBoxUnderEachRow!==undefined){hiddenBlocksBoxUnderEachRow.show()}SVGGroupExpansionIcon.hide();SVGrowMainGroupProgramaticDataStorage.setHiddenBlocksVisible(true);var adjustChildParams={animateAdjustChildGroupOfRowsVerticalOffset:animateAdjustChildGroupOfRowsVerticalOffset,$rowMainGroup:$rowMainGroup};objectThis.adjustChildGroupOfRowsVerticalOffset(adjustChildParams);objectThis.resizeOverallImageLength()};var animateTransformYParams={SVGoGroupToMove:SVGoGroupToMove,yToTransformTo:yToTransformTo,functionToRunAfterAnimate:functionToRunAfterAnimate};if(SVGoGroupToMove){this.animateTransformY(animateTransformYParams)}else{functionToRunAfterAnimate()}}}return false};MasonViewerPerInstanceRenderOnPage.prototype.adjustChildGroupOfRowsVerticalOffset=function(params){var $rowMainGroup=params.$rowMainGroup;var animateAdjustChildGroupOfRowsVerticalOffset=params.animateAdjustChildGroupOfRowsVerticalOffset;var $groupOfRows=this.get$groupOfRowsFor$currentElement($rowMainGroup);var SVGgroupOfRows=this.getSVG_js_itemForJQueryObj($groupOfRows);var groupOfRowsSVGgroupProgramaticStorage=this.getProgramaticDataStorageFromSVG_js_Item(SVGgroupOfRows);var childGroupOfRowsProgramaticDataStorageGroupOfRows=groupOfRowsSVGgroupProgramaticStorage.getNextProgramaticDataStorageGroupOfRows();if(childGroupOfRowsProgramaticDataStorageGroupOfRows){var SVGgroupOfRowXandBelow=groupOfRowsSVGgroupProgramaticStorage.getFirstOutputRowSVGGroup();var totalHiddenRowsVerticalOffset=0;while(SVGgroupOfRowXandBelow){var rowProgramaticStorage=this.getProgramaticDataStorageFromSVG_js_Item(SVGgroupOfRowXandBelow);if(rowProgramaticStorage.getHiddenBlocksVisible()){totalHiddenRowsVerticalOffset+=rowProgramaticStorage.getHiddenBlocksHeight()}SVGgroupOfRowXandBelow=rowProgramaticStorage.getGroupToMoveForExpansion()}var childGroupOfRows=childGroupOfRowsProgramaticDataStorageGroupOfRows.getSVGGroup();if(animateAdjustChildGroupOfRowsVerticalOffset){var animateTransformYParams={SVGoGroupToMove:childGroupOfRows,yToTransformTo:totalHiddenRowsVerticalOffset,functionToRunAfterAnimate:function(){}};this.animateTransformY(animateTransformYParams)}else{childGroupOfRows.transform({y:totalHiddenRowsVerticalOffset})}}};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.createMainLineHiddenBlocksIfNotCreatedCallbackCreator=function(outputRow,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowOffset){var objectThis=this;var createHiddenBlocksIfNotCreatedCallback=function(){var hiddenBlocksForRowSet=currentSVGgroupOfRowXandBelowProgramaticDataStorage.getHiddenBlocksForRowSet();var outputRow=currentSVGgroupOfRowXandBelowProgramaticDataStorage.getOutputRow();if(outputRow!==undefined&&outputRow!==null){var splitAnyEntries=outputRow.splitAnyEntries;if(splitAnyEntries&&(hiddenBlocksForRowSet===undefined||hiddenBlocksForRowSet===null)){objectThis.processHiddenBlocksForRow(outputRow,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowOffset)}}};currentSVGgroupOfRowXandBelowProgramaticDataStorage.setCreateHiddenBlocksIfNotCreatedCallback(createHiddenBlocksIfNotCreatedCallback)};MasonViewerPerInstanceRenderOnPage.prototype.precomputeValuesOnCreateForMainRows=function(outputRows){var objectThis=this;for(var rowIdx=0;rowIdx<outputRows.length;rowIdx++){var outputRow=outputRows[rowIdx];if(outputRow.callbackDataStorage===undefined){outputRow.callbackDataStorage={}}if(objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={rowItem:outputRow.inputRowItem,callbackDataStorage:outputRow.callbackDataStorage}; objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}}};MasonViewerPerInstanceRenderOnPage.prototype.processRowTotalBlockForRow=function(outputRow,currentSVGgroupOfRowXandBelow,rowIdx){var objectThis=this;if((!objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions)||(!objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.getColorAndSize)){return}var getColorAndSizeParams={rowItem:outputRow.inputRowItem,callbackDataStorage:outputRow.callbackDataStorage};var colorAndSize=objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.getColorAndSize(getColorAndSizeParams);var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var sizeZeroToOne=colorAndSize.blockSize;if(sizeZeroToOne>0){var colorForBlock=colorAndSize.colorForBlock;var fillColor=this.convertBlockColorTo_SVGJS_FillColor(colorForBlock);var rectWidth=sizeZeroToOne*this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_MAX_WIDTH;if(rectWidth<this.configDisplayOptions.ROW_TOTAL_BLOCK_MINIMUM_SIZE){rectWidth=this.configDisplayOptions.ROW_TOTAL_BLOCK_MINIMUM_SIZE}var rowTotalBlockSVG=this.GLOBALS.masonViewerSVG.rect(rectWidth,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:fillColor});rowTotalBlockSVG.move(this.GLOBALS.rowTotalsBarRightStartingPoint,y);this.addProgramaticDataStorageToSVG_js_Item(rowTotalBlockSVG);rowTotalBlockSVG.data("row-rowIdx",rowIdx);rowTotalBlockSVG.data("placement","row total blocks");currentSVGgroupOfRowXandBelow.add(rowTotalBlockSVG)}var rowTotalBlockCoverBlockFullWidthSVG=this.GLOBALS.masonViewerSVG.rect(this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_MAX_WIDTH,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:{r:255,g:255,b:255},stroke:{r:0,g:0,b:0},"stroke-width":0.3,"fill-opacity":0});rowTotalBlockCoverBlockFullWidthSVG.move(this.GLOBALS.rowTotalsBarRightStartingPoint,y);this.addProgramaticDataStorageToSVG_js_Item(rowTotalBlockCoverBlockFullWidthSVG);this.attachMouseOverRowTotalBlock(rowTotalBlockCoverBlockFullWidthSVG,outputRow);this.attachClickHandlerRowTotalBlock(rowTotalBlockCoverBlockFullWidthSVG,outputRow);rowTotalBlockCoverBlockFullWidthSVG.data("row-rowIdx",rowIdx);rowTotalBlockCoverBlockFullWidthSVG.data("placement","row total blocks");currentSVGgroupOfRowXandBelow.add(rowTotalBlockCoverBlockFullWidthSVG)};MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverMainRowLabel=function(labelSVG,outputRow){var objectThis=this;if((!objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions)||(!objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.getToolTipText)){return}var $labelSVG=this.getJQueryObjForRawSVGFromSVG_js_item(labelSVG);var getToolTipTextParams={rowItem:outputRow.inputRowItem,callbackDataStorage:outputRow.callbackDataStorage};this.attachToolTipToJqueryHtmlNode($labelSVG,function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.getToolTipText(getToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML})};MasonViewerPerInstanceRenderOnPage.prototype.attachClickHandlerMainRowLabel=function(labelSVG,outputRow){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.processClick===undefined){return}var $labelSVG=this.getJQueryObjForRawSVGFromSVG_js_item(labelSVG);var processClickParams={rowItem:outputRow.inputRowItem,callbackDataStorage:outputRow.callbackDataStorage};$labelSVG.click(function(eventObject){objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.processClick(processClickParams)})};MasonViewerPerInstanceRenderOnPage.prototype.processLabelForRow=function(outputRow,currentSVGgroupOfRowXandBelow,rowIdx){var objectThis=this;var labelText=outputRow.label;var labelTextSVG=this.GLOBALS.masonViewerSVG.text(labelText);this.addProgramaticDataStorageToSVG_js_Item(labelTextSVG);labelTextSVG.data("row-rowIdx",rowIdx);currentSVGgroupOfRowXandBelow.add(labelTextSVG);this.clearStyleAnd_dy_OnSVGtextItem(labelTextSVG);var textY=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+(this.configDisplayOptions.ROW_HEIGHT/2);textY=textY+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var labelAdditionalStyle="";if(objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.processClick){labelAdditionalStyle="; cursor: pointer;"}this.setSVGTextPosition({textSVG:labelTextSVG,x:this.configDisplayOptions.LABEL_STARTING_POSITION,y:textY,otherAttrsToSet:undefined,additionalStyle:labelAdditionalStyle});var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;if(objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={callbackDataStorage:outputRow.callbackDataStorage,rowItem:outputRow.inputRowItem};objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}if(objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.getToolTipText){this.attachMouseOverMainRowLabel(labelTextSVG,outputRow)}if(objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsLabel_callbackFunctions.processClick){this.attachClickHandlerMainRowLabel(labelTextSVG,outputRow)}return labelTextSVG };MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverBlockNonOverlappingBlocksRow=function(blockBlockSVG,blockData,outputRow){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getNonOverlappingBlocksToolTipText===undefined){return}var $blockBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockBlockSVG);var getSingleBlockToolTipTextParams={startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,blockDataItems:blockData.blockDataItems,rowItem:outputRow.inputRowItem,callbackDataStorage:blockData.callbackDataStorage};var getTooltipTextFcn=function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getNonOverlappingBlocksToolTipText(getSingleBlockToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML};var callbackFunctions={mouseenter:function(node){objectThis.callListenersForBlockMouseEnter({node:node,blockInfo:getSingleBlockToolTipTextParams})},mouseleave:function(node){objectThis.callListenersForBlockMouseLeave({node:node,blockInfo:getSingleBlockToolTipTextParams})}};this.attachToolTipToJqueryHtmlNode($blockBlockSVG,getTooltipTextFcn,callbackFunctions)};MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverBlockOverlappingBlocksRow=function(blockBlockSVG,blockData,outputRow){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getOverlappingBlocksToolTipText===undefined){return}var $blockBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockBlockSVG);var getSingleBlockToolTipTextParams={startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,blockDataItems:blockData.blockDataItems,rowItem:outputRow.inputRowItem,callbackDataStorage:blockData.callbackDataStorage};var getTooltipTextFcn=function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getOverlappingBlocksToolTipText(getSingleBlockToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML};var callbackFunctions={mouseenter:function(node){objectThis.callListenersForBlockMouseEnter({node:node,blockInfo:getSingleBlockToolTipTextParams})},mouseleave:function(node){objectThis.callListenersForBlockMouseLeave({node:node,blockInfo:getSingleBlockToolTipTextParams})}};this.attachToolTipToJqueryHtmlNode($blockBlockSVG,getTooltipTextFcn,callbackFunctions)};MasonViewerPerInstanceRenderOnPage.prototype.attachClickHandlerBlockNonOverlappingBlocks=function(blockBlockSVG,blockData,outputRow){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.processClick===undefined){return}var $blockBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockBlockSVG);var processClickParams={startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,blockDataItems:blockData.blockDataItems,rowItem:outputRow.inputRowItem,callbackDataStorage:blockData.callbackDataStorage};$blockBlockSVG.click(function(eventObject){objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.processClick(processClickParams)})};MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverRowTotalBlock=function(rowTotalBlockSVG,outputRow){var objectThis=this;if((!objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions)||(!objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.getTotalBarToolTipText)){return}var $rowTotalBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(rowTotalBlockSVG);var getTotalBarToolTipTextParams={rowItem:outputRow.inputRowItem,callbackDataStorage:outputRow.callbackDataStorage};this.attachToolTipToJqueryHtmlNode($rowTotalBlockSVG,function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.getTotalBarToolTipText(getTotalBarToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML})};MasonViewerPerInstanceRenderOnPage.prototype.attachClickHandlerRowTotalBlock=function(rowTotalBlockSVG,outputRow){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.processClick===undefined){return}var $rowTotalBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(rowTotalBlockSVG);var processClickParams={rowItem:outputRow.inputRowItem,callbackDataStorage:outputRow.callbackDataStorage};$rowTotalBlockSVG.click(function(eventObject){objectThis.constructorParams.callbackFunctionsObj.rowTotalBar_callbackFunctions.processClick(processClickParams)})};MasonViewerPerInstanceRenderOnPage.prototype.getHiddenBlocksForRow=function(outputRow){var hiddenBlockRows=[];var prevEnds=[];var prevEndsScaled=[];var prevEndsLastEntry=-1;var blockItems=outputRow.blockItems;for(var blockItemIdx=0;blockItemIdx<blockItems.length;blockItemIdx++){var blockItem=blockItems[blockItemIdx];var blockData=blockItem;var blockStartPos=blockData.blockStartPos;var blockEndPos=blockData.blockEndPos;var startPixel=this.positionLeftEdgeToPixel(blockStartPos);var endPixel=this.positionRightEdgeToPixel(blockEndPos);for(var index=0;index<=prevEndsLastEntry;index++){if(blockItem.blockStartPos===(prevEnds[index]+1)){startPixel=prevEndsScaled[index]+0.01}}blockItem.blockStartPositionPixel=startPixel;blockItem.blockEndPositionPixel=endPixel;var addedToList=false;for(var hiddenBlockRowsIdx=0;hiddenBlockRowsIdx<hiddenBlockRows.length; hiddenBlockRowsIdx++){var hiddenBlockRow=hiddenBlockRows[hiddenBlockRowsIdx];var blockItemInList=hiddenBlockRow[hiddenBlockRow.length-1];if(startPixel>(blockItemInList.blockEndPositionPixel)){addedToList=true;hiddenBlockRow.push(blockItem);break}}if(!addedToList){var hiddenBlockRow_NewRow=[];hiddenBlockRow_NewRow.push(blockItem);hiddenBlockRows.push(hiddenBlockRow_NewRow)}prevEndsLastEntry++;prevEnds[prevEndsLastEntry]=blockItem.blockEndPos;prevEndsScaled[prevEndsLastEntry]=endPixel}return hiddenBlockRows};MasonViewerPerInstanceRenderOnPage.prototype.processHiddenBlocksForRow=function(outputRow,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowOffset){var objectThis=this;if(!objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.precomputeValuesOnCreate){throw"callback function mainRowsBlocks_callbackFunctions.precomputeValuesOnCreate is missing"}var groupOfHiddenBlocksForRow=this.GLOBALS.masonViewerSVG.group();groupOfHiddenBlocksForRow.attr("label","groupOfHiddenBlocksForRow");currentSVGgroupOfRowXandBelow.add(groupOfHiddenBlocksForRow);currentSVGgroupOfRowXandBelowProgramaticDataStorage.setHiddenBlocksForRowSet(groupOfHiddenBlocksForRow);var hiddenBlockRows=this.getHiddenBlocksForRow(outputRow);var hiddenBlocksRowsHeight=(hiddenBlockRows.length-1)*this.configDisplayOptions.ROW_HEIGHT;currentSVGgroupOfRowXandBelowProgramaticDataStorage.setHiddenBlocksHeight(hiddenBlocksRowsHeight);var boxUnderHeight=hiddenBlocksRowsHeight+this.configDisplayOptions.ROW_HEIGHT;this.addHiddenBlocksBoxUnderEachRowForMouseOver(boxUnderHeight,groupOfHiddenBlocksForRow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowOffset);for(var hiddenBlockRowIdx=0;hiddenBlockRowIdx<hiddenBlockRows.length;hiddenBlockRowIdx++){var hiddenBlockRow=hiddenBlockRows[hiddenBlockRowIdx];var hiddenBlocksRowItems=hiddenBlockRow;for(var hiddenBlockIdx=0;hiddenBlockIdx<hiddenBlocksRowItems.length;hiddenBlockIdx++){var blockData=hiddenBlocksRowItems[hiddenBlockIdx];blockData.callbackDataStorage={};var precomputeValuesOnCreateParams={rowItem:outputRow.inputRowItem,blockDataItems:blockData.blockDataItems,startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,callbackDataStorage:blockData.callbackDataStorage,splitAnyEntriesForRow:false,forHiddenBlocks:true};objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams);var x=blockData.blockStartPositionPixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;if(x<this.configDisplayOptions.MAIN_BOX_STARTING_POSITION){x=this.configDisplayOptions.MAIN_BOX_STARTING_POSITION}var y=((hiddenBlockRowIdx)*this.configDisplayOptions.ROW_HEIGHT)+(rowOffset*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var rectWidth=blockData.blockEndPositionPixel-blockData.blockStartPositionPixel;var getColorForBlockParams={rowItem:outputRow.inputRowItem,blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage,forHiddenBlocks:true};var colorForBlock=objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getColorForBlock(getColorForBlockParams);var fillColor=this.convertBlockColorTo_SVGJS_FillColor(colorForBlock);var blockBlockSVG=this.GLOBALS.masonViewerSVG.rect(rectWidth,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:fillColor});blockBlockSVG.move(x,y);this.addMouseOverToBlocks(blockBlockSVG);this.addProgramaticDataStorageToSVG_js_Item(blockBlockSVG);blockBlockSVG.data("row-rowIdx",rowOffset);blockBlockSVG.data("placement","initially hidden row blocks");blockBlockSVG.data("block-id",blockData.id);this.attachMouseOverBlockNonOverlappingBlocksRow(blockBlockSVG,blockData,outputRow);this.attachClickHandlerBlockNonOverlappingBlocks(blockBlockSVG,blockData,outputRow);groupOfHiddenBlocksForRow.add(blockBlockSVG)}}var mainLineLines=outputRow.vertLinesItems;this.processHiddenLinesForRowVerticalLines(mainLineLines,hiddenBlockRows,groupOfHiddenBlocksForRow,rowOffset);this.showHideAllVerticalDataLinesPer_GLOBALS_showVerticalDataLines();var leftLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.leftLineX,((rowOffset)*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.leftLineX,(((rowOffset+1)*this.configDisplayOptions.ROW_HEIGHT)+hiddenBlocksRowsHeight)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});var rightLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.rightLineX,((rowOffset)*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.rightLineX,(((rowOffset+1)*this.configDisplayOptions.ROW_HEIGHT)+hiddenBlocksRowsHeight)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});leftLine.data("placement","lines with initially hidden row blocks");rightLine.data("placement","lines with initially hidden row blocks");groupOfHiddenBlocksForRow.add(leftLine);groupOfHiddenBlocksForRow.add(rightLine);this.createHiddenBlocksContractionIcon(this.configDisplayOptions.CLICK_TO_CONTRACT_TO_HIDE_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT,groupOfHiddenBlocksForRow,rowOffset,currentSVGgroupOfRowXandBelowProgramaticDataStorage)};MasonViewerPerInstanceRenderOnPage.prototype.processHiddenLinesForRowVerticalLines=function(mainLineLines,hiddenBlockRows,groupOfHiddenBlocksForRow,rowOffset){var objectThis=this;if(mainLineLines&&mainLineLines.length>0&&objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.getColorForLine){for(var hiddenBlockRowIdx=0;hiddenBlockRowIdx<hiddenBlockRows.length; hiddenBlockRowIdx++){for(var mainLineLinesIdx=0;mainLineLinesIdx<mainLineLines.length;mainLineLinesIdx++){var lineData=mainLineLines[mainLineLinesIdx];lineData.callbackDataStorage={};if(objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={vertLineData:lineData.vertLineData,linePos:lineData.linePos,forHiddenLines:true,callbackDataStorage:lineData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}var linePos=lineData.linePos;var linePixel=this.positionCharPositionToPixel(linePos);var x=linePixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y=((hiddenBlockRowIdx)*this.configDisplayOptions.ROW_HEIGHT)+(rowOffset*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var getColorForLineParams={vertLineData:lineData.vertLineData,callbackDataStorage:lineData.callbackDataStorage,forHiddenLines:true};var colorForLine=objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.getColorForLine(getColorForLineParams);this.isValidColor(colorForLine);var verticalLineSVG=this.GLOBALS.masonViewerSVG.line(x,y,x,y+this.configDisplayOptions.BLOCK_HEIGHT).stroke({color:colorForLine,width:this.configDisplayOptions.BORDER_WIDTH});this.GLOBALS.setSVGVerticalDataLines.add(verticalLineSVG);this.addMouseOverToLinesInsideMainBox(verticalLineSVG);this.addProgramaticDataStorageToSVG_js_Item(verticalLineSVG);verticalLineSVG.data("rowOffset_hiddenBlockRowIdx",rowOffset+"_"+hiddenBlockRowIdx);verticalLineSVG.data("placement","primary row lines");verticalLineSVG.data("block-id",lineData.id);var attachMouseOverVerticalLineParams={verticalLineSVG:verticalLineSVG,lineData:lineData,callbackFunctions:objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions};this.attachMouseOverVerticalLine(attachMouseOverVerticalLineParams);groupOfHiddenBlocksForRow.add(verticalLineSVG)}}}};MasonViewerPerInstanceRenderOnPage.prototype.processMainLineBlocksForRow=function(outputRow,currentSVGgroupOfRowXandBelow,SVGRowXmainBlocksGROUP,rowIdx){var objectThis=this;if(!objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.precomputeValuesOnCreate){throw"callback function mainRowsBlocks_callbackFunctions.precomputeValuesOnCreate is missing"}if(!objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getColorForBlock){throw"callback function mainRowsBlocks_callbackFunctions.getColorForBlock is missing"}var mainLineBlocks=outputRow.mainLineBlocks;if(mainLineBlocks.length>0){var splitAnyEntriesForRow=outputRow.splitAnyEntries;for(var mainLineBlocksIdx=0;mainLineBlocksIdx<mainLineBlocks.length;mainLineBlocksIdx++){var blockData=mainLineBlocks[mainLineBlocksIdx];blockData.callbackDataStorage={};var precomputeValuesOnCreateParams={rowItem:outputRow.inputRowItem,blockDataItems:blockData.blockDataItems,startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,callbackDataStorage:blockData.callbackDataStorage,splitAnyEntriesForRow:splitAnyEntriesForRow,forHiddenBlocks:false};objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams);var blockStartPos=blockData.blockStartPos;var blockEndPos=blockData.blockEndPos;var startPixel=this.positionLeftEdgeToPixel(blockStartPos);var endPixel=this.positionRightEdgeToPixel(blockEndPos);var rectWidth=endPixel-startPixel;var x=startPixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var getColorForBlockParams={rowItem:outputRow.inputRowItem,blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage,forHiddenBlocks:false};var colorForBlock=objectThis.constructorParams.callbackFunctionsObj.mainRowsBlocks_callbackFunctions.getColorForBlock(getColorForBlockParams);var fillColor=this.convertBlockColorTo_SVGJS_FillColor(colorForBlock);var blockBlockSVG=this.GLOBALS.masonViewerSVG.rect(rectWidth,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:fillColor});blockBlockSVG.move(x,y);this.addMouseOverToBlocks(blockBlockSVG);this.addProgramaticDataStorageToSVG_js_Item(blockBlockSVG);blockBlockSVG.data("row-rowIdx",rowIdx);blockBlockSVG.data("placement","primary row blocks");blockBlockSVG.data("block-id",blockData.id);if(splitAnyEntriesForRow){this.attachMouseOverBlockOverlappingBlocksRow(blockBlockSVG,blockData,outputRow)}else{this.attachMouseOverBlockNonOverlappingBlocksRow(blockBlockSVG,blockData,outputRow);this.attachClickHandlerBlockNonOverlappingBlocks(blockBlockSVG,blockData,outputRow)}SVGRowXmainBlocksGROUP.add(blockBlockSVG)}}var mainLineLines=outputRow.vertLinesItems;this.processMainLineVerticalLines(mainLineLines,SVGRowXmainBlocksGROUP,rowIdx);var leftLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.leftLineX,(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.leftLineX,((rowIdx+1)*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});var rightLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.rightLineX,(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.rightLineX,((rowIdx+1)*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH}); leftLine.data("placement","lines with primary row blocks");rightLine.data("placement","lines with primary row blocks");currentSVGgroupOfRowXandBelow.add(leftLine);currentSVGgroupOfRowXandBelow.add(rightLine)};MasonViewerPerInstanceRenderOnPage.prototype.processMainLineVerticalLines=function(mainLineLines,SVGRowXmainBlocksGROUP,rowIdx){var objectThis=this;if(mainLineLines&&mainLineLines.length>0&&objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.getColorForLine){for(var mainLineLinesIdx=0;mainLineLinesIdx<mainLineLines.length;mainLineLinesIdx++){var lineData=mainLineLines[mainLineLinesIdx];lineData.callbackDataStorage={};if(objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={vertLineData:lineData.vertLineData,linePos:lineData.linePos,forHiddenLines:false,callbackDataStorage:lineData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}var linePos=lineData.linePos;var linePixel=this.positionCharPositionToPixel(linePos);var x=linePixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var getColorForLineParams={vertLineData:lineData.vertLineData,callbackDataStorage:lineData.callbackDataStorage,forHiddenLines:false};var colorForLine=objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions.getColorForLine(getColorForLineParams);this.isValidColor(colorForLine);var verticalLineSVG=this.GLOBALS.masonViewerSVG.line(x,y,x,y+this.configDisplayOptions.BLOCK_HEIGHT).stroke({color:colorForLine,width:this.configDisplayOptions.BORDER_WIDTH});this.GLOBALS.setSVGVerticalDataLines.add(verticalLineSVG);this.addMouseOverToLinesInsideMainBox(verticalLineSVG);this.addProgramaticDataStorageToSVG_js_Item(verticalLineSVG);verticalLineSVG.data("row-rowIdx",rowIdx);verticalLineSVG.data("placement","primary row lines");verticalLineSVG.data("block-id",lineData.id);var attachMouseOverVerticalLineParams={verticalLineSVG:verticalLineSVG,lineData:lineData,callbackFunctions:objectThis.constructorParams.callbackFunctionsObj.mainRowsVerticalLines_callbackFunctions};this.attachMouseOverVerticalLine(attachMouseOverVerticalLineParams);SVGRowXmainBlocksGROUP.add(verticalLineSVG)}}};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.positionLeftEdgeToPixel=function(leftEdgeCharPosition){leftEdgeCharPosition-=0.5;var positionPixel=this.positionPrivateCharPosToPixel(leftEdgeCharPosition);return positionPixel};MasonViewerPerInstanceRenderOnPage.prototype.positionRightEdgeToPixel=function(rightEdgeCharPosition){rightEdgeCharPosition+=0.5;var positionPixel=this.positionPrivateCharPosToPixel(rightEdgeCharPosition);return positionPixel};MasonViewerPerInstanceRenderOnPage.prototype.positionCharPositionToPixel=function(positionCharPosition){var positionPixel=this.positionPrivateCharPosToPixel(positionCharPosition);return positionPixel};MasonViewerPerInstanceRenderOnPage.prototype.positionPrivateCharPosToPixel=function(positionCharPosition){positionCharPosition=this.limitCharPositionMaxSeqLength(positionCharPosition);positionCharPosition-=0.5;var positionPixel=(positionCharPosition*this.GLOBALS.sequenceMultiplier);return positionPixel};MasonViewerPerInstanceRenderOnPage.prototype.limitCharPositionMaxSeqLength=function(positionCharPosition){var minPosition=0.5;var maxPosition=this.constructorParams.requestParams.inputData.maxSequenceLength+0.5;if(positionCharPosition<minPosition){positionCharPosition=minPosition}else{if(positionCharPosition>maxPosition){positionCharPosition=maxPosition}}return positionCharPosition};"use strict";MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverBlockTotalsOverlappingBlocksRow=function(blockBlockSVG,blockData){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getBlocksToolTipText===undefined){return}var $blockBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockBlockSVG);var getSingleBlockToolTipTextParams={startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage};var getTooltipTextFcn=function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getBlocksToolTipText(getSingleBlockToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML};var callbackFunctions={mouseenter:function(node){objectThis.callListenersForBlockMouseEnter({node:node,blockInfo:getSingleBlockToolTipTextParams})},mouseleave:function(node){objectThis.callListenersForBlockMouseLeave({node:node,blockInfo:getSingleBlockToolTipTextParams})}};this.attachToolTipToJqueryHtmlNode($blockBlockSVG,getTooltipTextFcn,callbackFunctions)};MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverBlockTotalsNonOverlappingBlocksRow=function(blockBlockSVG,blockData){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getBlocksToolTipText===undefined){return}var $blockBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockBlockSVG);var getSingleBlockToolTipTextParams={startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage}; var getTooltipTextFcn=function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getBlocksToolTipText(getSingleBlockToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML};var callbackFunctions={mouseenter:function(node){objectThis.callListenersForBlockMouseEnter({node:node,blockInfo:getSingleBlockToolTipTextParams})},mouseleave:function(node){objectThis.callListenersForBlockMouseLeave({node:node,blockInfo:getSingleBlockToolTipTextParams})}};this.attachToolTipToJqueryHtmlNode($blockBlockSVG,getTooltipTextFcn,callbackFunctions)};MasonViewerPerInstanceRenderOnPage.prototype.attachClickHandlerBlockCombinedRow=function(blockBlockSVG,blockData){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.processClick===undefined){return}var $blockBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(blockBlockSVG);var processClickParams={startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage};$blockBlockSVG.click(function(eventObject){objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.processClick(processClickParams)})};MasonViewerPerInstanceRenderOnPage.prototype.attachMouseOverCombinedRowTotalBlock=function(rowTotalBlockSVG,callbackDataStorage){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.getTotalBarToolTipText===undefined){return}var $rowTotalBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(rowTotalBlockSVG);var getCombinedRowBlockToolTipTextParams={callbackDataStorage:callbackDataStorage};this.attachToolTipToJqueryHtmlNode($rowTotalBlockSVG,function(tooltip,node){var tooltipHTML=objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.getTotalBarToolTipText(getCombinedRowBlockToolTipTextParams);$(tooltip).html(tooltipHTML);return tooltipHTML})};MasonViewerPerInstanceRenderOnPage.prototype.attachClickHandlerCombinedRowTotalBlock=function(rowTotalBlockSVG,callbackDataStorage){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.processClick===undefined){return}var $rowTotalBlockSVG=this.getJQueryObjForRawSVGFromSVG_js_item(rowTotalBlockSVG);var processClickParams={callbackDataStorage:callbackDataStorage};$rowTotalBlockSVG.click(function(eventObject){objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.processClick(processClickParams)})};MasonViewerPerInstanceRenderOnPage.prototype.processCombinedRow=function(outputRows,rowIdx,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage){currentSVGgroupOfRowXandBelow.attr("class","prot_cov_viewer_group_row_main");currentSVGgroupOfRowXandBelow.attr("label","Totals Row Group");var combinedBlockItems=this.combineTotalsBlocksWhereStartEndMatch(outputRows);var splitOutput=this.constructorParams.objectThisMasonViewerPerInstance.combineOverlapsProteinPositionBased(combinedBlockItems);var splitAnyEntries=splitOutput.splitAnyEntries;var mainLineTotalBlocks=splitOutput.outputList;this.processTotalsLabel(rowIdx,splitAnyEntries,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage);this.addBoxUnderEachRowForMouseOver(currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowIdx);var outputTotalRow={mainLineTotalBlocks:mainLineTotalBlocks,combinedBlockItems:combinedBlockItems,splitAnyEntries:splitAnyEntries};var SVGRowXmainBlocksGROUP=this.GLOBALS.masonViewerSVG.group();currentSVGgroupOfRowXandBelow.add(SVGRowXmainBlocksGROUP);SVGRowXmainBlocksGROUP.attr("label","SVGRowXmainBlocksGROUP_processCombinedRow");currentSVGgroupOfRowXandBelowProgramaticDataStorage.setSVGRowXmainBlocksGROUP(SVGRowXmainBlocksGROUP);this.processCombinedRowMainLineBlocks(outputTotalRow,currentSVGgroupOfRowXandBelow,SVGRowXmainBlocksGROUP,rowIdx);if(splitAnyEntries){this.createTotalsLineHiddenBlocksIfNotCreatedCallbackCreator(rowIdx,combinedBlockItems,splitOutput.splitAnyEntries,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage)}this.processRowTotalBlockForCombinedRow(rowIdx,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage)};MasonViewerPerInstanceRenderOnPage.prototype.createTotalsLineHiddenBlocksIfNotCreatedCallbackCreator=function(rowIdx,combinedBlockItems,splitAnyEntries,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage){var objectThis=this;var createHiddenBlocksIfNotCreatedCallback=function(){var hiddenBlocksForRowSet=currentSVGgroupOfRowXandBelowProgramaticDataStorage.getHiddenBlocksForRowSet();if(splitAnyEntries&&(hiddenBlocksForRowSet===undefined||hiddenBlocksForRowSet===null)){objectThis.processCombinedRowHiddenBlocks(rowIdx,combinedBlockItems,splitAnyEntries,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage)}};currentSVGgroupOfRowXandBelowProgramaticDataStorage.setCreateHiddenBlocksIfNotCreatedCallback(createHiddenBlocksIfNotCreatedCallback)};MasonViewerPerInstanceRenderOnPage.prototype.processTotalsLabel=function(rowIdx,splitAnyEntries,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage){var objectThis=this;var labelText=this.configDisplayOptions.combinedLineLabel;var labelTextSVG=this.GLOBALS.masonViewerSVG.text(labelText);this.addProgramaticDataStorageToSVG_js_Item(labelTextSVG); labelTextSVG.data("Totals-Label","");currentSVGgroupOfRowXandBelow.add(labelTextSVG);objectThis.clearStyleAnd_dy_OnSVGtextItem(labelTextSVG);var textY=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+(this.configDisplayOptions.ROW_HEIGHT/2);textY=textY+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var labelAdditionalStyle="";this.setSVGTextPosition({textSVG:labelTextSVG,x:this.configDisplayOptions.LABEL_STARTING_POSITION,y:textY,otherAttrsToSet:undefined,additionalStyle:labelAdditionalStyle});var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;if(this.configDisplayOptions.combinedLineTooltipHTML){var labelTooltipHTML=this.configDisplayOptions.combinedLineTooltipHTML;var $labelTextSVG=this.getJQueryObjForRawSVGFromSVG_js_item(labelTextSVG);this.attachToolTipToJqueryHtmlNode($labelTextSVG,function(tooltip,node){var tooltipHTML=labelTooltipHTML;$(tooltip).html(tooltipHTML);return tooltipHTML})}if(splitAnyEntries){this.createHiddenBlocksExpansionIcon(this.configDisplayOptions.CLICK_TO_EXPAND_TO_SHOW_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT,currentSVGgroupOfRowXandBelow,rowIdx,currentSVGgroupOfRowXandBelowProgramaticDataStorage)}};MasonViewerPerInstanceRenderOnPage.prototype.combineTotalsBlocksWhereStartEndMatch=function(outputRows){var combinedBlockItems=[];var allBlockItems=[];for(var outputRowsIdx=0;outputRowsIdx<outputRows.length;outputRowsIdx++){var outputRow=outputRows[outputRowsIdx];var blockItems=outputRow.blockItems;for(var blockItemIdx=0;blockItemIdx<blockItems.length;blockItemIdx++){var blockItem=blockItems[blockItemIdx];allBlockItems.push(blockItem)}}for(var blockItemIdx=0;blockItemIdx<allBlockItems.length;blockItemIdx++){var blockItem=allBlockItems[blockItemIdx];if(blockItem!==null){for(var blockItemOtherIdx=blockItemIdx+1;blockItemOtherIdx<allBlockItems.length;blockItemOtherIdx++){var blockItemOther=allBlockItems[blockItemOtherIdx];if(blockItemOther!==null){if(blockItem.blockStartPos===blockItemOther.blockStartPos&&blockItem.blockEndPos===blockItemOther.blockEndPos){blockItem.blockDataItems=blockItem.blockDataItems.concat(blockItemOther.blockDataItems);allBlockItems[blockItemOtherIdx]=null}}}combinedBlockItems.push(blockItem)}}combinedBlockItems.sort(this.constructorParams.objectThisMasonViewerPerInstance.combineOverlaps_Z_compareForSortBlocks);return combinedBlockItems};MasonViewerPerInstanceRenderOnPage.prototype.placeTotalsBlocksIntoRows=function(blockItems){var totalBlockRows=[];var prevEnds=[];var prevEndsScaled=[];var prevEndsLastEntry=-1;for(var blockItemIdx=0;blockItemIdx<blockItems.length;blockItemIdx++){var blockItem=blockItems[blockItemIdx];var blockData=blockItem;var blockStartPos=blockData.blockStartPos;var blockEndPos=blockData.blockEndPos;var startPixel=this.positionLeftEdgeToPixel(blockStartPos);var endPixel=this.positionRightEdgeToPixel(blockEndPos);for(var index=0;index<=prevEndsLastEntry;index++){if(blockItem.blockStartPos===(prevEnds[index]+1)){startPixel=prevEndsScaled[index]+0.01}}blockItem.totalBlockStartPositionPixel=startPixel;blockItem.totalBlockEndPositionPixel=endPixel;var addedToList=false;for(var totalBlockRowsIdx=0;totalBlockRowsIdx<totalBlockRows.length;totalBlockRowsIdx++){var totalBlockRow=totalBlockRows[totalBlockRowsIdx];var blockItemInList=totalBlockRow[totalBlockRow.length-1];if(startPixel>(blockItemInList.totalBlockEndPositionPixel)){addedToList=true;totalBlockRow.push(blockItem);break}}if(!addedToList){var totalBlockRow_NewRow=[];totalBlockRow_NewRow.push(blockItem);totalBlockRows.push(totalBlockRow_NewRow)}prevEndsLastEntry++;prevEnds[prevEndsLastEntry]=blockItem.blockEndPos;prevEndsScaled[prevEndsLastEntry]=endPixel}return totalBlockRows};MasonViewerPerInstanceRenderOnPage.prototype.processCombinedRowMainLineBlocks=function(outputRow,currentSVGgroupOfRowXandBelow,SVGRowXmainBlocksGROUP,rowIdx){var objectThis=this;if(!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.precomputeValuesOnCreate){throw"callback function combinedRow_callbackFunctions.precomputeValuesOnCreate is missing"}if(!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getColorForBlock){throw"callback function combinedRow_callbackFunctions.getColorForBlock is missing"}var mainLineBlocks=outputRow.mainLineTotalBlocks;if(mainLineBlocks.length>0){var splitAnyEntriesForRow=outputRow.splitAnyEntries;for(var mainLineBlocksIdx=0;mainLineBlocksIdx<mainLineBlocks.length;mainLineBlocksIdx++){var blockData=mainLineBlocks[mainLineBlocksIdx];blockData.callbackDataStorage={};var precomputeValuesOnCreateParams={blockDataItems:blockData.blockDataItems,startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,splitAnyEntriesForRow:splitAnyEntriesForRow,callbackDataStorage:blockData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams);var blockStartPos=blockData.blockStartPos;var blockEndPos=blockData.blockEndPos;var startPixel=this.positionLeftEdgeToPixel(blockStartPos);var endPixel=this.positionRightEdgeToPixel(blockEndPos);var rectWidth=endPixel-startPixel;var x=startPixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var getColorForBlockParams={blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage};var colorForBlock=objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getColorForBlock(getColorForBlockParams);var fillColor=this.convertBlockColorTo_SVGJS_FillColor(colorForBlock);var blockBlockSVG=this.GLOBALS.masonViewerSVG.rect(rectWidth,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:fillColor});blockBlockSVG.move(x,y); this.addMouseOverToBlocks(blockBlockSVG);this.addProgramaticDataStorageToSVG_js_Item(blockBlockSVG);blockBlockSVG.data("row-rowIdx",rowIdx);blockBlockSVG.data("placement","primary row blocks");blockBlockSVG.data("block-id",blockData.id);if(splitAnyEntriesForRow){this.attachMouseOverBlockTotalsOverlappingBlocksRow(blockBlockSVG,blockData,outputRow)}else{this.attachMouseOverBlockTotalsNonOverlappingBlocksRow(blockBlockSVG,blockData,outputRow);this.attachClickHandlerBlockCombinedRow(blockBlockSVG,blockData,outputRow)}SVGRowXmainBlocksGROUP.add(blockBlockSVG)}}var combinedRowLines=this.constructorParams.requestParams.inputData.vertLinesCombinedRow;this.processCombinedRowMainLineVerticalLines(combinedRowLines,SVGRowXmainBlocksGROUP,rowIdx);var leftLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.leftLineX,(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.leftLineX,((rowIdx+1)*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});var rightLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.rightLineX,(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.rightLineX,((rowIdx+1)*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});leftLine.data("placement","left edge line for primary totals row blocks");rightLine.data("placement","right edge line for primary totals row blocks");currentSVGgroupOfRowXandBelow.add(leftLine);currentSVGgroupOfRowXandBelow.add(rightLine)};MasonViewerPerInstanceRenderOnPage.prototype.processCombinedRowMainLineVerticalLines=function(combinedRowLines,SVGRowXmainBlocksGROUP,rowIdx){var objectThis=this;if(combinedRowLines&&combinedRowLines.length>0&&objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.getColorForLine){for(var combinedRowLinesIdx=0;combinedRowLinesIdx<combinedRowLines.length;combinedRowLinesIdx++){var lineData=combinedRowLines[combinedRowLinesIdx];lineData.callbackDataStorage={};if(objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={vertLineData:lineData.vertLineData,linePos:lineData.linePos,forHiddenLines:false,callbackDataStorage:lineData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}var linePos=lineData.linePos;var linePixel=this.positionCharPositionToPixel(linePos);var x=linePixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var getColorForLineParams={vertLineData:lineData.vertLineData,callbackDataStorage:lineData.callbackDataStorage,forHiddenLines:false};var colorForLine=objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.getColorForLine(getColorForLineParams);this.isValidColor(colorForLine);var verticalLineSVG=this.GLOBALS.masonViewerSVG.line(x,y,x,y+this.configDisplayOptions.BLOCK_HEIGHT).stroke({color:colorForLine,width:this.configDisplayOptions.BORDER_WIDTH});this.GLOBALS.setSVGVerticalDataLines.add(verticalLineSVG);this.addProgramaticDataStorageToSVG_js_Item(verticalLineSVG);verticalLineSVG.data("row-rowIdx",rowIdx);verticalLineSVG.data("placement","primary totals row lines");verticalLineSVG.data("block-id",lineData.id);var attachMouseOverVerticalLineParams={verticalLineSVG:verticalLineSVG,lineData:lineData,callbackFunctions:objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions};this.attachMouseOverVerticalLine(attachMouseOverVerticalLineParams);SVGRowXmainBlocksGROUP.add(verticalLineSVG)}}};MasonViewerPerInstanceRenderOnPage.prototype.processCombinedRowHiddenBlocks=function(rowIdx,combinedBlockItems,splitAnyEntriesForRow,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage){var objectThis=this;if(!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.precomputeValuesOnCreate){throw"callback function combinedRow_callbackFunctions.precomputeValuesOnCreate is missing"}if(!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions||!objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getColorForBlock){throw"callback function combinedRow_callbackFunctions.getColorForBlock is missing"}var groupOfTotalsHiddenBlocksForRow=this.GLOBALS.masonViewerSVG.group();currentSVGgroupOfRowXandBelow.add(groupOfTotalsHiddenBlocksForRow);groupOfTotalsHiddenBlocksForRow.attr("label","groupOfTotalsHiddenBlocksForRow_processCombinedRow");currentSVGgroupOfRowXandBelowProgramaticDataStorage.setHiddenBlocksForRowSet(groupOfTotalsHiddenBlocksForRow);var firstRowY=rowIdx*this.configDisplayOptions.ROW_HEIGHT;var totalBlockRows=this.placeTotalsBlocksIntoRows(combinedBlockItems);var totalBlocksRowsHeight=totalBlockRows.length*this.configDisplayOptions.ROW_HEIGHT;var totalBlocksRowsHeightForHiddenBlockHeight=(totalBlockRows.length-1)*this.configDisplayOptions.ROW_HEIGHT;currentSVGgroupOfRowXandBelowProgramaticDataStorage.setHiddenBlocksHeight(totalBlocksRowsHeightForHiddenBlockHeight);this.addTotalsBlocksBoxUnderEachRowForMouseOver(totalBlocksRowsHeight,groupOfTotalsHiddenBlocksForRow,currentSVGgroupOfRowXandBelowProgramaticDataStorage,rowIdx); for(var totalBlockRowIdx=0;totalBlockRowIdx<totalBlockRows.length;totalBlockRowIdx++){var totalBlockRow=totalBlockRows[totalBlockRowIdx];var totalBlocksRowItems=totalBlockRow;for(var totalBlockIdx=0;totalBlockIdx<totalBlocksRowItems.length;totalBlockIdx++){var blockData=totalBlocksRowItems[totalBlockIdx];blockData.callbackDataStorage={};var precomputeValuesOnCreateParams={blockDataItems:blockData.blockDataItems,startPos:blockData.blockStartPos,endPos:blockData.blockEndPos,splitAnyEntriesForRow:false,forHiddenBlocks:true,callbackDataStorage:blockData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}}for(var totalBlockRowIdx=0;totalBlockRowIdx<totalBlockRows.length;totalBlockRowIdx++){var totalBlockRow=totalBlockRows[totalBlockRowIdx];var totalBlocksRowItems=totalBlockRow;for(var totalBlockIdx=0;totalBlockIdx<totalBlocksRowItems.length;totalBlockIdx++){var blockData=totalBlocksRowItems[totalBlockIdx];var x=blockData.totalBlockStartPositionPixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;if(x<this.configDisplayOptions.MAIN_BOX_STARTING_POSITION){x=this.configDisplayOptions.MAIN_BOX_STARTING_POSITION}var y=((totalBlockRowIdx)*this.configDisplayOptions.ROW_HEIGHT)+(firstRowY);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var rectWidth=blockData.totalBlockEndPositionPixel-blockData.totalBlockStartPositionPixel;var getColorForBlockParams={blockDataItems:blockData.blockDataItems,callbackDataStorage:blockData.callbackDataStorage};var colorForBlock=objectThis.constructorParams.callbackFunctionsObj.combinedRow_callbackFunctions.getColorForBlock(getColorForBlockParams);var fillColor=this.convertBlockColorTo_SVGJS_FillColor(colorForBlock);var blockBlockSVG=this.GLOBALS.masonViewerSVG.rect(rectWidth,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:fillColor});blockBlockSVG.move(x,y);this.addMouseOverToBlocks(blockBlockSVG);this.addProgramaticDataStorageToSVG_js_Item(blockBlockSVG);blockBlockSVG.data("row-rowIdx",rowIdx);blockBlockSVG.data("placement","initially hidden total row blocks");blockBlockSVG.data("block-id",blockData.id);this.attachMouseOverBlockTotalsNonOverlappingBlocksRow(blockBlockSVG,blockData);this.attachClickHandlerBlockCombinedRow(blockBlockSVG,blockData);currentSVGgroupOfRowXandBelow.add(blockBlockSVG);groupOfTotalsHiddenBlocksForRow.add(blockBlockSVG)}}var combinedRowLines=this.constructorParams.requestParams.inputData.vertLinesCombinedRow;this.processCombinedRowHiddenLinesVerticalLines(combinedRowLines,totalBlockRows,groupOfTotalsHiddenBlocksForRow,rowIdx);this.showHideAllVerticalDataLinesPer_GLOBALS_showVerticalDataLines();var leftLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.leftLineX,(firstRowY)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.leftLineX,((firstRowY)+totalBlocksRowsHeight)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});var rightLine=this.GLOBALS.masonViewerSVG.line(this.GLOBALS.rightLineX,(firstRowY)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE,this.GLOBALS.rightLineX,((firstRowY)+totalBlocksRowsHeight)+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE).stroke({color:this.configDisplayOptions.BORDER_COLOR,width:this.configDisplayOptions.BORDER_WIDTH});groupOfTotalsHiddenBlocksForRow.add(leftLine);groupOfTotalsHiddenBlocksForRow.add(rightLine);this.createHiddenBlocksContractionIcon(this.configDisplayOptions.CLICK_TO_CONTRACT_TO_HIDE_INDIVIDUAL_BLOCKS_TOOLTIP_TEXT,groupOfTotalsHiddenBlocksForRow,rowIdx,currentSVGgroupOfRowXandBelowProgramaticDataStorage);groupOfTotalsHiddenBlocksForRow.hide()};MasonViewerPerInstanceRenderOnPage.prototype.processCombinedRowHiddenLinesVerticalLines=function(combinedRowLines,totalBlockRows,groupOfTotalsHiddenBlocksForRow,rowIdx){var objectThis=this;if(combinedRowLines&&combinedRowLines.length>0&&objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.getColorForLine){for(var totalBlockRowIdx=0;totalBlockRowIdx<totalBlockRows.length;totalBlockRowIdx++){for(var combinedRowLinesIdx=0;combinedRowLinesIdx<combinedRowLines.length;combinedRowLinesIdx++){var lineData=combinedRowLines[combinedRowLinesIdx];lineData.callbackDataStorage={};if(objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions&&objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.precomputeValuesOnCreate){var precomputeValuesOnCreateParams={vertLineData:lineData.vertLineData,linePos:lineData.linePos,forHiddenLines:true,callbackDataStorage:lineData.callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams)}var linePos=lineData.linePos;var linePixel=this.positionCharPositionToPixel(linePos);var x=linePixel+this.configDisplayOptions.MAIN_BOX_STARTING_POSITION;var y=((totalBlockRowIdx)*this.configDisplayOptions.ROW_HEIGHT)+(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var getColorForLineParams={vertLineData:lineData.vertLineData,callbackDataStorage:lineData.callbackDataStorage,forHiddenLines:false};var colorForLine=objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions.getColorForLine(getColorForLineParams);this.isValidColor(colorForLine);var verticalLineSVG=this.GLOBALS.masonViewerSVG.line(x,y,x,y+this.configDisplayOptions.BLOCK_HEIGHT).stroke({color:colorForLine,width:this.configDisplayOptions.BORDER_WIDTH});this.GLOBALS.setSVGVerticalDataLines.add(verticalLineSVG);this.addMouseOverToLinesInsideMainBox(verticalLineSVG);this.addProgramaticDataStorageToSVG_js_Item(verticalLineSVG); verticalLineSVG.data("rowIdx_combinedRowLinesIdx",rowIdx+"_"+combinedRowLinesIdx);verticalLineSVG.data("placement","initally hidden totals row lines");verticalLineSVG.data("block-id",lineData.id);var attachMouseOverVerticalLineParams={verticalLineSVG:verticalLineSVG,lineData:lineData,callbackFunctions:objectThis.constructorParams.callbackFunctionsObj.combinedRowVerticalLines_callbackFunctions};this.attachMouseOverVerticalLine(attachMouseOverVerticalLineParams);groupOfTotalsHiddenBlocksForRow.add(verticalLineSVG)}}}};MasonViewerPerInstanceRenderOnPage.prototype.processRowTotalBlockForCombinedRow=function(rowIdx,currentSVGgroupOfRowXandBelow,currentSVGgroupOfRowXandBelowProgramaticDataStorage){var objectThis=this;if(objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions===null){return}if(objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.precomputeValuesOnCreate===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.precomputeValuesOnCreate===null){return}if(objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.getColorAndSize===undefined||objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.getColorAndSize===null){return}var callbackDataStorage={};var precomputeValuesOnCreateParams={callbackDataStorage:callbackDataStorage};objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.precomputeValuesOnCreate(precomputeValuesOnCreateParams);var getColorAndSizeParams={callbackDataStorage:callbackDataStorage};var colorAndSize=objectThis.constructorParams.callbackFunctionsObj.combinedRowTotalBar_callbackFunctions.getColorAndSize(getColorAndSizeParams);var y=(rowIdx*this.configDisplayOptions.ROW_HEIGHT);y=y+this.configDisplayOptions.TOP_ROW_OFFSET_FROM_TOP_OF_IMAGE;var sizeZeroToOne=colorAndSize.blockSize;if(sizeZeroToOne>0){var colorForBlock=colorAndSize.colorForBlock;var fillColor=this.convertBlockColorTo_SVGJS_FillColor(colorForBlock);var rectWidth=sizeZeroToOne*this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_MAX_WIDTH;if(rectWidth<this.configDisplayOptions.ROW_TOTAL_BLOCK_MINIMUM_SIZE){rectWidth=this.configDisplayOptions.ROW_TOTAL_BLOCK_MINIMUM_SIZE}var rowTotalBlockSVG=this.GLOBALS.masonViewerSVG.rect(rectWidth,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:fillColor});rowTotalBlockSVG.move(this.GLOBALS.rowTotalsBarRightStartingPoint,y);this.addProgramaticDataStorageToSVG_js_Item(rowTotalBlockSVG);rowTotalBlockSVG.data("row-rowIdx",rowIdx);rowTotalBlockSVG.data("placement","totals row: row total blocks");currentSVGgroupOfRowXandBelow.add(rowTotalBlockSVG)}var rowTotalBlockCoverBlockFullWidthSVG=this.GLOBALS.masonViewerSVG.rect(this.configDisplayOptions.ROW_TOTALS_BAR_RIGHT_MAX_WIDTH,this.configDisplayOptions.BLOCK_HEIGHT).attr({fill:{r:255,g:255,b:255},stroke:{r:0,g:0,b:0},"stroke-width":0.3,"fill-opacity":0});rowTotalBlockCoverBlockFullWidthSVG.move(this.GLOBALS.rowTotalsBarRightStartingPoint,y);this.addProgramaticDataStorageToSVG_js_Item(rowTotalBlockCoverBlockFullWidthSVG);this.attachMouseOverCombinedRowTotalBlock(rowTotalBlockCoverBlockFullWidthSVG,callbackDataStorage);this.attachClickHandlerCombinedRowTotalBlock(rowTotalBlockCoverBlockFullWidthSVG,callbackDataStorage);rowTotalBlockCoverBlockFullWidthSVG.data("row-rowIdx",rowIdx);rowTotalBlockCoverBlockFullWidthSVG.data("placement","totals row: row total blocks clear overlay");currentSVGgroupOfRowXandBelow.add(rowTotalBlockCoverBlockFullWidthSVG)}})(window);