void CustomizePieTotalLabel(string componentName, MultiDimensionalData data, CustomizePieTotalLabelEventArgs e)
        {
            PieTotalSettings settings   = PieTotalSettings.FromJson(dashboardControl.Dashboard.Items[componentName].CustomProperties[customPropertyName]);
            string           resultText = string.Empty;

            if (!string.IsNullOrEmpty(settings.Prefix))
            {
                resultText += settings.Prefix + Environment.NewLine;
            }



            MeasureDescriptor measure = data.GetMeasures().First();

            if (!string.IsNullOrEmpty(settings.MeasureId) ||
                data.GetMeasures().Where(m => m.ID == settings.MeasureId).Any())
            {
                measure = data.GetMeasures().FirstOrDefault(m => m.ID == settings.MeasureId);
            }
            if (measure != null)
            {
                AxisPoint axisPoint = e.Series.Tag as AxisPoint;
                resultText += data.GetSlice(axisPoint).GetValue(measure).DisplayText;
            }
            if (!string.IsNullOrEmpty(settings.Postfix))
            {
                resultText += Environment.NewLine + settings.Postfix;
            }
            e.Text = resultText;
        }
        private void dashboardViewer1_DashboardItemElementCustomColor(object sender,
                                                                      DashboardItemElementCustomColorEventArgs e)
        {
            MultiDimensionalData data           = e.Data;
            AxisPointTuple       currentElement = e.TargetElement;

            if (e.DashboardItemName == "chartDashboardItem1")
            {
                string country =
                    currentElement.GetAxisPoint(DashboardDataAxisNames.ChartSeriesAxis).Value.ToString();
                decimal value = (decimal)(data.GetSlice(currentElement)).GetValue(e.Measures[0]).Value;
                if (country == "UK" && value > 50000 || country == "USA" && value > 100000)
                {
                    e.Color = Color.DarkGreen;
                }
                else
                {
                    e.Color = Color.DarkRed;
                }
            }
            if (e.DashboardItemName == "pieDashboardItem1")
            {
                decimal value =
                    (decimal)(data.GetSlice(currentElement)).GetValue(data.GetMeasures()[0]).Value;
                if (value < 100000)
                {
                    e.Color = Color.Orange;
                }
            }
        }
Пример #3
0
        private static string GetOid(DashboardItemMouseActionEventArgs e)
        {
            MultiDimensionalData data         = e.Data.GetSlice(e.GetAxisPoint());
            MeasureDescriptor    descriptor   = data.GetMeasures().SingleOrDefault(item => item.DataMember == "Oid");
            MeasureValue         measureValue = data.GetValue(descriptor);

            return(measureValue.Value.ToString());
        }
        private void DashboardViewer1_CustomizeDashboardItemCaption(object sender, CustomizeDashboardItemCaptionEventArgs e)
        {
            DashboardViewer viewer = (DashboardViewer)sender;

            if (e.DashboardItemName == "pieDashboardItem1")
            {
                DashboardToolbarItem infoButton = new DashboardToolbarItem();
                MultiDimensionalData mData      = viewer.GetItemData(e.DashboardItemName);
                var orderCount = mData.GetValue(mData.GetMeasures().Where(m => m.DataMember == "OrderID").First()).Value ?? 0;
                e.FilterText += string.Format("{0:N0} distinct orders are displayed", orderCount);
            }
        }
        public static void CustomExport(CustomExportWebEventArgs e)
        {
            Dictionary <string, XRControl> controls = e.GetPrintableControls();

            foreach (var control in controls)
            {
                string             componentName = control.Key;
                XRChart            chartControl  = control.Value as XRChart;
                ChartDashboardItem chartItem     = e.GetDashboardItem(componentName) as ChartDashboardItem;
                if (chartControl != null && chartItem != null)
                {
                    string constantLinesJSON = chartItem.CustomProperties["ConstantLineSettings"];
                    if (constantLinesJSON != null)
                    {
                        XYDiagram diagram = chartControl.Diagram as XYDiagram;
                        if (diagram != null)
                        {
                            List <CustomConstantLine> customConstantLines = JsonConvert.DeserializeObject <List <CustomConstantLine> >(constantLinesJSON);
                            customConstantLines.ForEach(customConstantLine =>
                            {
                                ConstantLine line        = new ConstantLine();
                                line.Visible             = true;
                                line.ShowInLegend        = false;
                                line.Color               = ColorTranslator.FromHtml(customConstantLine.color);
                                line.Title.Text          = customConstantLine.labelText;
                                line.LineStyle.DashStyle = DashStyle.Dash;
                                line.LineStyle.Thickness = 2;
                                if (customConstantLine.isBound)
                                {
                                    MultiDimensionalData data = e.GetItemData(componentName);
                                    MeasureDescriptor measure = data.GetMeasures().FirstOrDefault(m => m.ID == customConstantLine.measureId);
                                    if (measure != null)
                                    {
                                        line.AxisValue = data.GetValue(measure).Value;
                                    }
                                }
                                else
                                {
                                    line.AxisValue = customConstantLine.value;
                                }


                                if (diagram.SecondaryAxesY.Count > 0)
                                {
                                    diagram.SecondaryAxesY[0].ConstantLines.Add(line);
                                }
                            });
                        }
                    }
                }
            }
        }
        // Converts data from a dashboard data model to the Gantt chart data model.
        ObservableCollection <GanttTask> ConfigureGanttTasks(MultiDimensionalData data)
        {
            DimensionDescriptorCollection dimensions = data.GetDimensions(DashboardDataAxisNames.DefaultAxis);
            MeasureDescriptorCollection   measures   = data.GetMeasures();

            ReadOnlyCollection <AxisPoint>   gridRows = data.GetAxisPoints(DashboardDataAxisNames.DefaultAxis);
            ObservableCollection <GanttTask> tasks    = new ObservableCollection <GanttTask>();
            List <string> keys = new List <string>();

            keys.Add("root");

            foreach (AxisPoint row in gridRows)
            {
                string parentKey = "root";
                foreach (DimensionDescriptor dimension in dimensions.Cast <DimensionDescriptor>())
                {
                    string currentKey = parentKey + "|" + row.GetDimensionValue(dimension).DisplayText;
                    if (keys.Contains(currentKey))
                    {
                        GanttTask currentTask = tasks.Where(t => t.Id == keys.IndexOf(currentKey)).First();
                        DateTime  start       = (DateTime)data.GetSlice(row).GetValue(measures[0]).Value;
                        DateTime  finish      = (DateTime)data.GetSlice(row).GetValue(measures[1]).Value;
                        currentTask.Start  = new DateTime(Math.Min(currentTask.Start.Ticks, start.Ticks));
                        currentTask.Finish = new DateTime(Math.Max(currentTask.Finish.Ticks, finish.Ticks));
                    }
                    else
                    {
                        keys.Add(currentKey);
                        data.GetSlice(row).GetValue(measures[0]);
                        tasks.Add(new GanttTask()
                        {
                            Id       = keys.IndexOf(currentKey),
                            ParentId = keys.IndexOf(parentKey),
                            Name     = row.GetDimensionValue(dimension).DisplayText,
                            Start    = (DateTime)data.GetSlice(row).GetValue(measures[0]).Value,
                            Finish   = (DateTime)data.GetSlice(row).GetValue(measures[1]).Value
                        });
                    }
                    parentKey = currentKey;
                }
            }
            return(tasks);
        }
 private static object GetMesureValue(MultiDimensionalData mData, AxisPoint point, GridMeasureColumn mCol)
 {
     return(mData.GetSlice(point).GetValue(mData.GetMeasures().OfType <MeasureDescriptor>().First(d => d.DataMember == mCol.Measure.DataMember)).Value);
 }