private void Form1_Load(object sender, EventArgs e)
        {
            Dashboard dashboard = new Dashboard();

            // Create an OLAP dashboard data source with the connection string
            // stored in the app.config file.
            DashboardOlapDataSource olapDataSource = new DashboardOlapDataSource();

            olapDataSource.ConnectionName = "AdventureWorksString";
            dashboard.DataSources.Add(olapDataSource);

            // Create a scatter chart and binds it to data.
            ScatterChartDashboardItem scatterChart = new ScatterChartDashboardItem();

            scatterChart.DataSource   = olapDataSource;
            scatterChart.AxisXMeasure = new Measure("[Measures].[Sales Amount]");
            scatterChart.AxisYMeasure = new Measure("[Measures].[Gross Profit Margin]");
            scatterChart.Arguments.Add(new Dimension("[Product].[Category].[Category]"));
            scatterChart.Weight = new Measure("[Measures].[Gross Profit]");

            // Add the scatter chart to the dashboard and
            // display the dashboard in the Dashboard Viewer.
            dashboard.Items.Add(scatterChart);
            dashboardViewer1.Dashboard = dashboard;
        }
        public Form1()
        {
            InitializeComponent();
            dashboardDesigner1.CreateRibbon();
            dashboardDesigner1.LoadDashboard(@"../../nwindDashboard.xml");
            ScatterChartDashboardItem scatterChart1 = (ScatterChartDashboardItem)dashboardDesigner1.Dashboard.Items["scatterChartDashboardItem1"];

            AddFormatRulesToScatterChart(scatterChart1);
            new ScatterChartConstantLineUserValueModule(dashboardDesigner1, svgImageCollection1["chartrangearea"]);
        }
 void Designer_DashboardItemControlUpdated(object sender, DashboardItemControlEventArgs e)
 {
     if (e.ChartControl != null)
     {
         ScatterChartDashboardItem scatterDashboardItem = designer.Dashboard.Items[e.DashboardItemName] as ScatterChartDashboardItem;
         if (scatterDashboardItem != null)
         {
             UpdateChart(e.ChartControl.Series, scatterDashboardItem);
         }
     }
 }
        ScatterChartConstantLineUserData GetConstantLineModuleData(ScatterChartDashboardItem dashboardItem)
        {
            var data = GetDataFromString(dashboardItem.CustomProperties.GetValue(PropertyName));

            using (ValueSelectorControl selector = new ValueSelectorControl(data))
            {
                if (XtraDialog.Show(selector, "Adjust constant lines") == DialogResult.OK)
                {
                    return(selector.ConstantLineModuleData);
                }
            }
            return(null);
        }
        void UpdateChart(SeriesCollection series, ScatterChartDashboardItem chartDashboardItem)
        {
            ScatterChartConstantLineUserData moduleData = GetDataFromString(chartDashboardItem.CustomProperties.GetValue(PropertyName));

            if (moduleData != null && moduleData.Enabled)
            {
                BubbleSeriesView seriesView = series.OfType <Series>().Where(s => s.View is BubbleSeriesView).Select(s => s.View as BubbleSeriesView).FirstOrDefault();
                if (seriesView != null)
                {
                    seriesView.AxisX.ConstantLines.Clear();
                    seriesView.AxisY.ConstantLines.Clear();
                    SetUpLine(seriesView.AxisX, ColorTranslator.FromHtml("#14abb7"), ColorTranslator.FromHtml("#0e9ca9"), moduleData.VerticalAxisValue);
                    SetUpLine(seriesView.AxisY, ColorTranslator.FromHtml("#14abb7"), ColorTranslator.FromHtml("#0e9ca9"), moduleData.HorizontalAxisValue);
                }
            }
        }
        void Designer_CustomExport(object sender, CustomExportEventArgs e)
        {
            Dictionary <string, XRControl> controls = e.GetPrintableControls();

            foreach (KeyValuePair <string, XRControl> pair in controls)
            {
                XRChart xrChart = pair.Value as XRChart;
                if (xrChart != null)
                {
                    string itemComponentName        = pair.Key;
                    ScatterChartDashboardItem chart = designer.Dashboard.Items[itemComponentName] as ScatterChartDashboardItem;
                    if (chart != null)
                    {
                        UpdateChart(xrChart.Series, chart);
                    }
                }
            }
        }
        public void AddFormatRulesToScatterChart(ScatterChartDashboardItem scatterChart)
        {
            double unitCountThreshold = 7000;
            double discountThreshold  = 18;
            ScatterChartItemFormatRule expressionRule1 = new ScatterChartItemFormatRule();

            expressionRule1.DataItem = scatterChart.AxisYMeasure;
            FormatConditionExpression formatCondition = new FormatConditionExpression();

            formatCondition.Expression    = $"{scatterChart.AxisYMeasure.UniqueId} > {unitCountThreshold} && {scatterChart.AxisXMeasure.UniqueId} > {discountThreshold}";
            formatCondition.StyleSettings = new ColorStyleSettings(ColorTranslator.FromHtml("#14abb7"));
            expressionRule1.Condition     = formatCondition;
            expressionRule1.ShowInLegend  = true;
            expressionRule1.DisplayName   = "Discount amount from the quantity of products sold";
            scatterChart.FormatRules.Add(expressionRule1);
            ScatterChartConstantLineUserData moduleData = new ScatterChartConstantLineUserData()
            {
                Enabled = true, VerticalAxisValue = discountThreshold, HorizontalAxisValue = unitCountThreshold
            };

            scatterChart.CustomProperties.SetValue(ScatterChartConstantLineUserValueModule.PropertyName, moduleData.GetStringFromData());
        }