{"size":{"Width":720,"Height":440},"appearance":{"background":null,"padding":14,"font":{"family":"Courier New","size":10.0,"bold":false,"italic":false,"underline":false,"strikeout":false,"color":"rgb(0,72,168)"},"border":{"on":true,"size":0.0,"style":"solid","color":"#666"},"text":{"wrap":false,"hAlign":"left","vAlign":"top"}},"outputType":"WIDGET","widgetState":null,"outputs":{"console":"<pre class='debug-source'>># VERSION 1.3.0\n</pre>\n<pre class='debug-source'>>library(flipChart)\n</pre>\n<pre class='debug-source'>># Processing all the selections from the 'Inputs' and 'Charts' tab.\n</pre>\n<pre class='debug-source'>>pd <- PrepareData(formChartType, QFilter, QPopulationWeight, input.data.table = get0("formTable"), input.data.raw = if (!exists("formX")) NULL else list(X = get0("formX"), Y = get0("formY"), Z1 = get0("formZ"), Z2 = get0("formZ2"), groups = get0("formGroups"), labels = get0("formScatterLabels")), input.data.pasted = if (length(get0("formPastedData")) == 0) NULL else list(get0("formPastedData"), !get0("formNotDataFrame", ifnotfound = TRUE), get0("formPastedColumnNames"), get0("formPastedRowNames")), first.aggregate = get0("formFirstAggregate", ifnotfound = FALSE), group.by.last = get0("formGroupByLastColumn", ifnotfound = FALSE), tidy = get0("formTidy", ifnotfound = FALSE), tidy.labels = get0("formTidyLabels", ifnotfound = FALSE), transpose = get0("formTranspose"), row.names.to.remove = get0("formIgnoreRows"), column.names.to.remove = get0("formIgnoreCols"), hide.empty.rows = get0("formHideEmptyRows", ifnotfound = FALSE), hide.empty.columns = get0("formHideEmptyCols", ifnotfound = FALSE), select.rows = get0("formSelectRows"), first.k.rows = as.numeric(get0("formFirstKRows")), last.k.rows = as.numeric(get0("formLastKRows")),\n select.columns = get0("formSelectCols"), first.k.columns = as.numeric(get0("formFirstKCols")), last.k.columns = as.numeric(get0("formLastKCols")), \nauto.order.rows = get0("formAutoOrderRows", ifnotfound=FALSE), sort.rows = get0("formSortRows", ifnotfound=FALSE), sort.rows.exclude = get0("formSortRowsExclude"), sort.rows.column = if (sum(nchar(get0("formSortRowsColumn"))) == 0) NULL else formSortRowsColumn, sort.rows.decreasing = get0("formSortRowsDecr"),\nauto.order.columns = get0("formAutoOrderCols", ifnotfound=FALSE), sort.columns = get0("formSortCols"), sort.columns.exclude = get0("formSortColsExclude"), sort.columns.row = if (sum(nchar(get0("formSortColsRow"))) == 0) NULL else formSortColsRow, sort.columns.decreasing = get0("formSortColsDecr"), reverse.rows = get0("formReverseRows"), reverse.columns = get0("formReverseCols"), hide.output.threshold = if (isTRUE(get0("formHideOutput"))) as.numeric(get0("formHideOutputThres")) else 0, hide.rows.threshold = if (isTRUE(get0("formHideRowsBySize"))) as.numeric(get0("formHideRowsThres")) else 0, hide.columns.threshold = if (isTRUE(get0("formHideColsBySize"))) as.numeric(get0("formHideColsThres")) else 0, as.percentages = get0("formAsPercentages", ifnotfound = FALSE), show.labels = !get0("formNames", ifnotfound=TRUE), date.format = get0("formDateFormat", ifnotfound = "Automatic"), scatter.mult.yvals = get0("formScatterMultYvals", ifnotfound = FALSE))\n</pre>\n<pre class='debug-source'>>pc <- PrepareColors(pd$data, formChartType, small.multiples = isTRUE(get0("formSmallMultiples")), scatter.colors.column = if (is.na(pd$scatter.variable.indices["colors"])) pd$scatter.variable.indices["groups"] else pd$scatter.variable.indices["colors"], palette = get0("formPalette"), palette.custom.color = get0("formCustomColor"), palette.custom.gradient.start = get0("formCustomGradientStart"), palette.custom.gradient.end = get0("formCustomGradientEnd"), palette.custom.palette = get0("formCustomPalette"), \nfit.palette = get0("formFitPalette"), fit.palette.custom.color = get0("formFitCustomColor"), fit.palette.custom.gradient.start = get0("formFitCustomGradientStart"), fit.palette.custom.gradient.end = get0("formFitCustomGradientEnd"), fit.palette.custom.palette = get0("formFitCustomPalette"),\nfit.CI.palette = get0("formFitCIPalette"), fit.CI.palette.custom.color = get0("formFitCICustomColor"), fit.CI.palette.custom.gradient.start = get0("formFitCICustomGradientStart"), fit.CI.palette.custom.gradient.end = get0("formFitCICustomGradientEnd"), fit.CI.palette.custom.palette = get0("formFitCICustomPalette"), \nsubslice.palette = get0("formSubslicePalette"), subslice.palette.custom.color = get0("formSubsliceCustomColor"), subslice.palette.custom.gradient.start = get0("formSubsliceCustomGradientStart"), subslice.palette.custom.gradient.end = get0("formSubsliceCustomGradientEnd"), subslice.palette.custom.palette = get0("formSubsliceCustomPalette")) \n</pre>\n<pre class='debug-source'>>pn <- PrepareNumbers(categories.format.list = list(get0("formCategoriesNumberType"), get0("formCategoriesDateType"), get0("formCategoriesNumberCustom"), get0("formCategoriesSeparateThousands"), get0("formCategoriesDecimals")), values.format.list = list(get0("formValuesNumberType"), get0("formValuesDateType"), get0("formValuesNumberCustom"), get0("formValuesSeparateThousands"), get0("formValuesDecimals")), hover.format.list = list(get0("formHoverNumberType"), get0("formHoverDateType"), get0("formHoverNumberCustom"), get0("formHoverSeparateThousands"), get0("formHoverDecimals")), data.labels.format.list = list(get0("formDataLabelNumberType"), get0("formDataLabelDateType"), get0("formDataLabelCustom"), get0("formDataLabelSeparateThousands"), get0("formDataLabelDecimals")), !is.null(attr(pd$data, "statistic")) && grepl("%", attr(pd$data, "statistic"), fixed = TRUE))\n</pre>\n<pre class='debug-source'>>\n</pre>\n<pre class='debug-source'>># Creating the chart.\n</pre>\n<pre class='debug-source'>>chart <- if(formChartType== "Table") pd$data else CChart(chart.type = formChartType,\n x = pd$data,\n weights = pd$weights,\n small.multiples = get0("formSmallMultiples", ifnotfound=FALSE), \n nrows = get0("formSmallMultNRows"),\n x.order = get0("formSmallMultXOrder"),\n average.show = get0("formSmallMultAverage", ifnotfound = FALSE),\n average.color = get0("formSmallMultAverageColor"),\n share.axes = get0("formSmallMultShareAxes", ifnotfound = TRUE),\n panel.title.show = get0("formSmallMultTitle", ifnotfound = TRUE),\n panel.title.font.family = get0("formSmallMultTitleFontFamily"),\n panel.title.font.color = get0("formSmallMultTitleFontColor"),\n panel.title.font.size = get0("formSmallMultTitleFontSize"),\n panel.title.wrap = get0("formSmallMultTitleWrap"),\n panel.title.wrap.nchar = get0("formSmallMultTitleWrapNchar"),\n pad.left = get0("formSmallMultPadLeft", ifnotfound=0),\n pad.right = get0("formSmallMultPadRight", ifnotfound=0),\n pad.top = get0("formSmallMultPadTop"),\n pad.bottom = get0("formSmallMultPadBottom"),\n max.label.length = 0,\n #Scatter plot inputs.\n scatter.max.labels = get0("formScatterMaxLab", ifnotfound=20),\n scatter.labels.as.hovertext= if (exists("formScatterLabelType")) formScatterLabelType!="On chart" else TRUE,\n scatter.colors.as.categorical = if (exists("formScatterColorType")) formScatterColorType=="Categories" else TRUE,\n scatter.sizes.as.diameter = if (exists("formScatterSizeType")) formScatterSizeType=="Diameter" else FALSE,\n scatter.x.column = pd$scatter.variable.indices["x"],\n scatter.y.column = pd$scatter.variable.indices["y"],\n scatter.sizes.column = pd$scatter.variable.indices["sizes"],\n scatter.colors.column = pd$scatter.variable.indices["colors"],\n scatter.groups.column = pd$scatter.variable.indices["groups"],\n trend.lines = get0("formTrendLines", ifnotfound=FALSE),\n logos = get0("formLogos"),\n logo.size = get0("formLogoSize"),\n # Chart: DATA SERIES\n colors = pc$series.colors,\n pie.subslice.colors = pc$subslice.colors,\n #Chart: FIT LINE\n fit.type = get0("formFit", ifnotfound="None"),\n fit.ignore.last = get0("formFitIgnoreLast"),\n fit.line.type = get0("formFitLineType"),\n fit.line.colors = pc$fit.line.colors,\n fit.line.width = get0("formFitLineWidth", ifnotfound=1),\n fit.line.opacity = get0("formFitOpacity"),\n fit.CI.show = isTRUE(get0("formFitCI")),\n fit.CI.colors = pc$fit.CI.colors,\n fit.CI.opacity = get0("formFitCIOpacity"),\n # Chart: DATA LABELS\n data.label.show = get0("formDataLabelShow", ifnotfound = FALSE),\n data.label.format = pn$data.labels.number.format,\n data.label.font.size = get0("formDataLabelFontSize", ifnotfound = 10),\n data.label.font.family = get0("formDataLabelFontFamily", ifnotfound = get0("formFont")),\n data.label.font.color = get0("formDataLabelFontColor"),\n data.label.font.autocolor = exists("formDataLabelFontColorOptions") && formDataLabelFontColorOptions == "Automatically",\n data.label.prefix = get0("formPrefix", ifnotfound=""),\n data.label.suffix = get0("formSuffix", ifnotfound=""),\n data.label.position = get0("formDataLabelPosition", ifnotfound="top middle"),\n data.label.align.horizontal = get0("formDataLabelHorizAlign", ifnotfound="Default"),\n # Chart: FONT\n global.font.family = get0("formFont"),\n global.font.color = get0("formFontColor"),\n #Chart: GRIDLINES\n grid.show = get0("formShowGrid", ifnotfound=FALSE),\n # Chart: LEGEND\n legend.show = get0("formLegendShow", ifnotfound=TRUE),\n legend.title = get0("formLegendTitle"),\n legend.font.family = get0("formLegendFontFamily"),\n legend.font.color = get0("formLegendFontColor"),\n legend.font.size = get0("formLegendFontSize"),\n legend.x.position = get0("formLegendXPos", ifnotfound=1.02),\n legend.y.position = get0("formLegendYPos", ifnotfound=1.0),\n legend.width = get0("formLegendWidth", ifnotfound=250),\n # Chart: TITLE\n title = paste0("", if (sum(nchar(get0("formTitle"))) > 0) formTitle else pd$chart.title),\n title.font.family = get0("formTitleFontFamily"),\n title.font.color = get0("formTitleFontColor"),\n title.font.size = get0("formTitleFontSize", ifnotfound=0),\n subtitle = get0("formSubtitle", ifnotfound=""),\n subtitle.font.family = get0("formSubtitleFontFamily"),\n subtitle.font.color = get0("formSubtitleFontColor"),\n subtitle.font.size = get0("formSubtitleFontSize"),\n footer = paste0("", if (sum(nchar(get0("formFooter"))) > 0) formFooter else pd$chart.footer),\n footer.font.family = get0("formFooterFontFamily"),\n footer.font.color = get0("formFooterFontColor"),\n footer.font.size = get0("formFooterFontSize"),\n footer.wrap = get0("formFooterWrap", ifnotfound=FALSE),\n footer.wrap.nchar = get0("formFooterWrapNchar"),\n #Chart: CATEGORIES_AXIS\n categories.bounds.minimum = get0("formCategoriesMin"), \n categories.bounds.maximum = get0("formCategoriesMax"), \n categories.axis.show = get0("formCategoriesAxisShow", ifnotfound=FALSE),\n categories.tick.show = get0("formCategoriesAxisShow", ifnotfound=FALSE),\n categories.tick.format = pn$categories.number.format,\n categories.tick.prefix = paste0("", get0("formCategoriesPrefix"), get0("formCategoriesCurrency")), # currency is just another prefix\n categories.tick.suffix = get0("formCategoriesSuffix", ifnotfound=""),\n categories.tick.interval = get0("formCategoriesTickInterval", ifnotfound=0),\n categories.tick.units = get0("formCategoriesTickUnits"),\n categories.title = paste0("", if (sum(nchar(get0("formCategoriesTitle", ifnotfound = " "))) > 0) get0("formCategoriesTitle", ifnotfound = " ") else pd$categories.title),\n categories.title.font.family = get0("formCategoriesTitleFontFamily"),\n categories.title.font.color = get0("formCategoriesTitleFontColor"),\n categories.title.font.size = get0("formCategoriesTitleFontSize", ifnotfound = 0), \n categories.tick.font.family = get0("formCategoriesTickFontFamily"),\n categories.tick.font.color = get0("formCategoriesTickFontColor"),\n categories.tick.font.size = get0("formCategoriesTickFontSize", ifnotfound=10),\n categories.tick.angle = if (!exists("formCategoriesTickAngle")) NULL else switch(get0("formCategoriesTickAngle"), Automatic=NULL, Horizontal=0, Vertical=90, Diagonal=45),\n categories.tick.label.wrap = get0("formLabelWrap", ifnotfound=FALSE),\n categories.tick.label.wrap.nchar = get0("formLabelWrapNchar", ifnotfound=100),\n categories.tick.align.horizontal = get0("formCategoriesTickHorizAlign", ifnotfound = "Default"),\n #Chart: VALUES_AXIS\n values.bounds.minimum = get0("formValuesMin"), \n values.bounds.maximum = get0("formValuesMax"), \n values.axis.show = get0("formValuesAxisShow", ifnotfound=FALSE),\n values.tick.show = get0("formValuesAxisShow", ifnotfound=FALSE),\n values.tick.format = pn$values.number.format,\n values.tick.prefix = paste0("", get0("formValuesPrefix"), get0("formValuesCurrency")), # currency is just another prefix\n values.tick.suffix = get0("formValuesSuffix", ifnotfound=""),\n values.title = paste0("", if (sum(nchar(get0("formValuesTitle", ifnotfound=" "))) > 0) get0("formValuesTitle", ifnotfound = " ") else pd$values.title),\n values.title.font.family = get0("formValuesTitleFontFamily"),\n values.title.font.color = get0("formValuesTitleFontColor"),\n values.title.font.size = get0("formValuesTitleFontSize", ifnotfound = 0),\n values.number.ticks = get0("formValuesNumberTicks"),\n values.tick.font.size = get0("formValuesTickFontSize", ifnotfound=10),\n values.tick.font.family = get0("formValuesTickFontFamily"),\n values.tick.font.color = get0("formValuesTickFontColor"),\n # Chart: HOVER\n values.hovertext.format = pn$hover.number.format,\n values.hovertext.prefix = get0("formHoverValuesPrefix", ifnotfound = ""),\n values.hovertext.suffix = get0("formHoverValuesSuffix", ifnotfound = ""),\n # Chart: MARGINS\n margin.top = get0("formMarginTop"),\n margin.left = get0("formMarginLeft"),\n margin.bottom = get0("formMarginBottom"),\n margin.right = get0("formMarginRight"),\n # Chart: APPEARANCE\n type = if(get0("formStackSeries", ifnotfound=FALSE)) "Stacked" else formChartType,\n bar.gap = get0("formBarGap"),\n adjust = get0("formBandwidth"),\n automatic.lower.density = get0("formAutomaticLower"),\n pie.inner.radius = get0("formPieRadius"),\n pie.border.color = get0("formBorderColor"),\n density.color = get0("formDensityColor"),\n vertical = get0("formVertical"),\n show.mean = get0("formShowMean"),\n show.median = get0("formShowMedian"),\n show.quartiles = get0("formShowQuartiles"),\n show.range = get0("formShowRange"),\n show.values = get0("formShowValues", ifnotfound = FALSE),\n histogram.cumulative = get0("formHistogramCumulative"),\n histogram.counts = get0("formHistogramCounts"),\n maximum.bins = get0("formMaximumBins"),\n box.points = get0("formBoxPoints"),\n mean.color = get0("formMeanColor"),\n median.color = get0("formMedianColor"),\n quartile.color = get0("formQuartilesColor"),\n range.color = get0("formRangeColor"),\n values.color = get0("formValuesColor"),\n window.start = get0("formWindowStart"),\n range.bars = get0("formRangeBars"),\n line.thickness = get0("formLineThickness"),\n opacity = get0("formFillOpacity"),\n # BarPictograph parameters\n image = get0("formIcon"),\n custom.image = get0("formCustomIcon"),\n base.image = get0("formBaseImage", ifnotfound = ""), \n hide.base.image = get0("formHideBase", ifnotfound = FALSE),\n base.icon.color = get0("formBaseColor", ifnotfound = ""),\n scale = if (exists("formIconScale")) as.numeric(formIconScale), \n total.icons = if (exists("formTotalIcons")) as.numeric(formTotalIcons),\n icon.ncol = if (exists("formIconNCol")) as.numeric(formIconNCol),\n fix.icon.nrow = get0("formFixNRows", ifnotfound = TRUE),\n fill.direction = get0("formFillDirection"),\n label.color.asIcon = get0("formLabelColorAsIcon", ifnotfound = FALSE),\n categories.tick.align = get0("formCategoriesTickAlign"),\n pad.row = get0("formIconPadding", ifnotfound = 0),\n graphic.width.inch = QOutputSizeWidth,\n graphic.height.inch = QOutputSizeHeight,\n # GeographicMap parameters\n mapping.package = get0("formMapPackage"),\n high.resolution = get0("formHighRes", ifnotfound = TRUE),\n show.missing.regions = get0("formShowMissingRegions", ifnotfound = TRUE),\n treat.NA.as.0 = get0("formNAasZero", ifnotfound = FALSE),\n color.NA = get0("formNAColor"), \n ocean.color = get0("formOceanColor"),\n zip.country = get0("formZipCountry"),\n background = get0("formBackgroundMap"),\n # Heat parameters\n sort.rows = get0("formHeatSortRows"),\n sort.columns = get0("formHeatSortColumns"),\n standardization = get0("formHeatStandardization"),\n left.columns = get0("formLeftColumns"),\n left.column.headings = get0("formLeftColumnHeadings"),\n right.columns = get0("formRightColumns"),\n right.column.headings = get0("formRightColumnHeadings"),\n # General arguments\n font.units = get0("formFontUnits", ifnotfound = "pt"),\n append.data = TRUE,\n warn.if.no.match = FALSE)\n</pre>\n<pre class='debug-message'>Loading required package: flipStandardCharts\n</pre>\r\n<div class=\"debug-summarystatistics\"><table>\r\n<tr><th>Started:</th><td class=utc-time>2018-12-18T04:43:03.521Z</td></tr>\r\n<tr><th>Finished:</th><td class=utc-time>2018-12-18T04:43:06.521Z</td></tr>\r\n<tr><th>Total time:</th><td>3.81s</td></tr>\r\n<tr><th>Time executing code:</th><td title=\"0.02s\">3.38s</td></tr>\r\n<tr><th>Other overhead on R server:</th><td>0.41s</td></tr>\r\n<tr><th>Time spent transferring data:</th><td>0.02s</td></tr>\r\n<tr><th>Data sent to R server:</th><td>21KB</td></tr>\r\n<tr><th>Data received from R server:</th><td>63KB</td></tr>\r\n</table></div>","message":"Loading required package: flipStandardCharts\n","htmlwidgets":"<div id=\"htmlwidget_container\">\n <div id=\"htmlwidget-b616229685b676b17b6b\" style=\"width:100%;height:400px;\" class=\"plotly html-widget\"></div>\n</div>\n<script type=\"application/json\" data-for=\"htmlwidget-b616229685b676b17b6b\">{\"x\":{\"visdat\":{\"31cb3ff68f9a\":[\"function () \",\"plotlyVisDat\"]},\"cur_data\":\"31cb3ff68f9a\",\"attrs\":{\"31cb3ff68f9a\":{\"alpha_stroke\":1,\"sizes\":[10,100],\"spans\":[1,20],\"x\":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],\"y\":[\"Healthcare\",\"Professional Services\",\"Retail\",\"Hospitality, Travel,<br>Restaurants\",\"Manufacturing\",\"Automotive &<br>Transport\",\"Financial Services\",\"Construction &<br>Engineering\",\"Customer Services\",\"Insurance\",\"IT & Software\",\"Banking\",\"Media\",\"IT Services\",\"Telecommunications\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":\"none\",\"showlegend\":false,\"opacity\":0,\"inherit\":true},\"31cb3ff68f9a.1\":{\"alpha_stroke\":1,\"sizes\":[10,100],\"spans\":[1,20],\"x\":[62,58,54,53,51,49,46,45,42,42,41,37,34,33,24],\"y\":[\"Healthcare\",\"Professional Services\",\"Retail\",\"Hospitality, Travel,<br>Restaurants\",\"Manufacturing\",\"Automotive &<br>Transport\",\"Financial Services\",\"Construction &<br>Engineering\",\"Customer Services\",\"Insurance\",\"IT & Software\",\"Banking\",\"Media\",\"IT Services\",\"Telecommunications\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"color\":\"rgba(62,125,204,1)\",\"line\":{\"color\":\"rgba(62,125,204,1)\",\"width\":1}},\"name\":\"Series 1\",\"text\":[\"Healthcare\",\"Professional Services\",\"Retail\",\"Hospitality, Travel,<br>Restaurants\",\"Manufacturing\",\"Automotive &<br>Transport\",\"Financial Services\",\"Construction &<br>Engineering\",\"Customer Services\",\"Insurance\",\"IT & Software\",\"Banking\",\"Media\",\"IT Services\",\"Telecommunications\"],\"hoverlabel\":{\"font\":{\"family\":\"Arial\",\"size\":13,\"color\":\"\"}},\"hoverinfo\":\"text+x\",\"legendgroup\":1,\"inherit\":true}},\"layout\":{\"margin\":{\"b\":47.5,\"l\":156.75,\"t\":20,\"r\":20,\"pad\":0},\"showlegend\":false,\"legend\":{\"bgcolor\":\"rgba(255,255,255,0)\",\"bordercolor\":\"#2C2C2C\",\"borderwidth\":0,\"orientation\":\"v\",\"font\":{\"family\":\"Arial\",\"size\":10,\"color\":\"#2C2C2C\"},\"xanchor\":\"left\",\"yanchor\":\"auto\",\"y\":1,\"x\":1.02,\"traceorder\":\"normal\"},\"yaxis\":{\"domain\":[0,1],\"automargin\":true,\"title\":\"Industry\",\"side\":\"left\",\"type\":\"category\",\"titlefont\":{\"family\":\"Arial\",\"size\":12,\"color\":\"#2C2C2C\"},\"tickfont\":{\"family\":\"Arial\",\"size\":10,\"color\":\"#2C2C2C\"},\"showline\":false,\"linecolor\":\"#000000\",\"linewidth\":[],\"showgrid\":false,\"gridwidth\":0,\"gridcolor\":\"#E1E1E1\",\"tickmode\":\"auto\",\"nticks\":[],\"tickvals\":[],\"ticktext\":[],\"ticks\":\"\",\"tickangle\":[],\"ticklen\":5,\"tickcolor\":\"#000000\",\"dtick\":[],\"tickformat\":\"\",\"tick0\":[],\"tickprefix\":\"\",\"ticksuffix\":\"\",\"hoverformat\":\"\",\"layer\":\"below traces\",\"autorange\":false,\"range\":[14.5,-0.5],\"rangemode\":\"normal\",\"zeroline\":false,\"zerolinewidth\":0,\"zerolinecolor\":\"#FFFFFF00\",\"showexponent\":\"all\",\"showtickprefix\":true,\"showticksuffix\":true,\"showticklabels\":true},\"xaxis\":{\"domain\":[0,1],\"automargin\":true,\"title\":\"Average NPS\",\"side\":\"bottom\",\"type\":\"numeric\",\"titlefont\":{\"family\":\"Arial\",\"size\":12,\"color\":\"#2C2C2C\"},\"tickfont\":{\"family\":\"Arial\",\"size\":10,\"color\":\"#2C2C2C\"},\"showline\":false,\"linecolor\":\"#000000\",\"linewidth\":[],\"showgrid\":true,\"gridwidth\":1,\"gridcolor\":\"#E1E1E1\",\"tickmode\":\"auto\",\"nticks\":[],\"tickvals\":[],\"ticktext\":[],\"ticks\":\"\",\"tickangle\":[],\"ticklen\":5,\"tickcolor\":\"#000000\",\"dtick\":[],\"tickformat\":\"\",\"tick0\":[],\"tickprefix\":\"\",\"ticksuffix\":\"\",\"hoverformat\":\"\",\"layer\":\"below traces\",\"autorange\":true,\"range\":[],\"rangemode\":\"tozero\",\"zeroline\":true,\"zerolinewidth\":0,\"zerolinecolor\":\"#E1E1E1\",\"showexponent\":\"all\",\"showtickprefix\":true,\"showticksuffix\":true,\"showticklabels\":true},\"plot_bgcolor\":\"rgba(255,255,255,0)\",\"paper_bgcolor\":\"rgba(255,255,255,0)\",\"hoverlabel\":{\"namelength\":-1,\"bordercolor\":\"#FFFFFF\"},\"hovermode\":\"closest\",\"bargap\":0.15,\"barmode\":\"group\"},\"source\":\"A\",\"config\":{\"modeBarButtonsToAdd\":[{\"name\":\"Collaborate\",\"icon\":{\"width\":1000,\"ascent\":500,\"descent\":-50,\"path\":\"M487 375c7-10 9-23 5-36l-79-259c-3-12-11-23-22-31-11-8-22-12-35-12l-263 0c-15 0-29 5-43 15-13 10-23 23-28 37-5 13-5 25-1 37 0 0 0 3 1 7 1 5 1 8 1 11 0 2 0 4-1 6 0 3-1 5-1 6 1 2 2 4 3 6 1 2 2 4 4 6 2 3 4 5 5 7 5 7 9 16 13 26 4 10 7 19 9 26 0 2 0 5 0 9-1 4-1 6 0 8 0 2 2 5 4 8 3 3 5 5 5 7 4 6 8 15 12 26 4 11 7 19 7 26 1 1 0 4 0 9-1 4-1 7 0 8 1 2 3 5 6 8 4 4 6 6 6 7 4 5 8 13 13 24 4 11 7 20 7 28 1 1 0 4 0 7-1 3-1 6-1 7 0 2 1 4 3 6 1 1 3 4 5 6 2 3 3 5 5 6 1 2 3 5 4 9 2 3 3 7 5 10 1 3 2 6 4 10 2 4 4 7 6 9 2 3 4 5 7 7 3 2 7 3 11 3 3 0 8 0 13-1l0-1c7 2 12 2 14 2l218 0c14 0 25-5 32-16 8-10 10-23 6-37l-79-259c-7-22-13-37-20-43-7-7-19-10-37-10l-248 0c-5 0-9-2-11-5-2-3-2-7 0-12 4-13 18-20 41-20l264 0c5 0 10 2 16 5 5 3 8 6 10 11l85 282c2 5 2 10 2 17 7-3 13-7 17-13z m-304 0c-1-3-1-5 0-7 1-1 3-2 6-2l174 0c2 0 4 1 7 2 2 2 4 4 5 7l6 18c0 3 0 5-1 7-1 1-3 2-6 2l-173 0c-3 0-5-1-8-2-2-2-4-4-4-7z m-24-73c-1-3-1-5 0-7 2-2 3-2 6-2l174 0c2 0 5 0 7 2 3 2 4 4 5 7l6 18c1 2 0 5-1 6-1 2-3 3-5 3l-174 0c-3 0-5-1-7-3-3-1-4-4-5-6z\"},\"click\":\"function(gd) { \\n // is this being viewed in RStudio?\\n if (location.search == '?viewer_pane=1') {\\n alert('To learn about plotly for collaboration, visit:\\\\n https://cpsievert.github.io/plotly_book/plot-ly-for-collaboration.html');\\n } else {\\n window.open('https://cpsievert.github.io/plotly_book/plot-ly-for-collaboration.html', '_blank');\\n }\\n }\"}],\"cloud\":false,\"displayModeBar\":false},\"data\":[{\"x\":[24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],\"y\":[\"Healthcare\",\"Professional Services\",\"Retail\",\"Hospitality, Travel,<br>Restaurants\",\"Manufacturing\",\"Automotive &<br>Transport\",\"Financial Services\",\"Construction &<br>Engineering\",\"Customer Services\",\"Insurance\",\"IT & Software\",\"Banking\",\"Media\",\"IT Services\",\"Telecommunications\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":[\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\",\"none\"],\"showlegend\":false,\"opacity\":0,\"marker\":{\"color\":\"rgba(31,119,180,1)\",\"line\":{\"color\":\"rgba(31,119,180,1)\"}},\"error_y\":{\"color\":\"rgba(31,119,180,1)\"},\"error_x\":{\"color\":\"rgba(31,119,180,1)\"},\"line\":{\"color\":\"rgba(31,119,180,1)\"},\"xaxis\":\"x\",\"yaxis\":\"y\",\"frame\":null},{\"x\":[62,58,54,53,51,49,46,45,42,42,41,37,34,33,24],\"y\":[\"Healthcare\",\"Professional Services\",\"Retail\",\"Hospitality, Travel,<br>Restaurants\",\"Manufacturing\",\"Automotive &<br>Transport\",\"Financial Services\",\"Construction &<br>Engineering\",\"Customer Services\",\"Insurance\",\"IT & Software\",\"Banking\",\"Media\",\"IT Services\",\"Telecommunications\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"color\":\"rgba(62,125,204,1)\",\"line\":{\"color\":\"rgba(62,125,204,1)\",\"width\":1}},\"name\":\"Series 1\",\"text\":[\"Healthcare\",\"Professional Services\",\"Retail\",\"Hospitality, Travel,<br>Restaurants\",\"Manufacturing\",\"Automotive &<br>Transport\",\"Financial Services\",\"Construction &<br>Engineering\",\"Customer Services\",\"Insurance\",\"IT & Software\",\"Banking\",\"Media\",\"IT Services\",\"Telecommunications\"],\"hoverlabel\":{\"font\":{\"family\":\"Arial\",\"size\":13,\"color\":\"\"}},\"hoverinfo\":[\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\"],\"legendgroup\":1,\"error_y\":{\"color\":\"rgba(255,127,14,1)\"},\"error_x\":{\"color\":\"rgba(255,127,14,1)\"},\"xaxis\":\"x\",\"yaxis\":\"y\",\"frame\":null}],\"highlight\":{\"on\":\"plotly_click\",\"persistent\":false,\"dynamic\":false,\"selectize\":false,\"opacityDim\":0.2,\"selected\":{\"opacity\":1},\"debounce\":0},\"base_url\":\"https://plot.ly\"},\"evals\":[\"config.modeBarButtonsToAdd.0.click\"],\"jsHooks\":[]}</script>\n<script type=\"application/htmlwidget-sizing\" data-for=\"htmlwidget-b616229685b676b17b6b\">{\"viewer\":{\"width\":\"100%\",\"height\":400,\"padding\":15,\"fill\":true},\"browser\":{\"width\":\"100%\",\"height\":400,\"padding\":0,\"fill\":true}}</script>","htmlwidget-head":"{\"stylesheets\":[\"https://rserverhtmlwidgetasset.azureedge.net/crosstalk-b25ccf47e9892cf2654d5ded8a45d9b7.css\",\"https://rserverhtmlwidgetasset.azureedge.net/plotly-htmlwidgets-ef6d87e1454c6f9f50a1a5a3e8b42646.css\"],\"javascript\":[\"https://rserverhtmlwidgetasset.azureedge.net/htmlwidgets-917a66c6e5036eb1bfd1fb672a82635a.js\",\"https://rserverhtmlwidgetasset.azureedge.net/plotly-e663d8392a46985b02fdfe80ca3a304d.js\",\"https://rserverhtmlwidgetasset.azureedge.net/typedarray.min-830ee97537deb99885d830da3312e14d.js\",\"https://rserverhtmlwidgetasset.azureedge.net/jquery.min-91a24ea414e8c447d647cecab86866c2.js\",\"https://rserverhtmlwidgetasset.azureedge.net/crosstalk.min-b1936a0f8f135773de79f3a54af76d20.js\",\"https://rserverhtmlwidgetasset.azureedge.net/plotly-latest.min-9aa87dd16c7b84c01b378aeddee6276e.js\"],\"attachments\":[],\"widget-cannot-re-render\":false,\"package\":\"plotly\",\"package_version\":\"4.8.0.9000\"}","warning":""},"secondsTaken":3.8138297000000003,"updated":"2018-12-18T04:43:06.5214659Z","lastUpdatedMessage":null,"executedCode":"# VERSION 1.3.0\nlibrary(flipChart)\n# Processing all the selections from the 'Inputs' and 'Charts' tab.\npd <- PrepareData(formChartType, QFilter, QPopulationWeight, input.data.table = get0(\"formTable\"), input.data.raw = if (!exists(\"formX\")) NULL else list(X = get0(\"formX\"), Y = get0(\"formY\"), Z1 = get0(\"formZ\"), Z2 = get0(\"formZ2\"), groups = get0(\"formGroups\"), labels = get0(\"formScatterLabels\")), input.data.pasted = if (length(get0(\"formPastedData\")) == 0) NULL else list(get0(\"formPastedData\"), !get0(\"formNotDataFrame\", ifnotfound = TRUE), get0(\"formPastedColumnNames\"), get0(\"formPastedRowNames\")), first.aggregate = get0(\"formFirstAggregate\", ifnotfound = FALSE), group.by.last = get0(\"formGroupByLastColumn\", ifnotfound = FALSE), tidy = get0(\"formTidy\", ifnotfound = FALSE), tidy.labels = get0(\"formTidyLabels\", ifnotfound = FALSE), transpose = get0(\"formTranspose\"), row.names.to.remove = get0(\"formIgnoreRows\"), column.names.to.remove = get0(\"formIgnoreCols\"), hide.empty.rows = get0(\"formHideEmptyRows\", ifnotfound = FALSE), hide.empty.columns = get0(\"formHideEmptyCols\", ifnotfound = FALSE), select.rows = get0(\"formSelectRows\"), first.k.rows = as.numeric(get0(\"formFirstKRows\")), last.k.rows = as.numeric(get0(\"formLastKRows\")),\n select.columns = get0(\"formSelectCols\"), first.k.columns = as.numeric(get0(\"formFirstKCols\")), last.k.columns = as.numeric(get0(\"formLastKCols\")), \nauto.order.rows = get0(\"formAutoOrderRows\", ifnotfound=FALSE), sort.rows = get0(\"formSortRows\", ifnotfound=FALSE), sort.rows.exclude = get0(\"formSortRowsExclude\"), sort.rows.column = if (sum(nchar(get0(\"formSortRowsColumn\"))) == 0) NULL else formSortRowsColumn, sort.rows.decreasing = get0(\"formSortRowsDecr\"),\nauto.order.columns = get0(\"formAutoOrderCols\", ifnotfound=FALSE), sort.columns = get0(\"formSortCols\"), sort.columns.exclude = get0(\"formSortColsExclude\"), sort.columns.row = if (sum(nchar(get0(\"formSortColsRow\"))) == 0) NULL else formSortColsRow, sort.columns.decreasing = get0(\"formSortColsDecr\"), reverse.rows = get0(\"formReverseRows\"), reverse.columns = get0(\"formReverseCols\"), hide.output.threshold = if (isTRUE(get0(\"formHideOutput\"))) as.numeric(get0(\"formHideOutputThres\")) else 0, hide.rows.threshold = if (isTRUE(get0(\"formHideRowsBySize\"))) as.numeric(get0(\"formHideRowsThres\")) else 0, hide.columns.threshold = if (isTRUE(get0(\"formHideColsBySize\"))) as.numeric(get0(\"formHideColsThres\")) else 0, as.percentages = get0(\"formAsPercentages\", ifnotfound = FALSE), show.labels = !get0(\"formNames\", ifnotfound=TRUE), date.format = get0(\"formDateFormat\", ifnotfound = \"Automatic\"), scatter.mult.yvals = get0(\"formScatterMultYvals\", ifnotfound = FALSE))\npc <- PrepareColors(pd$data, formChartType, small.multiples = isTRUE(get0(\"formSmallMultiples\")), scatter.colors.column = if (is.na(pd$scatter.variable.indices[\"colors\"])) pd$scatter.variable.indices[\"groups\"] else pd$scatter.variable.indices[\"colors\"], palette = get0(\"formPalette\"), palette.custom.color = get0(\"formCustomColor\"), palette.custom.gradient.start = get0(\"formCustomGradientStart\"), palette.custom.gradient.end = get0(\"formCustomGradientEnd\"), palette.custom.palette = get0(\"formCustomPalette\"), \nfit.palette = get0(\"formFitPalette\"), fit.palette.custom.color = get0(\"formFitCustomColor\"), fit.palette.custom.gradient.start = get0(\"formFitCustomGradientStart\"), fit.palette.custom.gradient.end = get0(\"formFitCustomGradientEnd\"), fit.palette.custom.palette = get0(\"formFitCustomPalette\"),\nfit.CI.palette = get0(\"formFitCIPalette\"), fit.CI.palette.custom.color = get0(\"formFitCICustomColor\"), fit.CI.palette.custom.gradient.start = get0(\"formFitCICustomGradientStart\"), fit.CI.palette.custom.gradient.end = get0(\"formFitCICustomGradientEnd\"), fit.CI.palette.custom.palette = get0(\"formFitCICustomPalette\"), \nsubslice.palette = get0(\"formSubslicePalette\"), subslice.palette.custom.color = get0(\"formSubsliceCustomColor\"), subslice.palette.custom.gradient.start = get0(\"formSubsliceCustomGradientStart\"), subslice.palette.custom.gradient.end = get0(\"formSubsliceCustomGradientEnd\"), subslice.palette.custom.palette = get0(\"formSubsliceCustomPalette\")) \npn <- PrepareNumbers(categories.format.list = list(get0(\"formCategoriesNumberType\"), get0(\"formCategoriesDateType\"), get0(\"formCategoriesNumberCustom\"), get0(\"formCategoriesSeparateThousands\"), get0(\"formCategoriesDecimals\")), values.format.list = list(get0(\"formValuesNumberType\"), get0(\"formValuesDateType\"), get0(\"formValuesNumberCustom\"), get0(\"formValuesSeparateThousands\"), get0(\"formValuesDecimals\")), hover.format.list = list(get0(\"formHoverNumberType\"), get0(\"formHoverDateType\"), get0(\"formHoverNumberCustom\"), get0(\"formHoverSeparateThousands\"), get0(\"formHoverDecimals\")), data.labels.format.list = list(get0(\"formDataLabelNumberType\"), get0(\"formDataLabelDateType\"), get0(\"formDataLabelCustom\"), get0(\"formDataLabelSeparateThousands\"), get0(\"formDataLabelDecimals\")), !is.null(attr(pd$data, \"statistic\")) && grepl(\"%\", attr(pd$data, \"statistic\"), fixed = TRUE))\n\n# Creating the chart.\nchart <- if(formChartType== \"Table\") pd$data else CChart(chart.type = formChartType,\n x = pd$data,\n weights = pd$weights,\n small.multiples = get0(\"formSmallMultiples\", ifnotfound=FALSE), \n nrows = get0(\"formSmallMultNRows\"),\n x.order = get0(\"formSmallMultXOrder\"),\n average.show = get0(\"formSmallMultAverage\", ifnotfound = FALSE),\n average.color = get0(\"formSmallMultAverageColor\"),\n share.axes = get0(\"formSmallMultShareAxes\", ifnotfound = TRUE),\n panel.title.show = get0(\"formSmallMultTitle\", ifnotfound = TRUE),\n panel.title.font.family = get0(\"formSmallMultTitleFontFamily\"),\n panel.title.font.color = get0(\"formSmallMultTitleFontColor\"),\n panel.title.font.size = get0(\"formSmallMultTitleFontSize\"),\n panel.title.wrap = get0(\"formSmallMultTitleWrap\"),\n panel.title.wrap.nchar = get0(\"formSmallMultTitleWrapNchar\"),\n pad.left = get0(\"formSmallMultPadLeft\", ifnotfound=0),\n pad.right = get0(\"formSmallMultPadRight\", ifnotfound=0),\n pad.top = get0(\"formSmallMultPadTop\"),\n pad.bottom = get0(\"formSmallMultPadBottom\"),\n max.label.length = 0,\n #Scatter plot inputs.\n scatter.max.labels = get0(\"formScatterMaxLab\", ifnotfound=20),\n scatter.labels.as.hovertext= if (exists(\"formScatterLabelType\")) formScatterLabelType!=\"On chart\" else TRUE,\n scatter.colors.as.categorical = if (exists(\"formScatterColorType\")) formScatterColorType==\"Categories\" else TRUE,\n scatter.sizes.as.diameter = if (exists(\"formScatterSizeType\")) formScatterSizeType==\"Diameter\" else FALSE,\n scatter.x.column = pd$scatter.variable.indices[\"x\"],\n scatter.y.column = pd$scatter.variable.indices[\"y\"],\n scatter.sizes.column = pd$scatter.variable.indices[\"sizes\"],\n scatter.colors.column = pd$scatter.variable.indices[\"colors\"],\n scatter.groups.column = pd$scatter.variable.indices[\"groups\"],\n trend.lines = get0(\"formTrendLines\", ifnotfound=FALSE),\n logos = get0(\"formLogos\"),\n logo.size = get0(\"formLogoSize\"),\n # Chart: DATA SERIES\n colors = pc$series.colors,\n pie.subslice.colors = pc$subslice.colors,\n #Chart: FIT LINE\n fit.type = get0(\"formFit\", ifnotfound=\"None\"),\n fit.ignore.last = get0(\"formFitIgnoreLast\"),\n fit.line.type = get0(\"formFitLineType\"),\n fit.line.colors = pc$fit.line.colors,\n fit.line.width = get0(\"formFitLineWidth\", ifnotfound=1),\n fit.line.opacity = get0(\"formFitOpacity\"),\n fit.CI.show = isTRUE(get0(\"formFitCI\")),\n fit.CI.colors = pc$fit.CI.colors,\n fit.CI.opacity = get0(\"formFitCIOpacity\"),\n # Chart: DATA LABELS\n data.label.show = get0(\"formDataLabelShow\", ifnotfound = FALSE),\n data.label.format = pn$data.labels.number.format,\n data.label.font.size = get0(\"formDataLabelFontSize\", ifnotfound = 10),\n data.label.font.family = get0(\"formDataLabelFontFamily\", ifnotfound = get0(\"formFont\")),\n data.label.font.color = get0(\"formDataLabelFontColor\"),\n data.label.font.autocolor = exists(\"formDataLabelFontColorOptions\") && formDataLabelFontColorOptions == \"Automatically\",\n data.label.prefix = get0(\"formPrefix\", ifnotfound=\"\"),\n data.label.suffix = get0(\"formSuffix\", ifnotfound=\"\"),\n data.label.position = get0(\"formDataLabelPosition\", ifnotfound=\"top middle\"),\n data.label.align.horizontal = get0(\"formDataLabelHorizAlign\", ifnotfound=\"Default\"),\n # Chart: FONT\n global.font.family = get0(\"formFont\"),\n global.font.color = get0(\"formFontColor\"),\n #Chart: GRIDLINES\n grid.show = get0(\"formShowGrid\", ifnotfound=FALSE),\n # Chart: LEGEND\n legend.show = get0(\"formLegendShow\", ifnotfound=TRUE),\n legend.title = get0(\"formLegendTitle\"),\n legend.font.family = get0(\"formLegendFontFamily\"),\n legend.font.color = get0(\"formLegendFontColor\"),\n legend.font.size = get0(\"formLegendFontSize\"),\n legend.x.position = get0(\"formLegendXPos\", ifnotfound=1.02),\n legend.y.position = get0(\"formLegendYPos\", ifnotfound=1.0),\n legend.width = get0(\"formLegendWidth\", ifnotfound=250),\n # Chart: TITLE\n title = paste0(\"\", if (sum(nchar(get0(\"formTitle\"))) > 0) formTitle else pd$chart.title),\n title.font.family = get0(\"formTitleFontFamily\"),\n title.font.color = get0(\"formTitleFontColor\"),\n title.font.size = get0(\"formTitleFontSize\", ifnotfound=0),\n subtitle = get0(\"formSubtitle\", ifnotfound=\"\"),\n subtitle.font.family = get0(\"formSubtitleFontFamily\"),\n subtitle.font.color = get0(\"formSubtitleFontColor\"),\n subtitle.font.size = get0(\"formSubtitleFontSize\"),\n footer = paste0(\"\", if (sum(nchar(get0(\"formFooter\"))) > 0) formFooter else pd$chart.footer),\n footer.font.family = get0(\"formFooterFontFamily\"),\n footer.font.color = get0(\"formFooterFontColor\"),\n footer.font.size = get0(\"formFooterFontSize\"),\n footer.wrap = get0(\"formFooterWrap\", ifnotfound=FALSE),\n footer.wrap.nchar = get0(\"formFooterWrapNchar\"),\n #Chart: CATEGORIES_AXIS\n categories.bounds.minimum = get0(\"formCategoriesMin\"), \n categories.bounds.maximum = get0(\"formCategoriesMax\"), \n categories.axis.show = get0(\"formCategoriesAxisShow\", ifnotfound=FALSE),\n categories.tick.show = get0(\"formCategoriesAxisShow\", ifnotfound=FALSE),\n categories.tick.format = pn$categories.number.format,\n categories.tick.prefix = paste0(\"\", get0(\"formCategoriesPrefix\"), get0(\"formCategoriesCurrency\")), # currency is just another prefix\n categories.tick.suffix = get0(\"formCategoriesSuffix\", ifnotfound=\"\"),\n categories.tick.interval = get0(\"formCategoriesTickInterval\", ifnotfound=0),\n categories.tick.units = get0(\"formCategoriesTickUnits\"),\n categories.title = paste0(\"\", if (sum(nchar(get0(\"formCategoriesTitle\", ifnotfound = \" \"))) > 0) get0(\"formCategoriesTitle\", ifnotfound = \" \") else pd$categories.title),\n categories.title.font.family = get0(\"formCategoriesTitleFontFamily\"),\n categories.title.font.color = get0(\"formCategoriesTitleFontColor\"),\n categories.title.font.size = get0(\"formCategoriesTitleFontSize\", ifnotfound = 0), \n categories.tick.font.family = get0(\"formCategoriesTickFontFamily\"),\n categories.tick.font.color = get0(\"formCategoriesTickFontColor\"),\n categories.tick.font.size = get0(\"formCategoriesTickFontSize\", ifnotfound=10),\n categories.tick.angle = if (!exists(\"formCategoriesTickAngle\")) NULL else switch(get0(\"formCategoriesTickAngle\"), Automatic=NULL, Horizontal=0, Vertical=90, Diagonal=45),\n categories.tick.label.wrap = get0(\"formLabelWrap\", ifnotfound=FALSE),\n categories.tick.label.wrap.nchar = get0(\"formLabelWrapNchar\", ifnotfound=100),\n categories.tick.align.horizontal = get0(\"formCategoriesTickHorizAlign\", ifnotfound = \"Default\"),\n #Chart: VALUES_AXIS\n values.bounds.minimum = get0(\"formValuesMin\"), \n values.bounds.maximum = get0(\"formValuesMax\"), \n values.axis.show = get0(\"formValuesAxisShow\", ifnotfound=FALSE),\n values.tick.show = get0(\"formValuesAxisShow\", ifnotfound=FALSE),\n values.tick.format = pn$values.number.format,\n values.tick.prefix = paste0(\"\", get0(\"formValuesPrefix\"), get0(\"formValuesCurrency\")), # currency is just another prefix\n values.tick.suffix = get0(\"formValuesSuffix\", ifnotfound=\"\"),\n values.title = paste0(\"\", if (sum(nchar(get0(\"formValuesTitle\", ifnotfound=\" \"))) > 0) get0(\"formValuesTitle\", ifnotfound = \" \") else pd$values.title),\n values.title.font.family = get0(\"formValuesTitleFontFamily\"),\n values.title.font.color = get0(\"formValuesTitleFontColor\"),\n values.title.font.size = get0(\"formValuesTitleFontSize\", ifnotfound = 0),\n values.number.ticks = get0(\"formValuesNumberTicks\"),\n values.tick.font.size = get0(\"formValuesTickFontSize\", ifnotfound=10),\n values.tick.font.family = get0(\"formValuesTickFontFamily\"),\n values.tick.font.color = get0(\"formValuesTickFontColor\"),\n # Chart: HOVER\n values.hovertext.format = pn$hover.number.format,\n values.hovertext.prefix = get0(\"formHoverValuesPrefix\", ifnotfound = \"\"),\n values.hovertext.suffix = get0(\"formHoverValuesSuffix\", ifnotfound = \"\"),\n # Chart: MARGINS\n margin.top = get0(\"formMarginTop\"),\n margin.left = get0(\"formMarginLeft\"),\n margin.bottom = get0(\"formMarginBottom\"),\n margin.right = get0(\"formMarginRight\"),\n # Chart: APPEARANCE\n type = if(get0(\"formStackSeries\", ifnotfound=FALSE)) \"Stacked\" else formChartType,\n bar.gap = get0(\"formBarGap\"),\n adjust = get0(\"formBandwidth\"),\n automatic.lower.density = get0(\"formAutomaticLower\"),\n pie.inner.radius = get0(\"formPieRadius\"),\n pie.border.color = get0(\"formBorderColor\"),\n density.color = get0(\"formDensityColor\"),\n vertical = get0(\"formVertical\"),\n show.mean = get0(\"formShowMean\"),\n show.median = get0(\"formShowMedian\"),\n show.quartiles = get0(\"formShowQuartiles\"),\n show.range = get0(\"formShowRange\"),\n show.values = get0(\"formShowValues\", ifnotfound = FALSE),\n histogram.cumulative = get0(\"formHistogramCumulative\"),\n histogram.counts = get0(\"formHistogramCounts\"),\n maximum.bins = get0(\"formMaximumBins\"),\n box.points = get0(\"formBoxPoints\"),\n mean.color = get0(\"formMeanColor\"),\n median.color = get0(\"formMedianColor\"),\n quartile.color = get0(\"formQuartilesColor\"),\n range.color = get0(\"formRangeColor\"),\n values.color = get0(\"formValuesColor\"),\n window.start = get0(\"formWindowStart\"),\n range.bars = get0(\"formRangeBars\"),\n line.thickness = get0(\"formLineThickness\"),\n opacity = get0(\"formFillOpacity\"),\n # BarPictograph parameters\n image = get0(\"formIcon\"),\n custom.image = get0(\"formCustomIcon\"),\n base.image = get0(\"formBaseImage\", ifnotfound = \"\"), \n hide.base.image = get0(\"formHideBase\", ifnotfound = FALSE),\n base.icon.color = get0(\"formBaseColor\", ifnotfound = \"\"),\n scale = if (exists(\"formIconScale\")) as.numeric(formIconScale), \n total.icons = if (exists(\"formTotalIcons\")) as.numeric(formTotalIcons),\n icon.ncol = if (exists(\"formIconNCol\")) as.numeric(formIconNCol),\n fix.icon.nrow = get0(\"formFixNRows\", ifnotfound = TRUE),\n fill.direction = get0(\"formFillDirection\"),\n label.color.asIcon = get0(\"formLabelColorAsIcon\", ifnotfound = FALSE),\n categories.tick.align = get0(\"formCategoriesTickAlign\"),\n pad.row = get0(\"formIconPadding\", ifnotfound = 0),\n graphic.width.inch = QOutputSizeWidth,\n graphic.height.inch = QOutputSizeHeight,\n # GeographicMap parameters\n mapping.package = get0(\"formMapPackage\"),\n high.resolution = get0(\"formHighRes\", ifnotfound = TRUE),\n show.missing.regions = get0(\"formShowMissingRegions\", ifnotfound = TRUE),\n treat.NA.as.0 = get0(\"formNAasZero\", ifnotfound = FALSE),\n color.NA = get0(\"formNAColor\"), \n ocean.color = get0(\"formOceanColor\"),\n zip.country = get0(\"formZipCountry\"),\n background = get0(\"formBackgroundMap\"),\n # Heat parameters\n sort.rows = get0(\"formHeatSortRows\"),\n sort.columns = get0(\"formHeatSortColumns\"),\n standardization = get0(\"formHeatStandardization\"),\n left.columns = get0(\"formLeftColumns\"),\n left.column.headings = get0(\"formLeftColumnHeadings\"),\n right.columns = get0(\"formRightColumns\"),\n right.column.headings = get0(\"formRightColumnHeadings\"),\n # General arguments\n font.units = get0(\"formFontUnits\", ifnotfound = \"pt\"),\n append.data = TRUE,\n warn.if.no.match = FALSE)","lastSavedCode":"# VERSION 1.3.0\nlibrary(flipChart)\n# Processing all the selections from the 'Inputs' and 'Charts' tab.\npd <- PrepareData(formChartType, QFilter, QPopulationWeight, input.data.table = get0(\"formTable\"), input.data.raw = if (!exists(\"formX\")) NULL else list(X = get0(\"formX\"), Y = get0(\"formY\"), Z1 = get0(\"formZ\"), Z2 = get0(\"formZ2\"), groups = get0(\"formGroups\"), labels = get0(\"formScatterLabels\")), input.data.pasted = if (length(get0(\"formPastedData\")) == 0) NULL else list(get0(\"formPastedData\"), !get0(\"formNotDataFrame\", ifnotfound = TRUE), get0(\"formPastedColumnNames\"), get0(\"formPastedRowNames\")), first.aggregate = get0(\"formFirstAggregate\", ifnotfound = FALSE), group.by.last = get0(\"formGroupByLastColumn\", ifnotfound = FALSE), tidy = get0(\"formTidy\", ifnotfound = FALSE), tidy.labels = get0(\"formTidyLabels\", ifnotfound = FALSE), transpose = get0(\"formTranspose\"), row.names.to.remove = get0(\"formIgnoreRows\"), column.names.to.remove = get0(\"formIgnoreCols\"), hide.empty.rows = get0(\"formHideEmptyRows\", ifnotfound = FALSE), hide.empty.columns = get0(\"formHideEmptyCols\", ifnotfound = FALSE), select.rows = get0(\"formSelectRows\"), first.k.rows = as.numeric(get0(\"formFirstKRows\")), last.k.rows = as.numeric(get0(\"formLastKRows\")),\n select.columns = get0(\"formSelectCols\"), first.k.columns = as.numeric(get0(\"formFirstKCols\")), last.k.columns = as.numeric(get0(\"formLastKCols\")), \nauto.order.rows = get0(\"formAutoOrderRows\", ifnotfound=FALSE), sort.rows = get0(\"formSortRows\", ifnotfound=FALSE), sort.rows.exclude = get0(\"formSortRowsExclude\"), sort.rows.column = if (sum(nchar(get0(\"formSortRowsColumn\"))) == 0) NULL else formSortRowsColumn, sort.rows.decreasing = get0(\"formSortRowsDecr\"),\nauto.order.columns = get0(\"formAutoOrderCols\", ifnotfound=FALSE), sort.columns = get0(\"formSortCols\"), sort.columns.exclude = get0(\"formSortColsExclude\"), sort.columns.row = if (sum(nchar(get0(\"formSortColsRow\"))) == 0) NULL else formSortColsRow, sort.columns.decreasing = get0(\"formSortColsDecr\"), reverse.rows = get0(\"formReverseRows\"), reverse.columns = get0(\"formReverseCols\"), hide.output.threshold = if (isTRUE(get0(\"formHideOutput\"))) as.numeric(get0(\"formHideOutputThres\")) else 0, hide.rows.threshold = if (isTRUE(get0(\"formHideRowsBySize\"))) as.numeric(get0(\"formHideRowsThres\")) else 0, hide.columns.threshold = if (isTRUE(get0(\"formHideColsBySize\"))) as.numeric(get0(\"formHideColsThres\")) else 0, as.percentages = get0(\"formAsPercentages\", ifnotfound = FALSE), show.labels = !get0(\"formNames\", ifnotfound=TRUE), date.format = get0(\"formDateFormat\", ifnotfound = \"Automatic\"), scatter.mult.yvals = get0(\"formScatterMultYvals\", ifnotfound = FALSE))\npc <- PrepareColors(pd$data, formChartType, small.multiples = isTRUE(get0(\"formSmallMultiples\")), scatter.colors.column = if (is.na(pd$scatter.variable.indices[\"colors\"])) pd$scatter.variable.indices[\"groups\"] else pd$scatter.variable.indices[\"colors\"], palette = get0(\"formPalette\"), palette.custom.color = get0(\"formCustomColor\"), palette.custom.gradient.start = get0(\"formCustomGradientStart\"), palette.custom.gradient.end = get0(\"formCustomGradientEnd\"), palette.custom.palette = get0(\"formCustomPalette\"), \nfit.palette = get0(\"formFitPalette\"), fit.palette.custom.color = get0(\"formFitCustomColor\"), fit.palette.custom.gradient.start = get0(\"formFitCustomGradientStart\"), fit.palette.custom.gradient.end = get0(\"formFitCustomGradientEnd\"), fit.palette.custom.palette = get0(\"formFitCustomPalette\"),\nfit.CI.palette = get0(\"formFitCIPalette\"), fit.CI.palette.custom.color = get0(\"formFitCICustomColor\"), fit.CI.palette.custom.gradient.start = get0(\"formFitCICustomGradientStart\"), fit.CI.palette.custom.gradient.end = get0(\"formFitCICustomGradientEnd\"), fit.CI.palette.custom.palette = get0(\"formFitCICustomPalette\"), \nsubslice.palette = get0(\"formSubslicePalette\"), subslice.palette.custom.color = get0(\"formSubsliceCustomColor\"), subslice.palette.custom.gradient.start = get0(\"formSubsliceCustomGradientStart\"), subslice.palette.custom.gradient.end = get0(\"formSubsliceCustomGradientEnd\"), subslice.palette.custom.palette = get0(\"formSubsliceCustomPalette\")) \npn <- PrepareNumbers(categories.format.list = list(get0(\"formCategoriesNumberType\"), get0(\"formCategoriesDateType\"), get0(\"formCategoriesNumberCustom\"), get0(\"formCategoriesSeparateThousands\"), get0(\"formCategoriesDecimals\")), values.format.list = list(get0(\"formValuesNumberType\"), get0(\"formValuesDateType\"), get0(\"formValuesNumberCustom\"), get0(\"formValuesSeparateThousands\"), get0(\"formValuesDecimals\")), hover.format.list = list(get0(\"formHoverNumberType\"), get0(\"formHoverDateType\"), get0(\"formHoverNumberCustom\"), get0(\"formHoverSeparateThousands\"), get0(\"formHoverDecimals\")), data.labels.format.list = list(get0(\"formDataLabelNumberType\"), get0(\"formDataLabelDateType\"), get0(\"formDataLabelCustom\"), get0(\"formDataLabelSeparateThousands\"), get0(\"formDataLabelDecimals\")), !is.null(attr(pd$data, \"statistic\")) && grepl(\"%\", attr(pd$data, \"statistic\"), fixed = TRUE))\n\n# Creating the chart.\nchart <- if(formChartType== \"Table\") pd$data else CChart(chart.type = formChartType,\n x = pd$data,\n weights = pd$weights,\n small.multiples = get0(\"formSmallMultiples\", ifnotfound=FALSE), \n nrows = get0(\"formSmallMultNRows\"),\n x.order = get0(\"formSmallMultXOrder\"),\n average.show = get0(\"formSmallMultAverage\", ifnotfound = FALSE),\n average.color = get0(\"formSmallMultAverageColor\"),\n share.axes = get0(\"formSmallMultShareAxes\", ifnotfound = TRUE),\n panel.title.show = get0(\"formSmallMultTitle\", ifnotfound = TRUE),\n panel.title.font.family = get0(\"formSmallMultTitleFontFamily\"),\n panel.title.font.color = get0(\"formSmallMultTitleFontColor\"),\n panel.title.font.size = get0(\"formSmallMultTitleFontSize\"),\n panel.title.wrap = get0(\"formSmallMultTitleWrap\"),\n panel.title.wrap.nchar = get0(\"formSmallMultTitleWrapNchar\"),\n pad.left = get0(\"formSmallMultPadLeft\", ifnotfound=0),\n pad.right = get0(\"formSmallMultPadRight\", ifnotfound=0),\n pad.top = get0(\"formSmallMultPadTop\"),\n pad.bottom = get0(\"formSmallMultPadBottom\"),\n max.label.length = 0,\n #Scatter plot inputs.\n scatter.max.labels = get0(\"formScatterMaxLab\", ifnotfound=20),\n scatter.labels.as.hovertext= if (exists(\"formScatterLabelType\")) formScatterLabelType!=\"On chart\" else TRUE,\n scatter.colors.as.categorical = if (exists(\"formScatterColorType\")) formScatterColorType==\"Categories\" else TRUE,\n scatter.sizes.as.diameter = if (exists(\"formScatterSizeType\")) formScatterSizeType==\"Diameter\" else FALSE,\n scatter.x.column = pd$scatter.variable.indices[\"x\"],\n scatter.y.column = pd$scatter.variable.indices[\"y\"],\n scatter.sizes.column = pd$scatter.variable.indices[\"sizes\"],\n scatter.colors.column = pd$scatter.variable.indices[\"colors\"],\n scatter.groups.column = pd$scatter.variable.indices[\"groups\"],\n trend.lines = get0(\"formTrendLines\", ifnotfound=FALSE),\n logos = get0(\"formLogos\"),\n logo.size = get0(\"formLogoSize\"),\n # Chart: DATA SERIES\n colors = pc$series.colors,\n pie.subslice.colors = pc$subslice.colors,\n #Chart: FIT LINE\n fit.type = get0(\"formFit\", ifnotfound=\"None\"),\n fit.ignore.last = get0(\"formFitIgnoreLast\"),\n fit.line.type = get0(\"formFitLineType\"),\n fit.line.colors = pc$fit.line.colors,\n fit.line.width = get0(\"formFitLineWidth\", ifnotfound=1),\n fit.line.opacity = get0(\"formFitOpacity\"),\n fit.CI.show = isTRUE(get0(\"formFitCI\")),\n fit.CI.colors = pc$fit.CI.colors,\n fit.CI.opacity = get0(\"formFitCIOpacity\"),\n # Chart: DATA LABELS\n data.label.show = get0(\"formDataLabelShow\", ifnotfound = FALSE),\n data.label.format = pn$data.labels.number.format,\n data.label.font.size = get0(\"formDataLabelFontSize\", ifnotfound = 10),\n data.label.font.family = get0(\"formDataLabelFontFamily\", ifnotfound = get0(\"formFont\")),\n data.label.font.color = get0(\"formDataLabelFontColor\"),\n data.label.font.autocolor = exists(\"formDataLabelFontColorOptions\") && formDataLabelFontColorOptions == \"Automatically\",\n data.label.prefix = get0(\"formPrefix\", ifnotfound=\"\"),\n data.label.suffix = get0(\"formSuffix\", ifnotfound=\"\"),\n data.label.position = get0(\"formDataLabelPosition\", ifnotfound=\"top middle\"),\n data.label.align.horizontal = get0(\"formDataLabelHorizAlign\", ifnotfound=\"Default\"),\n # Chart: FONT\n global.font.family = get0(\"formFont\"),\n global.font.color = get0(\"formFontColor\"),\n #Chart: GRIDLINES\n grid.show = get0(\"formShowGrid\", ifnotfound=FALSE),\n # Chart: LEGEND\n legend.show = get0(\"formLegendShow\", ifnotfound=TRUE),\n legend.title = get0(\"formLegendTitle\"),\n legend.font.family = get0(\"formLegendFontFamily\"),\n legend.font.color = get0(\"formLegendFontColor\"),\n legend.font.size = get0(\"formLegendFontSize\"),\n legend.x.position = get0(\"formLegendXPos\", ifnotfound=1.02),\n legend.y.position = get0(\"formLegendYPos\", ifnotfound=1.0),\n legend.width = get0(\"formLegendWidth\", ifnotfound=250),\n # Chart: TITLE\n title = paste0(\"\", if (sum(nchar(get0(\"formTitle\"))) > 0) formTitle else pd$chart.title),\n title.font.family = get0(\"formTitleFontFamily\"),\n title.font.color = get0(\"formTitleFontColor\"),\n title.font.size = get0(\"formTitleFontSize\", ifnotfound=0),\n subtitle = get0(\"formSubtitle\", ifnotfound=\"\"),\n subtitle.font.family = get0(\"formSubtitleFontFamily\"),\n subtitle.font.color = get0(\"formSubtitleFontColor\"),\n subtitle.font.size = get0(\"formSubtitleFontSize\"),\n footer = paste0(\"\", if (sum(nchar(get0(\"formFooter\"))) > 0) formFooter else pd$chart.footer),\n footer.font.family = get0(\"formFooterFontFamily\"),\n footer.font.color = get0(\"formFooterFontColor\"),\n footer.font.size = get0(\"formFooterFontSize\"),\n footer.wrap = get0(\"formFooterWrap\", ifnotfound=FALSE),\n footer.wrap.nchar = get0(\"formFooterWrapNchar\"),\n #Chart: CATEGORIES_AXIS\n categories.bounds.minimum = get0(\"formCategoriesMin\"), \n categories.bounds.maximum = get0(\"formCategoriesMax\"), \n categories.axis.show = get0(\"formCategoriesAxisShow\", ifnotfound=FALSE),\n categories.tick.show = get0(\"formCategoriesAxisShow\", ifnotfound=FALSE),\n categories.tick.format = pn$categories.number.format,\n categories.tick.prefix = paste0(\"\", get0(\"formCategoriesPrefix\"), get0(\"formCategoriesCurrency\")), # currency is just another prefix\n categories.tick.suffix = get0(\"formCategoriesSuffix\", ifnotfound=\"\"),\n categories.tick.interval = get0(\"formCategoriesTickInterval\", ifnotfound=0),\n categories.tick.units = get0(\"formCategoriesTickUnits\"),\n categories.title = paste0(\"\", if (sum(nchar(get0(\"formCategoriesTitle\", ifnotfound = \" \"))) > 0) get0(\"formCategoriesTitle\", ifnotfound = \" \") else pd$categories.title),\n categories.title.font.family = get0(\"formCategoriesTitleFontFamily\"),\n categories.title.font.color = get0(\"formCategoriesTitleFontColor\"),\n categories.title.font.size = get0(\"formCategoriesTitleFontSize\", ifnotfound = 0), \n categories.tick.font.family = get0(\"formCategoriesTickFontFamily\"),\n categories.tick.font.color = get0(\"formCategoriesTickFontColor\"),\n categories.tick.font.size = get0(\"formCategoriesTickFontSize\", ifnotfound=10),\n categories.tick.angle = if (!exists(\"formCategoriesTickAngle\")) NULL else switch(get0(\"formCategoriesTickAngle\"), Automatic=NULL, Horizontal=0, Vertical=90, Diagonal=45),\n categories.tick.label.wrap = get0(\"formLabelWrap\", ifnotfound=FALSE),\n categories.tick.label.wrap.nchar = get0(\"formLabelWrapNchar\", ifnotfound=100),\n categories.tick.align.horizontal = get0(\"formCategoriesTickHorizAlign\", ifnotfound = \"Default\"),\n #Chart: VALUES_AXIS\n values.bounds.minimum = get0(\"formValuesMin\"), \n values.bounds.maximum = get0(\"formValuesMax\"), \n values.axis.show = get0(\"formValuesAxisShow\", ifnotfound=FALSE),\n values.tick.show = get0(\"formValuesAxisShow\", ifnotfound=FALSE),\n values.tick.format = pn$values.number.format,\n values.tick.prefix = paste0(\"\", get0(\"formValuesPrefix\"), get0(\"formValuesCurrency\")), # currency is just another prefix\n values.tick.suffix = get0(\"formValuesSuffix\", ifnotfound=\"\"),\n values.title = paste0(\"\", if (sum(nchar(get0(\"formValuesTitle\", ifnotfound=\" \"))) > 0) get0(\"formValuesTitle\", ifnotfound = \" \") else pd$values.title),\n values.title.font.family = get0(\"formValuesTitleFontFamily\"),\n values.title.font.color = get0(\"formValuesTitleFontColor\"),\n values.title.font.size = get0(\"formValuesTitleFontSize\", ifnotfound = 0),\n values.number.ticks = get0(\"formValuesNumberTicks\"),\n values.tick.font.size = get0(\"formValuesTickFontSize\", ifnotfound=10),\n values.tick.font.family = get0(\"formValuesTickFontFamily\"),\n values.tick.font.color = get0(\"formValuesTickFontColor\"),\n # Chart: HOVER\n values.hovertext.format = pn$hover.number.format,\n values.hovertext.prefix = get0(\"formHoverValuesPrefix\", ifnotfound = \"\"),\n values.hovertext.suffix = get0(\"formHoverValuesSuffix\", ifnotfound = \"\"),\n # Chart: MARGINS\n margin.top = get0(\"formMarginTop\"),\n margin.left = get0(\"formMarginLeft\"),\n margin.bottom = get0(\"formMarginBottom\"),\n margin.right = get0(\"formMarginRight\"),\n # Chart: APPEARANCE\n type = if(get0(\"formStackSeries\", ifnotfound=FALSE)) \"Stacked\" else formChartType,\n bar.gap = get0(\"formBarGap\"),\n adjust = get0(\"formBandwidth\"),\n automatic.lower.density = get0(\"formAutomaticLower\"),\n pie.inner.radius = get0(\"formPieRadius\"),\n pie.border.color = get0(\"formBorderColor\"),\n density.color = get0(\"formDensityColor\"),\n vertical = get0(\"formVertical\"),\n show.mean = get0(\"formShowMean\"),\n show.median = get0(\"formShowMedian\"),\n show.quartiles = get0(\"formShowQuartiles\"),\n show.range = get0(\"formShowRange\"),\n show.values = get0(\"formShowValues\", ifnotfound = FALSE),\n histogram.cumulative = get0(\"formHistogramCumulative\"),\n histogram.counts = get0(\"formHistogramCounts\"),\n maximum.bins = get0(\"formMaximumBins\"),\n box.points = get0(\"formBoxPoints\"),\n mean.color = get0(\"formMeanColor\"),\n median.color = get0(\"formMedianColor\"),\n quartile.color = get0(\"formQuartilesColor\"),\n range.color = get0(\"formRangeColor\"),\n values.color = get0(\"formValuesColor\"),\n window.start = get0(\"formWindowStart\"),\n range.bars = get0(\"formRangeBars\"),\n line.thickness = get0(\"formLineThickness\"),\n opacity = get0(\"formFillOpacity\"),\n # BarPictograph parameters\n image = get0(\"formIcon\"),\n custom.image = get0(\"formCustomIcon\"),\n base.image = get0(\"formBaseImage\", ifnotfound = \"\"), \n hide.base.image = get0(\"formHideBase\", ifnotfound = FALSE),\n base.icon.color = get0(\"formBaseColor\", ifnotfound = \"\"),\n scale = if (exists(\"formIconScale\")) as.numeric(formIconScale), \n total.icons = if (exists(\"formTotalIcons\")) as.numeric(formTotalIcons),\n icon.ncol = if (exists(\"formIconNCol\")) as.numeric(formIconNCol),\n fix.icon.nrow = get0(\"formFixNRows\", ifnotfound = TRUE),\n fill.direction = get0(\"formFillDirection\"),\n label.color.asIcon = get0(\"formLabelColorAsIcon\", ifnotfound = FALSE),\n categories.tick.align = get0(\"formCategoriesTickAlign\"),\n pad.row = get0(\"formIconPadding\", ifnotfound = 0),\n graphic.width.inch = QOutputSizeWidth,\n graphic.height.inch = QOutputSizeHeight,\n # GeographicMap parameters\n mapping.package = get0(\"formMapPackage\"),\n high.resolution = get0(\"formHighRes\", ifnotfound = TRUE),\n show.missing.regions = get0(\"formShowMissingRegions\", ifnotfound = TRUE),\n treat.NA.as.0 = get0(\"formNAasZero\", ifnotfound = FALSE),\n color.NA = get0(\"formNAColor\"), \n ocean.color = get0(\"formOceanColor\"),\n zip.country = get0(\"formZipCountry\"),\n background = get0(\"formBackgroundMap\"),\n # Heat parameters\n sort.rows = get0(\"formHeatSortRows\"),\n sort.columns = get0(\"formHeatSortColumns\"),\n standardization = get0(\"formHeatStandardization\"),\n left.columns = get0(\"formLeftColumns\"),\n left.column.headings = get0(\"formLeftColumnHeadings\"),\n right.columns = get0(\"formRightColumns\"),\n right.column.headings = get0(\"formRightColumnHeadings\"),\n # General arguments\n font.units = get0(\"formFontUnits\", ifnotfound = \"pt\"),\n append.data = TRUE,\n warn.if.no.match = FALSE)","highlightedCodeSpans":[{"start":121,"length":13,"index":4},{"start":137,"length":7,"index":6},{"start":146,"length":17,"index":6},{"start":2695,"length":13,"index":4},{"start":5041,"length":13,"index":4},{"start":5099,"length":13,"index":4},{"start":9085,"length":9,"index":4},{"start":9571,"length":10,"index":4},{"start":13309,"length":13,"index":4}],"tableTransformations":"<TabularTransformer>\r\n <TabularTransform type=\"Truncation\" truncationHeaderType=\"Column\" />\r\n <TabularTransform />\r\n</TabularTransformer>","tabularFilteringOptions":null,"hasGuiControls":true,"guiControls":{"Code":"var chart_type_default = \"Bar\";\nvar default_aggregation = true; // when data is Variables, required even if FirstAggregate is not a control so that Table created from a chart has the same data as shown by the chart\nvar default_smallmultiples = false;\n\n// VERSION 2.6.3\nvar allow_control_groups = Q.fileFormatVersion() > 10.9; // Group controls for Displayr and later versions of Q\nvar controls = []; // All controls displayed must be inserted here\nif (allow_control_groups)\n form.group(\"OUTPUT\")\n// Chart type selector.\n// Separate words in chart types e.g. scatter plot not scatterplot\nvar qChartType = form.comboBox({name: \"formChartType\", label: \"Chart type\",\n alternatives: [\"Table\", \n \"Area\", \n \"Bar\",\n \"Bar Pictograph\",\n \"Bean\", \n \"Box\",\n \"Column\",\n \"Density\",\n \"Donut\",\n \"Geographic Map\",\n \"Heat\", \n \"Histogram\", \n \"Line\",\n \"Palm\", \n \"Pie\",\n \"Pyramid\", \n \"Radar\", \n \"Stream\", \n \"Scatter\",\n \"Time Series\",\n \"Venn\", \n \"Violin\"], default_value: chart_type_default, required: true});\nvar chartType = qChartType.getValue();\ncontrols.push(qChartType);\n\n// Some constants and helper functions\nvar displayr = Q.isOnTheWeb();\nfunction isEmpty(x) { return (x == undefined || x.getValue() == null && (x.getValues() == null || x.getValues().length == 0)) }\nfunction isBlankSheet(x) { return (x.getValue() == null || x.getValue().length == 0) }\nfunction isEmptyString(x) { return (x == undefined || x == null || x == \"\") }\nfunction componentToHex(c) { var hex = c.toString(16); return hex.length == 1 ? \"0\" + hex : hex; }\nfunction rgbToHex(x) { return \"#\" + componentToHex(x[0]) + componentToHex(x[1]) + componentToHex(x[2]); }\n\n// Default axis names\nvar categoriesAxisLabel = \"CATEGORIES (X) AXIS\";\nvar valuesAxisLabel = \"VALUES (Y) AXIS\";\nfunction SwappedXY() { categoriesAxisLabel = \"CATEGORIES (Y) AXIS\"; \n valuesAxisLabel = \"VALUES (X) AXIS\"; }\nfunction SwappedDistXY() { categoriesAxisLabel = \"FREQUENCY (Y) AXIS\"; \n valuesAxisLabel = \"VALUES (X) AXIS\"; }\n\n// * Combo box alternatives *\ncategories_number_formats = [\"Automatic\", \"Number\", \"Category\", \"Percentage\", \"Date/Time\", \"Currency\", \"Metric units suffix\", \"Scientific\", \"Custom\"];\nvalues_number_formats = [\"Automatic\", \"Number\", \"Category\", \"Percentage\", \"Date/Time\", \"Currency\", \"Metric units suffix\", \"Scientific\", \"Custom\"];\nhover_number_formats = [\"Automatic\", \"Number\", \"Category\", \"Percentage\", \"Metric units suffix\", \"Scientific\", \"Custom\"]; // no currency since cannot add as prefix and no date because of charting requirements\ndata_label_formats = [\"Automatic\", \"Number\", \"Percentage\"];\ndate_formats = [\"YY (Year, 2 digit)\", \"DD Mon YY\", \"DD Month YY\", \"DD MM YY\", \"YYYY (Year, 4 digit)\", \"DD Mon YYYY\", \"DD Month YYYY\", \"DD MM YYYY\", \"Mon DD YY\", \"Month DD YY\", \"MM DD YY\", \"Mon DD YYYY\", \"Month DD YYYY\", \"MM DD YYYY\", \"YY Mon DD\", \"YY Month DD\", \"YY MM DD\", \"YYYY Mon DD\", \"YYYY Month DD\", \"YYYY MM DD\", \"Custom\"];\n \n// * Font alternatives *\nfont_families = [\"Andale Mono\", \"Arial\", \"Arial Black\", \"Century Gothic\", \"Comic Sans MS\",\n \"Courier New\", \"Georgia\", \"Impact\", \"Times New Roman\", \"Trebuchet MS\", \"Verdana\"];\n\n// * Palette alternatives *\npalettes = [\"Default colors\", \"Colorblind safe colors\", \"Rainbow\", \"Light pastels\", \"Strong colors\", \"Spectral colors (red, yellow, blue)\", \"Spectral colors (blue, yellow, red)\", \"Reds, dark to light\", \"Reds, light to dark\", \"Greens, dark to light\", \"Greens, light to dark\", \"Blues, dark to light\", \"Blues, light to dark\", \"Greys, dark to light\", \"Greys, light to dark\", \"Heat colors (yellow, red)\", \"Terrain colors (green, beige, grey)\", \"Custom color\", \"Custom gradient\", \"Custom palette\"];\ngradual_palettes = [\"Blues, light to dark\", \"Blues, dark to light\", \"Greys, light to dark\", \"Greys, dark to light\", \"Reds, light to dark\", \"Reds, dark to light\", \"Greens, light to dark\", \"Greens, dark to light\", \"Spectral colors (red, yellow, blue)\", \"Spectral colors (blue, yellow, red)\",\"Heat colors (yellow, red)\", \"Terrain colors (green, beige, grey)\", \"Custom gradient\", \"Custom palette\"];\ngradual_palettes_red = [\"Reds, light to dark\", \"Reds, dark to light\", \"Greys, light to dark\", \"Greys, dark to light\", \"Blues, light to dark\", \"Blues, dark to light\", \"Greens, light to dark\", \"Greens, dark to light\", \"Spectral colors (red, yellow, blue)\", \"Spectral colors (blue, yellow, red)\",\"Heat colors (yellow, red)\", \"Terrain colors (green, beige, grey)\", \"Custom gradient\", \"Custom palette\"];\nline_subslice_palletes = [\"Group colors\"].concat(palettes);\n\n// *Controls linked to specific chart types*\n// - We uses lowercase camel to represent the input data controls. These are not the names of the actual controls.\n// - The input data controls for a specific chart type are store in 'input_data'.\n// - All other controls that modify the data are stored in 'INPUTS'.\n// - Other than for 'INPUTS', the name of an array of controls becomes the name of the group on the Charts tab. \n// - The names used to refer to individual controls in the arrays are the same as the names of the R parameters (where there is a one-to-one match)\n\n// Default controls (modified below for specific charts)\nAPPEARANCE = null; GRIDLINES = null; MARGINS = null;\nDATA_SERIES = ['Colors'];\nDATA_LABELS = ['DataLabelShow', 'DataLabelDecimals', 'DataLabelFont', 'DataLabelPrefix', 'DataLabelSuffix'];\nTITLE = ['Title', 'Subtitle', 'Footer'];\ntidy = true;\nxLabel = displayr ? \"Variables in 'Data'\" : \"Variables\";\nyLabel = 'Groups';\nINPUTS_data = ['pasted', 'table', 'r', 'variables'];\nvariables_types = ['variables'];\nCATEGORIES_AXIS = ['CategoriesTitle', 'CategoriesAxisShow', 'CategoriesTickFont', 'CategoriesTickAngle', \n 'CategoriesNumberFormat', 'LabelWrap','CategoriesPrefix'];\nVALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat'];\nHOVER = ['HoverNumberFormat'];\nLEGEND = ['LegendShow', 'LegendFont', 'LegendPosition'];\nINPUTS = ['x', 'y', \"AsPercentages\", \"FirstAggregate\", \"DateFormat\"];\nFONT = ['GlobalFontFamily', 'GlobalFontColor', 'FontUnits'];\nfunction AddMargins() { MARGINS = ['Margin'];}\nif (chartType == \"Venn\")\n{\n DATA_SERIES = null; TITLE = null; CATEGORIES_AXIS = null; VALUES_AXIS = null; LEGEND = null;\n FONT = ['FontUnits'];\n INPUTS_data = ['binaryMulti', 'r', 'pasted', 'table', 'variables'];\n variables_types = ['Questions: PickAny', 'variables']; \n INPUTS = ['AsPercentages', 'x'];\n tidy = false;\n DATA_LABELS = [\"DataLabelFontSize\"];\n hover_number_formats = [\"Automatic\", \"Number\", \"Percentage\"];\n} else if (chartType == \"Stream\")\n{\n categoriesAxisLabel = \"X AXIS\";\n valuesAxisLabel = \"Y AXIS\";\n DATA_LABELS = TITLE = LEGEND = null;\n FONT = ['GlobalFontColor'];\n CATEGORIES_AXIS = ['CategoriesNumberFormat']; // Additional controls are defined below\n VALUES_AXIS = ['ValuesNumberTicks', 'ValuesAxisShow', 'ValuesNumberFormat'];\n categories_number_formats = [\"Automatic\", \"Number\", \"Date/Time\", \"Scientific\", \"Custom\"];\n values_number_formats = [\"Automatic\", \"Number\", \"Scientific\", \"Custom\"];\n HOVER = null;\n AddMargins();\n}else if (chartType == \"Pie\" || chartType == \"Donut\")\n{\n var radiusLabel = \"Donut hole radius %\";\n if (chartType == \"Pie\")\n {\n radiusLabel = \"Radius of pie groupings % (multi-column tables only)\";\n DATA_SERIES.push('SubsliceColors');\n }\n CATEGORIES_AXIS = null; VALUES_AXIS = null; HOVER = null; LEGEND = null;\n DATA_LABELS = [\"DataLabelFormat\", \"DataLabelFont\", \"DataLabelPrefix\", \"DataLabelSuffix\"];\n APPEARANCE = [\"PieRadius\", \"BorderColor\"];\n \n} else if (chartType == \"Radar\")\n{\n categoriesAxisLabel = \"CATEGORIES (ANGULAR) AXIS\";\n valuesAxisLabel = \"VALUES (RADIAL) AXIS\";\n CATEGORIES_AXIS = ['CategoriesAxisShow', 'CategoriesTickFont', 'CategoriesTickAngle', 'LabelWrap'];\n VALUES_AXIS = ['ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat', 'ValuesMax'];\n hover_number_formats = [\"Automatic\", \"Number\", \"Percentage\"];\n DATA_LABELS = ['DataLabelShow', 'DataLabelFormat', 'DataLabelFont', 'DataLabelFontMulticolor', 'DataLabelPrefix', 'DataLabelSuffix'];\n APPEARANCE = ['LineThickness', 'SmallMultiples'];\n DATA_SERIES.push('FillOpacity');\n GRIDLINES = ['ShowGrid'];\n} else if (chartType == \"Palm\")\n{\n FONT = ['GlobalFontFamily', 'FontUnits'];\n CATEGORIES_AXIS = ['CategoriesTitle', 'CategoriesTickFont'];\n VALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat', 'ValuesSuffix', 'ValuesPrefix'];\n INPUTS = ['x', \"AsPercentages\", \"FirstAggregate\"];\n values_number_formats = [\"Automatic\", \"Number\", \"Percentage\", \"Currency\"];\n DATA_LABELS = null;\n LEGEND = ['LegendFont'];\n TITLE = null;\n HOVER = null;\n} else if (chartType == \"Time Series\")\n{\n INPUTS = ['x', 'y'];\n DATA_LABELS = null;\n TITLE = ['Title'];\n LEGEND = ['LegendWidth'];\n HOVER = null;\n CATEGORIES_AXIS = ['CategoriesTitle', 'CategoriesTickFont'];\n VALUES_AXIS = ['ValuesTitle', 'ValuesTickFont'];\n APPEARANCE = [\"WindowStart\", \"RangeBars\", \"LineThickness\"];\n} else if (chartType == \"Geographic Map\")\n{\n DATA_LABELS = null;\n TITLE = null;\n LEGEND = ['LegendShow', 'LegendTitle', 'LegendFont']\n hover_number_formats = [\"Automatic\", \"Number\", \"Percentage\"];\n CATEGORIES_AXIS = null;\n VALUES_AXIS = ['ValuesMin', 'ValuesMax'];\n palettes = gradual_palettes;\n APPEARANCE = [\"MapPackage\", \"SmallMultiples\"];\n} else if (chartType == \"Heat\")\n{\n palettes = gradual_palettes;\n LEGEND = ['LegendShow', 'LegendFont'];\n DATA_LABELS = ['DataLabelShow', 'DataLabelFormat', 'DataLabelFont', 'DataLabelPrefix', 'DataLabelSuffix'];\n categoriesAxisLabel = \"X AXIS\";\n valuesAxisLabel = \"Y AXIS\";\n CATEGORIES_AXIS = ['CategoriesTitle', 'CategoriesAxisShow', 'CategoriesTickFont'];\n VALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesMin', 'ValuesMax'];\n HOVER = ['HoverNumberFormat', 'HoverPrefixSuffix'];\n hover_number_formats = ['Automatic', 'Number', 'Percentage', 'Scientific'];\n APPEARANCE = ['SortOrStandardize', 'AdditionalColumns'];\n} else if (chartType == \"Scatter\")\n{\n INPUTS_data = ['pasted', 'table', 'variables'];\n INPUTS = ['x', 'y'];\n GRIDLINES = ['ShowGrid'];\n DATA_SERIES.push('FillOpacity');\n categoriesAxisLabel = \"X AXIS\";\n valuesAxisLabel = \"Y AXIS\";\n categories_number_formats = [\"Automatic\", \"Number\", \"Percentage\", \"Date/Time\", \"Currency\", \"Metric units suffix\", \"Scientific\", \"Custom\"];\n values_number_formats = categories_number_formats;\n xLabel = 'X coordinates';\n yLabel = 'Y coordinates';\n FITLINE = null;\n HOVER = null;\n VALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat', 'ValuesSuffix', 'ValuesPrefix', 'ValuesMin', 'ValuesMax'];\n CATEGORIES_AXIS = ['CategoriesTitle', 'CategoriesAxisShow', 'CategoriesTickFont', 'CategoriesTickAngle', \n 'CategoriesNumberFormat', 'LabelWrap','CategoriesPrefix', 'CategoriesMin', 'CategoriesMax'];\n APPEARANCE = ['dummy', 'SmallMultiples', 'ScatterTrendLine']; \n DATA_LABELS = null; // this is overridden if LabeledScatter\n MARGINS = ['CustomMargin'];\n var isLabeled = false;\n //isLabeled is set in the DATA MANIPULATION tab, as is DATA_LABELS and APPEARANCE\n\n} else if ([\"Column\", \"Bar\", \"Area\", \"Line\"]. indexOf(chartType) != -1)\n{\n \n if (chartType == \"Bar\")\n SwappedXY();\n if (chartType != \"Line\")\n APPEARANCE = ['Stacked'];\n if (chartType == \"Line\")\n APPEARANCE = ['LineThickness'];\n if (chartType == \"Bar\" || chartType == \"Column\")\n APPEARANCE.push(\"BarGap\");\n DATA_SERIES.push(\"FillOpacity\");\n FITLINE = ['FitLine'];\n GRIDLINES = ['ShowGrid'];\n MARGINS = ['CustomMargin'];\n APPEARANCE.push(\"SmallMultiples\");\n DATA_LABELS = ['DataLabelShow', 'DataLabelFormat', 'DataLabelFont', 'DataLabelFontMulticolor', 'DataLabelPrefix', 'DataLabelSuffix'];\n VALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat', 'ValuesSuffix', 'ValuesPrefix', 'ValuesMin', 'ValuesMax'];\n CATEGORIES_AXIS = ['CategoriesTitle', 'CategoriesAxisShow', 'CategoriesTickFont', 'CategoriesTickAngle', \n 'CategoriesNumberFormat', 'LabelWrap','CategoriesPrefix', 'CategoriesMin', 'CategoriesMax'];\n\n} else if ([\"Box\", \"Bean\", \"Density\", \"Histogram\", \"Violin\"]. indexOf(chartType) != -1)\n{ \n INPUTS_data = ['pasted', 'table', 'r', 'variables', 'sets'];\n INPUTS = ['x', 'y'];\n variables_types = ['variables'];\n APPEARANCE = ['DensityColor', 'VerticalDistributon'];\n DATA_SERIES = null; DATA_LABELS = null; LEGEND = null;\n categoriesAxisLabel = \"FREQUENCY (X) AXIS\";\n valuesAxisLabel = \"VALUES (Y) AXIS\";\n CATEGORIES_AXIS = ['CategoriesTickFont', 'LabelWrap'];\n VALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat', 'ValuesMin', 'ValuesMax'];\n vertical = ['Violin', 'Box'].indexOf(chartType) > -1;\n if (chartType == 'Violin')\n APPEARANCE.push('ShowMean', 'Bandwidth', 'AutomaticLower');\n else if (chartType == 'Bean') {\n APPEARANCE.push('ValuesColor', 'Bandwidth', 'AutomaticLower');\n HOVER = null;\n } else if (chartType == 'Density') {\n APPEARANCE.push('ValuesColor', 'ShowValues', 'Bandwidth', 'AutomaticLower');\n HOVER = null;\n } else if (chartType == 'Box')\n APPEARANCE.push('BoxPoints', 'ValuesColor');\n else if (chartType == 'Histogram')\n APPEARANCE.push('HistogramCumulative', 'HistogramCounts', 'AutomaticBinning', 'MaximumBins');\n else if (chartType != 'Bean')\n APPEARANCE.push('ShowValues');\n GRIDLINES = ['ShowGrid']; \n\n} else if (chartType == \"Pyramid\")\n{\n SwappedXY();\n APPEARANCE = ['SmallMultiples', 'BarGap'];\n VALUES_AXIS = ['ValuesTitle'];\n DATA_SERIES.push(\"FillOpacity\");\n GRIDLINES = null;\n FITLINE = null;\n LEGEND = null;\n DATA_LABELS = ['DataLabelShow', 'DataLabelFormat', 'DataLabelFont', 'DataLabelFontMulticolor', 'DataLabelPrefix', 'DataLabelSuffix'];\n} else if (chartType == \"Bar Pictograph\")\n{\n SwappedXY();\n INPUTS = ['x', 'AsPercentages', 'FirstAggregate']; // only accepts 1-d tables\n CATEGORIES_AXIS = ['CategoriesAxisShow', 'CategoriesTickFont', 'CategoriesTickHorizAlign'];\n DATA_LABELS = ['DataLabelFont', 'DataLabelFormat',\n 'DataLabelPrefix', 'DataLabelSuffix', 'DataLabelPosition'];\n APPEARANCE = ['Icon', 'FillDirection', 'IconPadding'];\n VALUES_AXIS = null;\n HOVER = null;\n LEGEND = null;\n TITLE = null;\n} else if(chartType == \"Table\")\n{\n INPUTS_data = ['pasted', 'table', 'r', 'variables', 'binaryMulti', 'sets', 'set'];\n DATA_SERIES = DATA_LABELS = TITLE = CATEGORIES_AXIS = null;\n VALUES_AXIS = HOVER = LEGEND = FONT = null;\n} else if(chartType != \"None\")\n throw \"Unknown chart type\";\n\nvar show_as_small_mult = false; \nvar isStacked = false;\nif (APPEARANCE != null)\n{\n if (APPEARANCE.indexOf('SmallMultiples') > -1)\n {\n var qSmallMult = form.checkBox({label: \"Show as small multiples (panel chart)\", name: \"formSmallMultiples\", default_value: default_smallmultiples, prompt: \"Show each data series in its own panel.\"});\n controls.push(qSmallMult);\n if (!allow_control_groups)\n qSmallMult.lineBreakAfter = true;\n show_as_small_mult = qSmallMult.getValue();\n }\n if (!show_as_small_mult && APPEARANCE.indexOf(\"Stacked\") > -1)\n {\n var qStack = form.checkBox({label: \"Stack series\", name: \"formStackSeries\", default_value: false, prompt: \"Stack bars on top of each other to compare cumulative values.\"});\n if (!allow_control_groups)\n qStack.lineBreakAfter = true;\n var isStacked = qStack.getValue();\n controls.push(qStack);\n }\n}\n \n//// Creating the controls\n//// Data Selector.\n// Creating the data inputs.\nif (allow_control_groups)\n form.group(\"DATA SOURCE\")\n\n// Input as linked Q or R table(s)\nvar outputLabel = \"Output\";\nvar outputPrompt = \"Outputs are tables or other Q or R outputs\";\nif (displayr)\n{\n outputLabel += \" in 'Pages'\";\n outputPrompt += \" in the 'Pages' tree (top-left)\";\n}\nvar tableInput = form.dropBox({name: \"formTable\", label: outputLabel, types: ['Table', \"RItem:!StandardChart!SignicanceTest:!KMeans:!phraseList:!tidyText:!wordBag\"], required: false, multi: chartType == \"Scatter\" && !show_as_small_mult, prompt: outputPrompt});\nif (!allow_control_groups)\n tableInput.lineBreakAfter = true;\n\n// Input as variables in the Data tab\nvar variables_controls = []; \nvar variables_prompt = displayr ? \"Variables are shown in the 'Data' tree (bottom-left).\" :\n \"Variables are shown in the 'Variables and Questions' tab.\";\nif (INPUTS.indexOf('x') > -1) \n{\n var varX = form.dropBox({label: xLabel, name: \"formX\", types: variables_types, prompt: variables_prompt, multi: chartType != \"Scatter\", required: false});\n if (!allow_control_groups)\n varX.lineBreakAfter = true;\n var n_variables = 1;\n if (allow_control_groups && chartType != \"Scatter\")\n n_variables = varX.getValues().length;\n variables_controls.push(varX);\n}\nvar n_yvariables = 0;\nif (INPUTS.indexOf('y')> -1 && (chartType == \"Scatter\" || (n_variables == 1)))\n{\n var varY = form.dropBox({label: yLabel, name: \"formY\", types:['variable'], prompt: variables_prompt, multi: chartType == \"Scatter\", required: false});\n if (!allow_control_groups)\n varY.lineBreakAfter = true;\n variables_controls.push(varY);\n n_yvariables = 1;\n if (allow_control_groups && chartType == \"Scatter\")\n n_yvariables = varY.getValues().length; \n}\n\nif (chartType == \"Scatter\" && n_yvariables <= 1)\n{\n var VLabels = form.dropBox({label: \"Labels\",name: \"formScatterLabels\",types:['variables'], prompt: variables_prompt, multi: false, required: false});\n if (!allow_control_groups)\n VLabels.lineBreakAfter = true;\n variables_controls.push(VLabels);\n \n var VSizes = form.dropBox({label: \"Sizes\", name: \"formZ\", types:['variables'], prompt: variables_prompt, multi: false, required: false});\n if (!allow_control_groups)\n VSizes.lineBreakAfter = true;\n variables_controls.push(VSizes);\n\n var VColors = form.dropBox({label: \"Colors\", name: \"formZ2\", types:['variables'], prompt: variables_prompt, multi: false, required: false});\n if (!allow_control_groups)\n VColors.lineBreakAfter = true;\n variables_controls.push(VColors);\n if (show_as_small_mult)\n {\n var VGroups = form.dropBox({label: \"Groups\", name: \"formGroups\", types:['variable: Categorical'], prompt: variables_prompt, multi: false, required: true, default_value: VColors.getValue()})\n if (!allow_control_groups)\n VGroups.lineBreakAfter = true;\n variables_controls.push(VGroups);\n }\n}\n\n// Pasted input data\nvar pastedInput = form.dataEntry({label: \"Paste or type data\", name: \"formPastedData\", prompt: \"Opens a spreadsheet into which you can enter data.\"});\nif (!allow_control_groups)\n pastedInput.lineBreakAfter = true;\n\n\n// Hide other data sources if one of them is already selected\nif (!allow_control_groups || !isEmpty(tableInput) ||\n (isBlankSheet(pastedInput) && isEmpty(varX) && isEmpty(varY)))\n controls.push(tableInput);\nif (!allow_control_groups || (!isEmpty(varX) || !isEmpty(varY)) || \n (isEmpty(tableInput) && isBlankSheet(pastedInput)))\n controls = controls.concat(variables_controls);\nif (!allow_control_groups || !isBlankSheet(pastedInput) ||\n (isEmpty(tableInput) && isEmpty(varX) && isEmpty(varY))) \n controls.push(pastedInput);\n\n// Figure out type of data input to customize data processing options\nvar dtype = \"\";\nif (!allow_control_groups || !isEmpty(tableInput))\n{\n dtype = 'table';\n if (allow_control_groups && chartType == \"Scatter\" && tableInput.getValues() != null && tableInput.getValues().length > 1)\n {\n dtype = 'tables';\n isLabeled = true;\n //APPEARANCE.push('ScatterTrendLine');\n }\n}\nelse if (!allow_control_groups || !isEmpty(varX) || !isEmpty(varY))\n dtype = 'variables';\nelse if (!isBlankSheet(pastedInput))\n dtype = 'pasted';\n\nif (yLabel == \"Groups\" && allow_control_groups && !isEmpty(varY))\n{\n var zi = INPUTS.indexOf('FirstAggregate');\n if (zi > -1)\n INPUTS.splice(zi, 1);\n}\n\nif (!allow_control_groups || dtype != \"\")\n{\n if (allow_control_groups)\n form.group(\"DATA MANIPULATION\");\n var scatter_mult_ys = false;\n if (chartType == \"Scatter\" && dtype != 'variables' && dtype != 'tables')\n {\n var qScatterMultYs = form.checkBox({label: \"Input data contains y-values in multiple columns\", name: \"formScatterMultYvals\", default_value: false, prompt: \"Select checkbox if data table is in long format rather than a wide format.\"});\n if (!allow_control_groups) \n qScatterMultYs.lineBreakAfter = true;\n scatter_mult_ys = qScatterMultYs.getValue();\n controls.push(qScatterMultYs);\n }\n var aggregate = false;\n if (INPUTS.indexOf(\"FirstAggregate\") > -1)\n {\n var qAggregate = form.checkBox({label: \"Aggregate the data prior to plotting\", name: \"formFirstAggregate\", default_value: dtype == 'variables' && default_aggregation, prompt: \"The data is 'raw', where each row represents an individual case. It needs to be aggregated prior to plotting.\"});\n if (!allow_control_groups)\n qAggregate.lineBreakAfter = true;\n controls.push(qAggregate);\n aggregate = qAggregate.getValue();\n }\n if (tidy)\n {\n var qTidy = form.checkBox({label: \"Automatically tidy the data\", name: \"formTidy\", default_value: chartType != \"Table\" && chartType != \"Scatter\", prompt: \"Convert to numeric and simplify structure.\"});\n if (!allow_control_groups)\n qTidy.lineBreakAfter = true;\n tidy = qTidy.getValue();\n controls.push(qTidy);\n }\n if (aggregate && allow_control_groups && (dtype == 'table' || dtype == 'pasted'))\n {\n var qGroupLast = form.checkBox({label: \"Group by last column (crosstab)\", name: \"formGroupByLastColumn\", default_value: true, prompt: \"If more than two columns are provided, automatically groups by the last column\"});\n controls.push(qGroupLast);\n }\n if (aggregate && (!allow_control_groups || (dtype == 'variables' && n_variables == 2 && n_yvariables == 0)))\n { \n var qGroupLast = form.checkBox({label: \"Group by last variable (crosstab)\", name: \"formGroupByLastColumn\", default_value: false, prompt: \"If two variable are provided, automatically groups by the last variable\"});\n if (!allow_control_groups)\n qGroupLast.lineBreakAfter = true;\n controls.push(qGroupLast);\n }\n if (dtype == 'pasted')\n {\n var qAutoName = form.checkBox({label: \"Automatically detect row and column names\", name: \"formNotDataFrame\", default_value: true, prompt: \"Unselect to manually adjust structure of table\"});\n if (!allow_control_groups)\n qAutoName.lineBreakAfter = true;\n var notDF = qAutoName.getValue();\n controls.push(qAutoName);\n if (!notDF)\n {\n var rowname_label = \"First column contains row names\";\n var rowname_prompt = \"Values will be shown as labels in the categories axis\";\n var rowname_default = false;\n if (chartType == \"Scatter\")\n {\n if (!scatter_mult_ys)\n {\n rowname_label = \"First column contains data labels\";\n rowname_prompt = \"Values will be shown as data labels for each point (not X-axis labels)\";\n }\n rowname_default = true;\n }\n var qColNames = form.checkBox({label: \"First row contains column names\", name: \"formPastedColumnNames\", default_value: true});\n var qRowNames = form.checkBox({label: rowname_label, name: \"formPastedRowNames\", prompt: rowname_prompt, default_value: rowname_default});\n if (!allow_control_groups)\n qColNames.lineBreakAfter = true;\n if (!allow_control_groups)\n qRowNames.lineBreakAfter = true;\n controls.push(qColNames);\n controls.push(qRowNames);\n }\n }\n qTidyLabel = form.checkBox({name: \"formTidyLabels\", label: \"Tidy labels\", default_value: chart_type_default != \"Table\", prompt: \"Extract common prefixes to simplify labels\"});\n if (!allow_control_groups)\n qTidyLabel.lineBreakAfter = true;\n controls.push(qTidyLabel);\n if (chartType != 'Donut')\n {\n qTranspose = form.checkBox({name: \"formTranspose\", label: \"Switch rows and columns\", prompt: \"Read each row of the input table as a data series\"});\n if (!allow_control_groups)\n qTranspose.lineBreakAfter = true;\n controls.push(qTranspose);\n }\n\n // Creating other input controls on the Inputs page.\n var asPct = false;\n if (INPUTS != null)\n {\n if (INPUTS.indexOf('AsPercentages') > -1)\n {\n var qAsPct = form.checkBox({name: \"formAsPercentages\", label: \"Convert to percentages/proportions\", prompt: \"Compute percentages based on data in input tables (after row and column manipuations are applied).\"});\n if (!allow_control_groups)\n qAsPct.lineBreakAfter = true;\n asPct = qAsPct.getValue();\n controls.push(qAsPct);\n }\n if (INPUTS.indexOf('DateFormat') > -1)\n {\n var qDate = form.comboBox({name: \"formDateFormat\", label: \"Date format\", alternatives: ['Automatic', 'International (dd/mm/yyyy)', 'US (mm/dd/yyyy)', 'No date formatting'], default_value: 'Automatic', prompt: \"Control how date strings in input table is read\"});\n controls.push(qDate);\n }\n // Set default formatting if 'as percentage' is checked\n if (asPct)\n {\n var formats = [values_number_formats, hover_number_formats, data_label_formats];\n for (var i = 0; i < formats.length; i++)\n {\n var format_array = formats[i];\n var pct_idx = format_array.indexOf('Percentage');\n if (pct_idx != -1) \n {\n format_array.splice(pct_idx, 1);\n format_array.splice(0, 0, \"Percentage\");\n var auto_idx = format_array.indexOf('Automatic');\n if (auto_idx != -1)\n format_array.splice(auto_idx, 1);\n }\n }\n }\n if (dtype == 'variables')\n {\n var qVarNames = form.checkBox({label: \"Variable names\", name:\"formNames\", default_value: false, prompt: \"Show variable names instead of variable labels\"});\n if (!allow_control_groups)\n qVarNames.lineBreakAfter;\n controls.push(qVarNames);\n }\n var qHideOutput = form.checkBox({label: \"Hide output with small sample sizes\", name: \"formHideOutput\", default_value: false, prompt: \"Show error if any cell of the table has 'Base n' smaller than the cut-off\"});\n controls.push(qHideOutput);\n if (qHideOutput.getValue())\n {\n var qHideOutputThres = form.textBox({label: \"Sample size cut-off\", name: \"formHideOutputThres\", default_value: \"30\", type: \"number\", required: true});\n controls.push(qHideOutputThres);\n }\n\n if (allow_control_groups) \n form.group('Row manipulations')\n var qHideEmptyRows = form.checkBox({label: \"Hide empty rows\", name: \"formHideEmptyRows\", default_value: false, prompt: \"Hide rows containing only missing values.\"});\n if (!allow_control_groups)\n qHideEmptyRows.lineBreakAfter = true;\n\n controls.push(qHideEmptyRows);\n var qHideRowsBySize = form.checkBox({label: \"Hide rows with small sample sizes\", name: \"formHideRowsBySize\", default_value: false, prompt: \"Remove rows with 'Base n' smaller than the sample size cut-off\"});\n controls.push(qHideRowsBySize);\n if (qHideRowsBySize.getValue())\n {\n var qHideRowsThres = form.textBox({label: \"Sample size cut-off\", name: \"formHideRowsThres\", default_value: \"30\", type: \"number\", required: true});\n controls.push(qHideRowsThres);\n }\n var qSortRows = form.checkBox({label: \"Sort rows\", name: \"formSortRows\", default_value: false, prompt: \"Sort rows by the values in a specified column\"});\n controls.push(qSortRows);\n if (qSortRows.getValue())\n {\n var qSortRowsColumn = form.textBox({label: \"Column used for sorting rows\", name: \"formSortRowsColumn\", type: \"text\", required: false, prompt: \"Enter column index or name. Last column used if none specified\"});\n controls.push(qSortRowsColumn);\n var qSortRowsDecr = form.checkBox({label: \"Sort in decreasing order\", name: \"formSortRowsDecr\", default_value: false});\n controls.push(qSortRowsDecr);\n\n var qSortRowsExclude = form.textBox({label: \"Rows to exclude from sorting\", name: \"formSortRowsExclude\", type: \"text\", required: false, default_value: \"NET, Total, SUM\", prompt: \"Enter comma separated list of row indices or names\"});\n controls.push(qSortRowsExclude);\n }\n if (!qSortRows.getValue())\n {\n var qAutoOrderRows = form.checkBox({label: \"Order rows by similarity\", name: \"formAutoOrderRows\", default_value: false, prompt: \"Use correspondence analysis and order rows by coordinates in first dimension\"});\n controls.push(qAutoOrderRows)\n }\n var qReverseRows = form.checkBox({label: \"Reverse rows\", name: \"formReverseRows\", default_value: false});\n controls.push(qReverseRows);\n var qSelectRows = form.textBox({label: \"Rows to show\", name: \"formSelectRows\", type: \"text\", required: false, prompt: \"Enter comma separated list of row indices or names\"});\n controls.push(qSelectRows);\n var qFirstKRows = form.textBox({label: \"Number of rows from top to show\", name: \"formFirstKRows\", type: \"number\", required: false, prompt: \"Enter a number or leave blank\"});\n controls.push(qFirstKRows);\n var qLastKRows = form.textBox({label: \"Number of rows from bottom to show\", name: \"formLastKRows\", type: \"number\", required: false, prompt: \"Enter a number or leave blank\"});\n controls.push(qLastKRows);\n\n var qRowsIgnore = form.textBox({label: \"Rows to ignore\", type: \"text\", default_value: \"NET, Total, SUM\", name: \"formIgnoreRows\", required: false, prompt: \"Specify rows to hide as a comma seperated list of row names\"});\n if (!allow_control_groups)\n qRowsIgnore.lineBreakAfter = true;\n controls.push(qRowsIgnore);\n\n if (allow_control_groups)\n form.group('Column manipulations')\n var qHideEmptyCols = form.checkBox({label: \"Hide empty columns\", name: \"formHideEmptyCols\", default_value: false, prompt: \"Hide columns containing only missing values\"});\n if (!allow_control_groups)\n qHideEmptyCols.lineBreakAfter = true;\n controls.push(qHideEmptyCols);\n var qHideColsBySize = form.checkBox({label: \"Hide columns with small sample sizes\", name: \"formHideColsBySize\", default_value: false, prompt: \"Remove columns with 'Base n' or Column n' smaller than the sample size cut-off\"});\n controls.push(qHideColsBySize);\n if (qHideColsBySize.getValue())\n {\n var qHideColsThres = form.textBox({label: \"Sample size cut-off\", name: \"formHideColsThres\", default_value: \"30\", type: \"number\", required: true});\n controls.push(qHideColsThres);\n }\n var qSortCols = form.checkBox({label: \"Sort columns\", name: \"formSortCols\", default_value: false, prompt: \"Sort columns by the values in a specified row\"});\n controls.push(qSortCols);\n if (qSortCols.getValue())\n {\n var qSortColsRow = form.textBox({label: \"Row used for sorting columns\", name: \"formSortColsRow\", type: \"text\", required: false, prompt: \"Enter row index or name. Last row used if none specified\"});\n controls.push(qSortColsRow);\n var qSortColsDecr = form.checkBox({label: \"Sort in decreasing order\", name: \"formSortColsDecr\", default_value: false});\n controls.push(qSortColsDecr);\n\n var qSortColsExclude = form.textBox({label: \"Columns to exclude from sorting\", name: \"formSortColsExclude\", type: \"text\", required: false, default_value: \"NET, Total, SUM\", prompt: \"Enter comma separated list of column indices or names\"});\n controls.push(qSortColsExclude);\n }\n if (!qSortCols.getValue())\n {\n var qAutoOrderCols = form.checkBox({label: \"Order columns by similarity\", name: \"formAutoOrderCols\", default_value: false, prompt: \"Use correspondence analysis and order columns by coordinates in first dimension\"});\n controls.push(qAutoOrderCols)\n }\n var qReverseCols = form.checkBox({label: \"Reverse columns\", name: \"formReverseCols\", default_value: false});\n controls.push(qReverseCols);\n var qSelectCols = form.textBox({label: \"Columns to show\", name: \"formSelectCols\", type: \"text\", required: false, prompt: \"Enter comma separated list of column indices or names\"});\n controls.push(qSelectCols);\n var qFirstKCols = form.textBox({label: \"Number of columns from left to show\", name: \"formFirstKCols\", type: \"number\", required: false, prompt: \"Enter a number or leave blank\"});\n controls.push(qFirstKCols);\n var qLastKCols = form.textBox({label: \"Number of columns from right to show\", name: \"formLastKCols\", type: \"number\", required: false, prompt: \"Enter a number or leave blank\"});\n controls.push(qLastKCols);\n\n var qColsIgnore = form.textBox({label: \"Columns to ignore\", type: \"text\", default_value: \"NET, Total, SUM\", name: \"formIgnoreCols\", required: false, prompt: \"Specify columns to hide as a comma seperated list of column names\"});\n if (!allow_control_groups)\n qColsIgnore.lineBreakAfter = true;\n controls.push(qColsIgnore);\n\n }\n}\n\n//// Creating controls on the Chart page (forced to be on Inputs tab for Q <= v5.2.1)\nif (allow_control_groups)\n form.page('Chart');\n\nif (APPEARANCE != null)\n{\n if (allow_control_groups)\n form.group('APPEARANCE');\n\n if (APPEARANCE.indexOf(\"MapPackage\") > -1)\n {\n //MapPackage is checked first because we need to determine if smallmultiples should be shown\n var packageValue = \"plotly\";\n if (!show_as_small_mult)\n {\n var qPackage = form.comboBox({name: \"formMapPackage\", label: \"Map package\", alternatives: [\"plotly\", \"leaflet\"], default_value: \"plotly\", prompt: \"Choose package used to create maps. Plotly is faster for global and US maps but leaflet allows mapping by zip codes and region-specific maps\"});\n controls.push(qPackage);\n packageValue = qPackage.getValue();\n }\n if (packageValue == \"plotly\")\n TITLE = ['Title', 'Subtitle', 'Footer'];\n\n \n if (packageValue == \"leaflet\")\n {\n FONT = null;\n LEGEND = ['LegendShow', 'LegendTitle'];\n }\n var qHighRes = form.checkBox({label: \"High resolution\", name: \"formHighRes\", default_value: false, prompt: \"Control level of detail for plotly maps and leaflet world maps\"});\n controls.push(qHighRes);\n if (!allow_control_groups)\n qHighRes.lineBreakAfter = true;\n var qNAasZero = form.checkBox({label: \"Treat NA as zero\", name: \"formNAasZero\", default_value: false, prompt: \"Should missing values be treated as zero value or colored as a separated category?\"});\n if (!allow_control_groups)\n qNAasZero.lineBreakAfter = true\n controls.push(qNAasZero);\n if (!allow_control_groups)\n {\n var qNAColorLabel = form.newLabel(\"Color of NA values\");\n controls.push(qNAColorLabel);\n }\n var qNAColor = form.colorPicker({name: \"formNAColor\", label: !allow_control_groups ? \"\" : \"Color of NA values\", default_value: \"#808080\"});\n if (!allow_control_groups)\n qNAColor.lineBreakAfter = true;\n controls.push(qNAColor);\n\n var backgroundMapValue = false;\n if (packageValue == \"leaflet\")\n {\n var qShowMissingRegions = form.checkBox({label: \"Show missing regions\", name: \"formShowMissingRegions\", default_value: true, prompt: \"If unselected, the range of the map will only cover non-missing values\"});\n controls.push(qShowMissingRegions);\n if (!allow_control_groups)\n qShowMissingRegions.lineBreakAfter = true;\n var qBackgroundMap = form.checkBox({label: \"Background map\", name: \"formBackgroundMap\", default_value: false, prompt: \"Use a contextual background map\"});\n backgroundMapValue = qBackgroundMap.getValue();\n controls.push(qBackgroundMap);\n if (!allow_control_groups)\n qBackgroundMap.lineBreakAfter = true;\n if (backgroundMapValue)\n palettes = gradual_palettes_red;\n }\n \n if (!backgroundMapValue)\n {\n if (!allow_control_groups)\n {\n var qOceanColorLabel = form.newLabel(\"Ocean color\");\n controls.push(qOceanColorLabel);\n }\n var qOceanColor = form.colorPicker({name: \"formOceanColor\", label: !allow_control_groups ? \"\" : \"Ocean color\", default_value: \"#FFFFFF\", prompt: \"The color of the ocean or background\"});\n if (!allow_control_groups)\n qOceanColor.lineBreakAfter = true;\n controls.push(qOceanColor);\n }\n \n if (packageValue == \"leaflet\") \n {\n var qZipCountry = form.comboBox({name: \"formZipCountry\", label: \"Zip code country\", alternatives: [\"Automatic\", \"USA\", \"Australia\", \"UK\"], default_value: \"Automatic\", required: true, prompt: \"Only used if zip codes are provided and there is ambiguity in the zip codes\"});\n controls.push(qZipCountry);\n if (!allow_control_groups)\n qZipCountry.lineBreakAfter = true;\n\t } \n }\n\n if (APPEARANCE.indexOf('SmallMultiples') > -1 && dtype != 'tables')\n {\n if (qSmallMult.getValue())\n {\n var qSmallMultNRow = form.numericUpDown({label: \"Number of rows of panels\", name: \"formSmallMultNRows\", default_value: 2, minimum: 1, prompt: \"Control layout of small multiples\"});\n controls.push(qSmallMultNRow);\n if (chartType != \"Geographic Map\" && chartType != \"Scatter\")\n LEGEND = null; \n if (chartType != \"Geographic Map\" && chartType != \"Scatter\" && chartType != \"Pyramid\")\n {\n var qSmallMultAverage = form.checkBox({label: \"Show average of all series\", name: \"formSmallMultAverage\", default_value: false, prompt: \"In each panel, show average of combined data for comparison\"});\n controls.push(qSmallMultAverage);\n if (qSmallMultAverage.getValue())\n {\n var qSmallMultAverageColor = form.colorPicker({name: \"formSmallMultAverageColor\", label: !allow_control_groups ? \"\" : \"Color of average series\", default_value: \"#999999\"});\n controls.push(qSmallMultAverageColor);\n }\n }\n if (chartType != \"Radar\" && chartType != \"Geographic Map\")\n {\n var qSmallMultShareAxes = form.checkBox({label: \"Share axes between panels\", name: \"formSmallMultShareAxes\", default_value: true, prompt: \"Hold range of axes constant and only show axes on outer panels\"});\n controls.push(qSmallMultShareAxes);\n }\n var qSmallMultXOrder = form.textBox({label: \"Order of panels\", name: \"formSmallMultXOrder\", required: false, prompt: \"e.g '2,1,3', or leave blank to follow order of input data\"});\n controls.push(qSmallMultXOrder);\n var qSmallMultPadLeft = form.numericUpDown({label: \"Left padding\", name: \"formSmallMultPadLeft\", default_value: 0.01, minimum: 0.00, maximum: chartType == \"Radar\" ? 100 : 1.00, increment: 0.01});\n controls.push(qSmallMultPadLeft);\n var qSmallMultPadRight = form.numericUpDown({label: \"Right padding\", name: \"formSmallMultPadRight\", default_value: 0.01, minimum: 0.00, maximum: chartType == \"Radar\"? 100 : 1.00, increment: 0.01});\n controls.push(qSmallMultPadRight);\n var qSmallMultPadTop = form.numericUpDown({label: \"Top padding\", name: \"formSmallMultPadTop\", default_value: 0.1, minimum: 0.00, maximum: 1.00, increment: 0.01});\n controls.push(qSmallMultPadTop);\n var qSmallMultPadBottom = form.numericUpDown({label: \"Bottom padding\", name: \"formSmallMultPadBottom\", default_value: 0.01, minimum: 0.00, maximum: 1.00, increment: 0.01});\n controls.push(qSmallMultPadBottom);\n }\n }\n if (chartType == 'Scatter')\n {\n // Scatter is always labeled in INPUTS_types['tables']\n // Never labeled if small multiples chosen\n // For other input types we need to check\n if (!qSmallMult.getValue() && ((dtype != 'tables' && dtype != 'variables') || \n (dtype == 'variables' && !(allow_control_groups && isEmpty(VLabels)))))\n {\n var qLabType = form.comboBox({name: \"formScatterLabelType\", label: \"Show labels\", alternatives:['As hover text', 'On chart'], default_value: 'As hover text'});\n var labtype = qLabType.getValue()\n controls.push(qLabType);\n isLabeled = labtype == 'On chart';\n }\n if (isLabeled)\n {\n APPEARANCE.push('ScatterMaxLab');\n categories_number_formats = [\"Automatic\", \"Number\", \"Percentage\", \"Currency\"];\n values_number_formats = [\"Automatic\", \"Number\", \"Percentage\", \"Currency\"];\n data_label_formats = [\"Automatic\", \"Number\", \"Category\", \"Percentage\", \"Currency\"]\n DATA_LABELS = ['DataLabelFont', 'DataLabelFontMulticolor'];\n }\n if (!isLabeled && ((dtype != 'tables' && dtype != 'variables') || \n (dtype == 'variables' && n_yvariables == 1 && !(allow_control_groups && VSizes.getValue() == null))))\n APPEARANCE.push('ScatterSizeType');\n if ((dtype != 'tables' && dtype != 'variables') || \n (dtype == 'variables' && n_yvariables == 1 && !(allow_control_groups && VColors.getValue() == null)))\n APPEARANCE.push('ScatterColorType');\n if (!isLabeled)\n FITLINE = ['FitLine'];\n }\n if (APPEARANCE.indexOf(\"ScatterMaxLab\") > -1)\n {\n var qMaxLab = form.numericUpDown({name: \"formScatterMaxLab\", label: \"Maximum data labels to plot\", default_value: 50, maximum: 1000, minimum: 0, prompt: \"Hide some data labels if there are too many points\"});\n if (!allow_control_groups)\n qMaxLab.lineBreakAfter = true;\n controls.push(qMaxLab);\n var qLogo = form.textBox({name: \"formLogos\", label: \"Logos\", prompt: \"Enter URLs as a comma separated list\", type: \"Text\", required: false});\n if (!allow_control_groups)\n qLogo.lineBreakAfter = true;\n controls.push(qLogo);\n var qLogoSize = form.numericUpDown({name: \"formLogoSize\", label: \"Logo size\", default_value: 0.5, increment: 0.1});\n if (!allow_control_groups)\n qLogoSize.lineBreakAfter = true;\n controls.push(qLogoSize);\n }\n if (APPEARANCE.indexOf(\"ScatterTrendLine\") > -1 && isLabeled)\n {\n var prompt_text = \"Add lines between corresponding points in successive tables\";\n if (dtype != 'tables')\n prompt_text = \"Add lines between points in the same group\";\n var qScatterTrend = form.checkBox({label: \"Show trend lines\", name: \"formTrendLines\", default_value: false, prompt: prompt_text});\n if (!allow_control_groups)\n qScatterTrend.lineBreakAfter = true;\n controls.push(qScatterTrend);\n }\n if (APPEARANCE.indexOf(\"ScatterSizeType\") > -1)\n {\n var qSizeType = form.comboBox({label: \"Treat sizes variable as\", name:\"formScatterSizeType\", alternatives:['Area', 'Diameter'], default_value:'Area'});\n controls.push(qSizeType);\n }\n if (!show_as_small_mult && APPEARANCE.indexOf(\"ScatterColorType\") > -1)\n {\n var qColorType = form.comboBox({label: \"Treat colors variable as\", name:\"formScatterColorType\", alternatives:['Categories', 'Numeric scale'], default_value:'Categories'});\n controls.push(qColorType);\n }\n\n\n if (APPEARANCE.indexOf(\"Icon\") > -1)\n {\n var custom_icon_label = \"(Custom icon)\";\n var qPictoIcon = form.comboBox({name: \"formIcon\", label: \"Icon\", alternatives: [\n custom_icon_label, \"Apple\",\"Baby\", \"Beer\", \"Bread\",\"Cake\", \"Car\", \"Chicken\", \"Circle\", \"Cross\", \"Elephant\", \"Globe\", \"Gun\", \"Heart\", \"House\", \"Money\", \"Soldier\", \"Square\", \"Star\", \"Sick person\", \"Stick man\", \"Stick woman\", \"Thumbs up\", \"Thumbs down\", \"Tick\", \"Truck\", \"User\", \"Water drop\", \"Weight\", \"Wine\"], default_value: \"Stick man\"});\n var picto_icon = qPictoIcon.getValue();\n controls.push(qPictoIcon);\n if (picto_icon == custom_icon_label)\n {\n var qCustomIcon = form.textBox({name: \"formCustomIcon\", label: \"Icon URL\", type: \"text\", required: true, prompt: \"Enter url to icon\"});\n if (!allow_control_groups)\n qCustomIcon.lineBreakAfter = true;\n controls.push(qCustomIcon)\n var qCustomBase = form.textBox({name: \"formBaseImage\", label: \"Base icon URL\", type: \"text\", required: false, prompt: \"Leave blank to hide unfilled icons\"});\n var customBase = qCustomBase.getValue();\n controls.push(qCustomBase);\n }\n else\n {\n var qBaseOpt = form.checkBox({name: \"formHideBase\", label: \"Hide unfilled icons\", default_value: true});\n if (!allow_control_groups)\n qBaseOpt.lineBreakAfter = true;\n var baseOpt = !qBaseOpt.getValue();\n controls.push(qBaseOpt);\n }\n qTotIcon = form.textBox({name: \"formTotalIcons\", label: \"Total icons per bar\", type: \"number\", required: false, prompt: \"Number of filled and unfilled icons. Leave blank to determine from Input data\"});\n if (!allow_control_groups)\n qTotIcon.lineBreakAfter = true;\n controls.push(qTotIcon);\n qIconScale = form.textBox({name: \"formIconScale\", label: \"Units per icon (scale)\", type: \"number\", required: false, prompt: \"Leave blank to determine based on range of Input data\"});\n if (!allow_control_groups)\n qIconScale.lineBreakAfter = true;\n controls.push(qIconScale);\n var qIconNcol = form.textBox({name:\"formIconNCol\", label: \"Maximum icons per row\", type: \"number\", prompt: \"Leave blank for no wrapping (all icons on one line)\", required: false});\n if (!allow_control_groups)\n qIconNcol.lineBreakAfter = true;\n controls.push(qIconNcol);\n var ncolOpt = qIconNcol.getValue()\n var fillDir = form.comboBox({name:\"formFillDirection\", label: \"Direction of fill\", alternatives: [\"From left\", \"From right\", \"Radial\"], default_value: \"From left\"});\n controls.push(fillDir);\n if (picto_icon != custom_icon_label)\n {\n if (baseOpt)\n {\n if (!allow_control_groups)\n {\n var qBaseColorLabel = form.newLabel(\"Icon base color\");\n controls.push(qBaseColorLabel);\n }\n var qBaseColor = form.colorPicker({name: \"formBaseColor\", label: !allow_control_groups ? \"\" : \"Icon base color\", default_value: \"#CCCCCC\", prompt: \"Color of unfilled icons\"});\n if (!allow_control_groups)\n qBaseColor.lineBreakAfter = true;\n controls.push(qBaseColor);\n }\n var qLabColAsIcon = form.checkBox({name: \"formLabelColorAsIcon\", label: \"Labels colored as icons\"});\n if (!allow_control_groups)\n qLabColAsIcon.lineBreakAfter = true;\n controls.push(qLabColAsIcon);\n var labColAsIcon = qLabColAsIcon.getValue();\n if (ncolOpt != \"\" && !baseOpt)\n {\n var qFixRows = form.checkBox({name:\"formFixNRows\", label:\"Fixed number of rows per bar\", default_value: true});\n if (!allow_control_groups)\n qFixRows.lineBreakAfter = true;\n controls.push(qFixRows);\n }\n }\n if (ncolOpt != \"\" && picto_icon == custom_icon_label && !customBase)\n {\n var qFixRows = form.checkBox({name:\"formFixNRows\", label:\"Fixed number of rows per bar\", default_value: true});\n if (!allow_control_groups)\n qFixRows.lineBreakAfter = true;\n controls.push(qFixRows);\n }\n var qIconPad = form.numericUpDown({name: \"formIconPadding\", label: \"Space between bars\", minimum: 0, default_value: 2, increment:1});\n if (!allow_control_groups)\n qIconPad.lineBreakAfter = true;\n controls.push(qIconPad);\n }\n if (APPEARANCE.indexOf(\"PieRadius\") > -1)\n {\n var qRadius = form.numericUpDown({name: \"formPieRadius\", label: radiusLabel, default_value: 70, increment: 1, minimum: 0, maximum: 100});\n if (!allow_control_groups)\n qRadius.lineBreakAfter = true;\n controls.push(qRadius);\n }\n if (APPEARANCE.indexOf(\"BorderColor\") > -1)\n {\n if (!allow_control_groups)\n {\n var qBorderColorLabel = form.newLabel(\"Border color\");\n controls.push(qBorderColorLabel);\n }\n var qBorderColor = form.colorPicker({name: \"formBorderColor\", label: allow_control_groups ? \"Border color\" : \"\", default_value: \"#ffffff\"});\n if (!allow_control_groups)\n qBorderColor.lineBreakAfter = true;\n controls.push(qBorderColor);\n }\n if (APPEARANCE.indexOf(\"DensityColor\") > -1)\n {\n if (!allow_control_groups)\n {\n var qDensityColorLabel = form.newLabel(\"Color\");\n controls.push(qDensityColorLabel);\n }\n var qDensityColor = form.colorPicker({name: \"formDensityColor\", label: allow_control_groups ? \"Color\" : \"\", default_value: \"#5C9AD3\"});\n if (!allow_control_groups)\n qDensityColor.lineBreakAfter = true;\n controls.push(qDensityColor);\n }\n if (APPEARANCE.indexOf(\"VerticalDistributon\") > -1)\n {\n var qVertDist = form.checkBox({name: \"formVertical\", label: \"Plot vertically\", default_value: vertical, prompt: \"Rotate plot by 90 degrees\"});\n if (!allow_control_groups)\n qVertDist.lineBreakAfter = true;\n if (!qVertDist.getValue())\n SwappedDistXY();\n controls.push(qVertDist);\n }\n var show_values_color = true;\n if (APPEARANCE.indexOf(\"ShowValues\") > -1)\n {\n var qShowValues = form.checkBox({name: \"formShowValues\", label: \"Plot the individual data values\", default_value: false});\n if (!allow_control_groups)\n qShowValues.lineBreakAfter = true;\n var show_values_color = qShowValues.getValue();\n controls.push(qShowValues);\n }\n if (show_values_color && APPEARANCE.indexOf(\"ValuesColor\") > - 1)\n {\n if (!allow_control_groups)\n {\n var qValuesColorLabel = form.newLabel(\"Data value color\");\n controls.push(qValuesColorLabel);\n }\n var qValuesColor = form.colorPicker({name: \"formValuesColor\", label: allow_control_groups ? \"Data value color\" : \"\", default_value: \"#999999\"});\n if (!allow_control_groups)\n qValuesColor.lineBreakAfter = true;\n controls.push(qValuesColor);\n }\n if (APPEARANCE.indexOf(\"ShowMean\") > -1)\n {\n var qMean = form.checkBox({name: \"formShowMean\", label: \"Plot the mean value\", default_value: true});\n if (!allow_control_groups)\n qMean.lineBreakAfter = true;\n controls.push(qMean);\n if (qMean.getValue())\n {\n if (!allow_control_groups)\n {\n var qMeanColorLabel = form.newLabel(\"Color of the mean dot\");\n controls.push(qMeanColorLabel);\n }\n var qMeanColor = form.colorPicker({name: \"formMeanColor\", label: !allow_control_groups ? \"\" : \"Color of the mean dot\", default_value: \"#808080\"});\n if (!allow_control_groups)\n qMeanColor.lineBreakAfter = true;\n controls.push(qMeanColor);\n }\n var qMedian = form.checkBox({name: \"formShowMedian\", label: \"Plot the median\", default_value: true});\n if (!allow_control_groups)\n qMedian.lineBreakAfter = true;\n controls.push(qMedian);\n if (qMedian.getValue())\n {\n if (!allow_control_groups)\n {\n var qMedianColorLabel = form.newLabel(\"Color of the median line\");\n controls.push(qMedianColorLabel);\n }\n var qMedianColor = form.colorPicker({name: \"formMedianColor\", label: allow_control_groups ? \"Color of the median line\" : \"\", default_value: \"#000000\"});\n if (!allow_control_groups)\n qMedianColor.lineBreakAfter = true;\n controls.push(qMedianColor);\n }\n var qQuartiles = form.checkBox({name: \"formShowQuartiles\", label: \"Plot the quartiles\", default_value: true});\n if (!allow_control_groups)\n qQuartiles.lineBreakAfter = true;\n controls.push(qQuartiles);\n if (qQuartiles.getValue())\n {\n if (!allow_control_groups)\n {\n var qQuartileColorLabel = form.newLabel(\"Color of the quartiles box\");\n controls.push(qQuartileColorLabel);\n }\n var qQuartileColor = form.colorPicker({name: \"formQuartilesColor\", label: allow_control_groups ? \"Color of the quartiles box\" : \"\", default_value: \"#000000\"});\n if (!allow_control_groups)\n qQuartileColor.lineBreakAfter = true;\n controls.push(qQuartileColor);\n }\n var qRange = form.checkBox({name: \"formShowRange\", label: \"Plot the range\", default_value: true});\n if (!allow_control_groups)\n qRange.lineBreakAfter = true;\n controls.push(qRange);\n if (qRange.getValue())\n {\n if (!allow_control_groups)\n {\n var qRangeColorLabel = form.newLabel(\"Color of the range line\");\n controls.push(qRangeColorLabel);\n }\n var qRangeColor = form.colorPicker({name: \"formRangeColor\", label: allow_control_groups ? \"Color of the range line\" : \"\", default_value: \"#000000\"});\n if (!allow_control_groups)\n qRangeColor.lineBreakAfter = true;\n controls.push(qRangeColor);\n }\n }\n if (APPEARANCE.indexOf(\"BoxPoints\") > -1)\n {\n var qBoxPoint = form.comboBox({name: \"formBoxPoints\", label: \"Box points\", alternatives: [\"All\", \"Outliers\", \"Suspected outliers\"], default_value: \"Suspected outliers\", required: true, prompt: \"Control whether only outliers are shown or all points\"});\n if (!allow_control_groups)\n qBoxPoint.lineBreakAfter = true;\n controls.push(qBoxPoint);\n }\n if (APPEARANCE.indexOf('HistogramCounts') > -1)\n { \n var qHistCum = form.checkBox({name: \"formHistogramCumulative\", label: \"Cumulative histogram\", default_value: false, prompt: \"Show number of observations with values less than or equal to current bin\"});\n if (!allow_control_groups)\n qHistCum.lineBreakAfter = true;\n controls.push(qHistCum);\n var qHistCount = form.checkBox({name: \"formHistogramCounts\", label: \"Show counts\", default_value: false});\n if (!allow_control_groups)\n qHistCount.lineBreakAfter = true;\n controls.push(qHistCount);\n var qHistAutoBin = form.checkBox({name: \"formAutomaticBinning\", label: \"Automatic column widths (bins)\", default_value: true});\n if (!allow_control_groups)\n qHistAutoBin.lineBreakAfter = true\n controls.push(qHistAutoBin);\n if (!qHistAutoBin.getValue())\n {\n var qHistMaxBin = form.numericUpDown({name: \"formMaximumBins\", label: \"Maximum columns (bins)\", default_value: 20});\n if (!allow_control_groups)\n qHistMaxBin.lineBreakAfter = truel\n controls.push(qHistMaxBin);\n }\n }\n if (APPEARANCE.indexOf('Bandwidth') > -1)\n {\n var qBandwidth = form.numericUpDown({name: \"formBandwidth\", label: \"Bandwidth\", minimum: 0.01, maximum: 1, increment: 0.01, default_value: 1, prompt: \"The relative bandwidth used in the estimating the density.\"});\n \n if (!allow_control_groups)\n qBandwidth.lineBreakAfter = true;\n controls.push(qBandwidth);\n }\n if (APPEARANCE.indexOf('AutomaticLower') > -1)\n {\n var qLowerBd = form.checkBox({name: \"formAutomaticLower\", label: \"Automatically compute lower bound\", default_value: true});\n if (!allow_control_groups)\n qLowerBd.lineBreakAfter = true;\n controls.push(qLowerBd);\n }\n if (APPEARANCE.indexOf(\"RangeBars\") > -1)\n {\n var qRangeBar = form.checkBox({name: \"formRangeBars\", label: \"Show range bars\", default_value: false, prompt: \"Data should consist of three columns. The columns with the largest and smallest averages will be used to form the bounds of the shaded region around the other column.\"});\n if (!allow_control_groups)\n qRangeBar.lineBreakAfter = true;\n controls.push(qRangeBar);\n var qWinStart = form.numericUpDown({name: \"formWindowStart\", label: \"Window start (days from data end)\", default_value: 30, maximum: 100000, prompt: \"Adjust the default range of the window shown. If the input data has fewer days than the value specified, the full data range will be shown instead.\"});\n if (!allow_control_groups)\n qWinStart.lineBreakAfter = true;\n controls.push(qWinStart);\n }\n if (APPEARANCE.indexOf(\"SortOrStandardize\") > -1)\n {\n var qSortRows = form.comboBox({label: \"Row sorting or dendrogram\", alternatives: [\"None\", \"Sort by averages (ascending)\", \"Sort by averages (descending)\", \"Dendrogram\"], name: \"formHeatSortRows\", default_value: \"None\"});\n if (!allow_control_groups)\n qSortRows.lineBreakAfter = true;\n controls.push(qSortRows);\n var qSortCols = form.comboBox({label: \"Column sorting or dendrogram\", alternatives: [\"None\", \"Sort by averages (ascending)\", \"Sort by averages (descending)\", \"Dendrogram\"], name: \"formHeatSortColumns\", default_value: \"None\"});\n if (!allow_control_groups)\n qSortCols.lineBreakAfter = true;\n controls.push(qSortCols);\n var qStandardize = form.comboBox({label: \"Shading standardization\", name: \"formHeatStandardization\", default_value: \"None\", alternatives: [\"None\", \"Standardize rows\", \"Standardize columns\"]});\n if (!allow_control_groups)\n qStandardize.lineBreakAfter = true;\n controls.push(qStandardize);\n }\n if (APPEARANCE.indexOf(\"AdditionalColumns\") > -1)\n {\n var qLeftCol = form.dropBox({label: \"Left columns\", types:[\"RItem:matrix,data.frame,table,array,integer,numeric,character\", \"Table\"], name: \"formLeftColumns\", multi: true, required: false, prompt: \"A list of vectors or tables to append to the left of the heat map. Matched by rownames if available.\"});\n if (!allow_control_groups)\n qLeftCol.lineBreakAfter = true;\n controls.push(qLeftCol);\n var qLeftHead = form.textBox({label: \"Left column headings\", type: \"text\", default_value: \"\", name: \"formLeftColumnHeadings\", required: false, prompt: \"Enter comma seperated list as headings to left columns. Leave blank to use column names of left columns.\"});\n if (!allow_control_groups)\n qLeftHead.lineBreakAfter = true;\n controls.push(qLeftHead);\n var qRightCol = form.dropBox({label: \"Right columns\", types:[\"RItem:matrix,data.frame,table,array,integer,numeric,character\", \"Table\"], name: \"formRightColumns\", multi: true, required: false, prompt: \"A list of vectors or tables to append to the right of the heat map. Matched by rownames if available.\"});\n if (!allow_control_groups)\n qRightCol.lineBreakAfter = true;\n controls.push(qRightCol);\n var qRightHead = form.textBox({label: \"Right column headings\", type: \"text\", default_value: \"\", name: \"formRightColumnHeadings\", required: false, prompt: \"Enter comma seperated list as headings to right columns. Leave blank to use column names of right columns\"});\n if (!allow_control_groups)\n qRightHead.lineBreakAfter = true;\n controls.push(qRightHead);\n }\n if (APPEARANCE.indexOf(\"LineThickness\") > -1)\n {\n default_thickness = 3.0; // plotly defaults\n if (chartType == \"Time Series\")\n default_thickness = 1.0;\n var qLineThick = form.numericUpDown({name: \"formLineThickness\", label: \"Line thickness\", default_value: default_thickness, minimum: 0.0, maximum: 20.0, increment: 0.5});\n controls.push(qLineThick);\n }\n if (APPEARANCE.indexOf(\"BarGap\") > -1)\n {\n var qBarGap = form.numericUpDown({name: \"formBarGap\", label: \"Gap between bars\", default_value: 0.15, minimum: 0.0, maximum: 1.0, increment: 0.05, prompt: \"Control spacing between bars\"});\n controls.push(qBarGap);\n }\n}\n\nif (DATA_SERIES != null && !(chartType == \"Bar Pictograph\" && picto_icon == custom_icon_label))\n{\n if (allow_control_groups)\n form.group(\"DATA SERIES\");\n if (DATA_SERIES.indexOf('Colors') > -1)\n {\n var qColor = form.comboBox({name: \"formPalette\", label: \"Color palette\", alternatives: palettes, default_value: palettes[0], required: true});\n controls.push(qColor);\n var colOpt = qColor.getValue();\n if (colOpt == \"Custom color\")\n {\n if (!allow_control_groups)\n {\n var qCustomColLabel = form.newLabel(\"Custom color\");\n controls.push(qCustomColLabel);\n }\n var qCustomCol = form.colorPicker({name: \"formCustomColor\", label: allow_control_groups ? \"Custom color\" : \"\", default_value: \"#5C9AD3\"});\n if (!allow_control_groups)\n qCustomCol.lineBreakAfter = true;\n controls.push(qCustomCol);\n }\n if (colOpt == \"Custom gradient\")\n {\n if (!allow_control_groups)\n {\n var qGradientLabel = form.newLabel(\"Gradient start/end\");\n controls.push(qGradientLabel);\n }\n var qGradientStart = form.colorPicker({name: \"formCustomGradientStart\", label: !allow_control_groups ? \"\" : \"Gradient start\", default_value: \"#5C9AD3\"});\n controls.push(qGradientStart);\n var qGradientEnd = form.colorPicker({name: \"formCustomGradientEnd\", label: !allow_control_groups ? \"\" : \"Gradient end\", default_value: \"#ED7D31\"});\n controls.push(qGradientEnd);\n }\n if (colOpt == \"Custom palette\")\n {\n var qPalette = form.textBox({name: \"formCustomPalette\", label: \"Custom palette\", default_value: \"#5C9AD3, #ED7D31\", prompt: \"Enter color as a string. Multiple values should be separated by commas.\"});\n controls.push(qPalette);\n }\n }\n if (DATA_SERIES.indexOf('SubsliceColors') > -1)\n {\n var qSubColor = form.comboBox({name: \"formSubslicePalette\", label: \"Outer ring color palette\", alternatives: line_subslice_palletes, default_value: line_subslice_palletes[0], required: true});\n controls.push(qSubColor);\n var subColOpt = qSubColor.getValue();\n if (subColOpt == \"Custom color\")\n {\n if (!allow_control_groups)\n {\n var qSubCustomColLabel = form.newLabel(\"Custom color\");\n controls.push(qSubCustomColLabel);\n }\n var qSubCustomCol = form.colorPicker({name: \"formSubsliceCustomColor\", label: allow_control_groups ? \"Custom color\" : \"\", default_value: \"#5C9AD3\"});\n controls.push(qSubCustomCol);\n }\n if (subColOpt == \"Custom gradient\")\n {\n if (!allow_control_groups)\n {\n var qSubGradientLabel = form.newLabel(\"Gradient start/end\");\n controls.push(qSubGradientLabel);\n }\n var qSubGradientStart = form.colorPicker({name: \"formSubsliceCustomGradientStart\", label: !allow_control_groups ? \"\" : \"Gradient start\", default_value: \"#5C9AD3\"});\n var qSubGradientEnd = form.colorPicker({name: \"formSubsliceCustomGradientEnd\", label: !allow_control_groups ? \"\" : \"Gradient end\", default_value: \"#ED7D31\"});\n controls.push(qSubGradientStart);\n controls.push(qSubGradientEnd);\n }\n if (subColOpt == \"Custom palette\")\n {\n qSubPalette = form.textBox({name: \"formSubsliceCustomPalette\", label: \"Custom palette\", default_value: \"#5C9AD3, #ED7D31\", prompt: \"Enter color as a string. Multiple values should be separated by commas.\"});\n controls.push(qSubPalette);\n }\n }\n if (DATA_SERIES.indexOf(\"FillOpacity\") > -1)\n {\n var qOpacity = form.numericUpDown({name: \"formFillOpacity\", label: \"Opacity\", required: false, minimum: 0.0, maximum: 1.0, increment: 0.1, prompt: \"Control transparency of data series\"});\n controls.push(qOpacity);\n }\n}\n\nif (typeof FITLINE != 'undefined' && FITLINE != null && !isStacked)\n{\n if (allow_control_groups)\n form.group(\"TREND LINES\");\n if (FITLINE.indexOf('FitLine') > -1)\n {\n var qFit = form.comboBox({name: \"formFit\", label: \"Line of best fit\", alternatives: [\"None\", \"Linear\", \"LOESS\", \"Friedman's super smoother\", \"Cubic spline\"], default_value: \"None\", prompt: \"Add trend line using linear regression or a scatterplot smoother\"});\n controls.push(qFit);\n var fitOpt = qFit.getValue();\n var fitCIOpt = false;\n if ([\"LOESS\", \"Cubic spline\", \"Linear\"].indexOf(fitOpt) > -1 && chartType != \"Bar\")\n {\n var qFitCI = form.checkBox({name: \"formFitCI\", label: \"Show 95% confidence interval\"});\n controls.push(qFitCI);\n fitCIOpt = qFitCI.getValue();\n }\n if (fitOpt != \"None\")\n {\n var qFitLast = form.checkBox({name: \"formFitIgnoreLast\", label: \"Ignore last data point\", default_value: false, prompt: \"Do not use last data point to compute line of best fit\"});\n controls.push(qFitLast);\n var qFitLineType = form.comboBox({name: \"formFitLineType\", label: \"Line type\", alternatives: [\"dot\", \"dash\", \"longdash\", \"dashdot\", \"solid\"], default_value: chartType == \"Line\" ?\"dot\" : \"solid\"});\n controls.push(qFitLineType);\n var qFitLineWidth = form.numericUpDown({name: \"formFitLineWidth\", label: \"Line width\", default_value: 2, minimum: 1, maximum: 20});\n controls.push(qFitLineWidth);\n var qFitColor= form.comboBox({name: \"formFitPalette\", label: \"Fit line color palette\", alternatives: line_subslice_palletes, default_value: line_subslice_palletes[0], required: true});\n controls.push(qFitColor);\n var fitcolOpt = qFitColor.getValue();\n if (fitcolOpt == \"Custom color\")\n {\n if (!allow_control_groups)\n {\n var qFitCustomColorLabel = form.newLabel(\"Custom color of fit line\");\n controls.push(qFitCustomColorLabel);\n }\n var qFitCustomColor = form.colorPicker({name: \"formFitCustomColor\", label: !allow_control_groups ? \"\" : \"Custom color of fit line\", default_value: \"#5C9AD3\"})\n controls.push(qFitCustomColor);\n }\n if (fitcolOpt == \"Custom gradient\")\n {\n if (!allow_control_groups)\n {\n var qFitGradLabel = form.newLabel(\"Gradient start/end of fit lines\");\n controls.push(qFitGradLabel);\n }\n var qFitGradStart = form.colorPicker({name: \"formFitCustomGradientStart\", label: !allow_control_groups ? \"\" : \"Gradient start of fit lines\", default_value: \"#5C9AD3\"});\n var qFitGradEnd = form.colorPicker({name: \"formFitCustomGradientEnd\", label: !allow_control_groups ? \"\" : \"Gradient end of fit lines\", default_value: \"#ED7D31\"});\n controls.push(qFitGradStart);\n controls.push(qFitGradEnd);\n }\n if (fitcolOpt == \"Custom palette\")\n {\n var qFitPalette = form.textBox({name: \"formFitCustomPalette\", label: !allow_control_groups ? \"\" : \"Custom palette of fit lines\", default_value: \"#5C9AD3, #ED7D31\", prompt: \"Enter color as a string. Multiple values should be separated by commas.\"});\n controls.push(qFitPalette);\n }\n var qFitOpacity = form.numericUpDown({name: \"formFitOpacity\", label: \"Opacity of fit lines\", default_value: 1.0, minimum: 0.0, maximum: 1.0, increment: 0.1});\n controls.push(qFitOpacity);\n\n if (fitCIOpt)\n {\n var qFitCIColor= form.comboBox({name: \"formFitCIPalette\", label: \"CI color palette\", alternatives: line_subslice_palletes, default_value: line_subslice_palletes[0], required: true});\n controls.push(qFitCIColor);\n var fitCIcolOpt = qFitCIColor.getValue();\n if (fitCIcolOpt == \"Custom color\")\n {\n if (!allow_control_groups)\n {\n var qFitCICustomColorLabel = form.newLabel(\"Custom color of CI\");\n controls.push(qFitCICustomColorLabel);\n }\n var qFitCICustomColor = form.colorPicker({name: \"formFitCICustomColor\", label: !allow_control_groups ? \"\" : \"Custom color of CI\", default_value: \"#5C9AD3\"})\n controls.push(qFitCICustomColor);\n }\n if (fitCIcolOpt == \"Custom gradient\")\n {\n if (!allow_control_groups)\n {\n var qFitCIGradLabel = form.newLabel(\"Gradient start/end of CI\");\n controls.push(qFitCIGradLabel);\n }\n var qFitCIGradStart = form.colorPicker({name: \"formFitCICustomGradientStart\", label: !allow_control_groups ? \"\" : \"Gradient start of CIs\", default_value: \"#5C9AD3\"});\n var qFitCIGradEnd = form.colorPicker({name: \"formFitCICustomGradientEnd\", label: !allow_control_groups ? \"\" : \"Gradient end of CIs\", default_value: \"#ED7D31\"});\n controls.push(qFitCIGradStart);\n controls.push(qFitCIGradEnd);\n }\n if (fitCIcolOpt == \"Custom palette\")\n {\n var qFitCIPalette = form.textBox({name: \"formFitCICustomPalette\", label: !allow_control_groups ? \"\" : \"Custom palette of CIs\", default_value: \"#5C9AD3, #ED7D31\", prompt: \"Enter color as a string. Multiple values should be separated by commas.\"});\n controls.push(qFitCIPalette);\n }\n var qFitCIOpacity = form.numericUpDown({name: \"formFitCIOpacity\", label: \"Opacity of CI\", default_value: 0.4, minimum: 0.0, maximum: 1.0, increment: 0.1, prompt: \"Control transparency of confidence interval ribbon\"});\n controls.push(qFitCIOpacity);\n }\n }\n }\n}\n \nif (FONT != null)\n{\n if (allow_control_groups)\n form.group(\"FONT\");\n if (FONT.indexOf('GlobalFontFamily') > -1)\n {\n var qGlobalFontFamily = form.comboBox({name: \"formFont\", label: \"Global font family\", alternatives: font_families, default_value: \"Arial\"});\n if (!allow_control_groups)\n qGlobalFontFamily.lineBreakAfter = false;\n controls.push(qGlobalFontFamily);\n var globalFontFamily = qGlobalFontFamily.getValue();\n }\n if (FONT.indexOf('GlobalFontColor') > -1 && !(chartType == \"Bar Pictograph\" && labColAsIcon))\n {\n if (!allow_control_groups)\n {\n var qGlobalFontColorLabel = form.newLabel(\"Global font color\");\n controls.push(qGlobalFontColorLabel);\n }\n var qGlobalFontColor = form.colorPicker({name: \"formFontColor\", label: !allow_control_groups ? \"\" : \"Global font color\", default_value: \"#2C2C2C\"});\n if (!allow_control_groups)\n qGlobalFontColor.lineBreakAfter = true;\n controls.push(qGlobalFontColor);\n var globalFontColor = qGlobalFontColor.getValue();\n }\n if (FONT.indexOf('FontUnits') > -1)\n {\n var qFontUnits = form.comboBox({name: \"formFontUnits\", label: \"Font units\", alternatives: [\"pt\", \"px\"], default_value: \"pt\", prompt: \"Are font sizes specified in terms of points or pixels?\"});\n controls.push(qFontUnits);\n }\n}\n \nif (DATA_LABELS != null)\n{\n if (allow_control_groups)\n form.group(\"DATA LABELS\");\n var datalabshow = true;\n if (DATA_LABELS.indexOf('DataLabelPosition') > -1)\n {\n var qLabelPos = form.comboBox({name:\"formDataLabelPosition\", label: \"Show data label\", alternatives: [\"No\", \"Next to bar\", \"Below row label\", \"Above row label\", \"Below icons\", \"Above icons\"], default_value: \"Next to bar\"});\n controls.push(qLabelPos);\n var dLabOpt = qLabelPos.getValue();\n if (dLabOpt == \"No\")\n datalabshow = false;\n if (dLabOpt == \"Below icons\" || dLabOpt == \"Above icons\")\n {\n var qLabelHAlign = form.comboBox({name:\"formDataLabelHorizAlign\", label:\" Data label horizontal alignment\", alternatives: [\"Default\", \"Left\", \"Center\", \"Right\"], default_value: \"Default\"});\n if (!allow_control_groups)\n qLabelHAlign.lineBreakAfter = true;\n controls.push(qLabelHAlign);\n }\n }\n if (DATA_LABELS.indexOf('DataLabelShow') > -1)\n {\n var qDatalabShow = form.checkBox({name: \"formDataLabelShow\", label: \"Show data labels\", default_value: false, prompt: \"Show values of data points on the chart\"});\n if (!allow_control_groups)\n qDatalabShow.lineBreakAfter = true;\n controls.push(qDatalabShow);\n var datalabshow = qDatalabShow.getValue();\n }\n if (!datalabshow && APPEARANCE.indexOf(\"AdditionalColumns\") > -1 && (!isEmpty(qLeftCol)|| !isEmpty(qRightCol)))\n {\n // Allow left and right columns in Heatmaps to be formatted even if datalabels not shown\n DATA_LABELS = ['DataLabelShow', 'DataLabelFormat', 'DataLabelFont'];\n datalabshow = true; \n }\n if (datalabshow && DATA_LABELS.indexOf('DataLabelFont') > -1)\n {\n qDatalabFont = form.comboBox({name: \"formDataLabelFontFamily\", label: \"Data label font family\", alternatives: font_families, default_value: globalFontFamily});\n controls.push(qDatalabFont);\n\n if (DATA_LABELS.indexOf('DataLabelFontMulticolor') > -1)\n {\n var hasAutocolor = isStacked || chartType == \"Pyramid\" || chartType == \"Scatter\";\n var altcols = ['Automatically', 'In a single color', 'In different colors for each series'];\n if (chartType == \"Scatter\")\n altcols.pop();\n if (!hasAutocolor)\n altcols.shift();\n qDataLabelFontColorOpts = form.comboBox({name: \"formDataLabelFontColorOptions\", label: \"Color data labels\", alternatives: altcols, default_value: altcols[0]});\n controls.push(qDataLabelFontColorOpts);\n if (qDataLabelFontColorOpts.getValue() == \"In a single color\")\n {\n if (!allow_control_groups)\n {\n var qDataLabelFontColorLabel = form.newLabel(\"Data label font color\");\n controls.push(qDataLabelFontColorLabel);\n }\n var qDatalabFont = form.colorPicker({name: \"formDataLabelFontColor\", label: !allow_control_groups ? \"\" : \"Data label font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qDatalabFont.lineBreakAfter = true\n controls.push(qDatalabFont);\n }\n else if (qDataLabelFontColorOpts.getValue() == \"In different colors for each series\")\n {\n var qDatalabFontCol = form.textBox({name: \"formDataLabelFontColor\", label: \"Data label font color(s):\", default_value:rgbToHex(globalFontColor), prompt: \"Enter a hex code or a comma-separated list of hex codes for each series in the data\"});\n controls.push(qDatalabFontCol);\n }\n }\n else if (!(chartType == \"Bar Pictograph\" && labColAsIcon) && !(chartType == \"Heat\"))\n {\n if (!allow_control_groups)\n {\n var qDataLabelFontColorLabel = form.newLabel(\"Data label font color\");\n controls.push(qDataLabelFontColorLabel);\n }\n var qDatalabFont = form.colorPicker({name: \"formDataLabelFontColor\", label: !allow_control_groups ? \"\" : \"Data label font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qDatalabFont.lineBreakAfter = true\n controls.push(qDatalabFont);\n }\n\n qDataLabelSize = form.numericUpDown({name: \"formDataLabelFontSize\", label: \"Data label font size\", default_value: 7.5, increment: 0.5});\n if (!allow_control_groups)\n qDataLabelSize.lineBreakAfter = true;\n controls.push(qDataLabelSize);\n }\n if (chartType == \"Venn\" && DATA_LABELS.indexOf('DataLabelFontSize') > -1)\n {\n var qDataLabelSize = form.numericUpDown({name: \"formDataLabelFontSize\", label: \"Data label font size\", default_value: 7.5, increment: 0.5});\n if (!allow_control_groups)\n qDataLabelSize.lineBreakAfter = true;\n controls.push(qDataLabelSize);\n }\n if (datalabshow && DATA_LABELS.indexOf('DataLabelFormat') > -1)\n {\n var qDataLabelFormat = form.comboBox({name: \"formDataLabelNumberType\", label: \"Number type\", alternatives: data_label_formats, default_value: data_label_formats[0], required: true});\n var dataLabelFormat = qDataLabelFormat.getValue();\n controls.push(qDataLabelFormat);\n }\n if (datalabshow && (DATA_LABELS.indexOf('DataLabelDecimals') > -1 || (DATA_LABELS.indexOf('DataLabelFormat') > -1)))\n {\n if (!allow_control_groups) \n {\n var qDataLabDecimals = form.numericUpDown({name: \"formDataLabelDecimals\", label: \"Decimal places\", default_value: 0, increment: 1, minimum: 0, maximum: 12, required: false});\n qDataLabDecimals.lineBreakAfter = true;\n }\n else\n var qDataLabDecimals = form.numericUpDown({name: \"formDataLabelDecimals\", label: \"Decimal places\", increment: 1, minimum: 0, maximum: 12, required: false});\n controls.push(qDataLabDecimals);\n }\n if (datalabshow && DATA_LABELS.indexOf('DataLabelPrefix') > -1)\n {\n var qDLabPrefix = form.textBox({name:'formPrefix', label: 'Custom prefix', required: false, prompt: \"Optional text to prepend to the data labels\"});\n if (!allow_control_groups)\n qDLabPrefix.lineBreakAfter = true;\n controls.push(qDLabPrefix);\n }\n if (datalabshow && DATA_LABELS.indexOf('DataLabelSuffix') > -1)\n {\n var qDLabSuffix = form.textBox({name:'formSuffix', label: 'Custom suffix', required: false, prompt: \"Optional text to append to the data labels\"});\n if (!allow_control_groups)\n qDLabSuffix.lineBreakAfter = true;\n controls.push(qDLabSuffix);\n }\n if (DATA_LABELS.indexOf('data.label.max.plot') > -1)\n {\n var qDLabMax = form.numericUpDown({name: \"formMaxLab\", label: \"Maximum data labels to plot\", default_value: 50, maximum: 200, minimum: 0});\n controls.push(qDLabMax);\n }\n}\nif (GRIDLINES != null)\n{\n if (allow_control_groups)\n form.group(\"GRID LINES\");\n if (GRIDLINES.indexOf('ShowGrid') > -1)\n {\n var qGrid = form.checkBox({name: \"formShowGrid\", label: \"Show grid lines\", default_value: true});\n if (!allow_control_groups)\n qGrid.lineBreakAfter = true;\n controls.push(qGrid);\n }\n}\nif (LEGEND != null)\n{\n if (allow_control_groups)\n form.group(\"LEGEND\");\n var hasleg = 1;\n if (LEGEND.indexOf('LegendShow') > -1)\n {\n var qLegShow = form.checkBox({name: \"formLegendShow\", label: \"Show legend (if applicable)\", default_value: true});\n if (!allow_control_groups)\n qLegShow.lineBreakAfter= true;\n controls.push(qLegShow);\n hasleg = qLegShow.getValue();\n }\n if (hasleg && LEGEND.indexOf('LegendTitle') > -1)\n {\n var qLegTitle = form.textBox({label: \"Legend title\", type: \"text\", name: \"formLegendTitle\", required: false});\n if (!allow_control_groups)\n qLegTitle.lineBreakAfter = true;\n controls.push(qLegTitle);\n }\n if (hasleg && LEGEND.indexOf('LegendFont') > -1)\n {\n var qLegFont = form.comboBox({name: \"formLegendFontFamily\", label: \"Legend font family\", alternatives: font_families, default_value: globalFontFamily});\n controls.push(qLegFont);\n if (chartType != \"Palm\")\n {\n if (!allow_control_groups)\n {\n var qLegendFontColorLabel = form.newLabel(\"Legend font color\");\n controls.push(qLegendFontColorLabel);\n }\n var qLegFontCol = form.colorPicker({name: \"formLegendFontColor\", label: !allow_control_groups ? \"\" : \"Legend font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qLegFontCol.lineBreakAfter = true;\n controls.push(qLegFontCol);\n }\n var qLegSize = form.numericUpDown({name: \"formLegendFontSize\", label: \"Legend font size\", default_value: 7.5, increment: 0.5});\n if (!allow_control_groups)\n qLegSize.lineBreakAfter = true;\n controls.push(qLegSize);\n }\n if (hasleg && LEGEND.indexOf('LegendPosition') > -1)\n {\n var qLegX = form.numericUpDown({name: \"formLegendXPos\", label: \"Horizontal placement\", default_value: 1.02, increment: 0.02, minimum: -2, maximum: 3, prompt: \"Choose numeric value between -2 (far left) to 3 (far right)\"});\n var qLegY = form.numericUpDown({name: \"formLegendYPos\", label: \"Vertical placement\", default_value: 1.00, increment: 0.02, minimum: -2, maximum: 3, prompt: \"Choose numeric value between -2 (below) and 3 (above)\"});\n if (!allow_control_groups)\n qLegX.lineBreakAfter = true;\n if (!allow_control_groups)\n qLegY.lineBreakAfter = true;\n controls.push(qLegX);\n controls.push(qLegY);\n }\n if (LEGEND.indexOf('LegendWidth') > -1)\n {\n var qLegWidth = form.numericUpDown({name: \"formLegendWidth\", label: \"Legend width\", default_value: 250, increment: 1, minimum: 1, maximum: 1000, prompt: \"Choose numeric value between 1 and 1000\", prompt: \"Control wrapping of legend text\"});\n if (!allow_control_groups)\n qLegWidth.lineBreakAfter = true;\n controls.push(qLegWidth);\n }\n}\nif (TITLE != null)\n{\n if (allow_control_groups)\n form.group('Title');\n if (TITLE.indexOf('Title') > -1)\n {\n var qTitle = form.textBox({name:\"formTitle\", label:\"Title\", required:false});\n if (!allow_control_groups)\n qTitle.lineBreakAfter = true;\n controls.push(qTitle);\n var titleOpt = qTitle.getValue();\n if (true) // No need to check !isEmptyString(titleOpt) because title can be from pasted data or S3 object\n {\n var qTitleFont = form.comboBox({name: \"formTitleFontFamily\", label: \"Title font family\", alternatives: font_families, default_value: globalFontFamily});\n if (!allow_control_groups)\n {\n var qTitleFontColorLabel = form.newLabel(\"Title font color\");\n controls.push(qTitleFontColorLabel);\n }\n var qTitleColor = form.colorPicker({name: \"formTitleFontColor\", label: !allow_control_groups ? \"\" : \"Title font color\", default_value: globalFontColor});\n var qTitleSize = form.numericUpDown({name:\"formTitleFontSize\", label:\"Title font size\", default_value: 12, increment: 0.5});\n if (!allow_control_groups)\n qTitleColor.lineBreakAfter = true;\n if (!allow_control_groups)\n qTitleSize.lineBreakAfter = true;\n controls.push(qTitleFont);\n controls.push(qTitleColor);\n controls.push(qTitleSize);\n }\n }\n if (show_as_small_mult)\n {\n var qSmallMultTitle = form.checkBox({name:\"formSmallMultTitle\", label:\"Show panel titles\", default_value: true, prompt: \"Show series or group name above each panel\"});\n if (!allow_control_groups)\n qSmallMultTitle.lineBreakAfter = true;\n controls.push(qSmallMultTitle);\n if (qSmallMultTitle.getValue())\n {\n var qSmallMultTitleFont = form.comboBox({name: \"formSmallMultTitleFontFamily\", label: \"Panel title font family\", alternatives: font_families, default_value: globalFontFamily});\n if (!allow_control_groups)\n {\n var qSmallMultTitleColorLabel = form.newLabel(\"Panel title font color\");\n controls.push(qSmallMultTitleColorLabel);\n }\n var qSmallMultTitleColor = form.colorPicker({name: \"formSmallMultTitleFontColor\", label: !allow_control_groups ? \"\" : \"Panel title font color\", default_value: globalFontColor});\n var qSmallMultTitleSize = form.numericUpDown({name:\"formSmallMultTitleFontSize\", label:\"Panel title font size\", default_value: 10.5, increment: 0.5});\n if (!allow_control_groups)\n qSmallMultTitleColor.lineBreakAfter = true;\n if (!allow_control_groups)\n qSmallMultTitleSize.lineBreakAfter = true;\n controls.push(qSmallMultTitleFont);\n controls.push(qSmallMultTitleColor);\n controls.push(qSmallMultTitleSize);\n var qSmallMultTitleWrap = form.checkBox({label: \"Wrap panel titles\", name: \"formSmallMultTitleWrap\", default_value: true});\n controls.push(qSmallMultTitleWrap);\n if (qSmallMultTitleWrap.getValue())\n {\n var qSmallMultTitleWrapN = form.numericUpDown({name: \"formSmallMultTitleWrapNchar\", label: \"Panel title width (in characters)\", default_value: 20, minimum: 5, increment: 1, maximum: 5000});\n controls.push(qSmallMultTitleWrapN);\n }\n }\n }\n if (TITLE.indexOf('Subtitle') > -1)\n {\n var qSubtitle = form.textBox({name:\"formSubtitle\", label:\"Subtitle\", required:false});\n if (!allow_control_groups)\n qSubtitle.lineBreakAfter = true;\n var subtitleOpt = qSubtitle.getValue();\n controls.push(qSubtitle);\n if (!isEmptyString(subtitleOpt))\n {\n var qSubtitleFont = form.comboBox({name: \"formSubtitleFontFamily\", label: \"Subtitle font family\", alternatives: font_families, default_value: globalFontFamily});\n if (!allow_control_groups)\n {\n var qSubtitleColorLabel = form.newLabel(\"Subtitle font color\");\n controls.push(qSubtitleColorLabel);\n }\n var qSubtitleColor = form.colorPicker({name: \"formSubtitleFontColor\", label: !allow_control_groups ? \"\" : \"Subtitle font color\", default_value: globalFontColor});\n var qSubtitleSize = form.numericUpDown({name:\"formSubtitleFontSize\", label:\"Subtitle font size\", default_value: 9, increment: 0.5});\n if (!allow_control_groups)\n qSubtitleColor.lineBreakAfter = true;\n if (!allow_control_groups)\n qSubtitleSize.lineBreakAfter = true;\n controls.push(qSubtitleFont);\n controls.push(qSubtitleColor);\n controls.push(qSubtitleSize);\n }\n }\n if (TITLE.indexOf('Footer') > -1)\n {\n var footer_prompt = \"Optional footer. Leave blank to show default text\";\n var qFooter = form.textBox({name: \"formFooter\", label: \"Footer\", required: false, prompt: footer_prompt});\n if (!allow_control_groups)\n qFooter.lineBreakAfter = true;\n var footerOpt = qFooter.getValue();\n controls.push(qFooter);\n if (true) // always show footer options because S3 object can sometimes have footer information \n {\n var qFooterFont = form.comboBox({name: \"formFooterFontFamily\", label: \"Footer font family\", alternatives: font_families, default_value: globalFontFamily});\n if (!allow_control_groups)\n {\n var qFooterColorLabel = form.newLabel(\"Footer font color\");\n controls.push(qFooterColorLabel);\n }\n var qFooterColor = form.colorPicker({name: \"formFooterFontColor\", label: !allow_control_groups ? \"\" : \"Footer font color\", default_value: globalFontColor});\n var qFooterSize = form.numericUpDown({name:\"formFooterFontSize\", label:\"Footer font size\", default_value: 6, increment: 0.5});\n if (!allow_control_groups)\n qFooterColor.lineBreakAfter = true;\n if (!allow_control_groups)\n qFooterSize.lineBreakAfter = true;\n controls.push(qFooterFont);\n controls.push(qFooterColor);\n controls.push(qFooterSize);\n if ([\"Heat\", \"Pie\", \"Donut\"].indexOf(chartType) == -1)\n {\n var footerWrapOpt = form.checkBox({name: \"formFooterWrap\", label: \"Wrap footer\", default_value: true});\n controls.push(footerWrapOpt);\n if (footerWrapOpt.getValue())\n {\n var qFooterWrapN = form.numericUpDown({name: \"formFooterWrapNchar\", label: \"Footer width (in characters)\", default_value: 100, minimum: 5, increment: 5, maximum: 5000});\n controls.push(qFooterWrapN);\n }\n }\n }\n }\n}\nif (CATEGORIES_AXIS != null)\n{\n var axisPrefix = \"Axis\";\n if (allow_control_groups)\n form.group(categoriesAxisLabel);\n else\n axisPrefix = categoriesAxisLabel.charAt(0).toUpperCase() + categoriesAxisLabel.substr(1).toLowerCase();\n var labelShowX = \"Show \" + axisPrefix.toLowerCase();\n \n if (CATEGORIES_AXIS.indexOf('CategoriesMin') > -1)\n {\n var qXMin = form.textBox({name: \"formCategoriesMin\", label: \"Minimum value\", required: false, prompt: \"Leave blank to determine automatically from input data. Otherwise, enter a numeric value (no prefix or suffix) for a numeric axis; a date-string for a date axis; or a 0-based index for a categorical axis.\"});\n controls.push(qXMin);\n }\n if (CATEGORIES_AXIS.indexOf('CategoriesMax') > -1)\n {\n var qXMax = form.textBox({name: \"formCategoriesMax\", label: \"Maximum value\", required: false, prompt: \"Leave blank to determine automatically from input data. Otherwise, enter a numeric value (no prefix or suffix) for a numeric axis; a date-string for a date axis; or a 0-based index for a categorical axis.\"});\n controls.push(qXMax);\n } \n if (CATEGORIES_AXIS.indexOf('CategoriesTitle') > -1)\n {\n var qShowXTitle = form.checkBox({name: \"formShowCategoriesTitle\", label: labelShowX + \" title\", default_value: true});\n if (!allow_control_groups)\n qShowXTitle.lineBreakAfter = true;\n var showCategoriesTitle = qShowXTitle.getValue();\n controls.push(qShowXTitle);\n if (showCategoriesTitle)\n {\n var qXTitle = form.textBox({name: \"formCategoriesTitle\", label: axisPrefix + \" title\", required: false, prompt: \"Leave blank to read axis title from input data\"});\n if (!allow_control_groups)\n qXTitle.lineBreakAfter = true;\n var qXTitleFont = form.comboBox({name: \"formCategoriesTitleFontFamily\", label: axisPrefix + \" title font family\", alternatives: font_families, default_value: globalFontFamily});\n controls.push(qXTitle);\n controls.push(qXTitleFont);\n \n if (chartType != \"Palm\")\n {\n if (!allow_control_groups)\n {\n var qXTitleColorLabel = form.newLabel(axisPrefix + \" title font color\");\n controls.push(qXTitleColorLabel);\n }\n var qXTitleColor = form.colorPicker({name: \"formCategoriesTitleFontColor\", label: !allow_control_groups ? \"\" : axisPrefix + \" title font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qXTitleColor.lineBreakAfter = true;\n controls.push(qXTitleColor);\n }\n var qXTitleSize = form.numericUpDown({name: \"formCategoriesTitleFontSize\", label: axisPrefix + \" title font size\", default_value: 9, increment: 0.5});\n if (!allow_control_groups)\n qXTitleSize.lineBreakAfter = true;\n controls.push(qXTitleSize);\n }\n }\n if (chartType == \"Bar Pictograph\")\n labelShowX = \"Show bar labels\";\n var showX = true;\n if (CATEGORIES_AXIS.indexOf('CategoriesAxisShow') > -1)\n {\n qShowX = form.checkBox({name: \"formCategoriesAxisShow\", label: labelShowX, default_value: true});\n if (!allow_control_groups)\n qShowX.lineBreakAfter = true;\n showX = qShowX.getValue();\n controls.push(qShowX);\n } \n\n if (chartType == \"Stream\")\n {\n var qTickUnits = form.comboBox({name: \"formCategoriesTickUnits\", label: axisPrefix + \" tick units\", alternatives: [\"Automatic\", \"Number\", \"Day\", \"Month\", \"Year\"], default_value: \"Automatic\"});\n controls.push(qTickUnits);\n var qAutoTickDist = form.checkBox({name: \"formCategoriesAutoTickInterval\", label: \"Automatic tick interval\", default_value: true});\n if (allow_control_groups)\n qAutoTickDist.lineAfterBreak = true;\n var auto_tick_distance = qAutoTickDist.getValue();\n controls.push(qAutoTickDist);\n if (!auto_tick_distance)\n {\n var qTickIntervals = form.numericUpDown({name: \"formCategoriesTickInterval\", label: axisPrefix + \" tick interval\", default_value: 3, increment: 1, minimum: 1, maximum: 1000000, prompt: \"Number of tick units between each tick label. The value may be rounded for more balanced tick labels.\"});\n if (allow_control_groups)\n qTickIntervals.lineAfterBreak = true;\n controls.push(qTickIntervals);\n }\n }\n\n if (showX)\n {\n if (CATEGORIES_AXIS.indexOf('CategoriesNumberFormat') > -1)\n {\n var qXNumberType = form.comboBox({name: \"formCategoriesNumberType\", label: axisPrefix + \" number type\", alternatives: categories_number_formats, default_value: categories_number_formats[0], required: true});\n controls.push(qXNumberType);\n var xNumberType = qXNumberType.getValue();\n if (xNumberType == \"Date/Time\")\n {\n var qXDate = form.comboBox({name: \"formCategoriesDateType\", label: \"Date type\", alternatives: date_formats, default_value: date_formats[0], required: true});\n controls.push(qXDate);\n xNumberType = qXDate.getValue();\n }\n var qXNumberCustom = null;\n if (xNumberType == 'Custom')\n qXNumberCustom = form.textBox({name: \"formCategoriesNumberCustom\", label: \"Custom code\", default_value: \"%d %b %y\", required: true, prompt: \"D3 formatting code, e.g. ,.2%\"});\n else if (xNumberType == 'Currency')\n qXNumberCustom = form.textBox({name: \"formCategoriesCurrency\", label: \"Currency symbol\", default_value: \"\", required: true}); \n else if (xNumberType == 'Number' || xNumberType == 'Currency')\n qXNumberCustom = form.checkBox({name: \"formCategoriesSeparateThousands\", label: \"Separate thousands by comma\", default: true});\n if (qXNumberCustom != null)\n {\n if (!allow_control_groups)\n qXNumberCustom.lineBreakAfter = true;\n controls.push(qXNumberCustom);\n }\n if (!allow_control_groups)\n {\n var qXDecimals = form.numericUpDown({name:\"formCategoriesDecimals\", default_value: 0, label: xNumberType == \"Metric unit suffix\" ? \"Significant digits\": \"Decimal places\", minimum: xNumberType == \"Metric unit suffix\" ? 1 : 0, required: false});\n qXDecimals.lineBreakAfter = true;\n }\n else\n var qXDecimals = form.numericUpDown({name:\"formCategoriesDecimals\", label: xNumberType == \"Metric unit suffix\" ? \"Significant digits\": \"Decimal places\", minimum: xNumberType == \"Metric unit suffix\" ? 1 : 0, required: false});\n controls.push(qXDecimals);\n if (CATEGORIES_AXIS.indexOf('CategoriesPrefix') > -1)\n {\n var qXPrefix = form.textBox({name: \"formCategoriesPrefix\", label: \"Custom prefix\", default_value: \"\", required: false, prompt: \"Optional text to prepend to the tick labels\"}); \n var qXSuffix = form.textBox({name: \"formCategoriesSuffix\", label: \"Custom suffix\", default_value: \"\", required: false, prompt: \"Optional text to append to the tick labels\"});\n if (!allow_control_groups)\n qXPrefix.lineBreakAfter = true;\n if (!allow_control_groups)\n qXSuffix.lineBreakAfter = true;\n controls.push(qXPrefix);\n controls.push(qXSuffix);\n }\n }\n if (CATEGORIES_AXIS.indexOf('CategoriesTickInterval') > -1)\n {\n var qXTickInterval = form.numericUpDown({name: \"formCategoriesTickInterval\", label: axisPrefix + \" tick interval\", default_value: 1, increment: 1, minimum: 1, maximum: 1000});\n controls.push(qXTickInterval);\n }\n if (CATEGORIES_AXIS.indexOf('CategoriesTickFont') > -1)\n {\n var qXTickFont = form.comboBox({name: \"formCategoriesTickFontFamily\", label: axisPrefix + \" label font family\", alternatives: font_families, default_value: globalFontFamily});\n controls.push(qXTickFont);\n if (chartType != \"Palm\" && !(chartType == \"Bar Pictograph\" && labColAsIcon))\n {\n if (!allow_control_groups)\n {\n var qXTickColorLabel = form.newLabel(axisPrefix + \" label font color\");\n controls.push(qXTickColorLabel);\n }\n var qXTickColor = form.colorPicker({name: \"formCategoriesTickFontColor\", label: !allow_control_groups ? \"\" : axisPrefix + \" label font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qXTickColor.lineBreakAfter = true;\n controls.push(qXTickColor);\n }\n var qXTickSize = form.numericUpDown({name: \"formCategoriesTickFontSize\", label: axisPrefix + \" label font size\", default_value: 7.5, increment: 0.5});\n if (!allow_control_groups)\n qXTickSize.lineBreakAfter = true;\n controls.push(qXTickSize);\n }\n if (CATEGORIES_AXIS.indexOf('CategoriesTickHorizAlign') > -1)\n {\n var qXTickHAlign = form.comboBox({name:\"formCategoriesTickHorizAlign\", label: \"Horizontal alignment\", alternatives: [\"Default\", \"Left\", \"Center\", \"Right\"], default_value: \"Default\"}); \n controls.push(qXTickHAlign);\n }\n if (CATEGORIES_AXIS.indexOf('CategoriesTickAngle') > -1)\n {\n var qXTickAngle = form.comboBox({name: \"formCategoriesTickAngle\", label: axisPrefix + \" label orientation\", alternatives: [\"Automatic\", \"Horizontal\", \"Vertical\", \"Diagonal\"], default_value: \"Automatic\"});\n controls.push(qXTickAngle);\n }\n if (CATEGORIES_AXIS.indexOf('LabelWrap') > -1)\n {\n var qXWrap = form.checkBox({name: \"formLabelWrap\", label: \"Wrap \" + axisPrefix.toLowerCase() + \" label\", default_value: true});\n if (!allow_control_groups)\n qXWrap.lineBreakAfter = true;\n var xWrapOpt = qXWrap.getValue();\n controls.push(qXWrap);\n if (xWrapOpt)\n {\n var qXWrapN = form.numericUpDown({name: \"formLabelWrapNchar\", label: axisPrefix + \" label width (in characters)\", default_value: 21, minimum: 5, increment: 5, maximum: 1000});\n if (!allow_control_groups)\n qXWrapN.lineBreakAfter = true;\n controls.push(qXWrapN);\n }\n } \n }\n}\nif (VALUES_AXIS != null)\n{\n var axisPrefix = \"Axis\";\n if (!allow_control_groups)\n axisPrefix = valuesAxisLabel.charAt(0).toUpperCase() + valuesAxisLabel.substr(1).toLowerCase();\n var labelShowY = \"Show \" + axisPrefix.toLowerCase();\n\n if (allow_control_groups && chartType == \"Heat\")\n form.group(\"Color scale\");\n else if (allow_control_groups)\n form.group(valuesAxisLabel);\n\n if (VALUES_AXIS.indexOf('ValuesMin') > -1)\n {\n var qYMin = form.textBox({name: \"formValuesMin\", label: \"Minimum value\", required: false, prompt: \"Leave blank to determine automatically from input data.\"});\n controls.push(qYMin);\n }\n if (VALUES_AXIS.indexOf('ValuesMax') > -1)\n {\n var qYMax = form.textBox({name: \"formValuesMax\", label: \"Maximum value\", required: false, prompt: \"Leave blank to determine automatically from input data.\"});\n controls.push(qYMax);\n }\n if (allow_control_groups && chartType == \"Heat\")\n form.group(valuesAxisLabel);\n \n if (VALUES_AXIS.indexOf('ValuesTitle') > -1)\n {\n var qShowValuesTitle = form.checkBox({name: \"formShowValuesTitle\", label: labelShowY + \" title\", default_value: true});\n var showValuesTitle = qShowValuesTitle.getValue();\n if (!allow_control_groups)\n qShowValuesTitle.lineBreakAfter = true;\n controls.push(qShowValuesTitle);\n if (showValuesTitle)\n {\n var qYTitle = form.textBox({name: \"formValuesTitle\", label: axisPrefix + \" title\", required: false, prompt: \"Leave blank to read axis title from input data\"});\n if (!allow_control_groups)\n qYTitle.lineBreakAfter = true;\n var qYTitleFont = form.comboBox({name: \"formValuesTitleFontFamily\", label: axisPrefix + \" title font family\", alternatives: font_families, default_value: globalFontFamily});\n controls.push(qYTitle);\n controls.push(qYTitleFont);\n if (chartType != \"Palm\")\n {\n if (!allow_control_groups)\n {\n var qYTitleColorLabel = form.newLabel(axisPrefix + \"title font color\");\n controls.push(qYTitleColorLabel);\n }\n var qYTitleColor = form.colorPicker({name: \"formValuesTitleFontColor\", label: !allow_control_groups ? \"\" : axisPrefix + \" title font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qYTitleColor.lineBreakAfter = true;\n controls.push(qYTitleColor);\n }\n var qYTitleSize = form.numericUpDown({name: \"formValuesTitleFontSize\", label: axisPrefix + \" title font size\", default_value: 9, increment: 0.5});\n if (!allow_control_groups)\n qYTitleSize.lineBreakAfter = true;\n controls.push(qYTitleSize);\n }\n }\n var showY = true;\n if (VALUES_AXIS.indexOf('ValuesAxisShow') > -1)\n {\n qShowY = form.checkBox({name: \"formValuesAxisShow\", label: labelShowY, default_value: true});\n if (!allow_control_groups)\n qShowY.lineBreakAfter = true;\n controls.push(qShowY);\n showY = qShowY.getValue();\n } \n if (showY) \n {\n if (VALUES_AXIS.indexOf('ValuesNumberFormat') > -1)\n {\n var qYNumberType = form.comboBox({name: \"formValuesNumberType\", label: axisPrefix + \" number type\", alternatives: values_number_formats, default_value: values_number_formats[0], required: true});\n controls.push(qYNumberType);\n var yNumberType = qYNumberType.getValue();\n if (yNumberType == \"Date/Time\") // funny loop because date/time can be custom\n {\n var qYDate = form.comboBox({name: \"formValuesDateType\", label: \"Date type\", alternatives: date_formats, default_value: date_formats[0], required: true});\n yNumberType = qYDate.getValue();\n controls.push(qYDate);\n }\n\n var qYNumberCustom = null;\n if (yNumberType == \"Custom\")\n qYNumberCustom = form.textBox({name: \"formValuesNumberCustom\", label: \"Custom code\", default_value: \"%d %b %y\", required: true, prompt: \"D3 formatting code, e.g. ,.2%\"});\n else if (yNumberType == 'Currency')\n qYNumberCustom = form.textBox({name: \"formValuesCurrency\", label: \"Currency symbol\", default_value: \"\", required: true}); \n else if ((yNumberType == 'Number' || yNumberType == 'Currency') && chartType != \"Palm\")\n qYNumberCustom = form.checkBox({name: \"formValuesSeparateThousands\", label: \"Separate thousands by comma\", default: true});\n if (qYNumberCustom != null)\n {\n if (!allow_control_groups)\n qYNumberCustom.lineBreakAfter = true;\n controls.push(qYNumberCustom);\n }\n if (!allow_control_groups)\n {\n var qYDecimals = form.numericUpDown({name:\"formValuesDecimals\", default_value: 0, label: yNumberType == \"Metric unit suffix\" ? \"Significant digits\": \"Decimal places\", minimum: yNumberType == \"Metric unit suffix\" ? 1 : 0, required: false});\n qYDecimals.lineBreakAfter = true;\n }\n else\n var qYDecimals = form.numericUpDown({name:\"formValuesDecimals\", label: yNumberType == \"Metric unit suffix\" ? \"Significant digits\": \"Decimal places\", minimum: yNumberType == \"Metric unit suffix\" ? 1 : 0, required: false});\n controls.push(qYDecimals);\n if (VALUES_AXIS.indexOf('ValuesPrefix') > -1)\n {\n var qYPrefix = form.textBox({name: \"formValuesPrefix\", label: \"Custom prefix\", default_value: \"\", required: false, prompt: \"Optional text to prepend to the tick labels\"}); \n var qYSuffix = form.textBox({name: \"formValuesSuffix\", label: \"Custom suffix\", default_value: \"\", required: false, prompt: \"Optional text to append to the tick labels\"}); \n if (!allow_control_groups)\n qYPrefix.lineBreakAfter = true\n if (!allow_control_groups)\n qYSuffix.lineBreakAfter = true;\n controls.push(qYPrefix);\n controls.push(qYSuffix);\n }\n }\n if (showY && VALUES_AXIS.indexOf('ValuesNumberTicks') > -1) //Weird parameter for Stream Graph\n {\n var qYNumTicks = form.numericUpDown({name: \"formValuesNumberTicks\", label: \"Maximum number of ticks\", default_value: 5, increment: 1, minimum: 1, maximum: 1000});\n controls.push(qYNumTicks);\n }\n if (showY && VALUES_AXIS.indexOf('ValuesTickFont') > -1)\n {\n var qYTickFont = form.comboBox({name: \"formValuesTickFontFamily\", label: axisPrefix + \" label font family\", alternatives: font_families, default_value: globalFontFamily});\n if (chartType != \"Palm\")\n {\n if (!allow_control_groups)\n {\n var qYTickColorLabel = form.newLabel(axisPrefix + \" label font color\");\n controls.push(qYTickColorLabel);\n }\n var qYTickColor = form.colorPicker({name: \"formValuesTickFontColor\", label: !allow_control_groups ? \"\" : axisPrefix + \" label font color\", default_value: globalFontColor});\n if (!allow_control_groups)\n qYTickColor.lineBreakAfter = true;\n controls.push(qYTickColor);\n }\n var qYTickSize = form.numericUpDown({name: \"formValuesTickFontSize\", label: axisPrefix + \" label font size\", default_value: 7.5, increment: 0.5});\n controls.push(qYTickSize);\n }\n }\n}\nif (HOVER != null)\n{\n if (allow_control_groups)\n form.group(\"HOVER\");\n var showHover = true;\n if (HOVER.indexOf('HoverShow') > -1)\n {\n var qShowHover = form.checkBox({name: \"formHoverShow\", label: \"Show hover text\", default_value: true});\n showHover = qShowHover.getValue();\n controls.push(qShowHover);\n }\n if (showHover && HOVER.indexOf('HoverNumberFormat') > -1 )\n {\n var hover_default_format = (typeof dataLabelFormat != 'undefined') ? dataLabelFormat : hover_number_formats[0];\n var qHoverNumberType = form.comboBox({name: \"formHoverNumberType\", label: \"Hovertext number type\", alternatives: hover_number_formats, default_value: hover_default_format, required: true});\n var hoverNumberType = qHoverNumberType.getValue();\n controls.push(qHoverNumberType);\n if (hoverNumberType == \"Date/Time\")\n {\n var qHoverDate = form.comboBox({name: \"formHoverDateType\", label: \"Date type\", alternatives: date_formats, default_value: date_formats[0], required: true});\n hoverNumberType = qHoverDate.getValue();\n controls.push(qHoverDate);\n }\n\n var qHoverCustom = null;\n if (hoverNumberType == \"Custom\")\n qHoverCustom = form.textBox({name: \"formHoverNumberCustom\", label: \"Custom code\", default_value: \"%d %b %y\", required: true, prompt: \"D3 formatting code, e.g. ,.2%\"});\n else if (hoverNumberType == 'Number' && chartType != \"Venn\" && chartType != \"Stream\")\n qHoverCustom = form.checkBox({name: \"formHoverSeparateThousands\", label: \"Separate thousands by comma\", default: true});\n if (qHoverCustom != null)\n {\n if (!allow_control_groups)\n qHoverCustom.lineBreakAfter = true;\n controls.push(qHoverCustom);\n }\n if (!allow_control_groups)\n {\n var qHoverDecimals = form.numericUpDown({name:\"formHoverDecimals\", default_value: 0, label: hoverNumberType == \"Metric unit suffix\" ? \"Significant digits\": \"Decimal places\", minimum: hoverNumberType == \"Metric unit suffix\" ? 1 : 0, required: false});\n qHoverDecimals.lineBreakAfter = true;\n }\n else\n var qHoverDecimals = form.numericUpDown({name:\"formHoverDecimals\", label: hoverNumberType == \"Metric unit suffix\" ? \"Significant digits\": \"Decimal places\", minimum: hoverNumberType == \"Metric unit suffix\" ? 1 : 0, required: false});\n controls.push(qHoverDecimals);\n }\n if (showHover && HOVER.indexOf('HoverPrefixSuffix') > -1 )\n {\n var qHoverPrefix = form.textBox({name:'formHoverValuesPrefix', label: 'Custom prefix', required: false, prompt: \"Optional text to prepend to hovertext values\"});\n controls.push(qHoverPrefix);\n var qHoverSuffix = form.textBox({name:'formHoverValuesSuffix', label: 'Custom suffix', required: false, prompt: \"Optional text to append to hovertext values\"});\n controls.push(qHoverSuffix);\n }\n}\nif (MARGINS != null)\n{\n if (allow_control_groups)\n form.group(\"MARGINS\");\n var qMarginContol = false; \n if (MARGINS.indexOf('CustomMargin') > -1)\n {\n qCustomMargin = form.checkBox({name: \"formCustomMargin\", label: \"Customize margins\", default_value: false, prompt: \"Select to manually specify margin sizes in pixels\"});\n controls.push(qCustomMargin);\n qMarginControl = qCustomMargin.getValue();\n }\n if (MARGINS.indexOf('Margin') > -1 || qMarginControl)\n {\n var qMarginTop = form.numericUpDown({name: \"formMarginTop\", label: \"Top\", default_value: 30, increment: 1, minimum: 0, maximum: 1000});\n var qMarginLeft = form.numericUpDown({name: \"formMarginLeft\", label: \"Left\", default_value: 80, increment: 1, minimum: 0, maximum: 1000});\n var qMarginBottom = form.numericUpDown({name: \"formMarginBottom\", label: \"Bottom\", default_value: 50, increment: 1, minimum: 0, maximum: 1000});\n var qMarginRight = form.numericUpDown({name: \"formMarginRight\", label: \"Right\", default_value: 40, increment: 1, minimum: 0, maximum: 1000});\n controls.push(qMarginTop);\n controls.push(qMarginLeft);\n controls.push(qMarginBottom);\n controls.push(qMarginRight);\n }\n}\nform.setInputControls(controls);","JSError":null,"JSErrorDetails":null,"ControlDefinitionErrors":null,"InputValidationErrors":null,"Controls":[{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formChartType","Page":null,"Group":"OUTPUT","Type":"ComboBox","Label":"Chart type","LabelEmphasised":false,"Value":"Bar","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Table","Area","Bar","Bar Pictograph","Bean","Box","Column","Density","Donut","Geographic Map","Heat","Histogram","Line","Palm","Pie","Pyramid","Radar","Stream","Scatter","Time Series","Venn","Violin"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultiples","Page":null,"Group":"OUTPUT","Type":"CheckBox","Label":"Show as small multiples (panel chart)","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Show each data series in its own panel.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formStackSeries","Page":null,"Group":"OUTPUT","Type":"CheckBox","Label":"Stack series","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Stack bars on top of each other to compare cumulative values.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formPastedData","Page":null,"Group":"DATA SOURCE","Type":"DataEntry","Label":"Edit Data...","LabelEmphasised":false,"Value":"[[\"Industry\",\"Average NPS\"],[\"Healthcare\",\"62\"],[\"Professional Services\",\"58\"],[\"Retail\",\"54\"],[\"Hospitality, Travel, Restaurants\",\"53\"],[\"Manufacturing\",\"51\"],[\"Automotive & Transport\",\"49\"],[\"Financial Services\",\"46\"],[\"Construction & Engineering\",\"45\"],[\"Customer Services\",\"42\"],[\"Insurance\",\"42\"],[\"IT & Software\",\"41\"],[\"Banking\",\"37\"],[\"Media\",\"34\"],[\"IT Services\",\"33\"],[\"Telecommunications\",\"24\"]]","Allowed":null,"Multi":false,"Prompt":"Opens a spreadsheet into which you can enter data.","ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFirstAggregate","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Aggregate the data prior to plotting","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"The data is 'raw', where each row represents an individual case. It needs to be aggregated prior to plotting.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTidy","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Automatically tidy the data","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":"Convert to numeric and simplify structure.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formNotDataFrame","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Automatically detect row and column names","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":"Unselect to manually adjust structure of table","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTidyLabels","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Tidy labels","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":"Extract common prefixes to simplify labels","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTranspose","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Switch rows and columns","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Read each row of the input table as a data series","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formAsPercentages","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Convert to percentages/proportions","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Compute percentages based on data in input tables (after row and column manipuations are applied).","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formDateFormat","Page":null,"Group":"DATA MANIPULATION","Type":"ComboBox","Label":"Date format","LabelEmphasised":false,"Value":"Automatic","Allowed":null,"Multi":false,"Prompt":"Control how date strings in input table is read","ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Automatic","International (dd/mm/yyyy)","US (mm/dd/yyyy)","No date formatting"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHideOutput","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Hide output with small sample sizes","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Show error if any cell of the table has 'Base n' smaller than the cut-off","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHideEmptyRows","Page":null,"Group":"Row manipulations","Type":"CheckBox","Label":"Hide empty rows","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Hide rows containing only missing values.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHideRowsBySize","Page":null,"Group":"Row manipulations","Type":"CheckBox","Label":"Hide rows with small sample sizes","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Remove rows with 'Base n' smaller than the sample size cut-off","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSortRows","Page":null,"Group":"Row manipulations","Type":"CheckBox","Label":"Sort rows","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Sort rows by the values in a specified column","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formAutoOrderRows","Page":null,"Group":"Row manipulations","Type":"CheckBox","Label":"Order rows by similarity","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Use correspondence analysis and order rows by coordinates in first dimension","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formReverseRows","Page":null,"Group":"Row manipulations","Type":"CheckBox","Label":"Reverse rows","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSelectRows","Page":null,"Group":"Row manipulations","Type":"TextBox","Label":"Rows to show","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Enter comma separated list of row indices or names","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFirstKRows","Page":null,"Group":"Row manipulations","Type":"TextBox","Label":"Number of rows from top to show","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Enter a number or leave blank","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLastKRows","Page":null,"Group":"Row manipulations","Type":"TextBox","Label":"Number of rows from bottom to show","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Enter a number or leave blank","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formIgnoreRows","Page":null,"Group":"Row manipulations","Type":"TextBox","Label":"Rows to ignore","LabelEmphasised":false,"Value":"NET, Total, SUM","Allowed":null,"Multi":false,"Prompt":"Specify rows to hide as a comma seperated list of row names","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHideEmptyCols","Page":null,"Group":"Column manipulations","Type":"CheckBox","Label":"Hide empty columns","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Hide columns containing only missing values","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHideColsBySize","Page":null,"Group":"Column manipulations","Type":"CheckBox","Label":"Hide columns with small sample sizes","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Remove columns with 'Base n' or Column n' smaller than the sample size cut-off","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSortCols","Page":null,"Group":"Column manipulations","Type":"CheckBox","Label":"Sort columns","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Sort columns by the values in a specified row","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formAutoOrderCols","Page":null,"Group":"Column manipulations","Type":"CheckBox","Label":"Order columns by similarity","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Use correspondence analysis and order columns by coordinates in first dimension","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formReverseCols","Page":null,"Group":"Column manipulations","Type":"CheckBox","Label":"Reverse columns","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSelectCols","Page":null,"Group":"Column manipulations","Type":"TextBox","Label":"Columns to show","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Enter comma separated list of column indices or names","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFirstKCols","Page":null,"Group":"Column manipulations","Type":"TextBox","Label":"Number of columns from left to show","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Enter a number or leave blank","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLastKCols","Page":null,"Group":"Column manipulations","Type":"TextBox","Label":"Number of columns from right to show","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Enter a number or leave blank","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formIgnoreCols","Page":null,"Group":"Column manipulations","Type":"TextBox","Label":"Columns to ignore","LabelEmphasised":false,"Value":"NET, Total, SUM","Allowed":null,"Multi":false,"Prompt":"Specify columns to hide as a comma seperated list of column names","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formBarGap","Page":"Chart","Group":"APPEARANCE","Type":"NumericUpDown","Label":"Gap between bars","LabelEmphasised":false,"Value":0.15,"Allowed":null,"Multi":false,"Prompt":"Control spacing between bars","ErrorMessage":"Gap between bars: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.05,"Min":0.0,"Max":1.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formPalette","Page":"Chart","Group":"DATA SERIES","Type":"ComboBox","Label":"Color palette","LabelEmphasised":false,"Value":"Custom color","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Default colors","Colorblind safe colors","Rainbow","Light pastels","Strong colors","Spectral colors (red, yellow, blue)","Spectral colors (blue, yellow, red)","Reds, dark to light","Reds, light to dark","Greens, dark to light","Greens, light to dark","Blues, dark to light","Blues, light to dark","Greys, dark to light","Greys, light to dark","Heat colors (yellow, red)","Terrain colors (green, beige, grey)","Custom color","Custom gradient","Custom palette"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCustomColor","Page":"Chart","Group":"DATA SERIES","Type":"ColorPicker","Label":"Custom color","LabelEmphasised":false,"Value":"rgb(62, 125, 204)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Custom color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFillOpacity","Page":"Chart","Group":"DATA SERIES","Type":"NumericUpDown","Label":"Opacity","LabelEmphasised":false,"Value":null,"Allowed":null,"Multi":false,"Prompt":"Control transparency of data series","ErrorMessage":"Opacity: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.1,"Min":0.0,"Max":1.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFit","Page":"Chart","Group":"TREND LINES","Type":"ComboBox","Label":"Line of best fit","LabelEmphasised":false,"Value":"None","Allowed":null,"Multi":false,"Prompt":"Add trend line using linear regression or a scatterplot smoother","ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["None","Linear","LOESS","Friedman's super smoother","Cubic spline"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFont","Page":"Chart","Group":"FONT","Type":"ComboBox","Label":"Global font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFontColor","Page":"Chart","Group":"FONT","Type":"ColorPicker","Label":"Global font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Global font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFontUnits","Page":"Chart","Group":"FONT","Type":"ComboBox","Label":"Font units","LabelEmphasised":false,"Value":"pt","Allowed":null,"Multi":false,"Prompt":"Are font sizes specified in terms of points or pixels?","ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["pt","px"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formDataLabelShow","Page":"Chart","Group":"DATA LABELS","Type":"CheckBox","Label":"Show data labels","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Show values of data points on the chart","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formShowGrid","Page":"Chart","Group":"GRID LINES","Type":"CheckBox","Label":"Show grid lines","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLegendShow","Page":"Chart","Group":"LEGEND","Type":"CheckBox","Label":"Show legend (if applicable)","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLegendFontFamily","Page":"Chart","Group":"LEGEND","Type":"ComboBox","Label":"Legend font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLegendFontColor","Page":"Chart","Group":"LEGEND","Type":"ColorPicker","Label":"Legend font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Legend font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLegendFontSize","Page":"Chart","Group":"LEGEND","Type":"NumericUpDown","Label":"Legend font size","LabelEmphasised":false,"Value":7.5,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Legend font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLegendXPos","Page":"Chart","Group":"LEGEND","Type":"NumericUpDown","Label":"Horizontal placement","LabelEmphasised":false,"Value":1.02,"Allowed":null,"Multi":false,"Prompt":"Choose numeric value between -2 (far left) to 3 (far right)","ErrorMessage":"Horizontal placement: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.02,"Min":-2.0,"Max":3.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLegendYPos","Page":"Chart","Group":"LEGEND","Type":"NumericUpDown","Label":"Vertical placement","LabelEmphasised":false,"Value":1.0,"Allowed":null,"Multi":false,"Prompt":"Choose numeric value between -2 (below) and 3 (above)","ErrorMessage":"Vertical placement: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.02,"Min":-2.0,"Max":3.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTitle","Page":"Chart","Group":"Title","Type":"TextBox","Label":"Title","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTitleFontFamily","Page":"Chart","Group":"Title","Type":"ComboBox","Label":"Title font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTitleFontColor","Page":"Chart","Group":"Title","Type":"ColorPicker","Label":"Title font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Title font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formTitleFontSize","Page":"Chart","Group":"Title","Type":"NumericUpDown","Label":"Title font size","LabelEmphasised":false,"Value":12.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Title font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSubtitle","Page":"Chart","Group":"Title","Type":"TextBox","Label":"Subtitle","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFooter","Page":"Chart","Group":"Title","Type":"TextBox","Label":"Footer","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Optional footer. Leave blank to show default text","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFooterFontFamily","Page":"Chart","Group":"Title","Type":"ComboBox","Label":"Footer font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFooterFontColor","Page":"Chart","Group":"Title","Type":"ColorPicker","Label":"Footer font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Footer font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFooterFontSize","Page":"Chart","Group":"Title","Type":"NumericUpDown","Label":"Footer font size","LabelEmphasised":false,"Value":6.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Footer font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFooterWrap","Page":"Chart","Group":"Title","Type":"CheckBox","Label":"Wrap footer","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formFooterWrapNchar","Page":"Chart","Group":"Title","Type":"NumericUpDown","Label":"Footer width (in characters)","LabelEmphasised":false,"Value":100.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Footer width (in characters): ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":5.0,"Min":5.0,"Max":5000.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesMin","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"TextBox","Label":"Minimum value","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Leave blank to determine automatically from input data. Otherwise, enter a numeric value (no prefix or suffix) for a numeric axis; a date-string for a date axis; or a 0-based index for a categorical axis.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesMax","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"TextBox","Label":"Maximum value","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Leave blank to determine automatically from input data. Otherwise, enter a numeric value (no prefix or suffix) for a numeric axis; a date-string for a date axis; or a 0-based index for a categorical axis.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formShowCategoriesTitle","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"CheckBox","Label":"Show axis title","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTitle","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"TextBox","Label":"Axis title","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Leave blank to read axis title from input data","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTitleFontFamily","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"ComboBox","Label":"Axis title font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTitleFontColor","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"ColorPicker","Label":"Axis title font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis title font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTitleFontSize","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"NumericUpDown","Label":"Axis title font size","LabelEmphasised":false,"Value":9.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis title font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesAxisShow","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"CheckBox","Label":"Show axis","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesNumberType","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"ComboBox","Label":"Axis number type","LabelEmphasised":false,"Value":"Automatic","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Automatic","Number","Category","Percentage","Date/Time","Currency","Metric units suffix","Scientific","Custom"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesDecimals","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"NumericUpDown","Label":"Decimal places","LabelEmphasised":false,"Value":null,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Decimal places: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":1.0,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesPrefix","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"TextBox","Label":"Custom prefix","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Optional text to prepend to the tick labels","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesSuffix","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"TextBox","Label":"Custom suffix","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Optional text to append to the tick labels","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTickFontFamily","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"ComboBox","Label":"Axis label font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTickFontColor","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"ColorPicker","Label":"Axis label font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis label font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTickFontSize","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"NumericUpDown","Label":"Axis label font size","LabelEmphasised":false,"Value":7.5,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis label font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCategoriesTickAngle","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"ComboBox","Label":"Axis label orientation","LabelEmphasised":false,"Value":"Automatic","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Automatic","Horizontal","Vertical","Diagonal"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLabelWrap","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"CheckBox","Label":"Wrap axis label","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formLabelWrapNchar","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"NumericUpDown","Label":"Axis label width (in characters)","LabelEmphasised":false,"Value":21.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis label width (in characters): ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":5.0,"Min":5.0,"Max":1000.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesMin","Page":"Chart","Group":"VALUES (X) AXIS","Type":"TextBox","Label":"Minimum value","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Leave blank to determine automatically from input data.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesMax","Page":"Chart","Group":"VALUES (X) AXIS","Type":"TextBox","Label":"Maximum value","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Leave blank to determine automatically from input data.","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formShowValuesTitle","Page":"Chart","Group":"VALUES (X) AXIS","Type":"CheckBox","Label":"Show axis title","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesTitle","Page":"Chart","Group":"VALUES (X) AXIS","Type":"TextBox","Label":"Axis title","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Leave blank to read axis title from input data","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesTitleFontFamily","Page":"Chart","Group":"VALUES (X) AXIS","Type":"ComboBox","Label":"Axis title font family","LabelEmphasised":false,"Value":"Arial","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Andale Mono","Arial","Arial Black","Century Gothic","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesTitleFontColor","Page":"Chart","Group":"VALUES (X) AXIS","Type":"ColorPicker","Label":"Axis title font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis title font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesTitleFontSize","Page":"Chart","Group":"VALUES (X) AXIS","Type":"NumericUpDown","Label":"Axis title font size","LabelEmphasised":false,"Value":9.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis title font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesAxisShow","Page":"Chart","Group":"VALUES (X) AXIS","Type":"CheckBox","Label":"Show axis","LabelEmphasised":false,"Value":true,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesNumberType","Page":"Chart","Group":"VALUES (X) AXIS","Type":"ComboBox","Label":"Axis number type","LabelEmphasised":false,"Value":"Automatic","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Automatic","Number","Category","Percentage","Date/Time","Currency","Metric units suffix","Scientific","Custom"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesDecimals","Page":"Chart","Group":"VALUES (X) AXIS","Type":"NumericUpDown","Label":"Decimal places","LabelEmphasised":false,"Value":null,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Decimal places: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":1.0,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesPrefix","Page":"Chart","Group":"VALUES (X) AXIS","Type":"TextBox","Label":"Custom prefix","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Optional text to prepend to the tick labels","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesSuffix","Page":"Chart","Group":"VALUES (X) AXIS","Type":"TextBox","Label":"Custom suffix","LabelEmphasised":false,"Value":"","Allowed":null,"Multi":false,"Prompt":"Optional text to append to the tick labels","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesTickFontColor","Page":"Chart","Group":"VALUES (X) AXIS","Type":"ColorPicker","Label":"Axis label font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis label font color: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formValuesTickFontSize","Page":"Chart","Group":"VALUES (X) AXIS","Type":"NumericUpDown","Label":"Axis label font size","LabelEmphasised":false,"Value":7.5,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis label font size: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.5,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHoverNumberType","Page":"Chart","Group":"HOVER","Type":"ComboBox","Label":"Hovertext number type","LabelEmphasised":false,"Value":"Automatic","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":true,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":["Automatic","Number","Category","Percentage","Metric units suffix","Scientific","Custom"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formHoverDecimals","Page":"Chart","Group":"HOVER","Type":"NumericUpDown","Label":"Decimal places","LabelEmphasised":false,"Value":null,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Decimal places: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":1.0,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formCustomMargin","Page":"Chart","Group":"MARGINS","Type":"CheckBox","Label":"Customize margins","LabelEmphasised":false,"Value":false,"Allowed":null,"Multi":false,"Prompt":"Select to manually specify margin sizes in pixels","ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":"left","Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":null,"Page":null,"Group":null,"Type":null,"Label":null,"LabelEmphasised":false,"Value":null,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":null,"Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":false}]},"calculating":"Idle","showDebug":false,"layout":"OutputOnly","vSplit":0.25,"hSplit":0.45,"updateWarnings":true,"updateMode":"Automatic","warnSlow":true,"Options":{"debugconsole":false,"codeposition":"OutputOnly","splitH":0.45,"splitV":0.25,"update warnings":true,"updating":"Automatic","warn slow":true}}