/// <summary> /// /// </summary> /// <returns></returns> protected override NWidget CreateExampleContent() { NChartView chartView = CreateCartesianChartView(); // configure title chartView.Surface.Titles[0].Text = "Daily Schedule Work Calendar"; // configure chart m_Chart = (NCartesianChart)chartView.Surface.Charts[0]; m_Chart.SetPredefinedCartesianAxes(ENPredefinedCartesianAxis.XOrdinalYLinear); NRangeSeries ranges = new NRangeSeries(); m_Chart.Series.Add(ranges); ranges.DataLabelStyle = new NDataLabelStyle(false); ranges.UseXValues = true; DateTime dt = new DateTime(2014, 4, 14); Random rand = new Random(); NRangeTimelineScale rangeTimeline = new NRangeTimelineScale(); rangeTimeline.EnableCalendar = true; rangeTimeline.InflateViewRangeEnd = false; rangeTimeline.InflateViewRangeBegin = false; m_Chart.Axes[ENCartesianAxis.PrimaryX].Scale = rangeTimeline; NLinearScale yScale = (NLinearScale)m_Chart.Axes[ENCartesianAxis.PrimaryY].Scale; yScale.MajorGridLines.Visible = true; // add interlaced strip NScaleStrip strip = new NScaleStrip(new NColorFill(NColor.Beige), null, true, 0, 0, 1, 1); strip.Interlaced = true; yScale.Strips.Add(strip); yScale.Title.Text = "Daily Workload in %"; NWorkCalendar workCalendar = rangeTimeline.Calendar; NDateTimeRangeRule dateTimeRangeRule = null; for (int i = 0; i < 120; i++) { int hourOfTheDay = i % 24; if (hourOfTheDay < 8 || hourOfTheDay > 18) { DateTime curDate = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0); if (dateTimeRangeRule != null) { if (dateTimeRangeRule.Range.Begin != curDate) { dateTimeRangeRule = null; } } if (dateTimeRangeRule == null) { dateTimeRangeRule = new NDateTimeRangeRule(new NDateTimeRange(curDate, curDate + new TimeSpan(24, 0, 0)), true); workCalendar.Rules.Add(dateTimeRangeRule); } dateTimeRangeRule.Schedule.SetHourRange(dt.Hour, dt.Hour + 1, true); } else { ranges.DataPoints.Add(new NRangeDataPoint(NDateTimeHelpers.ToOADate(dt), 0, NDateTimeHelpers.ToOADate(dt + new TimeSpan(1, 0, 0)), rand.NextDouble() * 70 + 30.0d)); } dt += new TimeSpan(1, 0, 0); } ConfigureInteractivity(m_Chart); chartView.Document.StyleSheets.ApplyTheme(new NChartTheme(ENChartPalette.Bright, false)); return(chartView); }
public override void Initialize() { base.Initialize(); // set a chart title NLabel title = new NLabel("Daily Workload in Percents<br/><font size = '9pt'>Demonstrates how to skip hours in the working days, per day using the daily schedule object</font>"); title.TextStyle.TextFormat = TextFormat.XML; title.TextStyle.FontStyle = new NFontStyle("Times New Roman", 18, FontStyle.Italic); nChartControl1.Panels.Add(title); NCartesianChart chart = (NCartesianChart)nChartControl1.Charts[0]; chart.BoundsMode = BoundsMode.Stretch; NRangeSelection rangeSelection = new NRangeSelection(); rangeSelection.VerticalValueSnapper = new NAxisRulerMinMaxSnapper(); chart.RangeSelections.Add(rangeSelection); chart.BoundsMode = BoundsMode.Stretch; NRangeSeries ranges = new NRangeSeries(); ranges.DataLabelStyle.Visible = false; ranges.UseXValues = true; DateTime dt = new DateTime(2014, 4, 14); Random rand = new Random(); NRangeTimelineScaleConfigurator rangeTimeline = new NRangeTimelineScaleConfigurator(); rangeTimeline.EnableCalendar = true; chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator = rangeTimeline; chart.Axis(StandardAxis.PrimaryX).ScrollBar.Visible = true; chart.Axis(StandardAxis.PrimaryY).ScaleConfigurator.Title.Text = "Daily Workload in %"; chart.Axis(StandardAxis.PrimaryY).View = new NRangeAxisView(new NRange1DD(0, 100), true, true); NWorkCalendar workCalendar = rangeTimeline.Calendar; NDateTimeRangeRule dateTimeRangeRule = null; for (int i = 0; i < 120; i++) { int hourOfTheDay = i % 24; if (hourOfTheDay < 8 || hourOfTheDay > 18) { DateTime curDate = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0); if (dateTimeRangeRule != null) { if (dateTimeRangeRule.Range.Begin != curDate) { dateTimeRangeRule = null; } } if (dateTimeRangeRule == null) { dateTimeRangeRule = new NDateTimeRangeRule(new NDateTimeRange(curDate, curDate + new TimeSpan(24, 0, 0)), true); workCalendar.Rules.Add(dateTimeRangeRule); } dateTimeRangeRule.Schedule.SetHourRange(dt.Hour, dt.Hour + 1, true); } else { ranges.Values.Add(0); ranges.Y2Values.Add(rand.NextDouble() * 70 + 30.0d); ranges.XValues.Add((dt + new TimeSpan(1, 0, 0)).ToOADate()); ranges.X2Values.Add(dt.ToOADate()); } dt += new TimeSpan(1, 0, 0); } chart.Series.Add(ranges); // apply layout ConfigureStandardLayout(chart, title, null); nChartControl1.Controller.Tools.Add(new NSelectorTool()); nChartControl1.Controller.Tools.Add(new NAxisScrollTool()); nChartControl1.Controller.Tools.Add(new NDataZoomTool()); nChartControl1.Controller.Tools.Add(new NDataPanTool()); // init form controls EnableWorkCalendar.Checked = true; }