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());
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
        }
Exemple #5
0
        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);
        }