public IPathValue NewItem(IProviderContext context, string path, string itemTypeName, object newItemValue) { IScaleDescriptor descriptor = null; if (null == newItemValue) { throw new ArgumentNullException("newItemValue"); } newItemValue = PSObject.AsPSObject(newItemValue).BaseObject; if (newItemValue is string) { descriptor = new ScaleDescriptor(newItemValue as string); } else if (newItemValue is object[]) { descriptor = new ScaleDescriptor(newItemValue as object[]); } else { throw new ArgumentException("the new range value must be specified as a valid range descriptor", "newItemValue"); } _dataSource.Scales.Add(new ScaleDescriptorAssignment { PropertyName = path, Scale = descriptor }); return(Resolve(context, path).First().GetNodeValue()); }
private IDictionary <Regex, IScaleDescriptor> AdaptHashtableToDescriptorTable(Hashtable specs) { if (null == specs) { return(new Dictionary <Regex, IScaleDescriptor>()); } var table = new Dictionary <Regex, IScaleDescriptor>(); foreach (object key in specs.Keys) { var value = specs[key]; Regex re = key as Regex; IScaleDescriptor descriptor = value as IScaleDescriptor; if (null == re) { re = new Regex("^" + Regex.Escape(key.ToString()) + "$", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline); } if (null == descriptor) { Array array = value as Array; if (null != array) { if (1 != array.Length) { descriptor = new ScaleDescriptor((object[])value); } else { value = array.GetValue(0); } } if (null == descriptor) { descriptor = new ScaleDescriptor(value.ToString()); } } table.Add(re, descriptor); } return(table); }
public IPathValue NewItem(IProviderContext context, string path, string itemTypeName, object newItemValue) { var parameters = context.DynamicParameters as DataSourceNewItemParameters; var name = path; var script = ConvertToScript(newItemValue); if (null == script) { throw new ArgumentException("new item value must be a script block or string", "newItemValue"); } var dataSource = new PowerShellDataSource { Name = name, ScriptBlock = script, UseDispatcher = true }; if (null != parameters) { if (parameters.MaxItemCount.HasValue) { dataSource.DataCollectionMaxSize = parameters.MaxItemCount.Value; } if (parameters.NoDispatcher.IsPresent) { dataSource.UseDispatcher = false; } if (null != parameters.Args) { string propertyName = null; var specs = parameters.Args.ToHashtable(); foreach (object key in specs.Keys) { var value = specs[key]; IScaleDescriptor descriptor = value as IScaleDescriptor; if (null == descriptor) { if (value is Array) { descriptor = new ScaleDescriptor((object[])value); } else { descriptor = new ScaleDescriptor(value.ToString()); } } dataSource.Scales.Add( new ScaleDescriptorAssignment { Scale = descriptor, PropertyName = key.ToString() } ); } } } ITrigger trigger = Singleton <ImmediateTrigger> .Instance; if (null != parameters && null != parameters.Trigger) { trigger = parameters.Trigger; } dataSource.Trigger = trigger; _drive.Add(dataSource); return(new PathValue(dataSource, name, true)); }
private bool ConfigureAxes(SolidPSObjectBase o) { if (!CanConfigureAxes) { return false; } if( SeriesType.IsCategorical() ) { ConfigureCategoricalAxes(o); } else if( SeriesType.IsCategoricalRange()) { ConfigureCategoricalRange(o); } else if ( SeriesType.IsScatter() ) { ConfigureScatterAxes(o); } else if( SeriesType.IsPolar()) { ConfigurePolarAxis(o); } else if( SeriesType.IsRadial()) { ConfigureRadialAxis(o); } else { throw new InvalidOperationException("Unanticipated series type encountered during axis determination: " + SeriesType); } VerifyAxisTypes(o); var sdx = GetScaleForProperty(XAxis.ValueMemberPath); var sdy = GetScaleForProperty(YAxis.ValueMemberPath); if( null == sdx ) { sdx = new ScaleDescriptor( XAxis.ValueMemberPath, ColorManager.AssignColor() ); } XAxis.AxisScaleDescriptors.Add( new ScaleDescriptorAssignment{ PropertyName = sdx.Name, Scale = sdx } ); if( null != sdy ) { var sdym = new[]{ sdy }.Union( DataSource.Scales.Select(s=>s.Scale) ) .Where(s => s.Name == sdy.Name) .ToList() .ConvertAll(a=> new ScaleDescriptorAssignment{PropertyName = a.Name, Scale = a}); sdym.ToList().ForEach( YAxis.AxisScaleDescriptors.Add ); } var ev = AxesUpdated; if( null != ev ) { ev(this, EventArgs.Empty); } return true; }
private bool ConfigureAxes(SolidPSObjectBase o) { if (!CanConfigureAxes) { return(false); } if (SeriesType.IsCategorical()) { ConfigureCategoricalAxes(o); } else if (SeriesType.IsCategoricalRange()) { ConfigureCategoricalRange(o); } else if (SeriesType.IsScatter()) { ConfigureScatterAxes(o); } else if (SeriesType.IsPolar()) { ConfigurePolarAxis(o); } else if (SeriesType.IsRadial()) { ConfigureRadialAxis(o); } else { throw new InvalidOperationException("Unanticipated series type encountered during axis determination: " + SeriesType); } VerifyAxisTypes(o); var sdx = GetScaleForProperty(XAxis.ValueMemberPath); var sdy = GetScaleForProperty(YAxis.ValueMemberPath); if (null == sdx) { sdx = new ScaleDescriptor(XAxis.ValueMemberPath, ColorManager.AssignColor()); } XAxis.AxisScaleDescriptors.Add(new ScaleDescriptorAssignment { PropertyName = sdx.Name, Scale = sdx }); if (null != sdy) { var sdym = new[] { sdy }.Union(DataSource.Scales.Select(s => s.Scale)) .Where(s => s.Name == sdy.Name) .ToList() .ConvertAll(a => new ScaleDescriptorAssignment { PropertyName = a.Name, Scale = a }); sdym.ToList().ForEach(YAxis.AxisScaleDescriptors.Add); } var ev = AxesUpdated; if (null != ev) { ev(this, EventArgs.Empty); } return(true); }