diff --git a/instat/Model/DataFrame/clsDataFrame.vb b/instat/Model/DataFrame/clsDataFrame.vb
index c51d6d523f..dc3de08652 100644
--- a/instat/Model/DataFrame/clsDataFrame.vb
+++ b/instat/Model/DataFrame/clsDataFrame.vb
@@ -181,6 +181,7 @@ Public Class clsDataFrame
Else
bRefreshed = False
End If
+ _clsVisibleDataFramePage.HasDataChangedForAutoSave = True
End If
_clsColumnMetaData.RefreshData()
Return bRefreshed
diff --git a/instat/Model/DataFrame/clsDataFramePage.vb b/instat/Model/DataFrame/clsDataFramePage.vb
index 0131071054..2dbf663ab1 100644
--- a/instat/Model/DataFrame/clsDataFramePage.vb
+++ b/instat/Model/DataFrame/clsDataFramePage.vb
@@ -31,6 +31,7 @@ Public Class clsDataFramePage
Private _lstColumns As List(Of clsColumnHeaderDisplay)
Private _hasChanged As Boolean
Private _useColumnSelectionInDataView As Boolean
+ Private _HasDataChangedForAutoSave As Boolean
Private ReadOnly Property iColumnIncrements As Integer
Get
@@ -140,6 +141,19 @@ Public Class clsDataFramePage
End Set
End Property
+ '''
+ ''' holds whether the dataframe is different from visual grid component and trigger auto save
+ '''
+ '''
+ Public Property HasDataChangedForAutoSave() As Boolean
+ Get
+ Return _HasDataChangedForAutoSave
+ End Get
+ Set(ByVal value As Boolean)
+ _HasDataChangedForAutoSave = value
+ End Set
+ End Property
+
'''
''' Create a new instance of a dataframe page
'''
@@ -152,6 +166,7 @@ Public Class clsDataFramePage
_iColumnStart = 1
_iRowStart = 1
_hasChanged = True
+ _HasDataChangedForAutoSave = True
_useColumnSelectionInDataView = True
End Sub
diff --git a/instat/dlgCalculator.vb b/instat/dlgCalculator.vb
index c7eee20e0a..31c557a35f 100644
--- a/instat/dlgCalculator.vb
+++ b/instat/dlgCalculator.vb
@@ -122,10 +122,8 @@ Public Class dlgCalculator
clsDetachScalarsFunction.AddParameter("unload", "TRUE")
ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachFunction, 0)
- ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachScalarsFunction, 1)
ucrBase.clsRsyntax.AddToAfterCodes(clsDetachFunction, 1)
- ucrBase.clsRsyntax.AddToAfterCodes(clsDetachScalarsFunction, 2)
ucrBase.clsRsyntax.SetCommandString("")
@@ -204,7 +202,11 @@ Public Class dlgCalculator
Dim strResut As String = ucrCalc.ucrSaveResultInto.GetText
clsAddScalarFunction.AddParameter("scalar_name", Chr(34) & strResut & Chr(34), iPosition:=1)
clsAddScalarFunction.AddParameter("scalar_value", strResut, iPosition:=2)
+ clsAddScalarFunction.AddParameter("data_name", Chr(34) & dataFrameName & Chr(34), iPosition:=0)
+ clsScalarsDataFuntion.AddParameter("data_name", Chr(34) & dataFrameName & Chr(34), iPosition:=0)
ucrBase.clsRsyntax.AddToAfterCodes(clsAddScalarFunction, 0)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachScalarsFunction, 1)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsDetachScalarsFunction, 2)
ucrBase.clsRsyntax.SetAssignTo(strResut)
ucrCalc.ucrSaveResultInto.btnColumnPosition.Enabled = False
ucrCalc.ucrSaveResultInto.btnColumnPosition.Visible = True
@@ -212,14 +214,22 @@ Public Class dlgCalculator
ucrCalc.ucrSaveResultInto.ucrChkSave.Enabled = False
ucrCalc.ucrSaveResultInto.ucrInputComboSave.Visible = True
ucrCalc.ucrSaveResultInto.ucrInputComboSave.Enabled = True
+ ElseIf ucrCalc.ucrSelectorForCalculations.checkBoxScalar.Checked Then
+ Dim strResut As String = ucrCalc.ucrSaveResultInto.GetText
+ clsAddScalarFunction.AddParameter("data_name", Chr(34) & dataFrameName & Chr(34), iPosition:=0)
+ clsScalarsDataFuntion.AddParameter("data_name", Chr(34) & dataFrameName & Chr(34), iPosition:=0)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsAddScalarFunction, 0)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachScalarsFunction, 1)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsDetachScalarsFunction, 2)
Else
ucrBase.clsRsyntax.RemoveFromAfterCodes(clsAddScalarFunction)
+ ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsAttachScalarsFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsDetachScalarsFunction)
ucrCalc.ucrSaveResultInto.btnColumnPosition.Enabled = True
ucrCalc.ucrSaveResultInto.btnColumnPosition.Visible = True
ucrCalc.ucrSaveResultInto.ucrChkSave.Enabled = True
ucrCalc.ucrSaveResultInto.ucrInputComboSave.Visible = True
ucrCalc.ucrSaveResultInto.ucrInputComboSave.Enabled = True
-
End If
' Update command string and clear input try message name
@@ -253,7 +263,6 @@ Public Class dlgCalculator
ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachScalarsFunction, 1)
ucrBase.clsRsyntax.AddToAfterCodes(clsDetachFunction, 1)
- ucrBase.clsRsyntax.AddToAfterCodes(clsDetachScalarsFunction, 2)
ucrCalc.ucrSaveResultInto.Enabled = True
ucrCalc.ucrChkStoreScalar.Visible = True
Else
diff --git a/instat/dlgClimaticLengthOfSeason.Designer.vb b/instat/dlgClimaticLengthOfSeason.Designer.vb
index 25c8f8d3ee..e245d05139 100644
--- a/instat/dlgClimaticLengthOfSeason.Designer.vb
+++ b/instat/dlgClimaticLengthOfSeason.Designer.vb
@@ -36,6 +36,8 @@ Partial Class dlgClimaticLengthOfSeason
Me.ucrReceiverStartofRains = New instat.ucrReceiverSingle()
Me.ucrSelectorLengthofSeason = New instat.ucrSelectorByDataFrameAddRemove()
Me.ucrBase = New instat.ucrButtons()
+ Me.ucrChkLengthmore = New instat.ucrCheck()
+ Me.ucrNudLenghtmore = New instat.ucrNud()
Me.SuspendLayout()
'
'lblStartofRains
@@ -50,16 +52,16 @@ Partial Class dlgClimaticLengthOfSeason
'lblStartofRainsLogical
'
Me.lblStartofRainsLogical.AutoSize = True
- Me.lblStartofRainsLogical.Location = New System.Drawing.Point(281, 86)
+ Me.lblStartofRainsLogical.Location = New System.Drawing.Point(281, 75)
Me.lblStartofRainsLogical.Name = "lblStartofRainsLogical"
- Me.lblStartofRainsLogical.Size = New System.Drawing.Size(44, 13)
+ Me.lblStartofRainsLogical.Size = New System.Drawing.Size(80, 13)
Me.lblStartofRainsLogical.TabIndex = 3
- Me.lblStartofRainsLogical.Text = "Start(L):"
+ Me.lblStartofRainsLogical.Text = "Start Status (L):"
'
'lblEndofRains
'
Me.lblEndofRains.AutoSize = True
- Me.lblEndofRains.Location = New System.Drawing.Point(280, 136)
+ Me.lblEndofRains.Location = New System.Drawing.Point(280, 120)
Me.lblEndofRains.Name = "lblEndofRains"
Me.lblEndofRains.Size = New System.Drawing.Size(29, 13)
Me.lblEndofRains.TabIndex = 5
@@ -68,17 +70,17 @@ Partial Class dlgClimaticLengthOfSeason
'lblEndofRainsLogical
'
Me.lblEndofRainsLogical.AutoSize = True
- Me.lblEndofRainsLogical.Location = New System.Drawing.Point(280, 182)
+ Me.lblEndofRainsLogical.Location = New System.Drawing.Point(280, 166)
Me.lblEndofRainsLogical.Name = "lblEndofRainsLogical"
- Me.lblEndofRainsLogical.Size = New System.Drawing.Size(41, 13)
+ Me.lblEndofRainsLogical.Size = New System.Drawing.Size(77, 13)
Me.lblEndofRainsLogical.TabIndex = 7
- Me.lblEndofRainsLogical.Text = "End(L):"
+ Me.lblEndofRainsLogical.Text = "End Status (L):"
'
'ucrChkType
'
Me.ucrChkType.AutoSize = True
Me.ucrChkType.Checked = False
- Me.ucrChkType.Location = New System.Drawing.Point(5, 279)
+ Me.ucrChkType.Location = New System.Drawing.Point(5, 260)
Me.ucrChkType.Name = "ucrChkType"
Me.ucrChkType.Size = New System.Drawing.Size(87, 23)
Me.ucrChkType.TabIndex = 11
@@ -87,7 +89,7 @@ Partial Class dlgClimaticLengthOfSeason
'
Me.ucrChkLengthofSeason.AutoSize = True
Me.ucrChkLengthofSeason.Checked = False
- Me.ucrChkLengthofSeason.Location = New System.Drawing.Point(5, 247)
+ Me.ucrChkLengthofSeason.Location = New System.Drawing.Point(5, 228)
Me.ucrChkLengthofSeason.Name = "ucrChkLengthofSeason"
Me.ucrChkLengthofSeason.Size = New System.Drawing.Size(143, 23)
Me.ucrChkLengthofSeason.TabIndex = 9
@@ -98,7 +100,7 @@ Partial Class dlgClimaticLengthOfSeason
Me.ucrInputTextType.AutoSize = True
Me.ucrInputTextType.IsMultiline = False
Me.ucrInputTextType.IsReadOnly = False
- Me.ucrInputTextType.Location = New System.Drawing.Point(149, 278)
+ Me.ucrInputTextType.Location = New System.Drawing.Point(149, 259)
Me.ucrInputTextType.Name = "ucrInputTextType"
Me.ucrInputTextType.Size = New System.Drawing.Size(137, 21)
Me.ucrInputTextType.TabIndex = 12
@@ -109,7 +111,7 @@ Partial Class dlgClimaticLengthOfSeason
Me.ucrInputLengthofSeason.AutoSize = True
Me.ucrInputLengthofSeason.IsMultiline = False
Me.ucrInputLengthofSeason.IsReadOnly = False
- Me.ucrInputLengthofSeason.Location = New System.Drawing.Point(149, 246)
+ Me.ucrInputLengthofSeason.Location = New System.Drawing.Point(149, 227)
Me.ucrInputLengthofSeason.Name = "ucrInputLengthofSeason"
Me.ucrInputLengthofSeason.Size = New System.Drawing.Size(137, 21)
Me.ucrInputLengthofSeason.TabIndex = 10
@@ -118,7 +120,7 @@ Partial Class dlgClimaticLengthOfSeason
'
Me.ucrReceiverStartofRainsLogical.AutoSize = True
Me.ucrReceiverStartofRainsLogical.frmParent = Me
- Me.ucrReceiverStartofRainsLogical.Location = New System.Drawing.Point(283, 103)
+ Me.ucrReceiverStartofRainsLogical.Location = New System.Drawing.Point(283, 92)
Me.ucrReceiverStartofRainsLogical.Margin = New System.Windows.Forms.Padding(0)
Me.ucrReceiverStartofRainsLogical.Name = "ucrReceiverStartofRainsLogical"
Me.ucrReceiverStartofRainsLogical.Selector = Nothing
@@ -131,7 +133,7 @@ Partial Class dlgClimaticLengthOfSeason
'
Me.ucrReceiverEndofRainsLogical.AutoSize = True
Me.ucrReceiverEndofRainsLogical.frmParent = Me
- Me.ucrReceiverEndofRainsLogical.Location = New System.Drawing.Point(283, 198)
+ Me.ucrReceiverEndofRainsLogical.Location = New System.Drawing.Point(283, 182)
Me.ucrReceiverEndofRainsLogical.Margin = New System.Windows.Forms.Padding(0)
Me.ucrReceiverEndofRainsLogical.Name = "ucrReceiverEndofRainsLogical"
Me.ucrReceiverEndofRainsLogical.Selector = Nothing
@@ -144,7 +146,7 @@ Partial Class dlgClimaticLengthOfSeason
'
Me.ucrReceiverEndofRains.AutoSize = True
Me.ucrReceiverEndofRains.frmParent = Me
- Me.ucrReceiverEndofRains.Location = New System.Drawing.Point(283, 152)
+ Me.ucrReceiverEndofRains.Location = New System.Drawing.Point(283, 136)
Me.ucrReceiverEndofRains.Margin = New System.Windows.Forms.Padding(0)
Me.ucrReceiverEndofRains.Name = "ucrReceiverEndofRains"
Me.ucrReceiverEndofRains.Selector = Nothing
@@ -182,17 +184,41 @@ Partial Class dlgClimaticLengthOfSeason
'
Me.ucrBase.AutoSize = True
Me.ucrBase.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
- Me.ucrBase.Location = New System.Drawing.Point(5, 311)
+ Me.ucrBase.Location = New System.Drawing.Point(5, 328)
Me.ucrBase.Name = "ucrBase"
Me.ucrBase.Size = New System.Drawing.Size(408, 52)
Me.ucrBase.TabIndex = 13
'
+ 'ucrChkLengthmore
+ '
+ Me.ucrChkLengthmore.AutoSize = True
+ Me.ucrChkLengthmore.Checked = False
+ Me.ucrChkLengthmore.Location = New System.Drawing.Point(5, 293)
+ Me.ucrChkLengthmore.Name = "ucrChkLengthmore"
+ Me.ucrChkLengthmore.Size = New System.Drawing.Size(143, 23)
+ Me.ucrChkLengthmore.TabIndex = 14
+ '
+ 'ucrNudLenghtmore
+ '
+ Me.ucrNudLenghtmore.AutoSize = True
+ Me.ucrNudLenghtmore.DecimalPlaces = New Decimal(New Integer() {0, 0, 0, 0})
+ Me.ucrNudLenghtmore.Increment = New Decimal(New Integer() {1, 0, 0, 0})
+ Me.ucrNudLenghtmore.Location = New System.Drawing.Point(149, 291)
+ Me.ucrNudLenghtmore.Maximum = New Decimal(New Integer() {100, 0, 0, 0})
+ Me.ucrNudLenghtmore.Minimum = New Decimal(New Integer() {0, 0, 0, 0})
+ Me.ucrNudLenghtmore.Name = "ucrNudLenghtmore"
+ Me.ucrNudLenghtmore.Size = New System.Drawing.Size(50, 20)
+ Me.ucrNudLenghtmore.TabIndex = 15
+ Me.ucrNudLenghtmore.Value = New Decimal(New Integer() {0, 0, 0, 0})
+ '
'dlgClimaticLengthOfSeason
'
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(416, 365)
+ Me.ClientSize = New System.Drawing.Size(416, 384)
+ Me.Controls.Add(Me.ucrNudLenghtmore)
+ Me.Controls.Add(Me.ucrChkLengthmore)
Me.Controls.Add(Me.ucrChkType)
Me.Controls.Add(Me.ucrChkLengthofSeason)
Me.Controls.Add(Me.ucrInputTextType)
@@ -230,4 +256,6 @@ Partial Class dlgClimaticLengthOfSeason
Friend WithEvents ucrChkLengthofSeason As ucrCheck
Friend WithEvents ucrInputTextType As ucrInputTextBox
Friend WithEvents ucrInputLengthofSeason As ucrInputTextBox
+ Friend WithEvents ucrNudLenghtmore As ucrNud
+ Friend WithEvents ucrChkLengthmore As ucrCheck
End Class
diff --git a/instat/dlgClimaticLengthOfSeason.vb b/instat/dlgClimaticLengthOfSeason.vb
index e6221ade61..673c14b017 100644
--- a/instat/dlgClimaticLengthOfSeason.vb
+++ b/instat/dlgClimaticLengthOfSeason.vb
@@ -20,8 +20,8 @@ Public Class dlgClimaticLengthOfSeason
Private bReset As Boolean = True
Private strCurrDataName As String = ""
- Private clsLengthOfSeasonFunction, clsConvertColumnTypeFunction, clsApplyInstatCalcFunction, clsAsCharacterFunction, clsCombinationCalcFunction, clsStartEndStatusFunction, clsCaseWhenFunction, clsIsNAFunction, clsIsNA1Function, clsCombinationListFunction As New RFunction
- Private clsMinusOpertor, clsAndOperator, clsOROperator, clsCaseWhenOperator, clsCaseWhen1Operator, clsCaseWhen2Operator, clsCaseWhen3Operator, clsAssignOperator, clsAssign1Operator, clsAssign2Operator, clsAssign3Operator, clsAssign4Operator, clsAnd1Operator, clsAnd2Operator As New ROperator
+ Private clsLengthOfSeasonFunction, clsLengthmoreFunction, clsListFunction, clsAscharactermoreFunction, clsConvertColumnTypeFunction, clsElseIfMoreFunction, clsApplyInstatCalcFunction, clsAsCharacterFunction, clsCombinationCalcFunction, clsStartEndStatusFunction, clsCaseWhenFunction, clsIsNAFunction, clsIsNA1Function, clsCombinationListFunction As New RFunction
+ Private clsMinusOpertor, clsAssignMoreOperator, clsMinusmoreOPerator, clsAndOperator, clsOROperator, clsCaseWhenOperator, clsCaseWhen1Operator, clsCaseWhen2Operator, clsCaseWhen3Operator, clsAssignOperator, clsAssign1Operator, clsAssign2Operator, clsAssign3Operator, clsAssign4Operator, clsAnd1Operator, clsAnd2Operator As New ROperator
Private Sub dlgClimaticLengthOfSeason_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If bFirstLoad Then
@@ -77,12 +77,28 @@ Public Class dlgClimaticLengthOfSeason
ucrInputTextType.SetParameter(New RParameter("result_name", 2))
ucrInputTextType.SetDataFrameSelector(ucrSelectorLengthofSeason.ucrAvailableDataFrames)
ucrInputTextType.SetName("length_status")
+
+ ucrChkLengthmore.SetText("Length_More")
+ ucrChkLengthmore.AddParameterPresentCondition(True, "sub3", True)
+ ucrChkLengthmore.AddParameterPresentCondition(False, "sub3", False)
+ ucrChkLengthmore.AddToLinkedControls(ucrNudLenghtmore, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:=366)
+
+ ucrNudLenghtmore.SetParameter(New RParameter("left", 0, False))
+ ucrNudLenghtmore.DecimalPlaces = 0
+ ucrNudLenghtmore.Increment = 1
+ ucrNudLenghtmore.Minimum = 1
+ ucrNudLenghtmore.Maximum = 366
+ EnableLengthmore()
End Sub
Private Sub SetDefaults()
Dim strLengthName As String = "length"
Dim strTypeName As String = "length_status"
+ clsAscharactermoreFunction = New RFunction
+ clsListFunction = New RFunction
+ clsMinusmoreOPerator =New ROperator
+
clsLengthOfSeasonFunction.Clear()
clsCombinationCalcFunction.Clear()
clsApplyInstatCalcFunction.Clear()
@@ -91,7 +107,10 @@ Public Class dlgClimaticLengthOfSeason
clsIsNAFunction.Clear()
clsIsNA1Function.Clear()
clsAsCharacterFunction.Clear()
+ clsLengthmoreFunction.Clear()
+ clsElseIfMoreFunction.Clear()
+ clsAssignMoreOperator.Clear()
clsMinusOpertor.Clear()
clsAndOperator.Clear()
clsOROperator.Clear()
@@ -217,6 +236,30 @@ Public Class dlgClimaticLengthOfSeason
clsConvertColumnTypeFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
clsConvertColumnTypeFunction.AddParameter("to_type", Chr(34) & "factor" & Chr(34), iPosition:=2)
+ clsLengthmoreFunction.SetRCommand("instat_calculation$new")
+ clsLengthmoreFunction.AddParameter("type", Chr(34) & "calculation" & Chr(34), iPosition:=0)
+ clsLengthmoreFunction.AddParameter("function_exp", clsRFunctionParameter:=clsElseIfMoreFunction, iPosition:=1)
+ clsLengthmoreFunction.AddParameter("sub_calculations", clsRFunctionParameter:=clsListFunction, iPosition:=4)
+ clsLengthmoreFunction.AddParameter("save", 2, iPosition:=5)
+ clsLengthmoreFunction.SetAssignTo("length_more")
+
+ clsListFunction.SetRCommand("list")
+ clsListFunction.AddParameter("x", "start_end_status", iPosition:=0, bIncludeArgumentName:=False)
+ clsListFunction.AddParameter("y", "length_of_season", iPosition:=1, bIncludeArgumentName:=False)
+
+ clsElseIfMoreFunction.SetRCommand("ifelse")
+ clsElseIfMoreFunction.bToScriptAsRString = True
+ clsElseIfMoreFunction.AddParameter("test", clsROperatorParameter:=clsAssignMoreOperator, iPosition:=0, bIncludeArgumentName:=False)
+ clsElseIfMoreFunction.AddParameter("yes", clsROperatorParameter:=clsMinusmoreOPerator, iPosition:=1, bIncludeArgumentName:=False)
+
+ clsAssignMoreOperator.SetOperation("==")
+ clsAssignMoreOperator.AddParameter("left", clsRFunctionParameter:=clsAscharactermoreFunction, iPosition:=0, bIncludeArgumentName:=False)
+ clsAssignMoreOperator.AddParameter("rigth", Chr(34) & "MORE" & Chr(34), iPosition:=1, bIncludeArgumentName:=False)
+
+ clsAscharactermoreFunction.SetRCommand("as.character")
+
+ clsMinusmoreOPerator.SetOperation("-")
+
'Base Function
ucrBase.clsRsyntax.ClearCodes()
ucrBase.clsRsyntax.SetBaseRFunction(clsApplyInstatCalcFunction)
@@ -233,6 +276,7 @@ Public Class dlgClimaticLengthOfSeason
ucrReceiverEndofRainsLogical.AddAdditionalCodeParameterPair(clsAnd2Operator, New RParameter("end_status", 1), iAdditionalPairNo:=4)
ucrReceiverStartofRainsLogical.AddAdditionalCodeParameterPair(clsAssign3Operator, New RParameter("start_status", 0), iAdditionalPairNo:=5)
ucrInputTextType.AddAdditionalCodeParameterPair(clsConvertColumnTypeFunction, New RParameter("col_names", 1), iAdditionalPairNo:=1)
+ ucrReceiverStartofRains.AddAdditionalCodeParameterPair(clsMinusmoreOPerator, New RParameter("rigth", 1, bNewIncludeArgumentName:=False), iAdditionalPairNo:=1)
ucrReceiverStartofRains.SetRCode(clsMinusOpertor, bReset)
ucrReceiverEndofRains.SetRCode(clsMinusOpertor, bReset)
@@ -242,6 +286,8 @@ Public Class dlgClimaticLengthOfSeason
ucrInputTextType.SetRCode(clsStartEndStatusFunction, bReset)
ucrChkLengthofSeason.SetRCode(clsCombinationListFunction, bReset)
ucrChkType.SetRCode(clsCombinationListFunction, bReset)
+ ucrChkLengthmore.SetRCode(clsCombinationListFunction, bReset)
+ ucrNudLenghtmore.SetRCode(clsMinusmoreOPerator, bReset)
End Sub
Private Sub TestOKEnabled()
@@ -288,6 +334,7 @@ Public Class dlgClimaticLengthOfSeason
End Sub
Private Sub ucrChkType_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkType.ControlValueChanged
+ EnableLengthmore()
If ucrChkType.Checked Then
clsCombinationListFunction.AddParameter("sub2", clsRFunctionParameter:=clsStartEndStatusFunction, bIncludeArgumentName:=False, iPosition:=1)
ucrBase.clsRsyntax.AddToAfterCodes(clsConvertColumnTypeFunction, iPosition:=0)
@@ -305,4 +352,35 @@ Public Class dlgClimaticLengthOfSeason
Private Sub ucrSelectorLengthofSeason_DataFrameChanged() Handles ucrSelectorLengthofSeason.DataFrameChanged
clsConvertColumnTypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorLengthofSeason.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
End Sub
+
+ Private Sub ucrChkLengthmore_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkLengthmore.ControlValueChanged
+ EnableLengthmore()
+ If ucrChkLengthmore.Checked Then
+ clsCombinationListFunction.AddParameter("sub3", clsRFunctionParameter:=clsLengthmoreFunction, bIncludeArgumentName:=False, iPosition:=2)
+ Else
+ clsCombinationListFunction.RemoveParameterByName("sub3")
+ End If
+ End Sub
+
+ Private Sub EnableLengthmore()
+ ucrChkLengthmore.Enabled = ucrChkType.Checked
+ End Sub
+
+ Private Sub ucrInputLengthofSeason_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrInputLengthofSeason.ControlValueChanged
+ If Not ucrInputLengthofSeason.IsEmpty Then
+ clsElseIfMoreFunction.AddParameter("no", ucrInputLengthofSeason.GetText(), iPosition:=2, bIncludeArgumentName:=False)
+ clsLengthmoreFunction.AddParameter("result_name", Chr(34) & ucrInputLengthofSeason.GetText & "_more" & Chr(34), iPosition:=2)
+ Else
+ clsElseIfMoreFunction.RemoveParameterByName("no")
+ clsLengthmoreFunction.RemoveParameterByName("result_name")
+ End If
+ End Sub
+
+ Private Sub ucrInputTextType_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrInputTextType.ControlValueChanged
+ If Not ucrInputTextType.IsEmpty Then
+ clsAscharactermoreFunction.AddParameter("x", ucrInputTextType.GetText(), iPosition:=0, bIncludeArgumentName:=False)
+ Else
+ clsAscharactermoreFunction.RemoveParameterByName("x")
+ End If
+ End Sub
End Class
\ No newline at end of file
diff --git a/instat/dlgClimaticSummary.vb b/instat/dlgClimaticSummary.vb
index 122ed4dfdc..9afa0c5980 100644
--- a/instat/dlgClimaticSummary.vb
+++ b/instat/dlgClimaticSummary.vb
@@ -22,7 +22,7 @@ Public Class dlgClimaticSummary
Private iReceiverMaxY As Integer
Private iReceiverLabelMaxY As Integer
Private bResetSubdialog As Boolean = False
- Private clsDefaultFunction, clsConcFunction, clsSummariesList,
+ Private clsDefaultFunction, clsIfElseFirstDoyFilledFunction, clsConcFunction, clsSummariesList,
clsDefaultFactors, clsDayFilterCalc, clsDayFilterCalcFromConvert,
clsDayFilterCalcFromList, clsAddDateFunction,
clsDummyFunction As New RFunction
@@ -157,6 +157,7 @@ Public Class dlgClimaticSummary
clsConcFunction = New RFunction
clsAddDateFunction = New RFunction
clsDummyFunction = New RFunction
+ clsIfElseFirstDoyFilledFunction = New RFunction
clsFromAndToConditionOperator = New ROperator
clsDayFilterCalc = New RFunction
@@ -288,7 +289,7 @@ Public Class dlgClimaticSummary
End Sub
Private Sub cmdDoyRange_Click(sender As Object, e As EventArgs) Handles cmdDoyRange.Click
- sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFilterCalc, clsNewDayFromOperator:=clsFromConditionOperator, clsNewDayToOperator:=clsToConditionOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorVariable.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
+ sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFilterCalc, clsNewIfElseFirstDoyFilledFunction:=clsIfElseFirstDoyFilledFunction, clsNewDayFromOperator:=clsFromConditionOperator, clsNewDayToOperator:=clsToConditionOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorVariable.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
sdgDoyRange.ShowDialog()
UpdateDayFilterPreview()
End Sub
diff --git a/instat/dlgEndOfRainsSeason.Designer.vb b/instat/dlgEndOfRainsSeason.Designer.vb
index 8b4b820361..e877a70e9b 100644
--- a/instat/dlgEndOfRainsSeason.Designer.vb
+++ b/instat/dlgEndOfRainsSeason.Designer.vb
@@ -52,6 +52,8 @@ Partial Class dlgEndOfRainsSeason
Me.rdoVariableEvaporation = New System.Windows.Forms.RadioButton()
Me.rdoValueEvaporation = New System.Windows.Forms.RadioButton()
Me.grpEndofSeason = New System.Windows.Forms.GroupBox()
+ Me.ucrInputFilled = New instat.ucrInputTextBox()
+ Me.ucrChkFilled = New instat.ucrCheck()
Me.ucrInputEndofSeasonOccurence = New instat.ucrInputTextBox()
Me.ucrInputSeasonDoy = New instat.ucrInputTextBox()
Me.ucrInputEndofSeasonDate = New instat.ucrInputTextBox()
@@ -214,19 +216,43 @@ Partial Class dlgEndOfRainsSeason
'
'grpEndofSeason
'
+ Me.grpEndofSeason.Controls.Add(Me.ucrInputFilled)
+ Me.grpEndofSeason.Controls.Add(Me.ucrChkFilled)
Me.grpEndofSeason.Controls.Add(Me.ucrInputEndofSeasonOccurence)
Me.grpEndofSeason.Controls.Add(Me.ucrInputSeasonDoy)
Me.grpEndofSeason.Controls.Add(Me.ucrInputEndofSeasonDate)
Me.grpEndofSeason.Controls.Add(Me.ucrChkEndofSeasonOccurence)
Me.grpEndofSeason.Controls.Add(Me.ucrChkEndofSeasonDate)
Me.grpEndofSeason.Controls.Add(Me.ucrChkEndofSeasonDoy)
- Me.grpEndofSeason.Location = New System.Drawing.Point(3, 426)
+ Me.grpEndofSeason.Location = New System.Drawing.Point(3, 403)
Me.grpEndofSeason.Name = "grpEndofSeason"
- Me.grpEndofSeason.Size = New System.Drawing.Size(472, 41)
+ Me.grpEndofSeason.Size = New System.Drawing.Size(472, 83)
Me.grpEndofSeason.TabIndex = 32
Me.grpEndofSeason.TabStop = False
Me.grpEndofSeason.Text = "End of Season"
'
+ 'ucrInputFilled
+ '
+ Me.ucrInputFilled.AddQuotesIfUnrecognised = True
+ Me.ucrInputFilled.AutoSize = True
+ Me.ucrInputFilled.IsMultiline = False
+ Me.ucrInputFilled.IsReadOnly = False
+ Me.ucrInputFilled.Location = New System.Drawing.Point(121, 53)
+ Me.ucrInputFilled.Margin = New System.Windows.Forms.Padding(9)
+ Me.ucrInputFilled.Name = "ucrInputFilled"
+ Me.ucrInputFilled.Size = New System.Drawing.Size(104, 21)
+ Me.ucrInputFilled.TabIndex = 49
+ '
+ 'ucrChkFilled
+ '
+ Me.ucrChkFilled.AutoSize = True
+ Me.ucrChkFilled.Checked = False
+ Me.ucrChkFilled.Location = New System.Drawing.Point(4, 53)
+ Me.ucrChkFilled.Margin = New System.Windows.Forms.Padding(6)
+ Me.ucrChkFilled.Name = "ucrChkFilled"
+ Me.ucrChkFilled.Size = New System.Drawing.Size(105, 25)
+ Me.ucrChkFilled.TabIndex = 50
+ '
'ucrInputEndofSeasonOccurence
'
Me.ucrInputEndofSeasonOccurence.AddQuotesIfUnrecognised = True
@@ -598,7 +624,7 @@ Partial Class dlgEndOfRainsSeason
'
Me.ucrBase.AutoSize = True
Me.ucrBase.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
- Me.ucrBase.Location = New System.Drawing.Point(3, 472)
+ Me.ucrBase.Location = New System.Drawing.Point(3, 493)
Me.ucrBase.Margin = New System.Windows.Forms.Padding(4)
Me.ucrBase.Name = "ucrBase"
Me.ucrBase.Size = New System.Drawing.Size(408, 52)
@@ -732,4 +758,6 @@ Partial Class dlgEndOfRainsSeason
Friend WithEvents ucrInputEvaporation As ucrInputTextBox
Friend WithEvents ucrNudWB As ucrNud
Friend WithEvents ucrChkWB As ucrCheck
+ Friend WithEvents ucrInputFilled As ucrInputTextBox
+ Friend WithEvents ucrChkFilled As ucrCheck
End Class
\ No newline at end of file
diff --git a/instat/dlgEndOfRainsSeason.vb b/instat/dlgEndOfRainsSeason.vb
index 8bf2b645f9..7b8056768b 100644
--- a/instat/dlgEndOfRainsSeason.vb
+++ b/instat/dlgEndOfRainsSeason.vb
@@ -23,13 +23,15 @@ Public Class dlgEndOfRainsSeason
Private strWBMin As String = "wb_min"
Private strWBMax As String = "wb_max"
Private strWB As String = "wb"
+ Private strCondCheck As String = "conditions_check"
Private strEvapReplaceNA As String = "evap_NA_as_value"
Private strCurrDataName As String = ""
Private iCapacityDefault As Integer = 60
+ Private strYearType As String = "year_type"
#Region "general_code_structures"
' General
- Private clsRunCalculation, clsListCalFunction, clsDummyFunction As New RFunction
+ Private clsVectorFunction, clsDeleteunusedrowFunction, clsStationtypeFunction, clsConvertColumnTypeStationFunction, clsConvertlinkedvariable1Function, clsConvertlinkedvariableFunction, clsConvertColumnType1Function, clsGetColumnDataTypeFunction, clsConvertColumnTypeFunction, clsRunCalculation, clsListCalFunction, clsDummyFunction As New RFunction
Private clsFirstOrLastFunction As New RFunction
' Group by
@@ -47,7 +49,7 @@ Public Class dlgEndOfRainsSeason
#Region "end_of_rains_code_structures"
' Rolling sum rain
- Private clsEndRainsRollingSumCalc, clsWBEvaporationMinFunction, clsWBEvaporationMaxFunction As New RFunction
+ Private clsEndRainsRollingSumCalc, clsElseIfENdRainStatusFunction, clsWBEvaporationMinFunction, clsWBEvaporationMaxFunction As New RFunction
Private clsRollSumRainFunction As New RFunction
Private clsWBOperator1, clsWBOperator2 As New ROperator
' Conditions filter
@@ -80,8 +82,7 @@ Public Class dlgEndOfRainsSeason
#Region "end_of_season_code_structures"
- Private clsEndSeasonIsNaRain As New RFunction
-
+ Private clsEndSeasonIsNaRain, clsLastFunction, clsnaIsRainFunction, clsElseIfRainFunction As New RFunction
' Rain min
Private clsEndSeasonRainMinCalc As New RFunction
Private clsIfElseRainMinFunction As New RFunction
@@ -131,6 +132,11 @@ Public Class dlgEndOfRainsSeason
Private clsIfElseVariableEvaporation As New RFunction
Private clsIsNaEvaporation As New RFunction
+ 'Check Condition
+ Private clsConditionCheckFunction, clsConvertColumnlinkeddataFunction, clsRunCalculationStatus2Function, clsSetNamesEndSeasonStatusFunction, clsSetNamesEndSeasonFunction, clsVectorCalFormListFunction, clsLinkeddataFunction, clsRunCalculationStatusFunction, clsAllStatusFunction, clsListCondCheckFilterFunction, clsIsnaSecondConditionFilterFunction, clsListCondCheckFunction, clsConditionsFilterCondCheckFunction, clsElseifCondCheckFunction, clsIsnaConditionCheckFunction As New RFunction
+
+ Private clsConditionCheckOperator, clsCheckSecondConditionFilterOperator, clsCheckConditionFilterOperator, clsConditionChecksecondOperator As ROperator
+
' Conditions filter
Private clsEndSeasonConditionsFilterCalc As New RFunction
Private clsEndSeasonConditionsFilterSubCalcsList As New RFunction
@@ -139,9 +145,12 @@ Public Class dlgEndOfRainsSeason
' Doy summary
Private clsEndSeasonFirstDoySummaryCalc As New RFunction
+ Private clsEndSeasonFirstDoySummaryCalcFilledFunction As New RFunction
Private clsIfElseFirstDoyFunction As New RFunction
- Private clsIsNaFirstWB As New RFunction
- Private clsFirstDoyFunction As New RFunction
+ Public clsIfElseFirstDoyFilledFunction As New RFunction
+ Private clsIfElseFirstDoyFilled1Function, clsrunfilledFunction, clsFirstFilledFunction, clsFirstFilled1Function, clsIsNafilledFunction As New RFunction
+ Private clsAssignOperator As New ROperator
+ Private clsFirstDoyFunction, clsIsNaFirstWB As New RFunction
Private clsFirstWBFunction As New RFunction
' Date summary
@@ -150,12 +159,12 @@ Public Class dlgEndOfRainsSeason
Private clsFirstDateFunction As New RFunction
' Status summary
- Private clsEndSeasonStatusSummaryCalc As New RFunction
+ Private clsEndSeasonStatusSummaryCalc, clsIfelseStatus2Function, clsIsnaStatus2Function, clsEndSeasonStatus2Function, clsIsNAStatusFunction, clsFirstStatusFunction, clsIfelseStatusFunction, clsIfelseStatus1Function As New RFunction
' Combination
- Private clsEndSeasonCombinationCalc As New RFunction
- Private clsEndSeasonCombinationManipulationList As New RFunction
- Private clsEndSeasonCombinationSubCalcList As New RFunction
+ Private clsEndSeasonCombinationCalc, clsEndSeasonCombiStatus2ListFunction, clsEndSeasonCombiStatus2Function, clsEndSeasonCombinationCalcStatusFunction As New RFunction
+ Private clsEndSeasonCombinationManipulationList, clsEndSeasonCombinationManipulationListStatusFunction As New RFunction
+ Private clsEndSeasonCombinationSubCalcList, clsEndSeasonCombinationSubCalcListStatusFunction As New RFunction
#End Region
Private Sub dlgEndOfRainsSeason_Load(sender As Object, e As EventArgs) Handles MyBase.Load
@@ -304,6 +313,15 @@ Public Class dlgEndOfRainsSeason
ucrInputEndofSeasonOccurence.SetDataFrameSelector(ucrSelectorForWaterBalance.ucrAvailableDataFrames)
ucrInputEndofSeasonOccurence.SetValidationTypeAsRVariable()
+ ucrChkFilled.AddParameterValuesCondition(True, "sub4", "True")
+ ucrChkFilled.AddParameterValuesCondition(False, "sub4", "False")
+ ucrChkFilled.SetText("Filled")
+
+ ucrInputFilled.SetParameter(New RParameter("result_name", 2))
+ ucrInputFilled.SetDataFrameSelector(ucrSelectorForWaterBalance.ucrAvailableDataFrames)
+ ucrInputFilled.SetValidationTypeAsRVariable()
+
+
ucrChkWB.AddParameterPresentCondition(True, "WB_evap", True)
ucrChkWB.AddParameterPresentCondition(False, "WB_evap", False)
ucrChkWB.SetText("Reducing")
@@ -319,6 +337,7 @@ Public Class dlgEndOfRainsSeason
ucrChkEndofSeasonOccurence.AddToLinkedControls(ucrInputEndofSeasonOccurence, {True}, bNewLinkedHideIfParameterMissing:=True)
ucrChkEndofSeasonDate.AddToLinkedControls(ucrInputEndofSeasonDate, {True}, bNewLinkedHideIfParameterMissing:=True)
ucrChkEndofSeasonDoy.AddToLinkedControls(ucrInputSeasonDoy, {True}, bNewLinkedHideIfParameterMissing:=True)
+ ucrChkFilled.AddToLinkedControls(ucrInputFilled, {True}, bNewLinkedHideIfParameterMissing:=True)
ucrChkWB.AddToLinkedControls(ucrNudWB, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:=0.5)
ucrPnlEvaporation.AddToLinkedControls(ucrInputEvaporation, {rdoValueEvaporation}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:=5)
ucrPnlEvaporation.AddToLinkedControls(ucrReceiverEvaporation, {rdoVariableEvaporation}, bNewLinkedHideIfParameterMissing:=True)
@@ -328,7 +347,7 @@ Public Class dlgEndOfRainsSeason
ucrPnlEndOfRainsAndSeasons.AddToLinkedControls({ucrNudCapacity, ucrNudWBLessThan, ucrChkEndofSeasonDoy}, {rdoEndOfSeasons}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True)
ucrPnlEndOfRainsAndSeasons.AddToLinkedControls({ucrPnlEvaporation}, {rdoEndOfSeasons}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True)
ucrPnlEndOfRainsAndSeasons.AddToLinkedControls({ucrChkWB}, {rdoEndOfSeasons}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True)
- ucrPnlEndOfRainsAndSeasons.AddToLinkedControls({ucrChkEndofSeasonDate, ucrChkEndofSeasonDoy, ucrChkEndofSeasonOccurence}, {rdoEndOfSeasons}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True)
+ ucrPnlEndOfRainsAndSeasons.AddToLinkedControls({ucrChkEndofSeasonDate, ucrChkEndofSeasonDoy, ucrChkEndofSeasonOccurence, ucrChkFilled}, {rdoEndOfSeasons}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True)
ucrPnlEndOfRainsAndSeasons.AddToLinkedControls({ucrChkEndofRainsDate, ucrChkEndofRainsDoy, ucrChkEndofRainsOccurence}, {rdoEndOfRains}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True)
ucrChkEndofRainsDoy.SetLinkedDisplayControl(grpEndofRains)
@@ -349,22 +368,48 @@ Public Class dlgEndOfRainsSeason
Dim strWaterBalanceMin As String = "water_balance_min"
Dim strDifference As String = "difference"
Dim strConditionsFilter As String = "conditions_filter"
+ Dim strConditionFilterCondCheck As String = "conditions_filter"
Dim strRollSumRain As String = "roll_sum_rain"
Dim strEndRains As String = "end_rains"
Dim strEndRainsStatus As String = "end_rains_status"
Dim strEndRainsDate As String = "end_rains_date"
Dim strEndSeason As String = "end_season"
+ Dim strEndSeasonFilled As String = "end_season_filled"
Dim strEndSeasonStatus As String = "end_season_status"
Dim strEndSeasonDate As String = "end_season_date"
Dim strDoyFilter As String = "doy_filter"
Dim strEndofRains As String = "end_of_rains_combined"
Dim strEndofSeason As String = "end_of_season_combined"
+ Dim strEndofSeasonStatus As String = "end_of_season_combined_status"
+ Dim strEndSeasonStatus2 As String = "end_season_status_2"
+ Dim strEndSeasonCombiStatus2 As String = "end_season_combined_status_2"
+ Dim strStationType As String = "station_type"
+ Dim strLinkeddata As String = "linked_data_name"
+ Dim strCalformlist As String = "calculated_from_list"
+
+ clsVectorFunction = New RFunction
+ clsConvertlinkedvariableFunction = New RFunction
+ clsConvertlinkedvariable1Function = New RFunction
+ clsIfElseFirstDoyFilled1Function = New RFunction
+ clsFirstFilledFunction = New RFunction
+ clsIsNafilledFunction = New RFunction
+ clsFirstFilled1Function = New RFunction
+ clsDeleteunusedrowFunction = New RFunction
+ clsConditionCheckOperator = New ROperator
+ clsConditionChecksecondOperator = New ROperator
+ clsCheckConditionFilterOperator = New ROperator
+ clsCheckSecondConditionFilterOperator = New ROperator
#Region "clear_code_structures"
' General
clsRunCalculation.Clear()
clsListCalFunction.Clear()
clsFirstOrLastFunction.Clear()
+ clsConvertColumnTypeFunction.Clear()
+ clsGetColumnDataTypeFunction.Clear()
+ clsConvertColumnType1Function.Clear()
+ clsStationtypeFunction.Clear()
+ clsConvertColumnTypeStationFunction.Clear()
' Group by
clsGroupByStationYearCalc.Clear()
@@ -382,6 +427,10 @@ Public Class dlgEndOfRainsSeason
' Rolling sum rain
clsEndRainsRollingSumCalc.Clear()
clsRollSumRainFunction.Clear()
+ clsElseIfENdRainStatusFunction.Clear()
+ clsElseIfRainFunction.Clear()
+ clsnaIsRainFunction.Clear()
+ clsLastFunction.Clear()
' Conditions filter
clsEndRainsConditionsFilterCalc.Clear()
@@ -404,6 +453,10 @@ Public Class dlgEndOfRainsSeason
' Status summary
clsEndRainsStatusSummaryCalc.Clear()
+ clsIfelseStatusFunction.Clear()
+ clsIfelseStatus1Function.Clear()
+ clsFirstStatusFunction.Clear()
+ clsIsNAStatusFunction.Clear()
' Combination
clsEndRainsCombinationCalc.Clear()
@@ -464,6 +517,18 @@ Public Class dlgEndOfRainsSeason
clsIsNaEvaporation.Clear()
' Conditions filter
+ clsConditionCheckFunction.Clear()
+ clsElseifCondCheckFunction.Clear()
+ clsIsnaConditionCheckFunction.Clear()
+ clsListCondCheckFunction.Clear()
+ clsConditionsFilterCondCheckFunction.Clear()
+ clsIsnaSecondConditionFilterFunction.Clear()
+ clsListCondCheckFilterFunction.Clear()
+ clsEndSeasonStatus2Function.Clear()
+ clsIfelseStatus2Function.Clear()
+ clsIsnaStatus2Function.Clear()
+ clsEndSeasonCombiStatus2Function.Clear()
+ clsEndSeasonCombiStatus2ListFunction.Clear()
clsEndSeasonConditionsFilterCalc.Clear()
clsEndSeasonConditionsFilterSubCalcsList.Clear()
clsEndSeasonConditionsOperator.Clear()
@@ -471,10 +536,14 @@ Public Class dlgEndOfRainsSeason
' Doy summary
clsEndSeasonFirstDoySummaryCalc.Clear()
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.Clear()
clsIfElseFirstDoyFunction.Clear()
+ clsIfElseFirstDoyFilledFunction.Clear()
+ clsAssignOperator.Clear()
clsIsNaFirstWB.Clear()
clsFirstDoyFunction.Clear()
clsFirstWBFunction.Clear()
+ clsrunfilledFunction.Clear()
' Date summary
clsEndSeasonFirstDateSummaryCalc.Clear()
@@ -486,9 +555,11 @@ Public Class dlgEndOfRainsSeason
' Combination
clsEndSeasonCombinationCalc.Clear()
+ clsEndSeasonCombinationCalcStatusFunction.Clear()
clsEndSeasonCombinationManipulationList.Clear()
+ clsEndSeasonCombinationManipulationListStatusFunction.Clear()
clsEndSeasonCombinationSubCalcList.Clear()
-
+ clsEndSeasonCombinationSubCalcListStatusFunction.Clear()
#End Region
ucrSelectorForWaterBalance.Reset()
@@ -513,17 +584,17 @@ Public Class dlgEndOfRainsSeason
clsGroupByStationCalc.SetAssignTo("grouping_by_station")
' Doy Filter
- clsDoyFilterCalcFromConvert.SetRCommand("calc_from_convert")
- clsDoyFilterCalcFromConvert.AddParameter("x", clsRFunctionParameter:=clsDoyFilterCalcFromList, iPosition:=0)
-
- clsDoyFilterCalcFromList.SetRCommand("list")
-
clsDoyFilterCalc.SetRCommand("instat_calculation$new")
clsDoyFilterCalc.AddParameter("type", Chr(34) & "filter" & Chr(34), iPosition:=0)
clsDoyFilterCalc.AddParameter("function_exp", clsROperatorParameter:=clsDoyFilterOperator, iPosition:=1)
clsDoyFilterCalc.AddParameter("calculated_from", clsRFunctionParameter:=clsDoyFilterCalcFromConvert, iPosition:=2)
clsDoyFilterCalc.SetAssignTo(strDoyFilter)
+ clsDoyFilterCalcFromConvert.SetRCommand("calc_from_convert")
+ clsDoyFilterCalcFromConvert.AddParameter("x", clsRFunctionParameter:=clsDoyFilterCalcFromList, iPosition:=0)
+
+ clsDoyFilterCalcFromList.SetRCommand("list")
+
clsDoyFilterOperator.SetOperation("&")
clsDoyFilterOperator.AddParameter("from_operator", clsROperatorParameter:=clsDayFromOperator, iPosition:=0)
clsDoyFilterOperator.AddParameter("to_operator", clsROperatorParameter:=clsDayToOperator, iPosition:=1)
@@ -619,11 +690,29 @@ Public Class dlgEndOfRainsSeason
' Status summary
clsEndRainsStatusSummaryCalc.SetRCommand("instat_calculation$new")
clsEndRainsStatusSummaryCalc.AddParameter("type", Chr(34) & "summary" & Chr(34), iPosition:=0)
- clsEndRainsStatusSummaryCalc.AddParameter("function_exp", Chr(34) & "n() > 0" & Chr(34), iPosition:=1)
+ clsEndRainsStatusSummaryCalc.AddParameter("function_exp", clsRFunctionParameter:=clsElseIfENdRainStatusFunction, iPosition:=1)
clsEndRainsStatusSummaryCalc.AddParameter("result_name", Chr(34) & strEndRainsStatus & Chr(34), iPosition:=3)
clsEndRainsStatusSummaryCalc.AddParameter("save", 2, iPosition:=4)
clsEndRainsStatusSummaryCalc.SetAssignTo(strEndRainsStatus)
+ clsElseIfENdRainStatusFunction.SetRCommand("ifelse")
+ clsElseIfENdRainStatusFunction.bToScriptAsRString = True
+ clsElseIfENdRainStatusFunction.AddParameter("x", "n() > 0", iPosition:=0, bIncludeArgumentName:=False)
+ clsElseIfENdRainStatusFunction.AddParameter("yes", clsRFunctionParameter:=clsElseIfRainFunction, iPosition:=1)
+ clsElseIfENdRainStatusFunction.AddParameter("no", "FALSE", iPosition:=2)
+
+ clsElseIfRainFunction.SetRCommand("ifelse")
+ clsElseIfRainFunction.AddParameter("y", clsRFunctionParameter:=clsnaIsRainFunction, iPosition:=0, bIncludeArgumentName:=False)
+ clsElseIfRainFunction.AddParameter("yes", "NA", iPosition:=1)
+ clsElseIfRainFunction.AddParameter("no", "TRUE", iPosition:=2)
+
+ clsnaIsRainFunction.SetRCommand("is.na")
+ clsnaIsRainFunction.AddParameter("x", clsRFunctionParameter:=clsLastFunction, iPosition:=1)
+
+ clsLastFunction.SetPackageName("dplyr")
+ clsLastFunction.SetRCommand("last")
+ clsLastFunction.AddParameter("x", strRollSumRain, iPosition:=0)
+
' Combined
clsEndRainsCombinationCalc.SetRCommand("instat_calculation$new")
clsEndRainsCombinationCalc.AddParameter("type", Chr(34) & "combination" & Chr(34), iPosition:=0)
@@ -648,16 +737,17 @@ Public Class dlgEndOfRainsSeason
clsEndRainsCombinationSubCalcList.SetRCommand("list")
clsEndRainsCombinationSubCalcList.AddParameter("sub1", clsRFunctionParameter:=clsEndRainsLastDoySummaryCalc, bIncludeArgumentName:=False, iPosition:=0)
+ clsEndRainsCombinationSubCalcList.AddParameter("sub2", clsRFunctionParameter:=clsEndRainsLastDateSummaryCalc, bIncludeArgumentName:=False, iPosition:=1)
+ clsEndRainsCombinationSubCalcList.AddParameter("sub3", clsRFunctionParameter:=clsEndRainsStatusSummaryCalc, bIncludeArgumentName:=False, iPosition:=2)
clsListCalFunction.SetRCommand("list")
clsListCalFunction.AddParameter("drop", "FALSE", iPosition:=0)
clsRunCalculation.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$run_instat_calculation")
- clsRunCalculation.AddParameter("display", "FALSE")
- clsRunCalculation.AddParameter("calc", clsRFunctionParameter:=clsEndRainsCombinationCalc)
+ clsRunCalculation.AddParameter("display", "FALSE", iPosition:=0)
+ clsRunCalculation.AddParameter("calc", clsRFunctionParameter:=clsEndRainsCombinationCalc, iPosition:=1)
clsRunCalculation.AddParameter("param_list", clsRFunctionParameter:=clsListCalFunction, iPosition:=2)
- ucrBase.clsRsyntax.SetBaseRFunction(clsRunCalculation)
#End Region
#Region "end_of_season"
@@ -685,7 +775,7 @@ Public Class dlgEndOfRainsSeason
clsIfElseRainMaxFunction.bToScriptAsRString = True
clsIfElseRainMaxFunction.SetRCommand("ifelse")
clsIfElseRainMaxFunction.AddParameter("test", clsRFunctionParameter:=clsEndSeasonIsNaRain, iPosition:=0)
- clsIfElseRainMaxFunction.AddParameter("yes", 100, iPosition:=0)
+ clsIfElseRainMaxFunction.AddParameter("yes", 100, iPosition:=1)
'Pmax
clsPMaxFunction.SetRCommand("pmax")
@@ -713,15 +803,15 @@ Public Class dlgEndOfRainsSeason
clsReduceWBMinFunction1.bToScriptAsRString = True
clsReduceWBMinFunction1.SetPackageName("purrr")
clsReduceWBMinFunction1.SetRCommand("accumulate2")
- clsReduceWBMinFunction1.AddParameter(".f", clsRFunctionParameter:=clsPMinWBMinFunction, iPosition:=0)
- clsReduceWBMinFunction1.AddParameter(".x", clsRFunctionParameter:=clsWBMinTailFunction, iPosition:=1)
+ clsReduceWBMinFunction1.AddParameter(".x", clsRFunctionParameter:=clsWBMinTailFunction, iPosition:=0)
+ clsReduceWBMinFunction1.AddParameter(".f", clsRFunctionParameter:=clsPMinWBMinFunction, iPosition:=1)
clsReduceWBMinFunction1.AddParameter(".init", "0", iPosition:=2)
clsReduceWBMinFunction2.bToScriptAsRString = True
clsReduceWBMinFunction2.SetPackageName("purrr")
clsReduceWBMinFunction2.SetRCommand("accumulate")
- clsReduceWBMinFunction2.AddParameter(".f", clsRFunctionParameter:=clsPMinWBMinFunction, iPosition:=0)
- clsReduceWBMinFunction2.AddParameter(".x", clsRFunctionParameter:=clsWBMinTailFunction2, iPosition:=1)
+ clsReduceWBMinFunction2.AddParameter(".x", clsRFunctionParameter:=clsWBMinTailFunction2, iPosition:=0)
+ clsReduceWBMinFunction2.AddParameter(".f", clsRFunctionParameter:=clsPMinWBMinFunction, iPosition:=1)
clsReduceWBMinFunction2.AddParameter(".init", "0", iPosition:=2)
clsPMinWBMinFunction.SetRCommand(" ~ pmin")
@@ -841,12 +931,12 @@ Public Class dlgEndOfRainsSeason
' Conditions filter
clsEndSeasonConditionsFilterCalc.SetRCommand("instat_calculation$new")
clsEndSeasonConditionsFilterCalc.AddParameter("type", Chr(34) & "filter" & Chr(34), iPosition:=0)
- clsEndSeasonConditionsFilterCalc.AddParameter("function_exp", clsROperatorParameter:=clsEndSeasonConditionsOperator, iPosition:=1)
+ clsEndSeasonConditionsFilterCalc.AddParameter("function_exp", Chr(34) & "conditions_check == 1" & Chr(34), iPosition:=1)
clsEndSeasonConditionsFilterCalc.AddParameter("sub_calculations", clsRFunctionParameter:=clsEndSeasonConditionsFilterSubCalcsList, iPosition:=4)
clsEndSeasonConditionsFilterCalc.SetAssignTo(strConditionsFilter)
clsEndSeasonConditionsFilterSubCalcsList.SetRCommand("list")
- clsEndSeasonConditionsFilterSubCalcsList.AddParameter("sub1", clsRFunctionParameter:=clsEndSeasonWBCalc, iPosition:=0, bIncludeArgumentName:=False)
+ clsEndSeasonConditionsFilterSubCalcsList.AddParameter("sub1", clsRFunctionParameter:=clsConditionCheckFunction, iPosition:=0, bIncludeArgumentName:=False)
clsEndSeasonConditionsOperator.bToScriptAsRString = True
clsEndSeasonConditionsOperator.SetOperation("|")
@@ -865,12 +955,35 @@ Public Class dlgEndOfRainsSeason
clsEndSeasonFirstDoySummaryCalc.AddParameter("save", "2", iPosition:=6)
clsEndSeasonFirstDoySummaryCalc.SetAssignTo(strEndSeason)
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.SetRCommand("instat_calculation$new")
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.AddParameter("type", Chr(34) & "calculation" & Chr(34), iPosition:=0)
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.AddParameter("function_exp", clsRFunctionParameter:=clsIfElseFirstDoyFilledFunction, iPosition:=1)
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.AddParameter("result_name", Chr(34) & strEndSeasonFilled & Chr(34), iPosition:=3)
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.AddParameter("save", "2", iPosition:=4)
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.AddParameter("calculated_from", strCalformlist, iPosition:=2)
+ clsEndSeasonFirstDoySummaryCalcFilledFunction.SetAssignTo(strEndSeasonFilled)
+
clsIfElseFirstDoyFunction.bToScriptAsRString = True
clsIfElseFirstDoyFunction.SetRCommand("ifelse")
clsIfElseFirstDoyFunction.AddParameter("test", clsRFunctionParameter:=clsIsNaFirstWB, iPosition:=0)
clsIfElseFirstDoyFunction.AddParameter("yes", "NA", iPosition:=1)
clsIfElseFirstDoyFunction.AddParameter("no", clsRFunctionParameter:=clsFirstDoyFunction, iPosition:=2)
+ clsIfElseFirstDoyFilledFunction.bToScriptAsRString = True
+ clsIfElseFirstDoyFilledFunction.SetRCommand("ifelse")
+ clsIfElseFirstDoyFilledFunction.AddParameter("test", clsROperatorParameter:=clsAssignOperator, iPosition:=0, bIncludeArgumentName:=False)
+ clsIfElseFirstDoyFilledFunction.AddParameter("yes", "366", iPosition:=1)
+ clsIfElseFirstDoyFilledFunction.AddParameter("no", strEndSeason, iPosition:=2)
+
+ clsAssignOperator.SetOperation("==")
+ clsAssignOperator.AddParameter("left", strEndSeasonStatus, iPosition:=0, bIncludeArgumentName:=False)
+ clsAssignOperator.AddParameter("right", "FALSE", iPosition:=1, bIncludeArgumentName:=False)
+
+ clsrunfilledFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$run_instat_calculation")
+ clsrunfilledFunction.AddParameter("display", "FALSE", iPosition:=0)
+ clsrunfilledFunction.AddParameter("param_list", clsRFunctionParameter:=clsListCalFunction, iPosition:=1)
+ clsrunfilledFunction.AddParameter("calc", strEndSeasonFilled, iPosition:=2)
+
clsIsNaFirstWB.SetRCommand("is.na")
clsIsNaFirstWB.AddParameter("x", clsRFunctionParameter:=clsFirstWBFunction, iPosition:=0)
@@ -902,11 +1015,30 @@ Public Class dlgEndOfRainsSeason
' Status summary
clsEndSeasonStatusSummaryCalc.SetRCommand("instat_calculation$new")
clsEndSeasonStatusSummaryCalc.AddParameter("type", Chr(34) & "summary" & Chr(34), iPosition:=0)
- clsEndSeasonStatusSummaryCalc.AddParameter("function_exp", Chr(34) & "n() > 0" & Chr(34), iPosition:=1)
+ clsEndSeasonStatusSummaryCalc.AddParameter("function_exp", clsRFunctionParameter:=clsIfelseStatusFunction, iPosition:=1)
clsEndSeasonStatusSummaryCalc.AddParameter("result_name", Chr(34) & strEndSeasonStatus & Chr(34), iPosition:=3)
- clsEndSeasonStatusSummaryCalc.AddParameter("save", 2, iPosition:=4)
+ clsEndSeasonStatusSummaryCalc.AddParameter("sub_calculations", clsRFunctionParameter:=clsListCondCheckFilterFunction, iPosition:=4)
+ clsEndSeasonStatusSummaryCalc.AddParameter("save", 2, iPosition:=5)
clsEndSeasonStatusSummaryCalc.SetAssignTo(strEndSeasonStatus)
+ clsIfelseStatusFunction.SetRCommand("ifelse")
+ clsIfelseStatusFunction.bToScriptAsRString = True
+ clsIfelseStatusFunction.AddParameter("x", "n() == 0", iPosition:=0, bIncludeArgumentName:=False)
+ clsIfelseStatusFunction.AddParameter("y", "NA", iPosition:=1, bIncludeArgumentName:=False)
+ clsIfelseStatusFunction.AddParameter("z", clsRFunctionParameter:=clsIfelseStatus1Function, iPosition:=2, bIncludeArgumentName:=False)
+
+ clsIfelseStatus1Function.SetRCommand("ifelse")
+ clsIfelseStatus1Function.AddParameter("test", clsRFunctionParameter:=clsAllStatusFunction, iPosition:=0, bIncludeArgumentName:=False)
+ clsIfelseStatus1Function.AddParameter("yes", "FALSE", iPosition:=1, bIncludeArgumentName:=False)
+ clsIfelseStatus1Function.AddParameter("no", "NA", iPosition:=2, bIncludeArgumentName:=False)
+
+ clsAllStatusFunction.SetRCommand("all")
+ clsAllStatusFunction.AddParameter("x", "conditions_check == 0", iPosition:=0, bIncludeArgumentName:=False)
+ clsAllStatusFunction.AddParameter("na.rm", "TRUE", iPosition:=1)
+
+ clsIsNAStatusFunction.SetRCommand("is.na")
+ clsIsNAStatusFunction.AddParameter("x", strWB, iPosition:=0, bIncludeArgumentName:=False)
+
' Combined
clsEndSeasonCombinationCalc.SetRCommand("instat_calculation$new")
clsEndSeasonCombinationCalc.AddParameter("type", Chr(34) & "combination" & Chr(34), iPosition:=0)
@@ -921,18 +1053,173 @@ Public Class dlgEndOfRainsSeason
clsEndSeasonCombinationSubCalcList.SetRCommand("list")
clsEndSeasonCombinationSubCalcList.AddParameter("sub1", clsRFunctionParameter:=clsEndSeasonFirstDoySummaryCalc, bIncludeArgumentName:=False, iPosition:=0)
+ clsEndSeasonCombinationSubCalcList.AddParameter("sub2", clsRFunctionParameter:=clsEndSeasonFirstDateSummaryCalc, bIncludeArgumentName:=False, iPosition:=1)
+
+ clsGetColumnDataTypeFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$get_column_data_types")
+ clsGetColumnDataTypeFunction.SetAssignTo(strYearType)
+
+ clsConvertColumnTypeFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
+ clsConvertColumnTypeFunction.AddParameter("to_type", Chr(34) & "factor" & Chr(34), iPosition:=2)
+
+ clsVectorFunction.SetRCommand("c")
+
+ clsConvertColumnType1Function.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
+ clsConvertColumnType1Function.AddParameter("to_type", "year_type", iPosition:=2)
+
+ clsConvertlinkedvariableFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_linked_variable")
+
+ clsConvertlinkedvariable1Function.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_linked_variable")
+
+ clsConditionCheckFunction.SetRCommand("instat_calculation$new")
+ clsConditionCheckFunction.AddParameter("type", Chr(34) & "calculation" & Chr(34), iPosition:=0)
+ clsConditionCheckFunction.AddParameter("function_exp", clsRFunctionParameter:=clsElseifCondCheckFunction, iPosition:=1)
+ clsConditionCheckFunction.AddParameter("result_name", Chr(34) & strCondCheck & Chr(34), iPosition:=2)
+ clsConditionCheckFunction.AddParameter("sub_calculations", clsRFunctionParameter:=clsListCondCheckFunction, iPosition:=3)
+ clsConditionCheckFunction.SetAssignTo(strCondCheck)
+
+ clsListCondCheckFunction.SetRCommand("list")
+ clsListCondCheckFunction.AddParameter("x", clsRFunctionParameter:=clsEndSeasonWBCalc, iPosition:=0, bIncludeArgumentName:=False)
+
+ clsElseifCondCheckFunction.bToScriptAsRString = True
+ clsElseifCondCheckFunction.SetRCommand("ifelse")
+ clsElseifCondCheckFunction.AddParameter("test", clsROperatorParameter:=clsConditionCheckOperator, iPosition:=0, bIncludeArgumentName:=False)
+ clsElseifCondCheckFunction.AddParameter("yes", "1", iPosition:=1, bIncludeArgumentName:=False)
+ clsElseifCondCheckFunction.AddParameter("no", "0", iPosition:=2, bIncludeArgumentName:=False)
+
+ clsConditionCheckOperator.SetOperation("|")
+ clsConditionCheckOperator.AddParameter("left", clsROperatorParameter:=clsConditionChecksecondOperator, iPosition:=0, bIncludeArgumentName:=False)
+ clsConditionCheckOperator.AddParameter("riht", clsRFunctionParameter:=clsIsnaConditionCheckFunction, iPosition:=1, bIncludeArgumentName:=False)
+
+ clsConditionChecksecondOperator.SetOperation("<=")
+ clsConditionChecksecondOperator.AddParameter("left", strWB, iPosition:=0, bIncludeArgumentName:=False)
+ clsConditionChecksecondOperator.AddParameter("right", "0.5", iPosition:=1, bIncludeArgumentName:=False)
+
+ clsIsnaConditionCheckFunction.SetRCommand("is.na")
+
+ clsConditionsFilterCondCheckFunction.SetRCommand("instat_calculation$new")
+ clsConditionsFilterCondCheckFunction.AddParameter("type", Chr(34) & "filter" & Chr(34), iPosition:=0)
+ clsConditionsFilterCondCheckFunction.AddParameter("function_exp", clsROperatorParameter:=clsCheckConditionFilterOperator, iPosition:=1)
+ clsConditionsFilterCondCheckFunction.AddParameter("sub_calculations", clsRFunctionParameter:=clsListCondCheckFilterFunction, iPosition:=2)
+ clsConditionsFilterCondCheckFunction.SetAssignTo(strConditionFilterCondCheck)
+
+ clsListCondCheckFilterFunction.SetRCommand("list")
+ clsListCondCheckFilterFunction.AddParameter("x", strCondCheck, iPosition:=0, bIncludeArgumentName:=False)
+
+ clsCheckConditionFilterOperator.SetOperation("|")
+ clsCheckConditionFilterOperator.bToScriptAsRString = True
+ clsCheckConditionFilterOperator.AddParameter("left", "conditions_check == 1", iPosition:=0, bIncludeArgumentName:=False)
+ clsCheckConditionFilterOperator.AddParameter("right", clsROperatorParameter:=clsCheckSecondConditionFilterOperator, iPosition:=1, bIncludeArgumentName:=False)
+
+ clsCheckSecondConditionFilterOperator.SetOperation("|")
+ clsCheckSecondConditionFilterOperator.AddParameter("left", clsRFunctionParameter:=clsIsnaSecondConditionFilterFunction, iPosition:=0, bIncludeArgumentName:=False)
+ clsCheckSecondConditionFilterOperator.AddParameter("right", "conditions_check == 0", iPosition:=1, bIncludeArgumentName:=False)
+
+ clsIsnaSecondConditionFilterFunction.SetRCommand("is.na")
+ clsIsnaSecondConditionFilterFunction.AddParameter("x", "conditions_check", iPosition:=0, bIncludeArgumentName:=False)
+
+ clsEndSeasonCombinationCalcStatusFunction.SetRCommand("instat_calculation$new")
+ clsEndSeasonCombinationCalcStatusFunction.AddParameter("type", Chr(34) & "combination" & Chr(34), iPosition:=0)
+ clsEndSeasonCombinationCalcStatusFunction.AddParameter("manipulations", clsRFunctionParameter:=clsEndSeasonCombinationManipulationListStatusFunction, iPosition:=1)
+ clsEndSeasonCombinationCalcStatusFunction.AddParameter("sub_calculations", clsRFunctionParameter:=clsEndSeasonCombinationSubCalcListStatusFunction, iPosition:=2)
+ clsEndSeasonCombinationCalcStatusFunction.SetAssignTo(strEndofSeasonStatus)
+
+ clsEndSeasonCombinationManipulationListStatusFunction.SetRCommand("list")
+ clsEndSeasonCombinationManipulationListStatusFunction.AddParameter("manip1", strConditionsFilter, bIncludeArgumentName:=False, iPosition:=0)
+ clsEndSeasonCombinationManipulationListStatusFunction.AddParameter("manip2", "grouping_by_station_year", bIncludeArgumentName:=False, iPosition:=1)
+ clsEndSeasonCombinationManipulationListStatusFunction.AddParameter("manip3", strDoyFilter, bIncludeArgumentName:=False, iPosition:=2)
+
+ clsEndSeasonCombinationSubCalcListStatusFunction.SetRCommand("list")
+ clsEndSeasonCombinationSubCalcListStatusFunction.AddParameter("sub3", strEndSeasonStatus, bIncludeArgumentName:=False, iPosition:=0)
+
+ clsRunCalculationStatusFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$run_instat_calculation")
+ clsRunCalculationStatusFunction.AddParameter("display", "FALSE", iPosition:=0)
+ clsRunCalculationStatusFunction.AddParameter("param_list", clsRFunctionParameter:=clsListCalFunction, iPosition:=1)
+ clsRunCalculationStatusFunction.AddParameter("calc", strEndofSeasonStatus, iPosition:=2)
+
+ clsLinkeddataFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$get_linked_to_data_name")
+ clsLinkeddataFunction.SetAssignTo(strLinkeddata)
+
+ clsVectorCalFormListFunction.SetRCommand("c")
+ clsVectorCalFormListFunction.AddParameter("x", clsRFunctionParameter:=clsSetNamesEndSeasonStatusFunction, iPosition:=0, bIncludeArgumentName:=False)
+ clsVectorCalFormListFunction.AddParameter("y", clsRFunctionParameter:=clsSetNamesEndSeasonFunction, iPosition:=1, bIncludeArgumentName:=False)
+ clsVectorCalFormListFunction.SetAssignTo(strCalformlist)
+
+ clsSetNamesEndSeasonStatusFunction.SetRCommand("setNames")
+ clsSetNamesEndSeasonStatusFunction.AddParameter("x", Chr(34) & strEndSeasonStatus & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsSetNamesEndSeasonStatusFunction.AddParameter("y", strLinkeddata, iPosition:=1, bIncludeArgumentName:=False)
+
+ clsSetNamesEndSeasonFunction.SetRCommand("setNames")
+ clsSetNamesEndSeasonFunction.AddParameter("x", Chr(34) & strEndSeason & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsSetNamesEndSeasonFunction.AddParameter("y", strLinkeddata, iPosition:=1, bIncludeArgumentName:=False)
+
+ clsEndSeasonStatus2Function.SetRCommand("instat_calculation$new")
+ clsEndSeasonStatus2Function.AddParameter("type", Chr(34) & "calculation" & Chr(34), iPosition:=0)
+ clsEndSeasonStatus2Function.AddParameter("function_exp", clsRFunctionParameter:=clsIfelseStatus2Function, iPosition:=1)
+ clsEndSeasonStatus2Function.AddParameter("calculated_from", strCalformlist, iPosition:=2)
+ clsEndSeasonStatus2Function.AddParameter("result_name", Chr(34) & strEndSeasonStatus & Chr(34), iPosition:=4)
+ clsEndSeasonStatus2Function.AddParameter("save", 2, iPosition:=5)
+ clsEndSeasonStatus2Function.SetAssignTo(strEndSeasonStatus2)
+
+ clsIfelseStatus2Function.SetRCommand("ifelse")
+ clsIfelseStatus2Function.bToScriptAsRString = True
+ clsIfelseStatus2Function.AddParameter("test", clsRFunctionParameter:=clsIsnaStatus2Function, iPosition:=0, bIncludeArgumentName:=False)
+ clsIfelseStatus2Function.AddParameter("yes", "TRUE", iPosition:=1, bIncludeArgumentName:=False)
+ clsIfelseStatus2Function.AddParameter("no", strEndSeasonStatus, iPosition:=2, bIncludeArgumentName:=False)
+
+ clsIsnaStatus2Function.SetRCommand("!is.na")
+ clsIsnaStatus2Function.AddParameter("x", strEndSeason, iPosition:=0, bIncludeArgumentName:=False)
+
+ clsEndSeasonCombiStatus2Function.SetRCommand("instat_calculation$new")
+ clsEndSeasonCombiStatus2Function.AddParameter("type", Chr(34) & "combination" & Chr(34), iPosition:=0)
+ clsEndSeasonCombiStatus2Function.AddParameter("sub_calculations", clsRFunctionParameter:=clsEndSeasonCombiStatus2ListFunction, iPosition:=2)
+ clsEndSeasonCombiStatus2Function.SetAssignTo(strEndSeasonCombiStatus2)
+
+ clsEndSeasonCombiStatus2ListFunction.SetRCommand("list")
+ clsEndSeasonCombiStatus2ListFunction.AddParameter("x", strEndSeasonStatus2, iPosition:=0, bIncludeArgumentName:=False)
+
+ clsRunCalculationStatus2Function.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$run_instat_calculation")
+ clsRunCalculationStatus2Function.AddParameter("display", "FALSE", iPosition:=0)
+ clsRunCalculationStatus2Function.AddParameter("param_list", clsRFunctionParameter:=clsListCalFunction, iPosition:=1)
+ clsRunCalculationStatus2Function.AddParameter("calc", strEndSeasonCombiStatus2, iPosition:=2)
+
+ clsConvertColumnlinkeddataFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
+ clsConvertColumnlinkeddataFunction.AddParameter("data_name", strLinkeddata, iPosition:=0)
+ clsConvertColumnlinkeddataFunction.AddParameter("to_type", "year_type", iPosition:=2)
+
+ clsStationtypeFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$get_column_data_types")
+ clsStationtypeFunction.SetAssignTo(strStationType)
+
+ clsConvertColumnTypeStationFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
+ clsConvertColumnTypeStationFunction.AddParameter("to_type", Chr(34) & "factor" & Chr(34), iPosition:=2)
+
+ clsDeleteunusedrowFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$remove_unused_station_year_combinations")
+
#End Region
+ ucrBase.clsRsyntax.ClearCodes()
+
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsGetColumnDataTypeFunction, iPosition:=0)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsConvertColumnTypeFunction, iPosition:=1)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsConvertlinkedvariableFunction, iPosition:=4)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsLinkeddataFunction, iPosition:=4)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsConvertColumnType1Function, iPosition:=11)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsConvertColumnlinkeddataFunction, iPosition:=12)
+ ucrBase.clsRsyntax.SetBaseRFunction(clsRunCalculation)
clsFirstOrLastFunction = clsLastDoyFunction
+ RemoveUnusedRow()
+ StationType()
+ EnableFilledvariable()
End Sub
Private Sub SetRCodeForControls(bReset As Boolean)
ucrReceiverDOY.AddAdditionalCodeParameterPair(clsDayFromOperator, New RParameter("doy", 0), iAdditionalPairNo:=1)
ucrReceiverDOY.AddAdditionalCodeParameterPair(clsLastDoyFunction, New RParameter("x", 0), iAdditionalPairNo:=2)
ucrReceiverDOY.AddAdditionalCodeParameterPair(clsFirstDoyFunction, New RParameter("x", 0), iAdditionalPairNo:=3)
+ ucrReceiverDOY.AddAdditionalCodeParameterPair(clsFirstFilled1Function, New RParameter("x", 0), iAdditionalPairNo:=4)
ucrReceiverRainfall.AddAdditionalCodeParameterPair(clsEndSeasonIsNaRain, New RParameter("x", 0), iAdditionalPairNo:=1)
ucrReceiverRainfall.AddAdditionalCodeParameterPair(clsIfElseRainMinFunction, New RParameter("no", 2), iAdditionalPairNo:=2)
ucrReceiverRainfall.AddAdditionalCodeParameterPair(clsIfElseRainMaxFunction, New RParameter("no", 2), iAdditionalPairNo:=3)
+ ucrReceiverRainfall.AddAdditionalCodeParameterPair(clsIsnaConditionCheckFunction, New RParameter("x", 0), iAdditionalPairNo:=4)
ucrReceiverEvaporation.AddAdditionalCodeParameterPair(clsWBMaxTailFunction1, New RParameter("x", 0), iAdditionalPairNo:=1)
ucrReceiverEvaporation.AddAdditionalCodeParameterPair(clsAsNumericFunction, New RParameter("x", 0), iAdditionalPairNo:=2)
ucrReceiverDate.AddAdditionalCodeParameterPair(clsFirstDateFunction, New RParameter("x", 0), iAdditionalPairNo:=1)
@@ -946,6 +1233,7 @@ Public Class dlgEndOfRainsSeason
ucrInputSeasonDoy.SetRCode(clsEndSeasonFirstDoySummaryCalc, bReset)
ucrInputEndofSeasonDate.SetRCode(clsEndSeasonFirstDateSummaryCalc, bReset)
ucrInputEndofSeasonOccurence.SetRCode(clsEndSeasonStatusSummaryCalc, bReset)
+ ucrInputFilled.SetRCode(clsEndSeasonFirstDoySummaryCalcFilledFunction, bReset)
ucrReceiverDate.SetRCode(clsLastDateFunction, bReset)
@@ -958,17 +1246,17 @@ Public Class dlgEndOfRainsSeason
ucrNudWB.SetRCode(clsWBEvaporationMinFunction, bReset)
ucrPnlEvaporation.SetRCode(clsWBMinEvapOperator, bReset)
ucrReceiverEvaporation.SetRCode(clsWBMinTailFunction1, bReset)
+ ucrChkFilled.SetRCode(clsEndSeasonCombinationSubCalcList, bReset)
+ ucrChkEndofRainsDoy.SetRCode(clsEndRainsCombinationSubCalcList, bReset)
+ ucrChkEndofRainsDate.SetRCode(clsDummyFunction, bReset)
+ ucrChkEndofRainsOccurence.SetRCode(clsDummyFunction, bReset)
+ ucrChkEndofSeasonDoy.SetRCode(clsEndSeasonCombinationSubCalcList, bReset)
+ ucrChkEndofSeasonDate.SetRCode(clsDummyFunction, bReset)
+ ucrChkEndofSeasonOccurence.SetRCode(clsDummyFunction, bReset)
End If
- ucrChkEndofSeasonDoy.SetRCode(clsEndSeasonCombinationSubCalcList, bReset)
- ucrChkEndofSeasonDate.SetRCode(clsDummyFunction, bReset)
- ucrChkEndofSeasonOccurence.SetRCode(clsDummyFunction, bReset)
-
ucrNudAmount.SetRCode(clsEndRainsRollSumRainConditionOperator, bReset)
ucrNudTotalOverDays.SetRCode(clsRollSumRainFunction, bReset)
- ucrChkEndofRainsDoy.SetRCode(clsEndRainsCombinationSubCalcList, bReset)
- ucrChkEndofRainsDate.SetRCode(clsDummyFunction, bReset)
- ucrChkEndofRainsOccurence.SetRCode(clsDummyFunction, bReset)
ucrPnlEndOfRainsAndSeasons.SetRCode(clsFirstOrLastFunction, bReset)
End Sub
@@ -999,6 +1287,8 @@ Public Class dlgEndOfRainsSeason
bOkEnabled = False
ElseIf ucrChkEndofSeasonOccurence.Checked AndAlso ucrInputEndofSeasonOccurence.IsEmpty Then
bOkEnabled = False
+ ElseIf ucrChkFilled.Checked AndAlso ucrInputFilled.IsEmpty Then
+ bOkEnabled = False
ElseIf rdoValueEvaporation.Checked AndAlso ucrInputEvaporation.IsEmpty Then
bOkEnabled = False
ElseIf rdoVariableEvaporation.Checked AndAlso ucrReceiverEvaporation.IsEmpty Then
@@ -1011,7 +1301,7 @@ Public Class dlgEndOfRainsSeason
End Sub
Private Sub cmdDoyRange_Click(sender As Object, e As EventArgs) Handles cmdDoyRange.Click
- sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDoyFilterCalc, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDoyFilterCalcFromList, strNewMainDataFrame:=ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
+ sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDoyFilterCalc, clsNewDayFromOperator:=clsDayFromOperator, clsNewIfElseFirstDoyFilledFunction:=clsIfElseFirstDoyFilledFunction, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDoyFilterCalcFromList, strNewMainDataFrame:=ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
sdgDoyRange.ShowDialog()
UpdateDayFilterPreview()
End Sub
@@ -1043,6 +1333,7 @@ Public Class dlgEndOfRainsSeason
End Sub
Private Sub DayChange()
+ clsEndSeasonStatusSummaryCalc.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverDOY.GetVariableNames() & ")", iPosition:=3)
clsEndRainsLastDoySummaryCalc.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverDOY.GetVariableNames() & ")", iPosition:=3)
clsEndSeasonFirstDoySummaryCalc.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverDOY.GetVariableNames() & ")", iPosition:=3)
clsEndRainsLastDateSummaryCalc.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverDate.GetVariableNames() & ")", iPosition:=3)
@@ -1054,8 +1345,64 @@ Public Class dlgEndOfRainsSeason
clsEndSeasonRainMaxCalc.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverRainfall.GetVariableNames & ")", iPosition:=3)
End Sub
+ Private Sub RemoveUnusedRow()
+ If Not ucrReceiverStation.IsEmpty AndAlso Not ucrReceiverYear.IsEmpty Then
+ clsDeleteunusedrowFunction.AddParameter("station", ucrReceiverStation.GetVariableNames(), iPosition:=2)
+ clsDeleteunusedrowFunction.AddParameter("year", ucrReceiverYear.GetVariableNames(), iPosition:=1)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsDeleteunusedrowFunction, iPosition:=13)
+ Else
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsDeleteunusedrowFunction)
+ clsDeleteunusedrowFunction.RemoveParameterByName("station")
+ clsDeleteunusedrowFunction.RemoveParameterByName("year")
+ End If
+ End Sub
+
+ Private Sub StationType()
+ If Not ucrReceiverStation.IsEmpty Then
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsConvertColumnTypeStationFunction, iPosition:=3)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsStationtypeFunction, iPosition:=2)
+ clsVectorFunction.AddParameter("y", ucrReceiverStation.GetVariableNames(), iPosition:=1, bIncludeArgumentName:=False)
+ clsStationtypeFunction.AddParameter("columns", ucrReceiverStation.GetVariableNames(), iPosition:=1)
+ clsConvertColumnTypeStationFunction.AddParameter("col_names", ucrReceiverStation.GetVariableNames(), iPosition:=1)
+ Else
+ ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsConvertColumnTypeStationFunction)
+ ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsStationtypeFunction)
+ clsVectorFunction.RemoveParameterByName("y")
+ clsConvertColumnTypeStationFunction.RemoveParameterByName("col_names")
+ clsStationtypeFunction.RemoveParameterByName("columns")
+ End If
+ End Sub
+
+ Private Sub YearStationVariable()
+ If Not ucrReceiverYear.IsEmpty Then
+ clsVectorFunction.AddParameter("x", ucrReceiverYear.GetVariableNames(), iPosition:=0, bIncludeArgumentName:=False)
+ clsConvertlinkedvariableFunction.AddParameter("link_cols", clsRFunctionParameter:=clsVectorFunction, iPosition:=1)
+ clsConvertlinkedvariable1Function.AddParameter("link_cols", clsRFunctionParameter:=clsVectorFunction, iPosition:=1)
+ clsLinkeddataFunction.AddParameter("link_cols", clsRFunctionParameter:=clsVectorFunction, iPosition:=1)
+ Else
+ clsLinkeddataFunction.RemoveParameterByName("link_cols")
+ clsConvertlinkedvariableFunction.RemoveParameterByName("link_cols")
+ clsConvertlinkedvariable1Function.RemoveParameterByName("link_cols")
+ clsVectorFunction.RemoveParameterByName("x")
+ End If
+ End Sub
+
Private Sub ucrReceiverStationYear_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrReceiverYear.ControlValueChanged, ucrReceiverStation.ControlValueChanged
GroupingBy()
+ YearStationVariable()
+ RemoveUnusedRow()
+ StationType()
+ If Not ucrReceiverYear.IsEmpty Then
+ clsGetColumnDataTypeFunction.AddParameter("columns", ucrReceiverYear.GetVariableNames(), iPosition:=1)
+ clsConvertColumnTypeFunction.AddParameter("col_names", ucrReceiverYear.GetVariableNames(), iPosition:=1)
+ clsConvertColumnType1Function.AddParameter("col_names", ucrReceiverYear.GetVariableNames(), iPosition:=1)
+ clsConvertColumnlinkeddataFunction.AddParameter("col_names", ucrReceiverYear.GetVariableNames(), iPosition:=1)
+ Else
+ clsConvertColumnlinkeddataFunction.RemoveParameterByName("col_names")
+ clsConvertColumnType1Function.RemoveParameterByName("col_names")
+ clsGetColumnDataTypeFunction.RemoveParameterByName("columns")
+ clsConvertColumnTypeFunction.RemoveParameterByName("col_names")
+ End If
End Sub
Private Sub ucrReceiverDOY_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrReceiverDOY.ControlValueChanged, ucrSelectorForWaterBalance.ControlValueChanged
@@ -1076,6 +1423,16 @@ Public Class dlgEndOfRainsSeason
Private Sub ucrSelectorForWaterBalance_DataFrameChanged() Handles ucrSelectorForWaterBalance.DataFrameChanged
clsDoyFilterCalcFromList.ClearParameters()
+ clsGetColumnDataTypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertColumnTypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertColumnType1Function.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertlinkedvariableFunction.AddParameter("from_data_frame", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertlinkedvariable1Function.AddParameter("from_data_frame", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertColumnTypeStationFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsStationtypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertColumnTypeStationFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsLinkeddataFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsDeleteunusedrowFunction.AddParameter("data_name", Chr(34) & ucrSelectorForWaterBalance.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
End Sub
Private Sub ucrPnlEvaporation_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrPnlEvaporation.ControlValueChanged, ucrReceiverEvaporation.ControlValueChanged, ucrInputEvaporation.ControlValueChanged
@@ -1135,11 +1492,39 @@ Public Class dlgEndOfRainsSeason
End If
End Sub
- Private Sub ucrPnlEndOfRainsAndSeasons_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrPnlEndOfRainsAndSeasons.ControlValueChanged
+ Private Sub ucrPnlEndOfRainsAndSeasons_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrPnlEndOfRainsAndSeasons.ControlValueChanged, ucrChkEndofSeasonOccurence.ControlValueChanged
If rdoEndOfRains.Checked Then
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsConditionsFilterCondCheckFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonStatusSummaryCalc)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonCombinationCalcStatusFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsRunCalculationStatusFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsVectorCalFormListFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonStatus2Function)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonCombiStatus2Function)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsRunCalculationStatus2Function)
+
clsRunCalculation.AddParameter("calc", clsRFunctionParameter:=clsEndRainsCombinationCalc)
clsFirstOrLastFunction = clsLastDoyFunction
Else
+ If ucrChkEndofSeasonOccurence.Checked Then
+ ucrBase.clsRsyntax.AddToAfterCodes(clsConditionsFilterCondCheckFunction, iPosition:=0)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsEndSeasonStatusSummaryCalc, iPosition:=1)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsEndSeasonCombinationCalcStatusFunction, iPosition:=2)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsRunCalculationStatusFunction, iPosition:=3)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsVectorCalFormListFunction, iPosition:=5)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsEndSeasonStatus2Function, iPosition:=6)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsEndSeasonCombiStatus2Function, iPosition:=7)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsRunCalculationStatus2Function, iPosition:=8)
+ Else
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsConditionsFilterCondCheckFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonStatusSummaryCalc)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsRunCalculationStatusFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonCombinationCalcStatusFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsVectorCalFormListFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonStatus2Function)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonCombiStatus2Function)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsRunCalculationStatus2Function)
+ End If
clsRunCalculation.AddParameter("calc", clsRFunctionParameter:=clsEndSeasonCombinationCalc)
clsFirstOrLastFunction = clsFirstDoyFunction
Evaporation()
@@ -1162,14 +1547,6 @@ Public Class dlgEndOfRainsSeason
End If
End Sub
- Private Sub ucrChkEndofSeasonOccurence_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkEndofSeasonOccurence.ControlValueChanged
- If ucrChkEndofSeasonOccurence.Checked Then
- clsEndSeasonCombinationSubCalcList.AddParameter("sub3", clsRFunctionParameter:=clsEndSeasonStatusSummaryCalc, bIncludeArgumentName:=False, iPosition:=2)
- Else
- clsEndSeasonCombinationSubCalcList.RemoveParameterByName("sub3")
- End If
- End Sub
-
Private Sub ucrChkEndofSeasonDoy_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkEndofSeasonDoy.ControlValueChanged
If ucrChkEndofSeasonDoy.Checked Then
clsEndSeasonCombinationSubCalcList.AddParameter("sub1", clsRFunctionParameter:=clsEndSeasonFirstDoySummaryCalc, bIncludeArgumentName:=False, iPosition:=0)
@@ -1207,11 +1584,26 @@ Public Class dlgEndOfRainsSeason
End Sub
Private Sub ucrNudWBLessThan_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrNudWBLessThan.ControlValueChanged, ucrChkEndofSeasonOccurence.ControlValueChanged, ucrInputEndofSeasonOccurence.ControlValueChanged, ucrChkEndofSeasonDate.ControlValueChanged, ucrInputEndofSeasonDate.ControlValueChanged, ucrChkEndofSeasonDoy.ControlValueChanged, ucrInputSeasonDoy.ControlValueChanged, ucrSelectorForWaterBalance.ControlValueChanged
+ EnableFilledvariable()
If Not ucrNudWBLessThan.IsEmpty Then
clsEndSeasonWBConditionOperator.AddParameter("1", ucrNudWBLessThan.GetText(), iPosition:=1)
Else
clsEndSeasonWBConditionOperator.RemoveParameterByName("1")
End If
- 'Evaporation()
+ End Sub
+
+ Private Sub ucrChkFilled_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkFilled.ControlValueChanged
+ EnableFilledvariable()
+ End Sub
+
+ Private Sub EnableFilledvariable()
+ If ucrChkFilled.Checked Then
+ ucrBase.clsRsyntax.AddToAfterCodes(clsEndSeasonFirstDoySummaryCalcFilledFunction, iPosition:=9)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsrunfilledFunction, iPosition:=10)
+ Else
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsrunfilledFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsEndSeasonFirstDoySummaryCalcFilledFunction)
+ End If
+ ucrChkFilled.Enabled = ucrChkEndofSeasonOccurence.Checked
End Sub
End Class
\ No newline at end of file
diff --git a/instat/dlgExtremesClimatic.vb b/instat/dlgExtremesClimatic.vb
index 06d745e640..6fb03d26cb 100644
--- a/instat/dlgExtremesClimatic.vb
+++ b/instat/dlgExtremesClimatic.vb
@@ -22,7 +22,7 @@ Public Class dlgExtremesClimatic
Private bUpdateMinMax As Boolean = True
Private clsExtreme As New RFunction
Private strCurrDataName As String = ""
- Private clsGroupByFunction, clsRunCalcFunction, clsDayFromAndTo, clsDayManipulation As New RFunction
+ Private clsGroupByFunction, clsIfElseFirstDoyFilledFunction, clsRunCalcFunction, clsDayFromAndTo, clsDayManipulation As New RFunction
Private clsDayFilterCalcFromConvert, clsDayFilterCalcFromList As New RFunction
Private clsDayFromAndToOperator, clsDayFromOperator, clsDayToOperator As New ROperator
Private clsCurrCalc As RFunction
@@ -334,6 +334,7 @@ Public Class dlgExtremesClimatic
clsPlotMrlFunction = New RFunction
clsThresholdPlotFunction = New RFunction
clsDeclusteringFunction = New RFunction
+ clsIfElseFirstDoyFilledFunction = New RFunction
clsDummyRfunction = clsPlotMrlFunction
ucrSelectorClimaticExtremes.Reset()
@@ -637,7 +638,7 @@ Public Class dlgExtremesClimatic
End Sub
Private Sub cmdDoyRange_Click(sender As Object, e As EventArgs) Handles cmdDoyRange.Click
- sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFromAndTo, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorClimaticExtremes.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
+ sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFromAndTo, clsNewIfElseFirstDoyFilledFunction:=clsIfElseFirstDoyFilledFunction, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorClimaticExtremes.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
sdgDoyRange.ShowDialog()
UpdateDayFilterPreview()
End Sub
diff --git a/instat/dlgScript.Designer.vb b/instat/dlgScript.Designer.vb
index a5686b7ed2..8df12cb676 100644
--- a/instat/dlgScript.Designer.vb
+++ b/instat/dlgScript.Designer.vb
@@ -92,6 +92,14 @@ Partial Class dlgScript
Me.clmDesc = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.Label3 = New System.Windows.Forms.Label()
Me.ucrCboExamplePackages = New instat.ucrInputComboBox()
+ Me.tbPageRepeat = New System.Windows.Forms.TabPage()
+ Me.lblColumns = New System.Windows.Forms.Label()
+ Me.ucrReceiverColumns = New instat.ucrReceiverSingle()
+ Me.lblExpression = New System.Windows.Forms.Label()
+ Me.ucrReceiverForCalculation = New instat.ucrReceiverExpression()
+ Me.lblSelectColumns = New System.Windows.Forms.Label()
+ Me.ucrReceiverRank = New instat.ucrReceiverSingle()
+ Me.ucrSelectorForRank = New instat.ucrSelectorByDataFrameAddRemove()
Me.lblPreview = New System.Windows.Forms.Label()
Me.txtScript = New System.Windows.Forms.TextBox()
Me.ucrBase = New instat.ucrButtons()
@@ -100,6 +108,7 @@ Partial Class dlgScript
Me.tbPageGetData.SuspendLayout()
Me.tbPageCommand.SuspendLayout()
Me.tbPageExamples.SuspendLayout()
+ Me.tbPageRepeat.SuspendLayout()
Me.SuspendLayout()
'
'tbFeatures
@@ -108,6 +117,7 @@ Partial Class dlgScript
Me.tbFeatures.Controls.Add(Me.tbPageGetData)
Me.tbFeatures.Controls.Add(Me.tbPageCommand)
Me.tbFeatures.Controls.Add(Me.tbPageExamples)
+ Me.tbFeatures.Controls.Add(Me.tbPageRepeat)
Me.tbFeatures.Location = New System.Drawing.Point(8, 7)
Me.tbFeatures.Name = "tbFeatures"
Me.tbFeatures.SelectedIndex = 0
@@ -250,8 +260,9 @@ Partial Class dlgScript
Me.ucrChkDisplayGraph.AutoSize = True
Me.ucrChkDisplayGraph.Checked = False
Me.ucrChkDisplayGraph.Location = New System.Drawing.Point(88, 217)
+ Me.ucrChkDisplayGraph.Margin = New System.Windows.Forms.Padding(6)
Me.ucrChkDisplayGraph.Name = "ucrChkDisplayGraph"
- Me.ucrChkDisplayGraph.Size = New System.Drawing.Size(113, 23)
+ Me.ucrChkDisplayGraph.Size = New System.Drawing.Size(113, 34)
Me.ucrChkDisplayGraph.TabIndex = 60
'
'ucrChkSaveDataFrameSingle
@@ -259,8 +270,9 @@ Partial Class dlgScript
Me.ucrChkSaveDataFrameSingle.AutoSize = True
Me.ucrChkSaveDataFrameSingle.Checked = False
Me.ucrChkSaveDataFrameSingle.Location = New System.Drawing.Point(55, 174)
+ Me.ucrChkSaveDataFrameSingle.Margin = New System.Windows.Forms.Padding(6)
Me.ucrChkSaveDataFrameSingle.Name = "ucrChkSaveDataFrameSingle"
- Me.ucrChkSaveDataFrameSingle.Size = New System.Drawing.Size(146, 23)
+ Me.ucrChkSaveDataFrameSingle.Size = New System.Drawing.Size(146, 34)
Me.ucrChkSaveDataFrameSingle.TabIndex = 59
'
'ucrInputSaveDataFrame
@@ -613,8 +625,9 @@ Partial Class dlgScript
Me.ucrChkWindow.AutoSize = True
Me.ucrChkWindow.Checked = False
Me.ucrChkWindow.Location = New System.Drawing.Point(233, 94)
+ Me.ucrChkWindow.Margin = New System.Windows.Forms.Padding(6)
Me.ucrChkWindow.Name = "ucrChkWindow"
- Me.ucrChkWindow.Size = New System.Drawing.Size(126, 23)
+ Me.ucrChkWindow.Size = New System.Drawing.Size(126, 34)
Me.ucrChkWindow.TabIndex = 67
'
'rdoWindow
@@ -724,8 +737,9 @@ Partial Class dlgScript
Me.ucrChkInto.AutoSize = True
Me.ucrChkInto.Checked = False
Me.ucrChkInto.Location = New System.Drawing.Point(233, 33)
+ Me.ucrChkInto.Margin = New System.Windows.Forms.Padding(6)
Me.ucrChkInto.Name = "ucrChkInto"
- Me.ucrChkInto.Size = New System.Drawing.Size(84, 23)
+ Me.ucrChkInto.Size = New System.Drawing.Size(84, 34)
Me.ucrChkInto.TabIndex = 63
'
'ucrInputSaveData
@@ -781,8 +795,9 @@ Partial Class dlgScript
Me.ucrChkOpenRFile.AutoSize = True
Me.ucrChkOpenRFile.Checked = False
Me.ucrChkOpenRFile.Location = New System.Drawing.Point(156, 64)
+ Me.ucrChkOpenRFile.Margin = New System.Windows.Forms.Padding(6)
Me.ucrChkOpenRFile.Name = "ucrChkOpenRFile"
- Me.ucrChkOpenRFile.Size = New System.Drawing.Size(100, 23)
+ Me.ucrChkOpenRFile.Size = New System.Drawing.Size(100, 34)
Me.ucrChkOpenRFile.TabIndex = 53
'
'ucrInputChooseFile
@@ -958,6 +973,108 @@ Partial Class dlgScript
Me.ucrCboExamplePackages.Size = New System.Drawing.Size(137, 21)
Me.ucrCboExamplePackages.TabIndex = 51
'
+ 'tbPageRepeat
+ '
+ Me.tbPageRepeat.Controls.Add(Me.lblColumns)
+ Me.tbPageRepeat.Controls.Add(Me.ucrReceiverColumns)
+ Me.tbPageRepeat.Controls.Add(Me.lblExpression)
+ Me.tbPageRepeat.Controls.Add(Me.ucrReceiverForCalculation)
+ Me.tbPageRepeat.Controls.Add(Me.lblSelectColumns)
+ Me.tbPageRepeat.Controls.Add(Me.ucrReceiverRank)
+ Me.tbPageRepeat.Controls.Add(Me.ucrSelectorForRank)
+ Me.tbPageRepeat.Location = New System.Drawing.Point(4, 22)
+ Me.tbPageRepeat.Name = "tbPageRepeat"
+ Me.tbPageRepeat.Padding = New System.Windows.Forms.Padding(3)
+ Me.tbPageRepeat.Size = New System.Drawing.Size(438, 278)
+ Me.tbPageRepeat.TabIndex = 5
+ Me.tbPageRepeat.Text = "Repeat"
+ Me.tbPageRepeat.UseVisualStyleBackColor = True
+ '
+ 'lblColumns
+ '
+ Me.lblColumns.AutoSize = True
+ Me.lblColumns.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lblColumns.Location = New System.Drawing.Point(248, 83)
+ Me.lblColumns.Name = "lblColumns"
+ Me.lblColumns.Size = New System.Drawing.Size(50, 13)
+ Me.lblColumns.TabIndex = 124
+ Me.lblColumns.Tag = ""
+ Me.lblColumns.Text = "Columns:"
+ '
+ 'ucrReceiverColumns
+ '
+ Me.ucrReceiverColumns.AutoSize = True
+ Me.ucrReceiverColumns.frmParent = Nothing
+ Me.ucrReceiverColumns.Location = New System.Drawing.Point(246, 101)
+ Me.ucrReceiverColumns.Margin = New System.Windows.Forms.Padding(0)
+ Me.ucrReceiverColumns.Name = "ucrReceiverColumns"
+ Me.ucrReceiverColumns.Selector = Nothing
+ Me.ucrReceiverColumns.Size = New System.Drawing.Size(120, 20)
+ Me.ucrReceiverColumns.strNcFilePath = ""
+ Me.ucrReceiverColumns.TabIndex = 123
+ Me.ucrReceiverColumns.ucrSelector = Nothing
+ '
+ 'lblExpression
+ '
+ Me.lblExpression.AutoSize = True
+ Me.lblExpression.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lblExpression.Location = New System.Drawing.Point(12, 213)
+ Me.lblExpression.Margin = New System.Windows.Forms.Padding(2, 0, 2, 0)
+ Me.lblExpression.Name = "lblExpression"
+ Me.lblExpression.Size = New System.Drawing.Size(58, 13)
+ Me.lblExpression.TabIndex = 122
+ Me.lblExpression.Tag = "Expression"
+ Me.lblExpression.Text = "Statement:"
+ '
+ 'ucrReceiverForCalculation
+ '
+ Me.ucrReceiverForCalculation.AutoSize = True
+ Me.ucrReceiverForCalculation.frmParent = Nothing
+ Me.ucrReceiverForCalculation.Location = New System.Drawing.Point(9, 235)
+ Me.ucrReceiverForCalculation.Margin = New System.Windows.Forms.Padding(2)
+ Me.ucrReceiverForCalculation.Name = "ucrReceiverForCalculation"
+ Me.ucrReceiverForCalculation.Selector = Nothing
+ Me.ucrReceiverForCalculation.Size = New System.Drawing.Size(390, 30)
+ Me.ucrReceiverForCalculation.strNcFilePath = ""
+ Me.ucrReceiverForCalculation.TabIndex = 121
+ Me.ucrReceiverForCalculation.ucrSelector = Nothing
+ '
+ 'lblSelectColumns
+ '
+ Me.lblSelectColumns.AutoSize = True
+ Me.lblSelectColumns.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lblSelectColumns.Location = New System.Drawing.Point(248, 32)
+ Me.lblSelectColumns.Name = "lblSelectColumns"
+ Me.lblSelectColumns.Size = New System.Drawing.Size(40, 13)
+ Me.lblSelectColumns.TabIndex = 10
+ Me.lblSelectColumns.Tag = ""
+ Me.lblSelectColumns.Text = "Select:"
+ '
+ 'ucrReceiverRank
+ '
+ Me.ucrReceiverRank.AutoSize = True
+ Me.ucrReceiverRank.frmParent = Nothing
+ Me.ucrReceiverRank.Location = New System.Drawing.Point(246, 48)
+ Me.ucrReceiverRank.Margin = New System.Windows.Forms.Padding(0)
+ Me.ucrReceiverRank.Name = "ucrReceiverRank"
+ Me.ucrReceiverRank.Selector = Nothing
+ Me.ucrReceiverRank.Size = New System.Drawing.Size(145, 20)
+ Me.ucrReceiverRank.strNcFilePath = ""
+ Me.ucrReceiverRank.TabIndex = 11
+ Me.ucrReceiverRank.ucrSelector = Nothing
+ '
+ 'ucrSelectorForRank
+ '
+ Me.ucrSelectorForRank.AutoSize = True
+ Me.ucrSelectorForRank.bDropUnusedFilterLevels = False
+ Me.ucrSelectorForRank.bShowHiddenColumns = False
+ Me.ucrSelectorForRank.bUseCurrentFilter = True
+ Me.ucrSelectorForRank.Location = New System.Drawing.Point(12, 16)
+ Me.ucrSelectorForRank.Margin = New System.Windows.Forms.Padding(0)
+ Me.ucrSelectorForRank.Name = "ucrSelectorForRank"
+ Me.ucrSelectorForRank.Size = New System.Drawing.Size(318, 274)
+ Me.ucrSelectorForRank.TabIndex = 9
+ '
'lblPreview
'
Me.lblPreview.AutoSize = True
@@ -992,7 +1109,7 @@ Partial Class dlgScript
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(458, 489)
+ Me.ClientSize = New System.Drawing.Size(458, 467)
Me.Controls.Add(Me.txtScript)
Me.Controls.Add(Me.lblPreview)
Me.Controls.Add(Me.tbFeatures)
@@ -1012,6 +1129,8 @@ Partial Class dlgScript
Me.tbPageCommand.PerformLayout()
Me.tbPageExamples.ResumeLayout(False)
Me.tbPageExamples.PerformLayout()
+ Me.tbPageRepeat.ResumeLayout(False)
+ Me.tbPageRepeat.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -1090,4 +1209,12 @@ Partial Class dlgScript
Friend WithEvents ucrInputDataframeColumn As ucrInputTextBox
Friend WithEvents ucrInputSaveColumn As ucrInputTextBox
Friend WithEvents rdoVariable As RadioButton
+ Friend WithEvents tbPageRepeat As TabPage
+ Friend WithEvents lblSelectColumns As Label
+ Friend WithEvents ucrReceiverRank As ucrReceiverSingle
+ Friend WithEvents ucrSelectorForRank As ucrSelectorByDataFrameAddRemove
+ Friend WithEvents ucrReceiverForCalculation As ucrReceiverExpression
+ Friend WithEvents lblExpression As Label
+ Friend WithEvents lblColumns As Label
+ Friend WithEvents ucrReceiverColumns As ucrReceiverSingle
End Class
diff --git a/instat/dlgScript.vb b/instat/dlgScript.vb
index 2f8f71f0b7..8604fd5f5c 100644
--- a/instat/dlgScript.vb
+++ b/instat/dlgScript.vb
@@ -20,7 +20,7 @@ Public Class dlgScript
Private strComment As String = "Code generated by the dialog, Script"
Private bFirstload As Boolean = True
Private clsSaveDataFunction As New RFunction
- Private clsGetRObjectFunction As New RFunction
+ Private clsGetRObjectFunction, clsGetSelectedDataFrameFunction As New RFunction
Private dctOutputObjectTypes As New Dictionary(Of String, String)
Private dctOutputObjectFormats As New Dictionary(Of String, String)
@@ -96,6 +96,8 @@ Public Class dlgScript
ucrReceiverGetColumns.Selector = ucrSelectorGetObject
ucrReceiverGetColumns.SetLinkedDisplayControl(lblGetColumn)
+ ucrReceiverColumns.Selector = ucrSelectorForRank
+
ucrCboGetOutputObjectType.SetItems(dctOutputObjectTypes, bSetConditions:=False)
ucrCboGetOutputObjectType.SetDropDownStyleAsNonEditable()
ucrCboGetOutputObjectType.SetLinkedDisplayControl(lblGetObjectType)
@@ -152,6 +154,15 @@ Public Class dlgScript
ucrBase.bAddScriptToScriptWindowOnClickOk = False
ucrBase.bMakeVisibleScriptWindow = False
+ ucrReceiverRank.SetParameter(New RParameter("x", 0))
+ ucrReceiverRank.Selector = ucrSelectorForRank
+ ucrReceiverRank.SetMeAsReceiver()
+ ucrReceiverRank.bUseFilteredData = False
+ ucrReceiverRank.SetParameterIsRFunction()
+
+ ucrSelectorForRank.SetItemType("column_selection")
+ ucrReceiverRank.strSelectorHeading = "Column selections"
+
End Sub
'todo. this function should eventually be removed once we have a control that displays packages
@@ -197,7 +208,8 @@ Public Class dlgScript
ucrDataFrameGetDF.Reset()
rdoGetDataFrame.Checked = True
rdoDataFrame.Checked = True
-
+ ucrSelectorForRank.Reset()
+ ucrReceiverForCalculation.Clear()
'activate the selected tab to library tab
tbFeatures.SelectedIndex = -1
tbFeatures.SelectedTab = tbPageSaveData
@@ -840,4 +852,47 @@ Public Class dlgScript
PreviewScript(strScript)
End Sub
+ Private Function ConstructScript(strSelectedScript As String, strVariable As String, strDataFrame As String) As String
+
+ ' Extract the LHS variable
+ Dim match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(strSelectedScript, "(\S+)\s*<-\s*(.*)")
+ Dim lhsVariable As String = If(match.Success, match.Groups(1).Value, "calc") ' Default to "calc" if no match
+ Dim rhs As String = If(match.Success, match.Groups(2).Value, strSelectedScript)
+
+ ' Modify RHS with the selected variable
+ Dim modifiedRhs As String = If(Not String.IsNullOrEmpty(strVariable), rhs.Replace(strVariable, $"{strDataFrame}[[.x]]"), rhs)
+
+ ' Construct the main script using string interpolation
+ Dim strConstructedScript As String = $"
+ {lhsVariable} <- purrr::map(.x = {"names(" & lhsVariable & ")"},
+ .f = ~{modifiedRhs}) %>%
+ dplyr::bind_cols(.)"
+ Dim strAssignedScript As String = ""
+
+ ' Get the selected data frame columns
+ Dim clsGetSelectedDataFrameFunction As New RFunction
+ clsGetSelectedDataFrameFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$get_data_frame")
+ clsGetSelectedDataFrameFunction.AddParameter("data_name", Chr(34) & ucrSelectorForRank.strCurrentDataFrame & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsGetSelectedDataFrameFunction.AddParameter("column_selection_name ", ucrReceiverRank.GetVariableNames, iPosition:=1)
+ clsGetSelectedDataFrameFunction.SetAssignTo(lhsVariable)
+ clsGetSelectedDataFrameFunction.ToScript(strScript:=strAssignedScript)
+
+ ' Prepend the dataframe selection script
+ strConstructedScript = "#Get the variables in the chosen select." & Environment.NewLine & "# Then do the calculation for each variable in turn, " & Environment.NewLine & "# So produce a new column for each variable in the select." & Environment.NewLine & strAssignedScript & Environment.NewLine & strConstructedScript.Trim()
+
+ Return strConstructedScript
+ End Function
+
+ Private Sub ucrReceiverForCalculation_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrReceiverForCalculation.ControlValueChanged
+ PreviewScript(ConstructScript(ucrReceiverForCalculation.GetVariableNames(False), ucrReceiverColumns.GetVariableNames(False), ucrSelectorForRank.strCurrentDataFrame))
+ End Sub
+
+ Private Sub ucrReceiverColumns_Enter(sender As Object, e As EventArgs) Handles ucrReceiverColumns.Enter
+ ucrReceiverColumns.SetItemType("column")
+ End Sub
+
+ Private Sub ucrReceiverRank_Enter(sender As Object, e As EventArgs) Handles ucrReceiverRank.Enter
+ ucrSelectorForRank.SetItemType("column_selection")
+ End Sub
+
End Class
\ No newline at end of file
diff --git a/instat/dlgSpells.vb b/instat/dlgSpells.vb
index d8db2c82ea..81b979c704 100644
--- a/instat/dlgSpells.vb
+++ b/instat/dlgSpells.vb
@@ -18,7 +18,7 @@ Imports instat.Translations
Public Class dlgSpells
Private bFirstload As Boolean = True
Private bReset As Boolean = True
- Private clsSpellLength, clsMaxSpellManipulation, clsSubSpellLength1 As New RFunction
+ Private clsSpellLength, clsMaxSpellManipulation, clsIfElseFirstDoyFilledFunction, clsSubSpellLength1 As New RFunction
Private clsMaxSpellSummary, clsMaxValueList, clsMaxFunction, clsMaxSpellSubCalcs As New RFunction
Private clsDayFilter, clsGroupBy, clsGroupByStation, clsDayFilterCalcFromConvert, clsDayFilterCalcFromList As New RFunction
Private clsDayFromAndToOperator, clsDayFromOperator, clsDayToOperator As New ROperator
@@ -135,6 +135,7 @@ Public Class dlgSpells
clsRSpellFilterSubFunct = New RFunction
clsSpellFilterFunction = New RFunction
clsDotSpellsFunction = New RFunction
+ clsIfElseFirstDoyFilledFunction = New RFunction
Dim strSpellLogical As String = "spell_day"
Dim strSpellName As String = "spell_length"
@@ -348,7 +349,7 @@ Public Class dlgSpells
End Sub
Private Sub cmdDoyRange_Click(sender As Object, e As EventArgs) Handles cmdDoyRange.Click
- sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFilter, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorForSpells.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
+ sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFilter, clsNewIfElseFirstDoyFilledFunction:=clsIfElseFirstDoyFilledFunction, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorForSpells.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
sdgDoyRange.ShowDialog()
UpdateDayFilterPreview()
End Sub
diff --git a/instat/dlgStartofRains.vb b/instat/dlgStartofRains.vb
index ca242b4e7c..a64ddd626b 100644
--- a/instat/dlgStartofRains.vb
+++ b/instat/dlgStartofRains.vb
@@ -18,12 +18,12 @@ Imports instat.Translations
Public Class dlgStartofRains
Private bResetSubdialog As Boolean = True
- Private clsCalcRainDay, clsCalcStartDOY, clsVectorFunction, clsGetlinkeddataFunction, clsGetDataFrameFunction, clsListevapFunction, clsRollEvaporationFunction, clsFractionEvapFunction, clsSumEvapFunction, clsConvertColumnType1Function, clsConvertColumnType2Function, clsConvertColumnTypeFunction, clsGetColumnDataTypeFunction, clsDummyFunction, clsIfelseStatusFunction, clsIfelseStatus1Function, clsFirstStatusFunction, clsIsNAStatusFunction, clsCalcStartDate, clsCombinationCalc, clsListCalFunction, clsCombinationManipList, clsCombinationSubCalcList, clsListSubCalc, clsManipulationFirstDOYPerYear, clsConditionsFilter, clsCombinedList As New RFunction
+ Private clsCalcRainDay, clsCalcStartDOY, clsConvertssndLinkedVariableFunction, clsDeleteunusedrowFunction, clsRunStartStatus2Function, clsStartRainCombine2Function, clsListFunction, clsNastatus2Function, clsIfElseStatus2Function, clsStatRainStatus2Function, clsSetnameRainStatusFunction, clsSetnameRainFunction, clsCalculatedListformFunction, clsConvertLinkedvariablesvectorFunction, clsConvertLinkedVariablesFunction, clsStationTypeFunction, clsConvertStationtypeFunction, clsVectorFunction, clsGetlinkeddataFunction, clsGetDataFrameFunction, clsListevapFunction, clsRollEvaporationFunction, clsFractionEvapFunction, clsSumEvapFunction, clsConvertColumnType1Function, clsConvertColumnType2Function, clsConvertColumnTypeFunction, clsGetColumnDataTypeFunction, clsDummyFunction, clsIfelseStatusFunction, clsIfelseStatus1Function, clsFirstStatusFunction, clsIsNAStatusFunction, clsCalcStartDate, clsCombinationCalc, clsListCalFunction, clsCombinationManipList, clsCombinationSubCalcList, clsListSubCalc, clsManipulationFirstDOYPerYear, clsConditionsFilter, clsCombinedList As New RFunction
Private clsDayFromAndTo, clsGroupByStation, clsGroupByYear, clsListToTalRain, clsApplyInstatFunction, clsFirstDOY, clsFirstDate As New RFunction
Private clsDayFromAndToOperator, clsEvapOperator, clsDayFromOperator, clsDayToOperator, clsRainDayOperator, clsRainDayConditionOperator, clsConditionsAndOperator, clsTRCombineOperator, clsRollingSumRainDayOperator, clsDSCombineOperator, clsDPCombineOperator As New ROperator
Private clsDayFilterCalcFromConvert, clsDayFilterCalcFromList As New RFunction
- Private clsSpellsFunction As New RFunction
+ Private clsSpellsFunction, clsIfElseFirstDoyFilledFunction As New RFunction
Private clsRainDaySpellsOperator As New ROperator
Private clsConditionsOrOverallOperator As New ROperator
@@ -238,6 +238,10 @@ Public Class dlgStartofRains
Dim strStartDoy As String = "start_rain"
Dim strRollSumRainDryPeriod As String = "roll_sum_rain_dry_period"
Dim strYearType As String = "year_type"
+ Dim strStationType As String = "station_type"
+ Dim strcalculatedfromlist As String = "calculated_from_list"
+ Dim strStartStatus2 As String = "start_rain_status2"
+ Dim strstartraincombinedstatus2 As String = "start_rain_combined_status_2"
clsRainRollingSumFunction = New RFunction
clsGetlinkeddataFunction = New RFunction
@@ -246,6 +250,13 @@ Public Class dlgStartofRains
clsDayFilterCalcFromConvert = New RFunction
clsDayFilterCalcFromList = New RFunction
clsDummyFunction = New RFunction
+ clsIfElseFirstDoyFilledFunction = New RFunction
+ clsConvertLinkedvariablesvectorFunction = New RFunction
+ clsSetnameRainStatusFunction = New RFunction
+ clsSetnameRainFunction = New RFunction
+ clsIfElseStatus2Function = New RFunction
+ clsNastatus2Function = New RFunction
+ clsListFunction = New RFunction
clsDayFromAndTo.Clear()
clsDayFromAndToOperator.Clear()
@@ -275,6 +286,15 @@ Public Class dlgStartofRains
clsEvapOperator.Clear()
clsRollEvaporationFunction.Clear()
clsListevapFunction.Clear()
+ clsStationTypeFunction.Clear()
+ clsConvertStationtypeFunction.Clear()
+ clsConvertLinkedVariablesFunction.Clear()
+ clsCalculatedListformFunction.Clear()
+ clsStatRainStatus2Function.Clear()
+ clsStartRainCombine2Function.Clear()
+ clsRunStartStatus2Function.Clear()
+ clsConvertssndLinkedVariableFunction.Clear()
+ clsDeleteunusedrowFunction.Clear()
clsSpellsFunction.Clear()
clsRainDaySpellsOperator.Clear()
@@ -390,7 +410,7 @@ Public Class dlgStartofRains
clsConvertColumnType1Function.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
clsConvertColumnType1Function.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
- clsConvertColumnType1Function.AddParameter("to_type", "year_type", iPosition:=2)
+ clsConvertColumnType1Function.AddParameter("to_type", strYearType, iPosition:=2)
'TOTAL RAIN: associated with ucrChkTotalRainfall
clsCalcRainRollingSum.SetRCommand("instat_calculation$new")
@@ -768,8 +788,8 @@ Public Class dlgStartofRains
clsVectorFunction.SetRCommand("c")
clsConvertColumnType2Function.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
- clsConvertColumnType2Function.AddParameter("data_name", "linked_data_name", iPosition:=0)
- clsConvertColumnType2Function.AddParameter("to_type", "year_type", iPosition:=2)
+ clsConvertColumnType2Function.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertColumnType2Function.AddParameter("to_type", strStationType, iPosition:=2)
'Run Calculations
clsListCalFunction.SetRCommand("list")
@@ -780,17 +800,82 @@ Public Class dlgStartofRains
clsApplyInstatFunction.AddParameter("calc", clsRFunctionParameter:=clsCombinationCalc, iPosition:=0)
clsApplyInstatFunction.AddParameter("param_list", clsRFunctionParameter:=clsListCalFunction, iPosition:=2)
+ clsStationTypeFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$get_column_data_types")
+ clsStationTypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsStationTypeFunction.SetAssignTo(strStationType)
+
+ clsConvertStationtypeFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_column_to_type")
+ clsConvertStationtypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertStationtypeFunction.AddParameter("to_type", Chr(34) & "factor" & Chr(34), iPosition:=2)
+
+ clsConvertLinkedVariablesFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_linked_variable")
+ clsConvertLinkedVariablesFunction.AddParameter("from_data_frame", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertLinkedVariablesFunction.AddParameter("link_cols", clsRFunctionParameter:=clsConvertLinkedvariablesvectorFunction, iPosition:=2)
+
+ clsConvertLinkedvariablesvectorFunction.SetRCommand("c")
+
+ clsCalculatedListformFunction.SetRCommand("c")
+ clsCalculatedListformFunction.AddParameter("x", clsRFunctionParameter:=clsSetnameRainStatusFunction, iPosition:=0, bIncludeArgumentName:=False)
+ clsCalculatedListformFunction.AddParameter("y", clsRFunctionParameter:=clsSetNameRainFunction, iPosition:=1, bIncludeArgumentName:=False)
+ clsCalculatedListformFunction.SetAssignTo(strcalculatedfromlist)
+
+ clsSetnameRainStatusFunction.SetRCommand("setNames")
+ clsSetnameRainStatusFunction.AddParameter("x", Chr(34) & strStartStatus & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsSetnameRainStatusFunction.AddParameter("y", "linked_data_name", iPosition:=1, bIncludeArgumentName:=False)
+
+ clsSetnameRainFunction.SetRCommand("setNames")
+ clsSetnameRainFunction.AddParameter("x", Chr(34) & strStartDoy & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsSetnameRainFunction.AddParameter("y", "linked_data_name", iPosition:=1, bIncludeArgumentName:=False)
+
+ clsStatRainStatus2Function.SetRCommand("instat_calculation$new")
+ clsStatRainStatus2Function.AddParameter("type", Chr(34) & "calculation" & Chr(34), iPosition:=0)
+ clsStatRainStatus2Function.AddParameter("function_exp", clsRFunctionParameter:=clsIfElseStatus2Function, iPosition:=1)
+ clsStatRainStatus2Function.AddParameter("calculated_from", strcalculatedfromlist, iPosition:=2)
+ clsStatRainStatus2Function.AddParameter("result_name", Chr(34) & "start_rain_status" & Chr(34), iPosition:=3)
+ clsStatRainStatus2Function.AddParameter("save", "2", iPosition:=4)
+ clsStatRainStatus2Function.SetAssignTo(strStartStatus2)
+ clsIfElseStatus2Function.SetRCommand("ifelse")
+ clsIfElseStatus2Function.bToScriptAsRString = True
+ clsIfElseStatus2Function.AddParameter("test", clsRFunctionParameter:=clsNastatus2Function, iPosition:=0, bIncludeArgumentName:=False)
+ clsIfElseStatus2Function.AddParameter("yes", "TRUE", iPosition:=1, bIncludeArgumentName:=False)
+ clsIfElseStatus2Function.AddParameter("no", strStartStatus, iPosition:=2, bIncludeArgumentName:=False)
+
+ clsNastatus2Function.SetRCommand("!is.na")
+ clsNastatus2Function.AddParameter("x", strStartDoy, iPosition:=0, bIncludeArgumentName:=False)
+
+ clsStartRainCombine2Function.SetRCommand("instat_calculation$new")
+ clsStartRainCombine2Function.AddParameter("type", Chr(34) & "combination" & Chr(34), iPosition:=0)
+ clsStartRainCombine2Function.AddParameter("sub_calculations", clsRFunctionParameter:=clsListFunction, iPosition:=1)
+ clsStartRainCombine2Function.SetAssignTo(strstartraincombinedstatus2)
+
+ clsListFunction.SetRCommand("list")
+ clsListFunction.AddParameter("x", strStartStatus2, iPosition:=0, bIncludeArgumentName:=False)
+
+ clsRunStartStatus2Function.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$run_instat_calculation")
+ clsRunStartStatus2Function.AddParameter("calc", strstartraincombinedstatus2, iPosition:=0)
+ clsRunStartStatus2Function.AddParameter("display", "FALSE", iPosition:=1)
+ clsRunStartStatus2Function.AddParameter("param_list", clsRFunctionParameter:=clsListCalFunction, iPosition:=2)
+
+ clsConvertssndLinkedVariableFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$convert_linked_variable")
+ clsConvertssndLinkedVariableFunction.AddParameter("from_data_frame", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertssndLinkedVariableFunction.AddParameter("link_cols", clsRFunctionParameter:=clsConvertLinkedvariablesvectorFunction, iPosition:=1)
+
+ clsDeleteunusedrowFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$remove_unused_station_year_combinations")
+ clsDeleteunusedrowFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+
ucrBase.clsRsyntax.ClearCodes()
ucrBase.clsRsyntax.SetBaseRFunction(clsApplyInstatFunction)
ucrBase.clsRsyntax.AddToBeforeCodes(clsGetColumnDataTypeFunction, iPosition:=0)
ucrBase.clsRsyntax.AddToBeforeCodes(clsConvertColumnTypeFunction, iPosition:=1)
- ucrBase.clsRsyntax.AddToAfterCodes(clsGetlinkeddataFunction, iPosition:=0)
- ucrBase.clsRsyntax.AddToAfterCodes(clsConvertColumnType1Function, iPosition:=1)
- ucrBase.clsRsyntax.AddToAfterCodes(clsConvertColumnType2Function, iPosition:=2)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsConvertLinkedVariablesFunction, iPosition:=4)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsConvertColumnType1Function, iPosition:=5)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsConvertssndLinkedVariableFunction, iPosition:=8)
SetReceiver()
ChangeDSValue()
AdditionalCondition()
+ GroupByStationOptions()
+ AddRemoveStartStatus()
End Sub
Private Sub SetRCodeForControls(bReset As Boolean)
@@ -807,10 +892,10 @@ Public Class dlgStartofRains
ucrNudTROverDays.AddAdditionalCodeParameterPair(clsRollEvaporationFunction, New RParameter("n", 1), iAdditionalPairNo:=1)
ucrReceiverDOY.SetRCode(clsDayToOperator, bReset)
- ucrChkAsDoy.SetRCode(clsCombinationSubCalcList, bReset)
- ucrChkStatus.SetRCode(clsDummyFunction, bReset)
- ucrChkAsDate.SetRCode(clsDummyFunction, bReset)
If bReset Then
+ ucrChkAsDoy.SetRCode(clsCombinationSubCalcList, bReset)
+ ucrChkStatus.SetRCode(clsDummyFunction, bReset)
+ ucrChkAsDate.SetRCode(clsDummyFunction, bReset)
ucrChkAdditional.SetRCode(clsDummyFunction, bReset)
End If
ucrInputThreshold.SetRCode(clsRainDayOperator, bReset)
@@ -865,7 +950,7 @@ Public Class dlgStartofRains
End Sub
Private Sub cmdDoyRange_Click(sender As Object, e As EventArgs) Handles cmdDoyRange.Click
- sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFromAndTo, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
+ sdgDoyRange.Setup(clsNewDoyFilterCalc:=clsDayFromAndTo, clsNewIfElseFirstDoyFilledFunction:=clsIfElseFirstDoyFilledFunction, clsNewDayFromOperator:=clsDayFromOperator, clsNewDayToOperator:=clsDayToOperator, clsNewCalcFromList:=clsDayFilterCalcFromList, strNewMainDataFrame:=ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strNewDoyColumn:=ucrReceiverDOY.GetVariableNames(False))
sdgDoyRange.ShowDialog()
UpdateDayFilterPreview()
End Sub
@@ -927,15 +1012,31 @@ Public Class dlgStartofRains
Private Sub GroupByStationOptions()
If Not ucrReceiverStation.IsEmpty Then
+ clsDeleteunusedrowFunction.AddParameter("station", ucrReceiverStation.GetVariableNames(), iPosition:=2)
clsCombinationManipList.AddParameter("manip1", clsRFunctionParameter:=clsGroupByStation, bIncludeArgumentName:=False, iPosition:=0)
clsListToTalRain.AddParameter("manip1", clsRFunctionParameter:=clsGroupByStation, bIncludeArgumentName:=False)
clsCalcRainRollingSum.AddParameter("manipulations", clsRFunctionParameter:=clsListToTalRain, iPosition:=4)
clsGroupByStation.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverStation.GetVariableNames & ")", iPosition:=3)
+ clsConvertStationtypeFunction.AddParameter("col_names", ucrReceiverStation.GetVariableNames(), iPosition:=1)
+ clsConvertLinkedvariablesvectorFunction.AddParameter("y", ucrReceiverStation.GetVariableNames(), iPosition:=1, bIncludeArgumentName:=False)
+ clsStationTypeFunction.AddParameter("columns", ucrReceiverStation.GetVariableNames(), iPosition:=1)
+ clsConvertColumnType2Function.AddParameter("col_names", ucrReceiverStation.GetVariableNames(), iPosition:=1)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsStationTypeFunction, iPosition:=2)
+ ucrBase.clsRsyntax.AddToBeforeCodes(clsConvertStationtypeFunction, iPosition:=3)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsDeleteunusedrowFunction, iPosition:=7)
Else
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsDeleteunusedrowFunction)
+ ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsStationTypeFunction)
+ ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsConvertStationtypeFunction)
+ clsDeleteunusedrowFunction.RemoveParameterByName("station")
+ clsConvertStationtypeFunction.RemoveParameterByName("col_names")
clsCombinationManipList.RemoveParameterByName("manip1")
clsListToTalRain.RemoveParameterByName("manip1")
clsCalcRainRollingSum.RemoveParameterByName("manipulations")
clsGroupByStation.RemoveParameterByName("calculated_from")
+ clsConvertLinkedvariablesvectorFunction.RemoveParameterByName("y")
+ clsStationTypeFunction.RemoveParameterByName("columns")
+ clsConvertColumnType2Function.RemoveParameterByName("col_names")
End If
End Sub
@@ -944,14 +1045,16 @@ Public Class dlgStartofRains
clsGetColumnDataTypeFunction.AddParameter("columns", ucrReceiverYear.GetVariableNames(), iPosition:=1)
clsConvertColumnTypeFunction.AddParameter("col_names", ucrReceiverYear.GetVariableNames(), iPosition:=1)
clsConvertColumnType1Function.AddParameter("col_names", ucrReceiverYear.GetVariableNames(), iPosition:=1)
- clsConvertColumnType2Function.AddParameter("col_names", ucrReceiverYear.GetVariableNames(), iPosition:=1)
+ clsDeleteunusedrowFunction.AddParameter("year", ucrReceiverYear.GetVariableNames(), iPosition:=1)
clsGroupByYear.AddParameter("calculated_from", "list(" & strCurrDataName & "=" & ucrReceiverYear.GetVariableNames & ")", iPosition:=3)
+ clsConvertLinkedvariablesvectorFunction.AddParameter("x", ucrReceiverYear.GetVariableNames(), iPosition:=0, bIncludeArgumentName:=False)
Else
+ clsDeleteunusedrowFunction.RemoveParameterByName("year")
clsGroupByYear.RemoveParameterByName("calculated_from")
clsGetColumnDataTypeFunction.RemoveParameterByName("columns")
clsConvertColumnTypeFunction.RemoveParameterByName("col_names")
clsConvertColumnType1Function.RemoveParameterByName("col_names")
- clsConvertColumnType2Function.RemoveParameterByName("col_names")
+ clsConvertLinkedvariablesvectorFunction.RemoveParameterByName("x")
End If
End Sub
@@ -1024,6 +1127,13 @@ Public Class dlgStartofRains
clsConvertColumnTypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
clsConvertColumnType1Function.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
clsGetlinkeddataFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0, bIncludeArgumentName:=False)
+ clsStationTypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertStationtypeFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertLinkedVariablesFunction.AddParameter("from_data_frame", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertssndLinkedVariableFunction.AddParameter("from_data_frame", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsDeleteunusedrowFunction.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+ clsConvertColumnType2Function.AddParameter("data_name", Chr(34) & ucrSelectorForStartofRains.ucrAvailableDataFrames.cboAvailableDataFrames.Text & Chr(34), iPosition:=0)
+
clsDayFilterCalcFromList.ClearParameters()
End Sub
@@ -1056,7 +1166,24 @@ Public Class dlgStartofRains
clsSORStatusSummary.clsSORFilterOperator.AddParameter("left", strParameterValue:=ucrInputNewDoyColumnName.GetText, bIncludeArgumentName:=False, iPosition:=0)
End Sub
+ Private Sub AddRemoveStartStatus()
+ If ucrChkStatus.Checked Then
+ ucrBase.clsRsyntax.AddToAfterCodes(clsGetlinkeddataFunction, iPosition:=0)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsCalculatedListformFunction, iPosition:=1)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsStatRainStatus2Function, iPosition:=2)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsStartRainCombine2Function, iPosition:=3)
+ ucrBase.clsRsyntax.AddToAfterCodes(clsRunStartStatus2Function, iPosition:=4)
+ Else
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsGetlinkeddataFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsCalculatedListformFunction)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsStatRainStatus2Function)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsStartRainCombine2Function)
+ ucrBase.clsRsyntax.RemoveFromAfterCodes(clsRunStartStatus2Function)
+ End If
+ End Sub
+
Private Sub ucrChkStatus_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkStatus.ControlValueChanged
+ AddRemoveStartStatus()
If ucrChkStatus.Checked Then
clsCombinationSubCalcList.AddParameter("sub3", clsRFunctionParameter:=clsCalcStatus, bIncludeArgumentName:=False, iPosition:=2)
clsListSubCalc.AddParameter("sub3", clsRFunctionParameter:=clsCalcStatus, bIncludeArgumentName:=False, iPosition:=2)
diff --git a/instat/frmMain.vb b/instat/frmMain.vb
index 73e94dbbbf..4bc5ef23b8 100644
--- a/instat/frmMain.vb
+++ b/instat/frmMain.vb
@@ -1185,7 +1185,7 @@ Public Class frmMain
Dim strCurrentStatus As String
strCurrentStatus = tstatus.Text
- If clsRLink.bInstatObjectExists Then
+ If clsRLink.bInstatObjectExists AndAlso ucrDataViewer.HasDataChanged Then
tstatus.Text = GetTranslation("Auto saving data...")
Cursor = Cursors.WaitCursor
If Not Directory.Exists(strAutoSaveDataFolderPath) Then
@@ -1196,7 +1196,7 @@ Public Class frmMain
strTempFile = "data_" & DateTime.Now.ToString("yyyyMMdd_HHmmss") & ".rds"
strCurrentAutoSaveDataFilePath = Path.Combine(strAutoSaveDataFolderPath, strTempFile)
- Dim strBackupMessage As String = $"##########{vbCrLf}## Backing up data and log files on: {DateTime.Now}{vbCrLf}##########"
+ Dim strBackupMessage As String = $"##########{vbCrLf}## Backing up data and metadata on: {DateTime.Now}{vbCrLf}##########"
Me.ucrScriptWindow.LogText(strBackupMessage)
clsRLink.AppendToAutoSaveLog(strBackupMessage)
@@ -1208,6 +1208,7 @@ Public Class frmMain
tstatus.Text = strCurrentStatus
Cursor = Cursors.Default
bFirstBackupDone = True
+ ucrDataViewer.HasDataChanged = False
End If
End Sub
diff --git a/instat/sdgDoyRange.vb b/instat/sdgDoyRange.vb
index a8a2d55b02..cab5c87e4e 100644
--- a/instat/sdgDoyRange.vb
+++ b/instat/sdgDoyRange.vb
@@ -21,6 +21,7 @@ Public Class sdgDoyRange
Private clsDoyFilterCalc As RFunction
Private clsCalcFromList As RFunction
Private clsCalcFromMainDataFrame As RFunction
+ Public clsIfElseFirstDoyFilledFunction As RFunction
Private clsDayFromOperator As ROperator
Private clsDayToOperator As ROperator
Private bControlsInitialised As Boolean = False
@@ -32,7 +33,7 @@ Public Class sdgDoyRange
autoTranslate(Me)
End Sub
- Public Sub Setup(clsNewDoyFilterCalc As RFunction, clsNewDayFromOperator As ROperator, clsNewDayToOperator As ROperator, clsNewCalcFromList As RFunction, strNewMainDataFrame As String, strNewDoyColumn As String)
+ Public Sub Setup(clsNewDoyFilterCalc As RFunction, clsNewDayFromOperator As ROperator, clsNewDayToOperator As ROperator, clsNewCalcFromList As RFunction, strNewMainDataFrame As String, strNewDoyColumn As String, Optional clsNewIfElseFirstDoyFilledFunction As RFunction = Nothing)
Dim iFrom As Integer
Dim iTo As Integer
Dim iDiff As Integer
@@ -55,6 +56,7 @@ Public Class sdgDoyRange
End If
clsDoyFilterCalc = clsNewDoyFilterCalc
clsCalcFromList = clsNewCalcFromList
+ clsIfElseFirstDoyFilledFunction = clsNewIfElseFirstDoyFilledFunction
strMainDataFrame = strNewMainDataFrame
strDoyColumn = strNewDoyColumn
@@ -217,8 +219,10 @@ Public Class sdgDoyRange
If bUpdate Then
If rdoToFixed.Checked Then
clsDayToOperator.AddParameter("to", strParameterValue:=ucrDoyTo.GetValue(), iPosition:=1)
+ clsIfElseFirstDoyFilledFunction.AddParameter("yes", strParameterValue:=ucrDoyTo.GetValue(), iPosition:=1)
ElseIf rdoToVariable.Checked Then
clsDayToOperator.AddParameter("to", strParameterValue:=ucrReceiverTo.GetVariableNames(False), iPosition:=1)
+ clsIfElseFirstDoyFilledFunction.AddParameter("yes", strParameterValue:=ucrReceiverTo.GetVariableNames(False), iPosition:=1)
ElseIf rdoLength.Checked Then
clsFixedDiffOp.SetOperation("+")
If clsDayFromOperator.ContainsParameter("from") Then
@@ -226,6 +230,7 @@ Public Class sdgDoyRange
clsFixedDiffOp.AddParameter("diff", strParameterValue:=ucrNudToDiff.Value, iPosition:=1)
clsFixedDiffOp.bBrackets = True
clsDayToOperator.AddParameter("to", clsROperatorParameter:=clsFixedDiffOp, iPosition:=1)
+ clsIfElseFirstDoyFilledFunction.AddParameter("yes", clsROperatorParameter:=clsFixedDiffOp, iPosition:=1)
End If
End If
UpdateCalculatedFrom()
diff --git a/instat/static/InstatObject/R/Backend_Components/calculations.R b/instat/static/InstatObject/R/Backend_Components/calculations.R
index ebb95254ec..e7a52f6259 100644
--- a/instat/static/InstatObject/R/Backend_Components/calculations.R
+++ b/instat/static/InstatObject/R/Backend_Components/calculations.R
@@ -448,8 +448,29 @@ DataBook$set("public", "apply_instat_calculation", function(calc, curr_data_list
if(length(by) == 0) {
stop("Cannot find linking columns to merge output from sub calculations with data for calculated_from.")
}
- if(join_into_overall) curr_data_list[[c_data_label]] <- dplyr::full_join(curr_data_list[[c_data_label]], self$get_data_frame(data_frame_name, use_current_filter = FALSE), by = by)
- else {
+ if(join_into_overall){
+ new_data_list <- self$get_data_frame(data_frame_name, use_current_filter = FALSE)
+ by_col_attributes <- list()
+ for(i in seq_along(by)) {
+ # Collect column attributes
+ by_col_attributes[[by[[i]]]] <- get_column_attributes(new_data_list[[by[[i]]]])
+
+ # Check and align the data types for each "by" column
+ if (class(new_data_list[[by[[i]]]]) != class(curr_data_list[[c_data_label]][[by[[i]]]])) {
+ warning(paste0("Type is different for ", by[[i]], " in the two data frames. Setting as numeric in both data frames."))
+
+ # Convert factors to numeric if necessary
+ if (class(new_data_list[[by[[i]]]]) == "factor") {
+ new_data_list[[by[[i]]]] <- as.numeric(as.character(new_data_list[[by[[i]]]]))
+ } else if (class(curr_data_list[[c_data_label]][[by[[i]]]]) == "factor") {
+ curr_data_list[[c_data_label]][[by[[i]]]] <- as.numeric(as.character(curr_data_list[[c_data_label]][[by[[i]]]]))
+ } else {
+ stop(paste0("Type is different for ", by[[i]], " in the two data frames and cannot be coerced."))
+ }
+ }
+ }
+ curr_data_list[[c_data_label]] <- dplyr::full_join(curr_data_list[[c_data_label]], self$get_data_frame(data_frame_name, use_current_filter = FALSE), by = by)
+ } else {
curr_groups <- dplyr::groups(curr_data_list[[c_data_label]])
curr_data_list[[c_data_label]] <- dplyr::full_join(self$get_data_frame(data_frame_name, use_current_filter = FALSE), curr_data_list[[c_data_label]], by = by)
#TODO investigate better way to do this
@@ -853,3 +874,27 @@ find_df_from_calc_from <- function(x, column) {
}
return("")
}
+
+DataBook$set("public", "remove_unused_station_year_combinations", function(data_name, year, station){
+ # Create linked data name
+ linked_data_name <- self$get_linked_to_data_name(data_name, link_cols=c(year, station))
+
+ # Column Summaries
+ self$calculate_summary(data_name = data_name,
+ store_results=TRUE,
+ factors=c(year, station),
+ summaries=c("summary_count"),
+ silent=TRUE)
+
+ self$rename_column_in_data(data_name = linked_data_name, column_name="count_all", new_val="count_year_station_combination_for_linking", label="")
+
+ # Create Filter subdialog: Created new filter
+ self$add_filter(filter=list(C0=list(column="count_year_station_combination_for_linking", operation="! is.na")), data_name = linked_data_name, filter_name = "removing_additional_years")
+
+ # Dialog: Filter
+ self$copy_data_object(data_name = linked_data_name, new_name = linked_data_name, filter_name="removing_additional_years")
+
+ # Right click menu: Delete Column(s)
+ self$remove_columns_in_data(data_name=linked_data_name, cols="count_year_station_combination_for_linking")
+}
+)
diff --git a/instat/static/InstatObject/R/Backend_Components/link.R b/instat/static/InstatObject/R/Backend_Components/link.R
index ccd14b356e..47219b1b13 100644
--- a/instat/static/InstatObject/R/Backend_Components/link.R
+++ b/instat/static/InstatObject/R/Backend_Components/link.R
@@ -379,4 +379,23 @@ DataBook$set("public", "view_link", function(link_name) {
paste("Link columns:", paste(names(temp_link$link_columns), "=", temp_link$link_columns, collapse = ", ")), sep = "\n"))
}
}
-)
\ No newline at end of file
+)
+
+# A function to convert the variables in the linked "to data frame"" to be the same class as that of the "from data frame"".
+DataBook$set("public", "convert_linked_variable", function(from_data_frame, link_cols) {
+ to_data_name <- self$get_linked_to_data_name(from_data_frame, link_cols=c(link_cols))
+ if (!is.null(to_data_name)){
+ linked_variable_name <- self$get_link_between(from_data_frame, to_data_name)$link_columns[[1]]
+
+ # loop through all columns given in variable argument
+ for (i in seq_along(linked_variable_name)){
+ variable_type <- self$get_column_data_types(data_name = from_data_frame, columns = names(linked_variable_name[i]))
+ linked_variable_type <- self$get_column_data_types(data_name = to_data_name, columns=linked_variable_name[i])
+
+ if (variable_type != linked_variable_type){
+ self$convert_column_to_type(data_name=to_data_name, col_names=linked_variable_name[i], to_type=variable_type)
+ }
+ }
+ }
+}
+)
diff --git a/instat/translations/rInstatTranslations.db b/instat/translations/rInstatTranslations.db
index 992781e440..dc7ebd2632 100644
Binary files a/instat/translations/rInstatTranslations.db and b/instat/translations/rInstatTranslations.db differ
diff --git a/instat/ucrDataView.vb b/instat/ucrDataView.vb
index ebd14bf4db..8a29fd4162 100644
--- a/instat/ucrDataView.vb
+++ b/instat/ucrDataView.vb
@@ -23,6 +23,7 @@ Public Class ucrDataView
Private _clsDataBook As clsDataBook
Private _grid As IDataViewGrid
Private bOnlyUpdateOneCell As Boolean = False
+ Private _hasChanged As Boolean
Public WriteOnly Property DataBook() As clsDataBook
Set(value As clsDataBook)
@@ -157,6 +158,7 @@ Public Class ucrDataView
RefreshDisplayInformation()
End If
End If
+ _hasChanged = True
EnableDisableUndoMenu()
_grid.Focus()
End Sub
@@ -185,6 +187,23 @@ Public Class ucrDataView
Return If(_grid.CurrentWorksheet Is Nothing, Nothing, _grid.CurrentWorksheet.Name)
End Function
+ Public Property HasDataChanged() As Boolean
+ Get
+ Dim currentDataFrame = GetCurrentDataFrameFocus()
+ If currentDataFrame IsNot Nothing AndAlso currentDataFrame.clsVisibleDataFramePage IsNot Nothing Then
+ Return currentDataFrame.clsVisibleDataFramePage.HasDataChangedForAutoSave
+ End If
+ Return False ' Or a default value
+ End Get
+ Set(ByVal value As Boolean)
+ Dim currentDataFrame = GetCurrentDataFrameFocus()
+ If currentDataFrame IsNot Nothing AndAlso currentDataFrame.clsVisibleDataFramePage IsNot Nothing Then
+ currentDataFrame.clsVisibleDataFramePage.HasDataChangedForAutoSave = value
+ End If
+ ' Optionally handle the case where currentDataFrame is Nothing
+ End Set
+ End Property
+
Private Sub mnuDeleteCol_Click(sender As Object, e As EventArgs) Handles mnuDeleteCol.Click
If GetSelectedColumns.Count = GetCurrentDataFrameFocus()?.iTotalColumnCount Then
MsgBox("Cannot delete all visible columns." & Environment.NewLine & "Use Prepare > Data Object > Delete Data Frame if you wish to delete the data.", MsgBoxStyle.Information, "Cannot Delete All Columns")