public override object calculate() { if (base.paramList.Count != 1) { throw new ReportError("取单元格显示值函数的参数个数应该为1"); } ExpParse parse = (ExpParse)base.paramList[0]; if (parse == null) { throw new ReportError("取单元格显示值函数的第1个参数应该是单元格"); } object obj2 = parse.calculate(); if (obj2 == null) { return(new StringBuilder("").ToString()); } if (!(obj2 is CSVar)) { throw new ReportError("取单元格显示值函数的第1个参数应该是单元格"); } CellExt ext = ((CSVar)obj2).getCell(); if (ext == null) { return(null); } return(ext.GetValue(true)); }
private ArrayList getListValue(object obj, CellExt leftHead, CellExt topHead, bool dispValue) { ArrayList o = null; if (obj is ArrayList) { o = (ArrayList)obj; } else if (obj is CSVar) { CSVar var = (CSVar)obj; CellExt source = var.Source; CellExt ext2 = var.LeftHead; CellExt ext3 = var.TopHead; CellExt ext4 = ext2.Source; CellExt ext5 = ext3.Source; if (((leftHead == null) || !ext4.isLeftHeadOf(leftHead.Source)) || !leftHead.Source.isLeftHeadOf(source)) { leftHead = ext2; } if (((topHead == null) || !ext5.isTopHeadOf(topHead.Source)) || !topHead.Source.isTopHeadOf(source)) { topHead = ext3; } o = var.getCells(leftHead, topHead, null); } else { o = new ArrayList(1); o.Add(obj); } return((ArrayList)ConvertTool.getValue(o, dispValue)); }
public object calculate(CellExt1 cs, DataSet ds, Env env, string param) { UnitSet set; this.cs = cs; this.ds = ds; this.env = env; string str = (string)ConvertTool.getValue(new ExpParse(cs, ds, env, param).calculate()); if ((str != null) && (str.Trim().Length > 0)) { set = new UnitSet(Escape.removeEscAndQuote(str), true, '&'); } else { set = new UnitSet("", true, '&'); } string expStr = Escape.unescape(set["dataXml"]); object obj2 = ConvertTool.getValue(new ExpParse(cs, ds, env, expStr).calculate()); this.pDataXml = (string)obj2; CellExt current = cs.Current; StringBuilder sb = new StringBuilder(); object obj3 = null; try { obj3 = this.cal(set, sb); } catch (Exception exception) { throw new ReportError("统计图计算异常:" + exception.Message.ToString().ToString(), exception); } return(obj3); }
private int getCellHeight() { CellExt current = this.cs.Current; int num = 0; for (int i = current.Row; i < (current.Row + current.RowMerge); i++) { num += this.cs.getRowHeight(i); } return(num); }
private CellExt method_4(CellExt cellExt_0, CellExt cellExt_1, int int_3) { CellExt[] extCells; if (cellExt_0 == null) { return(null); } if (cellExt_0.Source == cellExt_1) { if (this.int_1 == 0) { return(cellExt_0); } extCells = cellExt_0.ExtCells; if ((extCells != null) && (extCells.Length != 1)) { int position = cellExt_0.Position; int index = position + int_3; if ((index >= 0) && (index < extCells.Length)) { return(extCells[index]); } if (int_3 <= 0) { int_3 = (int_3 + position) + 1; } else { int_3 -= extCells.Length - position; } } else { this.int_1 += (this.int_1 > 0) ? -1 : 1; } cellExt_0 = this.method_5(cellExt_0, int_3); return(this.method_4(cellExt_0, cellExt_1, int_3)); } cellExt_0 = this.method_3(cellExt_0, cellExt_1); if (cellExt_0 == null) { return(null); } extCells = cellExt_0.ExtCells; if (extCells != null) { cellExt_0 = (int_3 <= 0) ? extCells[extCells.Length - 1] : extCells[0]; } return(this.method_4(cellExt_0, cellExt_1, this.int_1)); }
private CellExt method_3(CellExt cellExt_0, CellExt cellExt_1) { ArrayList subCells = cellExt_0.SubCells; for (int i = 0; i < subCells.Count; i++) { CellExt ext2 = (CellExt)subCells[i]; if (ext2.Source.isLeftHeadOf(cellExt_1)) { return(ext2); } } return(null); }
private object method_0(CellExt cellExt_0, int int_3, int int_4) { CellExt current = base.cs.Current; if ((current.Col == 10) && (current.Row == 18)) { Console.Out.WriteLine("current row: " + current.Row.ToString().ToString()); } CellExt source = cellExt_0.getCommonLeftHead(current.Source); CellExt ext2 = current.getLeftHead(source); if (ext2 == current) { ext2 = current.getLeftHead(); } CellExt ext4 = cellExt_0.getCommonTopHead(current.Source); CellExt ext3 = current.getTopHead(ext4); if (ext3 == current) { ext3 = current.getTopHead(); } try { if (int_3 != 0) { ext2 = this.method_1(ext2, ext2.Source, int_3); if (ext2 == null) { return(null); } } if (int_4 != 0) { ext3 = this.method_4(ext3, ext3.Source, int_4); if (ext3 == null) { return(null); } } } catch (StackOverflowException exception) { Console.Out.WriteLine(new StringBuilder("current: ").Append(current.Row).Append(", ").Append(current.Col).ToString().ToString()); throw exception; } ext2.testValue(); ext3.testValue(); return(new CSVar(cellExt_0, ext2, ext3)); }
public override object calculate() { if (base.paramList.Count > 0) { throw new ReportError("col函数参数列表应该为空"); } CellExt current = base.cs.Current; ArrayList subCells = current.getTopHead().SubCells; for (int i = 0; i < subCells.Count; i++) { CellExt ext = (CellExt)subCells[i]; if (ext != current) { ext.testValue(); } } return(ConvertData.getInteger(base.cs.Current.Col)); }
public Head(ICalcFlash enclosingInstance, object catValue, object catCell, object seriesValue, object seriesCell) { this.InitBlock(enclosingInstance); this.leftHead = null; this.topHead = null; if (catValue is CSVar) { CellExt ext = (CellExt)catCell; int extensible = ((CSVar)catValue).getCell().Extensible; if (PropertyDefine.CEX_VERTICAL.Equals(extensible)) { this.leftHead = ext; } else if (PropertyDefine.CEX_HORIZONTAL.Equals(extensible)) { this.topHead = ext; } else { this.leftHead = ext.getLeftHead(); this.topHead = ext.getTopHead(); } } if (seriesValue is CSVar) { CellExt ext2 = (CellExt)seriesCell; int num2 = ((CSVar)seriesValue).getCell().Extensible; if (PropertyDefine.CEX_VERTICAL.Equals(num2)) { this.leftHead = (CellExt)seriesCell; } else if (PropertyDefine.CEX_HORIZONTAL.Equals(num2)) { this.topHead = (CellExt)seriesCell; } else { this.leftHead = ext2.getLeftHead(); this.topHead = ext2.getTopHead(); } } }
public override object calculate() { if (base.unit_0 == null) { throw new ReportError("单元格选择函数{}缺少左操作数"); } object obj4 = base.unit_0.calculate(); if (obj4 != null) { if (!(obj4 is CSVar)) { throw new ReportError("单元格选择函数{}的左操作数应为单元格"); } ArrayList list = ((CSVar)obj4).getCells(null); if (base.paramList.Count > 0) { ExpParse parse = (ExpParse)base.paramList[0]; base.cs.saveCurrent(); if (parse != null) { for (int i = 0; i < list.Count; i++) { CellExt ext = (CellExt)list[i]; base.cs.Current = ext; object obj3 = ConvertTool.getValue(parse.calculate()); if (!(obj3 is bool)) { throw new ReportError("单元格选择函数{}的条件参数应返回布尔值"); } if (obj3.Equals(false)) { list.RemoveAt(i--); } } } base.cs.resumeCurrent(); } return(list); } return(new ArrayList(0)); }
private int getCellWidth() { CellExt current = this.cs.Current; int num = 0; for (int i = current.Col; i < (current.Col + current.ColMerge); i++) { object obj2 = null; CellExt ext2 = this.cs.getCell(0, i); if (ext2 != null) { obj2 = ext2.getPropValue(306); } if ((obj2 == null) || obj2.Equals(true)) { num += this.cs.getColWidth(i); } } return(num); }
private CellExt method_5(CellExt cellExt_0, int int_3) { int num2 = (int_3 > 0) ? 1 : -1; cellExt_0 = cellExt_0.getTopHead(); while (cellExt_0 != null) { CellExt[] extCells = cellExt_0.ExtCells; if (extCells != null) { int index = cellExt_0.Position + num2; if ((index >= 0) && (index < extCells.Length)) { return(extCells[index]); } } cellExt_0 = cellExt_0.getTopHead(); } return(null); }
private object method_0(CellExt cellExt_0) { CellExt current = base.cs.Current; CellExt source = cellExt_0.Source; CellExt sub = current.Source; if (!source.isLeftHeadOf(sub)) { if (source.isTopHeadOf(sub)) { CellExt[] extCells = current.getTopHead(source).ExtCells; if (extCells == null) { return(null); } for (int i = 0; i < extCells.Length; i++) { if (extCells[i].isTopHeadOf(current)) { return(ConvertData.getInteger(i + 1)); } } } } else { CellExt[] extArray2 = current.getLeftHead(source).ExtCells; if (extArray2 == null) { return(null); } for (int j = 0; j < extArray2.Length; j++) { if (extArray2[j].isLeftHeadOf(current)) { return(ConvertData.getInteger(j + 1)); } } } throw new ReportError(new StringBuilder(source.SourceId.ToString().ToString()).Append("不是").Append(current.SourceId).Append("的主格").ToString().ToString()); }
public override object calculate() { int col = base.cs.Current.Col; int i = 0; for (int j = 1; j < base.cs.RowSize; j++) { CellExt ext2 = base.cs.getCell(j, col); if ((ext2 != null) && !ext2.MergeCell) { object obj3 = ext2.GetValue(true); if (obj3 is string) { int num4 = this.method_0((string)obj3); if (num4 > i) { i = num4; } } } } return(ConvertData.getInteger(i)); }
public override object calculate() { if (base.unit_0 == null) { throw new ReportError("冒号操作缺少左操作数"); } object obj4 = base.unit_0.calculate(); Region region2 = null; Region region = null; if (!(obj4 is CSVar)) { throw new ReportError("冒号操作的左操作数应为单元格"); } region2 = ((CSVar)obj4).Region; object obj3 = base.unit_1.calculate(); if (!(obj3 is CSVar)) { throw new ReportError("冒号操作的右操作数应为单元格"); } region = ((CSVar)obj3).Region; ArrayList list = new ArrayList(); for (int i = region2.Top; i <= region.Bottom; i++) { for (int j = region2.Left; j <= region.Right; j++) { CellExt ext = this.cellExt1_0.getCell(i, j); if (ext != null) { list.Add(ext); } } } return(list); }
public override object calculate() { if (base.unit_0 == null) { throw new ReportError("位移函数[]左操作数为空"); } object obj3 = base.unit_0.calculate(); if (!(obj3 is CSVar)) { throw new ReportError("位移函数[]左操作数应为单元格"); } CSVar var = (CSVar)obj3; CellExt source = var.Source; if (!this.bool_0) { int num6 = this.arrayList_0.Count; int num2 = this.arrayList_1.Count; CellExt current = base.cs.Current; CellExt leftHead = current.getLeftHead(); CellExt topHead = current.getTopHead(); for (int i = 0; i < num6; i++) { GClass1 class3 = (GClass1)this.arrayList_0[i]; int index = 0; if (class3.source == null) { if (source.ExtCells != null) { class3.source = source; } else { class3.source = source.getLeftHead(); } } CellExt ext6 = current.getLeftHead(class3.source); switch (class3.type) { case 0: index = class3.position; break; case 1: if (ext6 == null) { throw new ReportError("位移对象超出范围"); } index = ext6.Position + class3.position; break; case 2: if (ext6 == null) { throw new ReportError("位移对象超出范围"); } index = ext6.Position; break; } if (class3.source.isLeftHeadOf(leftHead.Source)) { leftHead = leftHead.getLeftHead(class3.source); } else { leftHead = leftHead.getSubCell(class3.source); } if (leftHead == null) { return(null); } leftHead.testValue(); leftHead = leftHead.getExtCell(index); if (leftHead == null) { return(null); } } for (int j = 0; j < num2; j++) { GClass1 class2 = (GClass1)this.arrayList_1[j]; int position = 0; if (class2.source == null) { if (source.ExtCells == null) { class2.source = source.getTopHead(); } else { class2.source = source; } } CellExt ext4 = current.getTopHead(class2.source); switch (class2.type) { case 0: position = class2.position; break; case 1: if (ext4 == null) { throw new ReportError("位移对象超出范围"); } position = ext4.Position + class2.position; break; case 2: if (ext4 == null) { throw new ReportError("位移对象超出范围"); } position = ext4.Position; break; } if (class2.source.isTopHeadOf(topHead.Source)) { topHead = topHead.getTopHead(class2.source); } else { topHead = topHead.getSubCell(class2.source); } if (topHead == null) { return(null); } topHead.testValue(); topHead = topHead.getExtCell(position); if (topHead == null) { return(null); } } return(new CSVar(source, leftHead, topHead)); } return(this.method_0(source, this.int_1, this.int_2)); }
public Head(ICalcFlash enclosingInstance) { this.InitBlock(enclosingInstance); this.leftHead = null; this.topHead = null; }
private byte[] cal(UnitSet props, StringBuilder sb) { ChartParam servletrequest = new ChartParam(this, props); CellExt current = this.cs.Current; Chart chart = new Chart(); string str = servletrequest.getParameter("skin"); if ((str != null) && (str.Length > 0)) { chart.BorderSkin.SkinStyle = (BorderSkinStyle)Enum.Parse(typeof(BorderSkinStyle), str); } chart.MapEnabled = true; chart.RenderType = RenderType.ImageTag; chart.ImageUrl = @".\ChartPic_#SEQ(200,30)"; chart.ChartAreas.Add("area1"); if (servletrequest.getParameter("isxgrid") == "0") { chart.ChartAreas["area1"].AxisX.MajorGrid.Enabled = false; chart.ChartAreas["area1"].AxisX.MinorGrid.Enabled = false; } if (servletrequest.getParameter("isygrid") == "0") { chart.ChartAreas["area1"].AxisY.MajorGrid.Enabled = false; chart.ChartAreas["area1"].AxisY.MinorGrid.Enabled = false; } if (servletrequest.getParameter("is3d") == "0") { chart.ChartAreas["area1"].Area3DStyle.Enable3D = false; } else { chart.ChartAreas["area1"].Area3DStyle.Enable3D = true; } this.setColor(chart, servletrequest, "bgcolor"); this.setColor(chart, servletrequest, "areabgcolor"); this.setColor(chart, servletrequest, "bordercolor"); this.setColor(chart, servletrequest, "areabordercolor"); this.setColor(chart, servletrequest, "bgcolor2"); this.setColor(chart, servletrequest, "areabgcolor2"); this.setValue(chart, servletrequest, "title"); this.calExpand(chart, servletrequest, "xlabel"); this.setValue(chart, servletrequest, "xtitle"); this.calExpand(chart, servletrequest, "ylabel"); this.setValue(chart, servletrequest, "ytitle"); for (int i = 10; i < 100; i++) { this.calExpand(chart, servletrequest, "s" + Convert.ToString(i) + "_value"); } if (servletrequest.getParameter("islegend") == "0") { chart.Legends.Clear(); } else { this.setFont(chart, servletrequest, "legendfont"); this.setColor(chart, servletrequest, "legendcolor"); this.setColor(chart, servletrequest, "legendbgcolor"); this.setColor(chart, servletrequest, "legendbgcolor2"); } this.cs.Current = current; int num2 = 0; string s = servletrequest.getParameter("width"); if (s == null) { num2 = this.getCellWidth(); servletrequest.setParameter("width", num2.ToString()); } else { num2 = int.Parse(s); } int num3 = 0; string str3 = servletrequest.getParameter("height"); if (str3 == null) { num3 = this.getCellHeight(); servletrequest.setParameter("height", num3.ToString()); } else { num3 = int.Parse(str3); } chart.Width = ((System.Web.UI.WebControls.Unit)num2); chart.Height = ((System.Web.UI.WebControls.Unit)num3); int num4 = 0; string str4 = servletrequest.getParameter("ChartImageFormat"); if ((str4 != null) && (str4.Length > 0)) { num4 = Convert.ToInt32(str4); } MemoryStream imageStream = new MemoryStream(); chart.Save(imageStream, (ChartImageFormat)num4); sb.Append(this.getMapStr(chart)); return(imageStream.ToArray()); }
private string cal(UnitSet props, StringBuilder sb) { ChartParam servletrequest = new ChartParam(this, props); CellExt current = this.cs.Current; string str = Convert.ToString(idNo); idNo++; this.chartXml.Append("var chartJs" + str + " = new FusionCharts(\"../../fceformext/flash/"); string str2 = servletrequest.getParameter("type"); if (str2 == null) { str2 = "Column2D"; } this.chartXml.Append(str2); this.chartXml.Append(".swf\",\"chart" + str + "Id\","); int num = 0; string str3 = servletrequest.getParameter("width"); if (str3 == null) { num = this.getCellWidth(); servletrequest.setParameter("width", num.ToString()); } else { num = int.Parse(str3); } int num2 = 0; string str4 = servletrequest.getParameter("height"); if (str4 == null) { num2 = this.getCellHeight(); servletrequest.setParameter("height", num2.ToString()); } else { num2 = int.Parse(str4); } this.chartXml.Append(string.Concat(new object[] { "\"", num, "\",\"", num2, "\",\"0\",\"1\");\r\n" })); string pDataXml = this.pDataXml; if ((pDataXml != null) && (pDataXml.Length > 0)) { XmlDocument oXml = new XmlDocument(); oXml.LoadXml(pDataXml); if (oXml.DocumentElement == null) { throw new Exception("不是合法的XML数据:" + pDataXml); } int iSeriesCount = 1; string str6 = servletrequest.getParameter("seriesCount"); if ((str6 != null) && (str6.Length > 0)) { iSeriesCount = Convert.ToInt32(str6); } this.calExpand(oXml, servletrequest, "xlabel", iSeriesCount); this.calExpand(oXml, servletrequest, "s10_value", iSeriesCount); for (int i = 0; i < (iSeriesCount - 1); i++) { this.calExpand(oXml, servletrequest, "s" + Convert.ToString(i + 11) + "_value", iSeriesCount); this.calExpand(oXml, servletrequest, "s" + Convert.ToString(i + 11) + "_link", iSeriesCount); this.calExpand(oXml, servletrequest, "s" + Convert.ToString(i + 11) + "_name", iSeriesCount); } this.calExpand(oXml, servletrequest, "s10_link", iSeriesCount); if (iSeriesCount > 1) { this.calExpand(oXml, servletrequest, "s10_name", iSeriesCount); } this.chartXml.Append("chartJs" + str + ".setDataXML('" + oXml.DocumentElement.OuterXml + "');"); } this.chartXml.Append("chartJs" + str + ".render"); return(this.chartXml.ToString()); }