private static void FillData(DataSetElement dataSet, int factoryId) { // // Build Data // var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(factoryId); var num = 0; foreach (var output in outputs) { var set = new ValueSetElement { //Label = output.DatePro.Value.ToShortDateString(), Value = output.Quantity ?? 0 }; if ((num++ % 2) == 0) { set.Link.SetLink(FusionLinkMethod.Local, "javascript:PopUp('April');"); } // 실제 Javascript 메소드를 쓰려면 "PopUp-April" 로만 쓰면 된다. else { set.Link.SetLink(FusionLinkMethod.PopUp, WebTool.GetScriptPath("~/Charts/Ajax/Default.aspx?FactoryId=") + factoryId); set.Link.Width = 600; set.Link.Height = 400; } dataSet.AddSet(set); } }
private static void FillData(SingleSeriesChart chart, int factoryId) { // // Build Data // var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(factoryId); var num = 0; foreach (var output in outputs) { var set = new ValueSetElement { Label = output.DatePro.Value.ToShortDateString(), Value = output.Quantity ?? 0 }; switch (num % 4) { case 0: set.Link.SetLink(FusionLinkMethod.Local, "javascript:PopUp('April')"); break; case 1: set.Link.SetLink(FusionLinkMethod.PopUp, WebTool.GetScriptPath("~/Charts/Ajax/Default.aspx?FactoryId=") + factoryId); break; case 2: set.Link.SetFameLink(WebTool.GetScriptPath("~/Charts/Ajax/Default.aspx?FactoryId=") + factoryId, "_blank"); break; case 3: set.Link.SetJavascriptLink("PopUp", "April"); break; default: set.Link.SetLink(FusionLinkMethod.Local, "http://www.realweb21.com"); break; } num++; //if ((num++ % 2) == 0) // set.Link.SetLink(FusionLinkMethod.Local, "javascript:PopUp('April');"); // 실제 Javascript 메소드를 쓰려면 "PopUp-April" 로만 쓰면 된다. //else //{ // set.Link.SetLink(FusionLinkMethod.PopUp, WebTool.GetScriptPath("~/Charts/Ajax/Default.aspx?FactoryId=") + factoryId.ToString()); // set.Link.Width = 600; // set.Link.Height = 400; //} chart.SetElements.Add(set); } }
/// <summary> /// Application_Start 시에 실행할 비동기 작업의 본체입니다. /// </summary> protected override void ApplicationStartAfter(HttpContext context) { base.ApplicationStartAfter(context); // 이 함수 자체가 비동기로 실행되는데, 거기다가 병렬로 미리 Factory 관련 Data를 로드합니다. // var masters = FactoryRepository.FindAllFactoryMaster(); Parallel.ForEach(masters, master => FactoryRepository.FindAllFactoryOutputByFactoryId(master.Id)); }
protected void UpdateChart() { // ViewState가 유지되는지 lblFactory.Text = "Previous Factory = Factory " + FactoryId.AsText(); FactoryId = RadioButtonList1.SelectedValue.AsInt(); var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(FactoryId); GridView1.DataSource = outputs.OrderBy(output => output.DatePro); GridView1.DataBind(); factoryOutputChart.DataUrl = "FactoryDataHandler.ashx?FactoryId=" + FactoryId; }
/// <summary> /// 원하는 Chart를 빌드합니다. /// </summary> public override IChart BuildFusionChart() { var factoryId = Request["FactoryId"].AsInt(1); var numVisiblePlot = Request["numVisiblePlot"].AsInt(12); var chart = new MultiSeriesChart { Caption = "Factory 정보", SubCaption = "일일 생산량", Palette = rnd.Next(1, 5), RotateLabels = true, // PlaceValuesInside = true, // RotateValues = true, XAxisName = "Day", YAxisName = "Units", NumVisiblePlot = numVisiblePlot, BaseFontAttr = { Font = "맑은 고딕" }, BorderAttr = { Show = true }, BackgroundAttr = { BgColor = Color.White, BgAlpha = 100 }, ShowShadow = true }; var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(factoryId); foreach (var output in outputs) { chart.AddCategory(output.DatePro.Value.ToMonthDayString(), true); //var category = new CategoryElement // { // Label = output.DatePro.Value.ToMonthDayString() // }; // chart.Categories.CategoryElements.Add(category); } for (int i = 1; i < 4; i++) { var dataSet = new DataSetElement { SeriesName = "Factory " + i, ShowValues = false }; FillData(dataSet, i); chart.DataSets.Add(dataSet); } return(chart); }
private static void FillData(DataSetElement dataSet, int factoryId, string chartName) { // // Build Data // var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(factoryId); var num = 0; foreach (var output in outputs) { SetElementBase set; if (chartName == "Scatter") { set = new XYSetElement(output.DatePro.Value.DayOfYear, output.Quantity ?? 0); } else { set = new XYSetElement(output.DatePro.Value.DayOfYear, output.DatePro.Value.DayOfYear, output.Quantity ?? 0); } if ((num++ % 2) == 0) { set.Link.SetLink(FusionLinkMethod.Local, "javascript:PopUp('April');"); } // 실제 Javascript 메소드를 쓰려면 "PopUp-April" 로만 쓰면 된다. else { set.Link.SetLink(FusionLinkMethod.PopUp, WebTool.GetScriptPath("~/Charts/Ajax/Default.aspx?FactoryId=") + factoryId.ToString()); set.Link.Width = 600; set.Link.Height = 400; } dataSet.AddSet(set); } }
/// <summary> /// 원하는 Chart를 빌드합니다. /// </summary> public override IChart BuildFusionChart() { var factoryId = Request["FactoryId"].AsInt(1); var lineDual = Request["LineDual"].AsInt(0); var numVisiblePlot = Request["numVisiblePlot"].AsInt(12); var chart = new MultiSeriesStackedChart { Caption = "Factory 정보", SubCaption = "일일 생산량", Palette = rnd.Next(1, 5), RotateLabels = true, // PlaceValuesInside = true, // RotateValues = true, SlantLabels = true, XAxisName = "Day", YAxisName = "Units", NumVisiblePlot = numVisiblePlot, BaseFontAttr = { Font = "맑은 고딕" }, BorderAttr = { Show = true }, BackgroundAttr = { BgColor = Color.White, BgAlpha = 100 } }; chart.ShowShadow = true; var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(factoryId); foreach (var output in outputs) { chart.AddCategory(output.DatePro.Value.ToMonthDayString(), true); //var category = new CategoryElement // { // Label = output.DatePro.Value.ToMonthDayString() // }; //chart.Categories.CategoryElements.Add(category); } for (int d = 0; d < 2; d++) { var datasetCollection = new DataSetCollection(); for (int i = 1; i < 4; i++) { var dataSet = new DataSetElement { SeriesName = "Factory " + i, ShowValues = false }; if (lineDual == 1 && i == 3) { dataSet.RenderAs = GraphKind.Line; dataSet.ParentYAxis = YAxisKind.S; } FillData(dataSet, i); datasetCollection.Add(dataSet); } chart.DataSetCollections.Add(datasetCollection); } // add LineSet chart.LineSet.SeriesName = "Cost as % of Revenue"; foreach (var output in outputs) { chart.LineSet.SetElements.Add(new ValueSetElement { Value = rnd.Next(40, 100) }); } return(chart); }
/// <summary> /// 원하는 Chart를 빌드합니다. /// </summary> public override IChart BuildFusionChart() { var factoryId = Request["FactoryId"].AsInt(1); var lineDual = Request["LineDual"].AsInt(0); var numVisiblePlot = Request["numVisiblePlot"].AsInt(12); var chart = new MultiSeriesChart { Caption = "Factory 정보", SubCaption = "일일 생산량", Palette = rnd.Next(1, 5), RotateLabels = true, // PlaceValuesInside = true, // RotateValues = true, SlantLabels = true, XAxisName = "Day", YAxisName = "Units", NumVisiblePlot = numVisiblePlot, BaseFontAttr = { Font = "맑은 고딕" }, BorderAttr = { Show = true }, BackgroundAttr = { BgColor = Color.White, BgAlpha = 100 } }; chart.ShowShadow = true; var outputs = FactoryRepository.FindAllFactoryOutputByFactoryId(factoryId); foreach (var output in outputs) { chart.AddCategory(output.DatePro.Value.ToMonthDayString(), true); //var category = new CategoryElement // { // Label = output.DatePro.Value.ToMonthDayString() // }; // chart.Categories.CategoryElements.Add(category); } for (int i = 1; i < 4; i++) { var dataSet = new DataSetElement { SeriesName = "Factory " + i.ToString(), ShowValues = false, RenderAs = (i % 4 == 1) ? GraphKind.Area : ((i % 4 == 3) ? GraphKind.Line : GraphKind.Column) }; if (lineDual == 1 && i == 3) { dataSet.RenderAs = GraphKind.Line; dataSet.ParentYAxis = YAxisKind.S; } FillData(dataSet, i); chart.DataSets.Add(dataSet); } chart.TrendLines.Add(new DoubleLineElement { StartValue = 120, DisplayValue = "Good", Color = "#009933".FromHtml() }); //chart.TrendLines.TrendlineElements.Add(new DoubleLineElement // { // StartValue = 120, // DisplayValue = "Good", // Color = "#009933".FromHtml() // }); return(chart); }