diff --git a/instat/UcrGeomListWithAes.vb b/instat/UcrGeomListWithAes.vb index f4028853efb..ef4c78eb9c2 100644 --- a/instat/UcrGeomListWithAes.vb +++ b/instat/UcrGeomListWithAes.vb @@ -344,7 +344,7 @@ Public Class ucrGeomListWithParameters 'This is a temporary solution to issue which should be solved with geoms 'This adds "" aes for x or y when no variables are mapped to them for geoms which require it, either adding to the global or local aes. - If clsGeomFunction.strRCommand = "geom_boxplot" OrElse clsGeomFunction.strRCommand = "geom_dotplot" Then + If clsGeomFunction.strRCommand = "geom_boxplot" OrElse clsGeomFunction.strRCommand = "geom_dotplot" OrElse clsGeomFunction.strRCommand = "geom_violin" Then If (clsGlobalAesFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "x") = -1 OrElse ucrChkIgnoreGlobalAes.Checked) AndAlso clsLocalAesFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "x") = -1 Then clsCurrentAesFunction.AddParameter("x", Chr(34) & Chr(34)) End If @@ -358,6 +358,9 @@ Public Class ucrGeomListWithParameters End If 'Adding stat = identity method If {"geom_bar", "geom_density", "geom_freqpoly"}.Contains(clsGeomFunction.strRCommand) Then + If (clsGlobalAesFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "x") = -1 OrElse ucrChkIgnoreGlobalAes.Checked) AndAlso clsLocalAesFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "x") = -1 Then + clsCurrentAesFunction.AddParameter("x", Chr(34) & Chr(34)) + End If 'If there is a y in the global aes, and the global aes are not ignored or if there is a y in the local aes then in case stat has not been set manually, stat is set to identity. If (((clsGlobalAesFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "y") <> -1) AndAlso ((clsGeomFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "inherit.aes") = -1) OrElse (Not ucrChkIgnoreGlobalAes.Checked))) OrElse (clsLocalAesFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "y") <> -1)) AndAlso (clsGeomFunction.clsParameters.FindIndex(Function(x) x.strArgumentName = "stat") = -1) Then clsGeomFunction.AddParameter("stat", Chr(34) & "identity" & Chr(34)) diff --git a/instat/dlgBoxPlot.designer.vb b/instat/dlgBoxPlot.designer.vb index ccb4edde49b..0dc0345dac6 100644 --- a/instat/dlgBoxPlot.designer.vb +++ b/instat/dlgBoxPlot.designer.vb @@ -70,6 +70,11 @@ Partial Class dlgBoxplot Me.ucrByFactorsReceiver = New instat.ucrReceiverSingle() Me.ucrBase = New instat.ucrButtons() Me.ucrPnlPlots = New instat.UcrPanel() + Me.ucrInputStation = New instat.ucrInputComboBox() + Me.ucr1stFactorReceiver = New instat.ucrReceiverSingle() + Me.lblFacetBy = New System.Windows.Forms.Label() + Me.ucrInputLegendPosition = New instat.ucrInputComboBox() + Me.ucrChkLegend = New instat.ucrCheck() Me.contextMenuStripOptions.SuspendLayout() Me.SuspendLayout() ' @@ -300,7 +305,7 @@ Partial Class dlgBoxplot 'ucrSaveBoxplot ' Me.ucrSaveBoxplot.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrSaveBoxplot.Location = New System.Drawing.Point(10, 384) + Me.ucrSaveBoxplot.Location = New System.Drawing.Point(10, 415) Me.ucrSaveBoxplot.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ucrSaveBoxplot.Name = "ucrSaveBoxplot" Me.ucrSaveBoxplot.Size = New System.Drawing.Size(328, 24) @@ -379,7 +384,7 @@ Partial Class dlgBoxplot ' Me.ucrBase.AutoSize = True Me.ucrBase.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrBase.Location = New System.Drawing.Point(10, 412) + Me.ucrBase.Location = New System.Drawing.Point(10, 442) Me.ucrBase.Name = "ucrBase" Me.ucrBase.Size = New System.Drawing.Size(408, 52) Me.ucrBase.TabIndex = 23 @@ -392,12 +397,72 @@ Partial Class dlgBoxplot Me.ucrPnlPlots.Size = New System.Drawing.Size(410, 35) Me.ucrPnlPlots.TabIndex = 0 ' + 'ucrInputStation + ' + Me.ucrInputStation.AddQuotesIfUnrecognised = True + Me.ucrInputStation.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.ucrInputStation.GetSetSelectedIndex = -1 + Me.ucrInputStation.IsReadOnly = False + Me.ucrInputStation.Location = New System.Drawing.Point(335, 390) + Me.ucrInputStation.Name = "ucrInputStation" + Me.ucrInputStation.Size = New System.Drawing.Size(86, 21) + Me.ucrInputStation.TabIndex = 26 + ' + 'ucr1stFactorReceiver + ' + Me.ucr1stFactorReceiver.AutoSize = True + Me.ucr1stFactorReceiver.frmParent = Me + Me.ucr1stFactorReceiver.Location = New System.Drawing.Point(222, 391) + Me.ucr1stFactorReceiver.Margin = New System.Windows.Forms.Padding(0) + Me.ucr1stFactorReceiver.Name = "ucr1stFactorReceiver" + Me.ucr1stFactorReceiver.Selector = Nothing + Me.ucr1stFactorReceiver.Size = New System.Drawing.Size(109, 26) + Me.ucr1stFactorReceiver.strNcFilePath = "" + Me.ucr1stFactorReceiver.TabIndex = 25 + Me.ucr1stFactorReceiver.ucrSelector = Nothing + ' + 'lblFacetBy + ' + Me.lblFacetBy.AutoSize = True + Me.lblFacetBy.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.lblFacetBy.Location = New System.Drawing.Point(222, 376) + Me.lblFacetBy.Name = "lblFacetBy" + Me.lblFacetBy.Size = New System.Drawing.Size(52, 13) + Me.lblFacetBy.TabIndex = 24 + Me.lblFacetBy.Tag = "" + Me.lblFacetBy.Text = "Facet By:" + ' + 'ucrInputLegendPosition + ' + Me.ucrInputLegendPosition.AddQuotesIfUnrecognised = True + Me.ucrInputLegendPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.ucrInputLegendPosition.GetSetSelectedIndex = -1 + Me.ucrInputLegendPosition.IsReadOnly = False + Me.ucrInputLegendPosition.Location = New System.Drawing.Point(105, 390) + Me.ucrInputLegendPosition.Name = "ucrInputLegendPosition" + Me.ucrInputLegendPosition.Size = New System.Drawing.Size(112, 21) + Me.ucrInputLegendPosition.TabIndex = 28 + ' + 'ucrChkLegend + ' + Me.ucrChkLegend.AutoSize = True + Me.ucrChkLegend.Checked = False + Me.ucrChkLegend.Location = New System.Drawing.Point(10, 388) + Me.ucrChkLegend.Name = "ucrChkLegend" + Me.ucrChkLegend.Size = New System.Drawing.Size(98, 24) + Me.ucrChkLegend.TabIndex = 27 + ' 'dlgBoxplot ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True - Me.ClientSize = New System.Drawing.Size(425, 466) + Me.ClientSize = New System.Drawing.Size(425, 497) + Me.Controls.Add(Me.ucrInputStation) + Me.Controls.Add(Me.ucr1stFactorReceiver) + Me.Controls.Add(Me.lblFacetBy) + Me.Controls.Add(Me.ucrInputLegendPosition) + Me.Controls.Add(Me.ucrChkLegend) Me.Controls.Add(Me.ucrInputSummaries) Me.Controls.Add(Me.cmdOptions) Me.Controls.Add(Me.ucrChkTufte) @@ -467,4 +532,9 @@ Partial Class dlgBoxplot Friend WithEvents toolStripMenuItemTufteOptions As ToolStripMenuItem Friend WithEvents ucrInputSummaries As ucrInputComboBox Friend WithEvents toolStripMenuItemSummaryOptions As ToolStripMenuItem + Friend WithEvents ucrInputStation As ucrInputComboBox + Friend WithEvents ucr1stFactorReceiver As ucrReceiverSingle + Friend WithEvents lblFacetBy As Label + Friend WithEvents ucrInputLegendPosition As ucrInputComboBox + Friend WithEvents ucrChkLegend As ucrCheck End Class diff --git a/instat/dlgBoxPlot.vb b/instat/dlgBoxPlot.vb index d9628ed6a70..302b50919dc 100644 --- a/instat/dlgBoxPlot.vb +++ b/instat/dlgBoxPlot.vb @@ -55,6 +55,22 @@ Public Class dlgBoxplot Private clsAddedJitterFunc As New RFunction Private clsXScaleDateFunction As New RFunction Private clsYScaleDateFunction As New RFunction + Private clsFacetsFunction As New RFunction + + Private clsFacetFunction As New RFunction + Private clsFacetVariablesOperator As New ROperator + Private clsFacetRowOp As New ROperator + Private clsFacetColOp As New ROperator + Private clsPipeOperator As New ROperator + Private clsGroupByFunction As New RFunction + + Private ReadOnly strFacetWrap As String = "Facet Wrap" + Private ReadOnly strFacetRow As String = "Facet Row" + Private ReadOnly strFacetCol As String = "Facet Column" + Private ReadOnly strNone As String = "None" + + Private bUpdateComboOptions As Boolean = True + Private bUpdatingParameters As Boolean = False 'Parameter names for geoms Private strFirstParameterName As String = "geomfunc" @@ -83,6 +99,7 @@ Public Class dlgBoxplot Dim clsCoordFlipParam As New RParameter Dim clsAddedJitterParam As New RParameter Dim dctSummaries As New Dictionary(Of String, String) + Dim dctLegendPosition As New Dictionary(Of String, String) ucrBase.clsRsyntax.bExcludeAssignedFunctionOutput = False ucrBase.iHelpTopicID = 436 ucrBase.clsRsyntax.iCallType = 3 @@ -95,7 +112,7 @@ Public Class dlgBoxplot ucrPnlPlots.AddFunctionNamesCondition(rdoJitter, "geom_jitter") ucrPnlPlots.AddFunctionNamesCondition(rdoViolin, "geom_violin") ucrPnlPlots.AddToLinkedControls(ucrChkAddPoints, {rdoBoxplotTufte, rdoViolin}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True) - ucrPnlPlots.AddToLinkedControls({ucrChkTufte}, {rdoBoxplotTufte}, bNewLinkedHideIfParameterMissing:=True) + ucrPnlPlots.AddToLinkedControls({ucrChkTufte}, {rdoBoxplotTufte}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True) ucrChkTufte.AddToLinkedControls(ucrChkVarWidth, {"FALSE"}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True) ucrSelectorBoxPlot.SetParameter(New RParameter("data", 0)) @@ -178,6 +195,31 @@ Public Class dlgBoxplot ucrInputSummaries.SetItems(dctSummaries) ucrInputSummaries.SetDropDownStyleAsNonEditable() + ucrChkLegend.SetText("Legend:") + ucrChkLegend.AddToLinkedControls({ucrInputLegendPosition}, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:="None") + ucrInputLegendPosition.SetDropDownStyleAsNonEditable() + ucrInputLegendPosition.SetParameter(New RParameter("legend.position")) + dctLegendPosition.Add("None", Chr(34) & "none" & Chr(34)) + dctLegendPosition.Add("Left", Chr(34) & "left" & Chr(34)) + dctLegendPosition.Add("Right", Chr(34) & "right" & Chr(34)) + dctLegendPosition.Add("Top", Chr(34) & "top" & Chr(34)) + dctLegendPosition.Add("Bottom", Chr(34) & "bottom" & Chr(34)) + ucrInputLegendPosition.SetItems(dctLegendPosition) + ucrChkLegend.AddParameterPresentCondition(True, "legend.position") + ucrChkLegend.AddParameterPresentCondition(False, "legend.position", False) + + ucr1stFactorReceiver.SetParameter(New RParameter("var1")) + ucr1stFactorReceiver.Selector = ucrSelectorBoxPlot + ucr1stFactorReceiver.SetIncludedDataTypes({"factor"}) + ucr1stFactorReceiver.strSelectorHeading = "Factors" + ucr1stFactorReceiver.bWithQuotes = False + ucr1stFactorReceiver.SetParameterIsString() + ucr1stFactorReceiver.SetValuesToIgnore({"."}) + ucr1stFactorReceiver.SetParameterPosition(1) + ucr1stFactorReceiver.SetLinkedDisplayControl(lblFacetBy) + + ucrInputStation.SetItems({strFacetWrap, strFacetRow, strFacetCol, strNone}) + ucrInputStation.SetDropDownStyleAsNonEditable() ucrChkGrouptoConnect.SetText("Group to Connect") ucrChkGrouptoConnect.AddToLinkedControls(ucrInputSummaries, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:="mean") @@ -196,6 +238,12 @@ Public Class dlgBoxplot clsRaesFunction = New RFunction clsLocalRaesFunction = New RFunction clsStatSummary = New RFunction + clsFacetFunction = New RFunction + clsFacetVariablesOperator = New ROperator + clsFacetRowOp = New ROperator + clsFacetColOp = New ROperator + clsPipeOperator = New ROperator + clsGroupByFunction = New RFunction 'Setting up new functions clsBoxplotFunction = New RFunction @@ -206,6 +254,9 @@ Public Class dlgBoxplot clsAddedJitterFunc.Clear() + ucrInputStation.SetName(strFacetWrap) + ucrInputStation.bUpdateRCodeFromControl = True + ucrSelectorBoxPlot.Reset() ucrSelectorBoxPlot.SetGgplotFunction(clsBaseOperator) @@ -265,6 +316,22 @@ Public Class dlgBoxplot clsStatSummary.AddParameter("group", 1, iPosition:=1) clsStatSummary.AddParameter("color", Chr(34) & "blue" & Chr(34), iPosition:=2) + clsFacetFunction.SetPackageName("ggplot2") + clsFacetRowOp.SetOperation("+") + clsFacetRowOp.bBrackets = False + clsFacetColOp.SetOperation("+") + clsFacetColOp.bBrackets = False + clsFacetVariablesOperator.SetOperation("~") + clsFacetVariablesOperator.bForceIncludeOperation = True + clsFacetVariablesOperator.bBrackets = False + clsFacetFunction.AddParameter("facets", clsROperatorParameter:=clsFacetVariablesOperator, iPosition:=0) + + clsPipeOperator.SetOperation("%>%") + SetPipeAssignTo() + + clsGroupByFunction.SetPackageName("dplyr") + clsGroupByFunction.SetRCommand("group_by") + clsBaseOperator.AddParameter(GgplotDefaults.clsDefaultThemeParameter.Clone()) clsXlabsFunction = GgplotDefaults.clsXlabTitleFunction.Clone() clsLabsFunction = GgplotDefaults.clsDefaultLabs.Clone() @@ -307,8 +374,12 @@ Public Class dlgBoxplot ucrInputSummaries.SetRCode(clsStatSummary, bReset) ucrChkGrouptoConnect.SetRCode(clsBaseOperator, bReset) ucrPnlPlots.SetRCode(clsCurrGeomFunction, bReset) - + ucrChkLegend.SetRCode(clsThemeFunction, bReset, bCloneIfNeeded:=True) + ucrInputLegendPosition.SetRCode(clsThemeFunction, bReset, bCloneIfNeeded:=True) ucrChkTufte.SetRCode(clsCurrGeomFunction, bReset) + If bReset Then + AutoFacetStation() + End If End Sub Private Sub TestOkEnabled() @@ -409,10 +480,22 @@ Public Class dlgBoxplot TestOkEnabled() End Sub + Private Sub AddRemoveTheme() + If clsThemeFunction.iParameterCount > 0 Then + clsBaseOperator.AddParameter("theme", clsRFunctionParameter:=clsThemeFunction, iPosition:=15) + Else + clsBaseOperator.RemoveParameterByName("theme") + End If + End Sub + + Private Sub ucrChkLegend_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkLegend.ControlValueChanged, ucrInputLegendPosition.ControlValueChanged + AddRemoveTheme() + End Sub + Private Sub cmdOptions_Click(sender As Object, e As EventArgs) Handles cmdOptions.Click, toolStripMenuItemPlotOptions.Click sdgPlots.SetRCode(clsNewOperator:=ucrBase.clsRsyntax.clsBaseOperator, clsNewYScalecontinuousFunction:=clsYScaleContinuousFunction, clsNewXScalecontinuousFunction:=clsXScaleContinuousFunction, clsNewXLabsTitleFunction:=clsXlabsFunction, clsNewYLabTitleFunction:=clsYlabFunction, clsNewLabsFunction:=clsLabsFunction, clsNewFacetFunction:=clsRFacetFunction, - clsNewThemeFunction:=clsThemeFunction, dctNewThemeFunctions:=dctThemeFunctions, clsNewGlobalAesFunction:=clsRaesFunction, ucrNewBaseSelector:=ucrSelectorBoxPlot, + clsNewThemeFunction:=clsThemeFunction, dctNewThemeFunctions:=dctThemeFunctions, clsNewGlobalAesFunction:=clsRaesFunction, ucrNewBaseSelector:=ucrSelectorBoxPlot, clsNewFacetVariablesOperator:=clsFacetVariablesOperator, clsNewCoordPolarFunction:=clsCoordPolarFunction, clsNewCoordPolarStartOperator:=clsCoordPolarStartOperator, clsNewXScaleDateFunction:=clsXScaleDateFunction, clsNewAnnotateFunction:=clsAnnotateFunction, clsNewScaleFillViridisFunction:=clsScaleFillViridisFunction, clsNewScaleColourViridisFunction:=clsScaleColourViridisFunction, clsNewYScaleDateFunction:=clsYScaleDateFunction, strMainDialogGeomParameterNames:=strGeomParameterNames, bReset:=bResetSubdialog) @@ -442,16 +525,187 @@ Public Class dlgBoxplot Private Sub DialogueSize() If rdoBoxplotTufte.Checked OrElse rdoViolin.Checked Then - Me.Size = New Size(441, 505) - Me.ucrSaveBoxplot.Location = New Point(10, 384) - Me.ucrBase.Location = New Point(10, 413) + Me.Size = New Size(441, 536) + Me.ucrChkLegend.Location = New Size(10, 388) + Me.ucrInputLegendPosition.Location = New Size(105, 390) + Me.ucrInputStation.Location = New Size(335, 390) + Me.ucr1stFactorReceiver.Location = New Size(222, 391) + Me.lblFacetBy.Location = New Size(222, 376) + Me.ucrSaveBoxplot.Location = New Point(10, 418) + Me.ucrBase.Location = New Point(10, 442) Else - Me.Size = New Size(441, 479) - Me.ucrSaveBoxplot.Location = New Point(10, 356) - Me.ucrBase.Location = New Point(10, 384) + Me.Size = New Size(441, 500) + Me.ucrChkLegend.Location = New Size(10, 358) + Me.ucrInputLegendPosition.Location = New Size(105, 360) + Me.ucrInputStation.Location = New Size(335, 360) + Me.ucr1stFactorReceiver.Location = New Size(222, 361) + Me.lblFacetBy.Location = New Size(222, 346) + Me.ucrSaveBoxplot.Location = New Point(10, 390) + Me.ucrBase.Location = New Point(10, 415) End If End Sub + Private Sub AutoFacetStation() + Dim ucrCurrentReceiver As ucrReceiver = Nothing + + If ucrSelectorBoxPlot.CurrentReceiver IsNot Nothing Then + ucrCurrentReceiver = ucrSelectorBoxPlot.CurrentReceiver + End If + ucr1stFactorReceiver.AddItemsWithMetadataProperty(ucrSelectorBoxPlot.ucrAvailableDataFrames.cboAvailableDataFrames.Text, "Climatic_Type", {"station_label"}) + If ucrCurrentReceiver IsNot Nothing Then + ucrCurrentReceiver.SetMeAsReceiver() + End If + AddRemoveGroupBy() + End Sub + + Private Sub ucrInput_ControlValueChanged(ucrChangedControl As ucrInputComboBox) Handles ucrInputStation.ControlValueChanged + If Not bUpdateComboOptions Then + Exit Sub + End If + Dim strChangedText As String = ucrChangedControl.GetText() + If strChangedText <> strNone Then + If Not strChangedText = strFacetCol AndAlso Not strChangedText = strFacetRow AndAlso + Not ucrInputStation.Equals(ucrChangedControl) AndAlso ucrInputStation.GetText() = strChangedText Then + bUpdateComboOptions = False + ucrInputStation.SetName(strNone) + bUpdateComboOptions = True + End If + If (strChangedText = strFacetWrap AndAlso ucrInputStation.GetText = strFacetRow) OrElse (strChangedText = strFacetRow AndAlso + ucrInputStation.GetText = strFacetWrap) OrElse (strChangedText = strFacetWrap AndAlso + ucrInputStation.GetText = strFacetCol) OrElse (strChangedText = strFacetCol AndAlso ucrInputStation.GetText = strFacetWrap) Then + ucrInputStation.SetName(strNone) + End If + End If + UpdateParameters() + AddRemoveFacets() + AddRemoveGroupBy() + End Sub + + Private Sub UpdateParameters() + clsFacetVariablesOperator.RemoveParameterByName("var1") + clsFacetColOp.RemoveParameterByName("col" & ucrInputStation.Name) + clsFacetRowOp.RemoveParameterByName("row" & ucrInputStation.Name) + + clsBaseOperator.RemoveParameterByName("facets") + bUpdatingParameters = True + ucr1stFactorReceiver.SetRCode(Nothing) + Select Case ucrInputStation.GetText() + Case strFacetWrap + ucr1stFactorReceiver.ChangeParameterName("var1") + ucr1stFactorReceiver.SetRCode(clsFacetVariablesOperator) + Case strFacetCol + ucr1stFactorReceiver.ChangeParameterName("col" & ucrInputStation.Name) + ucr1stFactorReceiver.SetRCode(clsFacetColOp) + Case strFacetRow + ucr1stFactorReceiver.ChangeParameterName("row" & ucrInputStation.Name) + ucr1stFactorReceiver.SetRCode(clsFacetRowOp) + End Select + If Not clsRaesFunction.ContainsParameter("x") Then + clsRaesFunction.AddParameter("x", Chr(34) & Chr(34)) + End If + bUpdatingParameters = False + End Sub + + Private Sub AddRemoveFacets() + Dim bWrap As Boolean = False + Dim bCol As Boolean = False + Dim bRow As Boolean = False + + If bUpdatingParameters Then + Exit Sub + End If + + clsBaseOperator.RemoveParameterByName("facets") + If Not ucr1stFactorReceiver.IsEmpty Then + Select Case ucrInputStation.GetText() + Case strFacetWrap + bWrap = True + Case strFacetCol + bCol = True + Case strFacetRow + bRow = True + End Select + End If + + If bWrap OrElse bRow OrElse bCol Then + clsBaseOperator.AddParameter("facets", clsRFunctionParameter:=clsFacetFunction) + End If + If bWrap Then + clsFacetFunction.SetRCommand("facet_wrap") + End If + If bRow OrElse bCol Then + clsFacetFunction.SetRCommand("facet_grid") + End If + If bRow Then + clsFacetVariablesOperator.AddParameter("left", clsROperatorParameter:=clsFacetRowOp, iPosition:=0) + ElseIf bCol AndAlso bWrap = False Then + clsFacetVariablesOperator.AddParameter("left", ".", iPosition:=0) + Else + clsFacetVariablesOperator.RemoveParameterByName("left") + End If + If bCol Then + clsFacetVariablesOperator.AddParameter("right", clsROperatorParameter:=clsFacetColOp, iPosition:=1) + ElseIf bRow AndAlso bWrap = False Then + clsFacetVariablesOperator.AddParameter("right", ".", iPosition:=1) + Else + clsFacetVariablesOperator.RemoveParameterByName("right") + End If + End Sub + + Private Sub ucr1stFactorReceiver_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucr1stFactorReceiver.ControlValueChanged, ucrByFactorsReceiver.ControlValueChanged + AddRemoveFacets() + AddRemoveGroupBy() + End Sub + + Private Sub GetParameterValue(clsOperator As ROperator) + Dim i As Integer = 0 + For Each clsTempParam As RParameter In clsOperator.clsParameters + If clsTempParam.strArgumentValue <> "" AndAlso clsTempParam.strArgumentValue <> "." Then + clsGroupByFunction.AddParameter(i, clsTempParam.strArgumentValue, bIncludeArgumentName:=False, iPosition:=i) + i = i + 1 + End If + Next + End Sub + + Private Sub AddRemoveGroupBy() + If clsPipeOperator.ContainsParameter("mutate") Then + clsGroupByFunction.ClearParameters() + If clsBaseOperator.ContainsParameter("facets") Then + Select Case ucrInputStation.GetText() + Case strFacetWrap + GetParameterValue(clsFacetVariablesOperator) + Case strFacetCol + GetParameterValue(clsFacetColOp) + Case strFacetRow + GetParameterValue(clsFacetRowOp) + End Select + End If + + If clsGroupByFunction.iParameterCount > 0 Then + clsPipeOperator.AddParameter("group_by", clsRFunctionParameter:=clsGroupByFunction, iPosition:=1) + Else + clsPipeOperator.RemoveParameterByName("group_by") + End If + Else + clsPipeOperator.RemoveParameterByName("group_by") + End If + + SetPipeAssignTo() + End Sub + + Private Sub SetPipeAssignTo() + If ucrSelectorBoxPlot.ucrAvailableDataFrames.cboAvailableDataFrames.Text <> "" AndAlso clsPipeOperator.clsParameters.Count > 1 Then + clsPipeOperator.SetAssignTo(ucrSelectorBoxPlot.ucrAvailableDataFrames.cboAvailableDataFrames.Text) + Else + clsPipeOperator.RemoveAssignTo() + End If + End Sub + + Private Sub ucrSelectorBoxPlot_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSelectorBoxPlot.ControlValueChanged + AutoFacetStation() + SetPipeAssignTo() + End Sub + Private Sub ucrSaveBoxplot_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrSaveBoxplot.ControlContentsChanged, ucrVariablesAsFactorForBoxplot.ControlContentsChanged TestOkEnabled() End Sub diff --git a/instat/static/InstatObject/R/instat_object_R6.R b/instat/static/InstatObject/R/instat_object_R6.R index 53a7c82fb5e..fd19d0d0f00 100644 --- a/instat/static/InstatObject/R/instat_object_R6.R +++ b/instat/static/InstatObject/R/instat_object_R6.R @@ -1921,14 +1921,14 @@ DataBook$set("public", "export_workspace", function(data_names, file, include_gr for(temp_name in data_names) { e[[temp_name]] <- self$get_data_frame(temp_name, use_current_filter = FALSE) if(include_graphs) { - graphs <- self$get_graphs(temp_name) + graphs <- self$get_objects(data_name = temp_name, object_type_label = "graph") graph_names <- names(graphs) for(i in seq_along(graphs)) { e[[paste(temp_name, graph_names[i], sep = "_")]] <- graphs[[i]] } } if(include_models) { - models <- self$get_models(temp_name) + models <- self$get_objects(data_name = temp_name, object_type_label = "model") model_names <- names(models) for(i in seq_along(models)) { e[[paste(temp_name, model_names[i], sep = "_")]] <- models[[i]]