{"size":{"Width":890,"Height":325},"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.1.7\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"), 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("formIgnoreColumns"), hide.empty.rows.and.columns = get0("formHideEmpty", ifnotfound = FALSE), 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, scatter.colors.column = 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"), fit.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"), subslice.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.3 <- 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 paneltitle.show = get0("formSmallMultTitle", ifnotfound = TRUE),\n paneltitle.font.family = get0("formSmallMultTitleFontFamily"),\n paneltitle.font.color = get0("formSmallMultTitleFontColor"),\n paneltitle.font.size = get0("formSmallMultTitleFontSize"),\n paneltitle.wrap = get0("formSmallMultTitleWrap"),\n paneltitle.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 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 = if (isTRUE(get0("formSmallMultiples"))) NULL else pc$fit.line.colors,\n fit.line.width = get0("formFitLineWidth", ifnotfound=1),\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.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=TRUE),\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 = get0("formTitle", ifnotfound=""),\n title.font.family = get0("formTitleFontFamily"),\n title.font.color = get0("formTitleFontColor"),\n title.font.size = get0("formTitleFontSize"),\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 = get0("formFooter", ifnotfound=""),\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.axis.show = get0("formCategoriesAxisShow", ifnotfound=TRUE),\n categories.tick.show = get0("formCategoriesAxisShow", ifnotfound=TRUE),\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.axis.show = get0("formValuesAxisShow"),\n values.tick.show = get0("formValuesAxisShow", ifnotfound=TRUE),\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.bounds.minimum = if (sum(nchar(get0("formValuesMin"))) == 0) NULL else formValuesMin, \n values.bounds.maximum = if (sum(nchar(get0("formValuesMax"))) == 0) NULL else formValuesMax, \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 # 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 (if(formChartType == "Donut") "Donut" else formChartType),\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 treat.NA.as.0 = get0("formNAasZero", ifnotfound = FALSE),\n color.NA = get0("formNAColor"), \n ocean.color = get0("formOceanColor"),\n # Heat parameters\n sort.rows = get0("formSortRows"),\n sort.columns = get0("formSortColumns"),\n standardization = get0("formStandardization"),\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 warn.if.no.match = FALSE)\n</pre>\n<pre class='debug-message'>Loading required package: flipStandardCharts\n</pre>\r\n<div class=\"debug-summarystatistics\">\r\n<table>\r\n<tr><th>Total time:</th><td>2.99s</td></tr>\r\n<tr><th>Time on R server:</th><td title=\"rApacheServe 2.96s (pre 0.01s, post 0.00s) httpget_code() setup for eval 0.00s session$eval 2.90s (pre 0.00s, post 0.09s) unexplained 0.06s apparmor forking (pre 0.00s, post 0.00s)\">2.96s</td></tr>\r\n<tr><th>Time evaluating code:</th><td>2.65s</td></tr>\r\n<tr><th>Bytes sent:</th><td>18,326</td></tr>\r\n<tr><th>Bytes received:</th><td>45,140</td></tr>\r\n</table>\r\n</div>","message":"Loading required package: flipStandardCharts\n","htmlwidgets":"<div id=\"htmlwidget_container\">\n <div id=\"htmlwidget-bf184c99a76b\" style=\"width:100%;height:400px;\" class=\"plotly html-widget\"></div>\n</div>\n<script type=\"application/json\" data-for=\"htmlwidget-bf184c99a76b\">{\"x\":{\"data\":[{\"x\":[0.250728863,0.250728863,0.250728863,0.250728863,0.250728863],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":[\"none\",\"none\",\"none\",\"none\",\"none\"],\"showlegend\":false,\"opacity\":0,\"line\":{\"fillcolor\":\"rgba(31,119,180,1)\",\"color\":\"rgba(31,119,180,1)\"},\"xaxis\":\"x\",\"yaxis\":\"y\",\"frame\":null},{\"x\":[0.778425656,0.402332362,0.250728863,0.361516035,0.448979592],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"fillcolor\":\"rgba(255,127,14,1)\",\"color\":\"rgba(228,26,28,1)\",\"line\":{\"color\":\"rgba(228,26,28,1)\",\"width\":1}},\"name\":\"Aldi\",\"legendgroup\":1,\"text\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"hoverinfo\":[\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\"],\"xaxis\":\"x\",\"yaxis\":\"y\",\"frame\":null},{\"x\":[0.488888889,0.488888889,0.488888889,0.488888889,0.488888889],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":[\"none\",\"none\",\"none\",\"none\",\"none\"],\"showlegend\":false,\"opacity\":0,\"line\":{\"fillcolor\":\"rgba(31,119,180,1)\",\"color\":\"rgba(44,160,44,1)\"},\"xaxis\":\"x2\",\"yaxis\":\"y\",\"frame\":null},{\"x\":[0.488888889,0.631111111,0.682222222,0.595555556,0.711111111],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"fillcolor\":\"rgba(255,127,14,1)\",\"color\":\"rgba(55,126,184,1)\",\"line\":{\"color\":\"rgba(55,126,184,1)\",\"width\":1}},\"name\":\"Coles\",\"legendgroup\":1,\"text\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"hoverinfo\":[\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\"],\"xaxis\":\"x2\",\"yaxis\":\"y\",\"frame\":null},{\"x\":[0.402247191,0.402247191,0.402247191,0.402247191,0.402247191],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":[\"none\",\"none\",\"none\",\"none\",\"none\"],\"showlegend\":false,\"opacity\":0,\"line\":{\"fillcolor\":\"rgba(31,119,180,1)\",\"color\":\"rgba(148,103,189,1)\"},\"xaxis\":\"x3\",\"yaxis\":\"y\",\"frame\":null},{\"x\":[0.402247191,0.606741573,0.703370787,0.64494382,0.687640449],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"fillcolor\":\"rgba(255,127,14,1)\",\"color\":\"rgba(77,175,74,1)\",\"line\":{\"color\":\"rgba(77,175,74,1)\",\"width\":1}},\"name\":\"Woolworths\",\"legendgroup\":1,\"text\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"hoverinfo\":[\"text+x\",\"text+x\",\"text+x\",\"text+x\",\"text+x\"],\"xaxis\":\"x3\",\"yaxis\":\"y\",\"frame\":null}],\"layout\":{\"xaxis\":{\"domain\":[0.01,0.323333333333333],\"title\":\"\",\"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\":\"\",\"tickprefix\":\"\",\"ticksuffix\":\"\",\"hoverformat\":\"\",\"layer\":\"below traces\",\"autorange\":false,\"range\":[0,0.778425656],\"rangemode\":\"tozero\",\"zeroline\":true,\"zerolinewidth\":0,\"zerolinecolor\":\"#E1E1E1\",\"showexponent\":\"all\",\"showtickprefix\":true,\"showticksuffix\":true,\"showticklabels\":true,\"anchor\":\"y\"},\"xaxis2\":{\"domain\":[0.343333333333333,0.656666666666667],\"title\":\"\",\"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\":\"\",\"tickprefix\":\"\",\"ticksuffix\":\"\",\"hoverformat\":\"\",\"layer\":\"below traces\",\"autorange\":false,\"range\":[0,0.778425656],\"rangemode\":\"tozero\",\"zeroline\":true,\"zerolinewidth\":0,\"zerolinecolor\":\"#E1E1E1\",\"showexponent\":\"all\",\"showtickprefix\":true,\"showticksuffix\":true,\"showticklabels\":true,\"anchor\":\"y\"},\"xaxis3\":{\"domain\":[0.676666666666667,0.99],\"title\":\"\",\"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\":\"\",\"tickprefix\":\"\",\"ticksuffix\":\"\",\"hoverformat\":\"\",\"layer\":\"below traces\",\"autorange\":false,\"range\":[0,0.778425656],\"rangemode\":\"tozero\",\"zeroline\":true,\"zerolinewidth\":0,\"zerolinecolor\":\"#E1E1E1\",\"showexponent\":\"all\",\"showtickprefix\":true,\"showticksuffix\":true,\"showticklabels\":true,\"anchor\":\"y\"},\"yaxis\":{\"domain\":[0.09,0.91],\"title\":\"\",\"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\":\"\",\"tickprefix\":\"\",\"ticksuffix\":\"\",\"hoverformat\":\"\",\"layer\":\"below traces\",\"autorange\":false,\"range\":[4.5,-0.5],\"rangemode\":\"normal\",\"zeroline\":false,\"zerolinewidth\":0,\"zerolinecolor\":\"#FFFFFF00\",\"showexponent\":\"all\",\"showtickprefix\":true,\"showticksuffix\":true,\"showticklabels\":true,\"anchor\":\"x\"},\"margin\":{\"b\":30,\"l\":30,\"t\":36,\"r\":20,\"pad\":0},\"title\":\" \",\"showlegend\":false,\"legend\":{\"bgcolor\":\"rgba(255,255,255,0)\",\"bordercolor\":\"#2C2C2C\",\"borderwidth\":0,\"orientation\":\"v\",\"font\":{\"family\":[],\"size\":[],\"color\":[]},\"xanchor\":\"left\",\"yanchor\":\"auto\",\"y\":1,\"x\":1.02,\"traceorder\":\"normal\"},\"plot_bgcolor\":\"rgba(255,255,255,0)\",\"paper_bgcolor\":\"rgba(255,255,255,0)\",\"hovermode\":\"closest\",\"titlefont\":{\"family\":\"Arial\",\"size\":16,\"color\":\"#2C2C2C\"},\"font\":{\"family\":\"Arial\",\"size\":10,\"color\":[]},\"bargap\":0.15,\"barmode\":\"\",\"annotations\":[{\"text\":\"Aldi\",\"x\":0.166666666666667,\"y\":1,\"showarrow\":false,\"xanchor\":\"center\",\"yanchor\":\"top\",\"font\":{\"family\":\"Arial\",\"color\":\"#2C2C2C\",\"size\":14},\"xref\":\"paper\",\"yref\":\"paper\"},{\"text\":\"Coles\",\"x\":0.5,\"y\":1,\"showarrow\":false,\"xanchor\":\"center\",\"yanchor\":\"top\",\"font\":{\"family\":\"Arial\",\"color\":\"#2C2C2C\",\"size\":14},\"xref\":\"paper\",\"yref\":\"paper\"},{\"text\":\"Woolworths\",\"x\":0.833333333333333,\"y\":1,\"showarrow\":false,\"xanchor\":\"center\",\"yanchor\":\"top\",\"font\":{\"family\":\"Arial\",\"color\":\"#2C2C2C\",\"size\":14},\"xref\":\"paper\",\"yref\":\"paper\"}]},\"attrs\":{\"bf185990562e\":{\"alpha\":1,\"sizes\":[10,100],\"x\":[0.250728863,0.250728863,0.250728863,0.250728863,0.250728863],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":\"none\",\"showlegend\":false,\"opacity\":0},\"bf185990562e.1\":{\"alpha\":1,\"sizes\":[10,100],\"x\":[0.778425656,0.402332362,0.250728863,0.361516035,0.448979592],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"color\":\"rgba(228,26,28,1)\",\"line\":{\"color\":\"rgba(228,26,28,1)\",\"width\":1}},\"name\":\"Aldi\",\"legendgroup\":1,\"text\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"hoverinfo\":\"text+x\"},\"bf1873da6dee\":{\"alpha\":1,\"sizes\":[10,100],\"x\":[0.488888889,0.488888889,0.488888889,0.488888889,0.488888889],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":\"none\",\"showlegend\":false,\"opacity\":0},\"bf1873da6dee.1\":{\"alpha\":1,\"sizes\":[10,100],\"x\":[0.488888889,0.631111111,0.682222222,0.595555556,0.711111111],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"color\":\"rgba(55,126,184,1)\",\"line\":{\"color\":\"rgba(55,126,184,1)\",\"width\":1}},\"name\":\"Coles\",\"legendgroup\":1,\"text\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"hoverinfo\":\"text+x\"},\"bf1850fbdc01\":{\"alpha\":1,\"sizes\":[10,100],\"x\":[0.402247191,0.402247191,0.402247191,0.402247191,0.402247191],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"scatter\",\"mode\":\"lines\",\"hoverinfo\":\"none\",\"showlegend\":false,\"opacity\":0},\"bf1850fbdc01.1\":{\"alpha\":1,\"sizes\":[10,100],\"x\":[0.402247191,0.606741573,0.703370787,0.64494382,0.687640449],\"y\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"type\":\"bar\",\"orientation\":\"h\",\"marker\":{\"color\":\"rgba(77,175,74,1)\",\"line\":{\"color\":\"rgba(77,175,74,1)\",\"width\":1}},\"name\":\"Woolworths\",\"legendgroup\":1,\"text\":[\"Price\",\"Access\",\"Range\",\"Fresh\",\"Quality\"],\"hoverinfo\":\"text+x\"}},\"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},\"highlight\":{\"on\":\"plotly_click\",\"persistent\":false,\"dynamic\":false,\"selectize\":false,\"opacityDim\":0.2,\"selected\":{\"opacity\":1}},\"subplot\":true,\"base_url\":\"https://plot.ly\"},\"evals\":[\"config.modeBarButtonsToAdd.0.click\"],\"jsHooks\":{\"render\":[{\"code\":\"function(el, x) { var ctConfig = crosstalk.var('plotlyCrosstalkOpts').set({\\\"on\\\":\\\"plotly_click\\\",\\\"persistent\\\":false,\\\"dynamic\\\":false,\\\"selectize\\\":false,\\\"opacityDim\\\":0.2,\\\"selected\\\":{\\\"opacity\\\":1}}); }\",\"data\":null}]}}</script>\n<script type=\"application/htmlwidget-sizing\" data-for=\"htmlwidget-bf184c99a76b\">{\"viewer\":{\"width\":\"100%\",\"height\":400,\"padding\":15,\"fill\":true},\"browser\":{\"width\":\"100%\",\"height\":400,\"padding\":40,\"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-cd5c5716917807e1b69e2493221698b2.js\",\"https://rserverhtmlwidgetasset.azureedge.net/plotly-4ab51328a91fb22cf606710cfee204c9.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-325c88418cec885e677571e996ab3377.js\"],\"attachments\":[],\"widget-cannot-re-render\":false}","warning":""},"secondsTaken":2.9916179,"updated":"2018-05-15T00:20:11.0936485Z","lastUpdatedMessage":null,"executedCode":"# VERSION 1.1.7\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\"), 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(\"formIgnoreColumns\"), hide.empty.rows.and.columns = get0(\"formHideEmpty\", ifnotfound = FALSE), 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, scatter.colors.column = 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\"), fit.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\"), subslice.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.3 <- 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 paneltitle.show = get0(\"formSmallMultTitle\", ifnotfound = TRUE),\n paneltitle.font.family = get0(\"formSmallMultTitleFontFamily\"),\n paneltitle.font.color = get0(\"formSmallMultTitleFontColor\"),\n paneltitle.font.size = get0(\"formSmallMultTitleFontSize\"),\n paneltitle.wrap = get0(\"formSmallMultTitleWrap\"),\n paneltitle.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 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 = if (isTRUE(get0(\"formSmallMultiples\"))) NULL else pc$fit.line.colors,\n fit.line.width = get0(\"formFitLineWidth\", ifnotfound=1),\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.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=TRUE),\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 = get0(\"formTitle\", ifnotfound=\"\"),\n title.font.family = get0(\"formTitleFontFamily\"),\n title.font.color = get0(\"formTitleFontColor\"),\n title.font.size = get0(\"formTitleFontSize\"),\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 = get0(\"formFooter\", ifnotfound=\"\"),\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.axis.show = get0(\"formCategoriesAxisShow\", ifnotfound=TRUE),\n categories.tick.show = get0(\"formCategoriesAxisShow\", ifnotfound=TRUE),\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.axis.show = get0(\"formValuesAxisShow\"),\n values.tick.show = get0(\"formValuesAxisShow\", ifnotfound=TRUE),\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.bounds.minimum = if (sum(nchar(get0(\"formValuesMin\"))) == 0) NULL else formValuesMin, \n values.bounds.maximum = if (sum(nchar(get0(\"formValuesMax\"))) == 0) NULL else formValuesMax, \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 # 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 (if(formChartType == \"Donut\") \"Donut\" else formChartType),\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 treat.NA.as.0 = get0(\"formNAasZero\", ifnotfound = FALSE),\n color.NA = get0(\"formNAColor\"), \n ocean.color = get0(\"formOceanColor\"),\n # Heat parameters\n sort.rows = get0(\"formSortRows\"),\n sort.columns = get0(\"formSortColumns\"),\n standardization = get0(\"formStandardization\"),\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 warn.if.no.match = FALSE)","lastSavedCode":"# VERSION 1.1.7\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\"), 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(\"formIgnoreColumns\"), hide.empty.rows.and.columns = get0(\"formHideEmpty\", ifnotfound = FALSE), 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, scatter.colors.column = 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\"), fit.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\"), subslice.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.3 <- 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 paneltitle.show = get0(\"formSmallMultTitle\", ifnotfound = TRUE),\n paneltitle.font.family = get0(\"formSmallMultTitleFontFamily\"),\n paneltitle.font.color = get0(\"formSmallMultTitleFontColor\"),\n paneltitle.font.size = get0(\"formSmallMultTitleFontSize\"),\n paneltitle.wrap = get0(\"formSmallMultTitleWrap\"),\n paneltitle.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 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 = if (isTRUE(get0(\"formSmallMultiples\"))) NULL else pc$fit.line.colors,\n fit.line.width = get0(\"formFitLineWidth\", ifnotfound=1),\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.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=TRUE),\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 = get0(\"formTitle\", ifnotfound=\"\"),\n title.font.family = get0(\"formTitleFontFamily\"),\n title.font.color = get0(\"formTitleFontColor\"),\n title.font.size = get0(\"formTitleFontSize\"),\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 = get0(\"formFooter\", ifnotfound=\"\"),\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.axis.show = get0(\"formCategoriesAxisShow\", ifnotfound=TRUE),\n categories.tick.show = get0(\"formCategoriesAxisShow\", ifnotfound=TRUE),\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.axis.show = get0(\"formValuesAxisShow\"),\n values.tick.show = get0(\"formValuesAxisShow\", ifnotfound=TRUE),\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.bounds.minimum = if (sum(nchar(get0(\"formValuesMin\"))) == 0) NULL else formValuesMin, \n values.bounds.maximum = if (sum(nchar(get0(\"formValuesMax\"))) == 0) NULL else formValuesMax, \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 # 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 (if(formChartType == \"Donut\") \"Donut\" else formChartType),\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 treat.NA.as.0 = get0(\"formNAasZero\", ifnotfound = FALSE),\n color.NA = get0(\"formNAColor\"), \n ocean.color = get0(\"formOceanColor\"),\n # Heat parameters\n sort.rows = get0(\"formSortRows\"),\n sort.columns = get0(\"formSortColumns\"),\n standardization = get0(\"formStandardization\"),\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 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":1302,"length":13,"index":4},{"start":3184,"length":13,"index":4},{"start":3242,"length":13,"index":4},{"start":10075,"length":13,"index":4},{"start":10173,"length":13,"index":4},{"start":10813,"length":13,"index":4},{"start":10852,"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 = \"Area\";\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.1.0\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 \"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 == \"\") }\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\"; }\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\", \"Primary colors\", \"Rainbow\", \"Light pastels\", \"Strong colors\", \"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 (red, yellow, white)\", \"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\", \"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; \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'];\nfunction AddMargins() { MARGINS = ['Margin'];}\nif (chartType == \"Venn\")\n{\n FONT = null; DATA_SERIES = null; TITLE = null; CATEGORIES_AXIS = null; VALUES_AXIS = null; LEGEND = null; \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 = FONT = null;\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_number_formats = [\"Automatic\", \"Number\"];\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 = \"Angular axis\";\n valuesAxisLabel = \"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', 'DataLabelPrefix', 'DataLabelSuffix'];\n APPEARANCE = ['LineThickness', 'FillOpacity', 'SmallMultiples'];\n GRIDLINES = ['ShowGrid'];\n} else if (chartType == \"Palm\")\n{\n FONT = ['GlobalFontFamily'];\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\", \"HighRes\", \"NAasZero\", \"NAColor\", \"OceanColor\", \"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'];\n HOVER = null;\n APPEARANCE = ['SortOrStandardize', 'AdditionalColumns'];\n} else if (chartType == \"Scatter\")\n{\n INPUTS_data = ['pasted', 'table', 'variables'];\n INPUTS = ['x', 'y', 'ScatterSizes', 'ScatterColors', 'ScatterLabels'];\n GRIDLINES = ['ShowGrid'];\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'];\n APPEARANCE = ['dummy']; \n DATA_LABELS = null; // this is overridden if LabeledScatter\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 if (chartType.indexOf(\"Bar\") != -1)\n SwappedXY();\n if (chartType != \"Line\")\n APPEARANCE = ['Stacked'];\n if (chartType == \"Line\")\n APPEARANCE = ['LineThickness'];\n APPEARANCE.push(\"SmallMultiples\");\n FITLINE = ['FitLine'];\n GRIDLINES = ['ShowGrid'];\n DATA_LABELS = ['DataLabelShow', 'DataLabelFormat', 'DataLabelFont', 'DataLabelPrefix', 'DataLabelSuffix'];\n VALUES_AXIS = ['ValuesTitle', 'ValuesAxisShow', 'ValuesTickFont', 'ValuesNumberFormat', 'ValuesSuffix', 'ValuesPrefix', 'ValuesMin', 'ValuesMax'];\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', 'SmallMultiples'];\n DATA_SERIES = null; DATA_LABELS = null; LEGEND = null;\n CATEGORIES_AXIS = ['CategoriesTickFont', 'LabelWrap'];\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 == \"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 FONT = ['GlobalFontFamily', 'GlobalFontColor'];\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 \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:integer,numeric,matrix,array,data.frame,table,list\"], required: false, multi: chartType == \"Scatter\", 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 (INPUTS.indexOf('ScatterLabels') > -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}\nif (INPUTS.indexOf('ScatterSizes')> -1 && n_yvariables <= 1)\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}\nif (INPUTS.indexOf('ScatterColors')> -1 && n_yvariables <= 1)\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}\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().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});\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\"});\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});\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: true});\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\"});\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 var qRowsIgnore = form.textBox({label: \"Rows to ignore\", type: \"text\", default_value: \"NET, Total, SUM\", name: \"formIgnoreRows\", required: false});\n if (!allow_control_groups)\n qRowsIgnore.lineBreakAfter = true;\n controls.push(qRowsIgnore);\n var qColsIgnore = form.textBox({label: \"Columns to ignore\", type: \"text\", default_value: \"NET, Total, SUM\", name: \"formIgnoreColumns\", required: false});\n if (!allow_control_groups)\n qColsIgnore.lineBreakAfter = true;\n controls.push(qColsIgnore);\n var qHideEmpty = form.checkBox({label: \"Hide empty rows and columns\", name: \"formHideEmpty\", default_value: false});\n if (!allow_control_groups)\n qHideEmpty.lineBreakAfter = true;\n controls.push(qHideEmpty);\n if (INPUTS.indexOf('AsPercentages') > -1)\n {\n var qAsPct = form.checkBox({name: \"formAsPercentages\", label: \"Convert to percentages/proportions\"});\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)'], default_value: 'Automatic'});\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});\n if (!allow_control_groups)\n qVarNames.lineBreakAfter;\n controls.push(qVarNames);\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\nvar show_as_small_mult = false; // this variable must be globally defined\nif (APPEARANCE != null)\n{\n var isStacked = false;\n if (allow_control_groups)\n form.group('APPEARANCE');\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});\n controls.push(qSmallMult);\n if (!allow_control_groups)\n qSmallMult.lineBreakAfter = true;\n show_as_small_mult = qSmallMult.getValue();\n if (qSmallMult.getValue())\n {\n var qSmallMultNRow = form.numericUpDown({label: \"Number of rows\", name: \"formSmallMultNRows\", default_value: 2, minimum: 1});\n controls.push(qSmallMultNRow);\n if (chartType == \"Bar\" || chartType == \"Column\")\n DATA_LABELS = null;\n if (chartType != \"Geographic Map\")\n LEGEND = null; \n if (chartType == \"Geographic Map\")\n TITLE = ['Title'];\n if (chartType != \"Geographic Map\")\n {\n var qSmallMultAverage = form.checkBox({label: \"Show average of all series\", name: \"formSmallMultAverage\", default_value: false});\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});\n controls.push(qSmallMultShareAxes);\n }\n var qSmallMultXOrder = form.textBox({label: \"Order\", 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 // For other input types we need to check\n if ((dtype != 'tables' && dtype != 'variables') || (dtype == 'variables' && !(allow_control_groups && VLabels.getValue() == null)))\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'];\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});\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)\n {\n var qScatterTrend = form.checkBox({label: \"Show trend lines\", name: \"formTrendLines\", default_value: false});\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 (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\", \"Circle\", \"Cross\", \"Elephant\", \"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});\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\"], 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\"});\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 (!show_as_small_mult && APPEARANCE.indexOf(\"Stacked\") > -1)\n {\n var qStack = form.checkBox({label: \"Stack series\", name: \"formStackSeries\", default_value: false});\n if (!allow_control_groups)\n qStack.lineBreakAfter = true;\n var isStack = qStack.getValue();\n controls.push(qStack);\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});\n if (!allow_control_groups)\n qVertDist.lineBreakAfter = true;\n if (!qVertDist.getValue())\n SwappedXY();\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(\"MapPackage\") > -1)\n {\n if (!show_as_small_mult)\n {\n var qPackage = form.comboBox({name: \"formMapPackage\", label: \"Map package\", alternatives: [\"plotly\", \"leaflet\"], default_value: \"plotly\"});\n controls.push(qPackage);\n if (qPackage.getValue() == \"leaflet\")\n {\n FONT = null;\n LEGEND = ['LegendShow', 'LegendTitle'];\n }\n }\n var qHighRes = form.checkBox({label: \"High resolution\", name: \"formHighRes\", default_value: false});\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});\n if (!allow_control_groups)\n qNAasZero.lineBreakAfter = true\n var NAasZero = qNAasZero.getValue();\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 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: \"#DDDDDD\"});\n if (!allow_control_groups)\n qOceanColor.lineBreakAfter = true;\n controls.push(qOceanColor); \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});\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});\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});\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});\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: \"formSortRows\", 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: \"formSortColumns\", 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: \"formStandardization\", 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});\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});\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});\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});\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(\"FillOpacity\") > -1)\n {\n var qOpacity = form.numericUpDown({name: \"formFillOpacity\", label: \"Fill opacity\", default_value: 0.4, minimum: 0.0, maximum: 1.0, increment: 0.1});\n controls.push(qOpacity);\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}\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: \"Show line of best fit\", alternatives: [\"None\", \"Linear\", \"Smooth\"], default_value: \"None\"});\n controls.push(qFit);\n var fitOpt = qFit.getValue();\n if (fitOpt != \"None\")\n {\n var qFitLast = form.checkBox({name: \"formFitIgnoreLast\", label: \"Ignore last data point\", default_value: false});\n controls.push(qFitLast);\n var qFitLineType = form.comboBox({name: \"formFitLineType\", label: \"Line type\", alternatives: [\"dot\", \"dash\", \"longdash\", \"dashdot\", \"solid\"], default_value:\"dot\"});\n controls.push(qFitLineType);\n var qFitLineWidth = form.numericUpDown({name: \"formFitLineWidth\", label: \"Line width\", default_value: 1, minimum: 1, maximum: 20});\n controls.push(qFitLineWidth);\n if (!show_as_small_mult)\n {\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 }\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}\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});\n if (!allow_control_groups)\n qDatalabShow.lineBreakAfter = true;\n controls.push(qDatalabShow);\n var datalabshow = qDatalabShow.getValue();\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 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 qDataLabelSize = form.numericUpDown({name: \"formDataLabelFontSize\", label: \"Data label font size\", default_value: 10});\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: 10});\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});\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});\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: 10});\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\"});\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 (!isEmptyString(titleOpt))\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: 16});\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});\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: 14});\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 line width\", default_value: 20, minimum: 5, increment: 1, maximum: 5000});\n controls.push(qSmallMultTitleWrapN);\n }\n }\n }\n if (!show_as_small_mult && 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: 12});\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 (!show_as_small_mult && TITLE.indexOf('Footer') > -1)\n {\n var qFooter = form.textBox({name:\"formFooter\", label:\"Footer\", required:false});\n if (!allow_control_groups)\n qFooter.lineBreakAfter = true;\n var footerOpt = qFooter.getValue();\n controls.push(qFooter);\n if (chartType == \"Scatter\" || !isEmptyString(footerOpt))\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: 8});\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 (chartType != \"Heat\")\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 line width\", 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('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});\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: 12});\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: 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});\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});\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}); \n var qXSuffix = form.textBox({name: \"formCategoriesSuffix\", label: \"Custom suffix\", default_value: \"\", required: false});\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: 10});\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 line width\", 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 form.group(valuesAxisLabel);\n else\n axisPrefix = valuesAxisLabel.charAt(0).toUpperCase() + valuesAxisLabel.substr(1).toLowerCase();\n var labelShowY = \"Show \" + axisPrefix.toLowerCase();\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});\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: 12});\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('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 (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});\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}); \n var qYSuffix = form.textBox({name: \"formValuesSuffix\", label: \"Custom suffix\", default_value: \"\", required: false}); \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: 10});\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 qHoverNumberType = form.comboBox({name: \"formHoverNumberType\", label: \"Hovertext number type\", alternatives: hover_number_formats, default_value: hover_number_formats[0], 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});\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}\nif (typeof MARGINS != 'undefined')\n{\n if (allow_control_groups)\n form.group(\"MARGINS\");\n if (MARGINS.indexOf('Margin') > -1)\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","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":"formTable","Page":null,"Group":"DATA SOURCE","Type":"DropBox","Label":"Output in 'Pages","LabelEmphasised":false,"Value":"1b155868-0db9-4d59-84cd-b5de46d70039","Allowed":null,"Multi":false,"Prompt":"Outputs are tables or other Q or R outputs in the 'Pages' tree (top-left)","ErrorMessage":"Output in 'Pages: Output in 'Pages accepts only one input which is of type Table or Ritem (Integer, Numeric, Matrix, Array, Data.Frame, Table or List).","Invalid":null,"Required":false,"AllowedTypes":["Table","RItem:integer,numeric,matrix,array,data.frame,table,list"],"OwnerRItemGuid":"967b3f15-0e7b-438e-9ec2-85e6a265f826","MinInputs":0,"MaxInputs":1,"Height":1,"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":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":"formTidyLabels","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Tidy labels","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":"formTranspose","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Switch rows and 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":"formIgnoreRows","Page":null,"Group":"DATA MANIPULATION","Type":"TextBox","Label":"Rows to ignore","LabelEmphasised":false,"Value":"NET, Total, SUM","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":"formIgnoreColumns","Page":null,"Group":"DATA MANIPULATION","Type":"TextBox","Label":"Columns to ignore","LabelEmphasised":false,"Value":"NET, Total, SUM","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":"formHideEmpty","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Hide empty rows and 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":"formAsPercentages","Page":null,"Group":"DATA MANIPULATION","Type":"CheckBox","Label":"Convert to percentages/proportions","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":"formDateFormat","Page":null,"Group":"DATA MANIPULATION","Type":"ComboBox","Label":"Date format","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","International (dd/mm/yyyy)","US (mm/dd/yyyy)"],"CheckAlign":null,"Text":null,"Increment":0.0,"Min":0.0,"Max":0.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultiples","Page":"Chart","Group":"APPEARANCE","Type":"CheckBox","Label":"Show as small multiples (panel chart)","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":"formSmallMultNRows","Page":"Chart","Group":"APPEARANCE","Type":"NumericUpDown","Label":"Number of rows","LabelEmphasised":false,"Value":1.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Number of rows: ","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":1.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultAverage","Page":"Chart","Group":"APPEARANCE","Type":"CheckBox","Label":"Show average of all series","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":"formSmallMultShareAxes","Page":"Chart","Group":"APPEARANCE","Type":"CheckBox","Label":"Share axes between panels","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":"formSmallMultXOrder","Page":"Chart","Group":"APPEARANCE","Type":"TextBox","Label":"Order","LabelEmphasised":false,"Value":"1,3,4","Allowed":null,"Multi":false,"Prompt":"e.g '2,1,3', or leave blank to follow order of 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":"formSmallMultPadLeft","Page":"Chart","Group":"APPEARANCE","Type":"NumericUpDown","Label":"Left padding","LabelEmphasised":false,"Value":0.01,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Left padding: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.01,"Min":0.0,"Max":1.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultPadRight","Page":"Chart","Group":"APPEARANCE","Type":"NumericUpDown","Label":"Right padding","LabelEmphasised":false,"Value":0.01,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Right padding: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.01,"Min":0.0,"Max":1.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultPadTop","Page":"Chart","Group":"APPEARANCE","Type":"NumericUpDown","Label":"Top padding","LabelEmphasised":false,"Value":0.18,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Top padding: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.01,"Min":0.0,"Max":1.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultPadBottom","Page":"Chart","Group":"APPEARANCE","Type":"NumericUpDown","Label":"Bottom padding","LabelEmphasised":false,"Value":0.01,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Bottom padding: ","Invalid":null,"Required":false,"AllowedTypes":null,"OwnerRItemGuid":null,"MinInputs":0,"MaxInputs":0,"Height":0,"Duplicates":false,"Values":null,"CheckAlign":null,"Text":null,"Increment":0.01,"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":"Strong colors","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","Primary colors","Rainbow","Light pastels","Strong colors","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 (red, yellow, white)","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":"formFit","Page":"Chart","Group":"TREND LINES","Type":"ComboBox","Label":"Show line of best fit","LabelEmphasised":false,"Value":"None","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":["None","Linear","Smooth"],"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":"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":"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":16.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":1.0,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultTitle","Page":"Chart","Group":"Title","Type":"CheckBox","Label":"Show panel titles","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":"formSmallMultTitleFontFamily","Page":"Chart","Group":"Title","Type":"ComboBox","Label":"Panel 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":"formSmallMultTitleFontColor","Page":"Chart","Group":"Title","Type":"ColorPicker","Label":"Panel title font color","LabelEmphasised":false,"Value":"rgb(44, 44, 44)","Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Panel 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":"formSmallMultTitleFontSize","Page":"Chart","Group":"Title","Type":"NumericUpDown","Label":"Panel title font size","LabelEmphasised":false,"Value":14.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Panel 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":1.0,"Min":0.0,"Max":100.0,"Vertical":null},{"ItemGuid":"00000000-0000-0000-0000-000000000000","ControlName":"formSmallMultTitleWrap","Page":"Chart","Group":"Title","Type":"CheckBox","Label":"Wrap panel titles","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":"formSmallMultTitleWrapNchar","Page":"Chart","Group":"Title","Type":"NumericUpDown","Label":"Panel title line width","LabelEmphasised":false,"Value":20.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Panel title line width: ","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":5.0,"Max":5000.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":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":"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":12.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":1.0,"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":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":"formCategoriesSuffix","Page":"Chart","Group":"CATEGORIES (Y) AXIS","Type":"TextBox","Label":"Custom suffix","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":"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":10.0,"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":1.0,"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 line width","LabelEmphasised":false,"Value":21.0,"Allowed":null,"Multi":false,"Prompt":null,"ErrorMessage":"Axis label line width: ","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":"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":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":"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":12.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":1.0,"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":"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":"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":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":"formValuesSuffix","Page":"Chart","Group":"VALUES (X) AXIS","Type":"TextBox","Label":"Custom suffix","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":"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":10.0,"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":1.0,"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":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":"Manual","warnSlow":false,"Options":{"debugconsole":false,"codeposition":"OutputOnly","splitH":0.45,"splitV":0.25,"update warnings":true,"updating":"Manual","warn slow":false}}