示例#1
0
        /// <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());
	        }
        }
示例#2
0
    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();
    }
示例#3
0
    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();
    }
示例#4
0
    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();
    }