public static void SetupParameter(ValueLine vl, ChartParameterEmbedded parameter) { var scriptParameter = parameter.ScriptParameter; vl.LabelColumns = new BsColumn(6); vl.LabelText = scriptParameter.Name; if (scriptParameter.Type == ChartParameterType.Number || scriptParameter.Type == ChartParameterType.String) { vl.ValueLineType = ValueLineType.TextBox; } else if (scriptParameter.Type == ChartParameterType.Enum) { vl.ValueLineType = ValueLineType.Enum; var token = scriptParameter.GetToken(parameter.ParentChart); var compatible = scriptParameter.GetEnumValues().Where(a => a.CompatibleWith(token)).ToList(); vl.ReadOnly = compatible.Count <= 1; vl.EnumComboItems = compatible.Select(ev => new SelectListItem { Value = ev.Name, Text = ev.Name, Selected = ((string)vl.UntypedValue) == ev.Name }).ToList(); if (!vl.ValueHtmlProps.IsNullOrEmpty()) { vl.ValueHtmlProps.Clear(); } } vl.ValueHtmlProps["class"] = "sf-chart-redraw-onchange"; }
private static FixTokenResult FixParameter(ChartParameterEmbedded item, ref string val) { var error = item.PropertyCheck(nameof(item.Value)); if (error == null) { return(FixTokenResult.Nothing); } SafeConsole.WriteLineColor(ConsoleColor.White, "Parameter Name: {0}".FormatWith(item.ScriptParameter.Name)); SafeConsole.WriteLineColor(ConsoleColor.White, "Parameter Definition: {0}".FormatWith(item.ScriptParameter.ValueDefinition)); SafeConsole.WriteLineColor(ConsoleColor.White, "CurrentValue: {0}".FormatWith(item.Value)); SafeConsole.WriteLineColor(ConsoleColor.White, "Error: {0}.".FormatWith(error)); SafeConsole.WriteLineColor(ConsoleColor.Yellow, "- s: Skip entity"); SafeConsole.WriteLineColor(ConsoleColor.DarkRed, "- r: Remove parame"); SafeConsole.WriteLineColor(ConsoleColor.Red, "- d: Delete entity"); SafeConsole.WriteLineColor(ConsoleColor.Green, "- freeText: New value"); string answer = Console.ReadLine(); if (answer == null) { throw new InvalidOperationException("Impossible to synchronize interactively without Console"); } string a = answer.ToLower(); if (a == "s") { return(FixTokenResult.SkipEntity); } if (a == "r") { return(FixTokenResult.RemoveToken); } if (a == "d") { return(FixTokenResult.DeleteEntity); } val = answer; return(FixTokenResult.Fix); }
public static bool SynchronizeColumns(this ChartScript chartScript, IChartBase chart, PostRetrievingContext?ctx) { bool result = false; for (int i = 0; i < chartScript.Columns.Count; i++) { if (chart.Columns.Count <= i) { chart.Columns.Add(new ChartColumnEmbedded()); result = true; } chart.Columns[i].parentChart = chart; chart.Columns[i].ScriptColumn = chartScript.Columns[i]; if (!result) { result = chart.Columns[i].IntegrityCheck() != null; } } if (chart.Columns.Count > chartScript.Columns.Count) { chart.Columns.RemoveRange(chartScript.Columns.Count, chart.Columns.Count - chartScript.Columns.Count); result = true; } if (chart.Parameters.Modified != ModifiedState.Sealed) { var chartScriptParameters = chartScript.AllParameters().ToList(); if (chart.Parameters.Select(a => a.Name).OrderBy().SequenceEqual(chartScriptParameters.Select(a => a.Name).OrderBy())) { foreach (var cp in chart.Parameters) { var sp = chartScriptParameters.FirstEx(a => a.Name == cp.Name); cp.parentChart = chart; cp.ScriptParameter = sp; //if (cp.PropertyCheck(() => cp.Value).HasText()) // cp.Value = sp.DefaultValue(cp.GetToken()); } } else { var byName = chart.Parameters.ToDictionary(a => a.Name); chart.Parameters.Clear(); foreach (var sp in chartScriptParameters) { var cp = byName.TryGetC(sp.Name); if (cp != null) { cp.parentChart = chart; cp.ScriptParameter = sp; ctx?.ForceModifiedState.Add(cp, ModifiedState.SelfModified); //if (cp.PropertyCheck(() => cp.Value).HasText()) // cp.Value = sp.DefaultValue(cp.GetToken()); } else { cp = new ChartParameterEmbedded { Name = sp.Name, parentChart = chart, ScriptParameter = sp, }; cp.Value = sp.ValueDefinition.DefaultValue(sp.GetToken(chart)); } chart.Parameters.Add(cp); } } } return(result); }