/// <exclude /> public static void SetParameterValue(XElement functionMarkup, ParameterProfile parameter, object parameterValue) { bool newValueNotEmpty = parameterValue != null && (!(parameterValue is IList) || ((IList) parameterValue).Count > 0) && !(parameter.IsRequired && parameterValue as string == string.Empty); var parameterNode = functionMarkup.Elements(ParameterNodeXName).FirstOrDefault(p => (string)p.Attribute("name") == parameter.Name); if (parameterNode != null) { parameterNode.Remove(); } if (newValueNotEmpty && parameterValue != parameter.GetDefaultValue()) { var newConstantParam = new ConstantObjectParameterRuntimeTreeNode(parameter.Name, parameterValue); functionMarkup.Add(newConstantParam.Serialize()); } }
private void BtnInputParameterClicked(XElement functionNode, XElement parameterNode, string parameterName) { if (parameterNode != null) { parameterNode.Remove(); } // Adding function call - GetInputParameter(InputParameterName = "...") IFunction getInputParameterFunc = FunctionFacade.GetFunction(GetInputParameterFunctionName); IMetaFunction function = TreeHelper.GetFunction(functionNode); ParameterProfile parameterProfile = function.ParameterProfiles.FirstOrDefault(p => p.Name == parameterName); var selectedParameter = _state.Parameters.First(ip => InputParameterCanBeAssigned(parameterProfile.Type, ip.Type)); string selectedParameterName = selectedParameter != null ? selectedParameter.Name : string.Empty; var newElement = new FunctionParameterRuntimeTreeNode(parameterName, new FunctionRuntimeTreeNode(getInputParameterFunc)).Serialize(); functionNode.Add(newElement); var inputParameterNameNode = new ConstantObjectParameterRuntimeTreeNode(GetInputParameterFunctionParameterName, selectedParameterName).Serialize(); newElement.Elements().First().Add(inputParameterNameNode); SaveChanges(); }
private void BtnConstantClicked(XElement functionNode, XElement parameterNode, string parameterName) { IMetaFunction function = TreeHelper.GetFunction(functionNode); ParameterProfile parameterProfile = function.ParameterProfiles.FirstOrDefault(p => p.Name == parameterName); Verify.IsNotNull(parameterProfile, "Failed to get parameter profile"); if (parameterNode != null) { parameterNode.Remove(); } object defaultParameterValue = GetDefaultValue(parameterProfile); var newConstantParam = new ConstantObjectParameterRuntimeTreeNode(parameterProfile.Name, defaultParameterValue ?? string.Empty); functionNode.Add(newConstantParam.Serialize()); SaveChanges(); }
private void UpdateParameterValueFromWidget() { string nodeID = SelectedNode; XElement parameterNode = TreeHelper.FindByPath(FunctionMarkup.Root, nodeID); if (parameterNode == null) return; Verify.That(parameterNode != null, "Failed to get a parameter by path '{0}'", nodeID); string parameterName = parameterNode.Attribute("name").Value; XElement functionNode = parameterNode.Parent; IMetaFunction function = TreeHelper.GetFunction(functionNode); ParameterProfile parameterProfile = function.ParameterProfiles.FirstOrDefault(p => p.Name == parameterName); // Creating a widget instance object defaultParameterValue = GetDefaultValue(parameterProfile); var bindings = new Dictionary<string, object> { { parameterProfile.Name, defaultParameterValue } }; var formTreeCompiler = FunctionUiHelper.BuildWidgetForParameters( new[] { parameterProfile }, bindings, "FORM"+SelectedNode.GetHashCode().ToString(), "", WebManagementChannel.Identifier); // The control is temporary added to page, so it will get a correct ID IWebUiControl webUiControl = (IWebUiControl)formTreeCompiler.UiControl; plhWidget.Controls.Add(webUiControl.BuildWebControl()); formTreeCompiler.SaveControlProperties(); plhWidget.Controls.Clear(); object newValue = bindings[parameterProfile.Name]; bool newValueNotEmpty = newValue != null && (!(newValue is IList) || ((IList)newValue).Count > 0); parameterNode.Remove(); if (newValueNotEmpty) { var newConstantParam = new ConstantObjectParameterRuntimeTreeNode(parameterProfile.Name, newValue); functionNode.Add(newConstantParam.Serialize()); } SaveChanges(); }