Browse Source

fix(report): 修改报表模块ts

lishihao 5 years ago
parent
commit
98525629dc
3 changed files with 67 additions and 48 deletions
  1. 11 10
      report/src/core/jpc_ex.ts
  2. 22 4
      report/src/interface/basic.ts
  3. 34 34
      report/src/interface/classType.ts

+ 11 - 10
report/src/core/jpc_ex.ts

@@ -13,7 +13,7 @@ import JpcEvent from './jpc_event';
 import JpcData from './jpc_data';
 import JpcCommonHelper from './helper/jpc_helper_common';
 import $JE from './jpc_rte'; //Important: for self-define function execution purpose
-import { IDefProperties, IFormula, IParams, ICurrent_RPT, ICurrent_DATA, ICustomizeCfg, ITargetFields, IRptTpl, IDataObj, IBands, IControlCollection, IStyles, BorderStyle, IFontSubCollection, IControlSubCollection, IPreviewPage } from '../interface/basic'
+import { IDefProperties, IFormula, IParams, ICurrent_RPT, ICurrent_DATA, ICustomizeCfg, ITargetFields, IRptTpl, IDataObj, IBands, IControlCollection, IStyles, BorderStyle, IFontSubCollection, IControlSubCollection, IPreviewPage, IRstPage, IMergeBand } from '../interface/basic'
 import { IFlowTabClass, IBillTabClass, ICostTabClass } from '../interface/classType';
 
 class JpcExClass {
@@ -112,7 +112,7 @@ class JpcExClass {
         }
     };
 
-    executeFormulas(runType: string, $CURRENT_TEMPLATE: any, $CURRENT_DATA: ICurrent_DATA, $CURRENT_RPT: any) {
+    executeFormulas(runType: string, $CURRENT_TEMPLATE: any, $CURRENT_DATA: ICurrent_DATA, $CURRENT_RPT: ICurrent_RPT) {
         let execFmlMe = this;
         for (let execFmlIdx = 0; execFmlIdx < execFmlMe.formulas.length; execFmlIdx++) {
             //remark: 搞这么复杂的变量名是为了防止与表达式起冲突(如循环变量i,j,k,容易造成变量冲突且不容易看出问题)
@@ -145,19 +145,18 @@ class JpcExClass {
         let bands = JpcBand.createNew(rptTpl, defProperties);
         try {
             function getPageMergeBorder() {
-                let mergeRst: any = null;
+                let mergeRst: IMergeBand = {};
                 if (bands.MergeBand) {
                     let mergedBand = bands.MergeBand;
-                    mergeRst = {};
                     mergeRst.Left = parseInt(mergedBand.Left.toFixed(0));
                     mergeRst.Right = parseInt(mergedBand.Right.toFixed(0));
                     mergeRst.Top = parseInt(mergedBand.Top.toFixed(0));
                     mergeRst.Bottom = parseInt(mergedBand.Bottom.toFixed(0));
                 }
-                return mergeRst;
+                return null;
             }
             //1.
-            let rstPage: any = {};
+            let rstPage: IRstPage = {};
             rstPage.page_seq = 1;
             if (me.flowTab) {
                 rstPage.cells = me.flowTab.outputAsPreviewPage(rptTpl, bands, rst.control_collection, me);
@@ -173,7 +172,7 @@ class JpcExClass {
             rst.items.push(rstPage);
             //2.
             if (bands.MergeBand) {
-                let mergedBand: any = {}, band = bands.MergeBand;
+                let mergedBand: IMergeBand = {}, band = bands.MergeBand;
                 mergedBand.Left = parseInt(band.Left.toFixed(0));
                 mergedBand.Right = parseInt(band.Right.toFixed(0));
                 mergedBand.Top = parseInt(band.Top.toFixed(0));
@@ -208,7 +207,7 @@ class JpcExClass {
                     rst.items.push(me.outputAsSimpleJSONPage(rptTpl, dataObj, bands, page, rst.control_collection, customizeCfg));
                 }
                 if (bands.MergeBand) {
-                    let mergedBand: any = {}, band = bands.MergeBand;
+                    let mergedBand: IMergeBand = {}, band = bands.MergeBand;
                     mergedBand.Left = parseInt(band.Left.toFixed(0));
                     mergedBand.Right = parseInt(band.Right.toFixed(0));
                     mergedBand.Top = parseInt(band.Top.toFixed(0));
@@ -228,7 +227,8 @@ class JpcExClass {
     outputAsSimpleJSONPage(rptTpl: IRptTpl, dataObj: IDataObj, bands: IBands, page: number, controls: IControlCollection, customizeCfg: ICustomizeCfg) {
         let me = this, rst: any = null;
         function getPageMergeBorder() {
-            let mergeRst: any = null;
+            // let mergeRst = null;
+            let mergeRst: IMergeBand = {};
             if (bands.MergeBand) {
                 let mergedBand = bands.MergeBand;
                 mergeRst = {};
@@ -237,7 +237,8 @@ class JpcExClass {
                 mergeRst.Top = parseInt(mergedBand.Top.toFixed(0));
                 mergeRst.Bottom = parseInt(mergedBand.Bottom.toFixed(0));
             }
-            return mergeRst;
+            // return mergeRst;
+            return false;
         }
         if (me.totalPages >= page) {
             rst = {};

+ 22 - 4
report/src/interface/basic.ts

@@ -1,3 +1,4 @@
+import { IFlowTabClass, IBillTabClass, ICostTabClass } from './classType';
 import { IDataObj_props, IEvent_type } from './enum'
 export interface IArea {
     Left: number;
@@ -282,9 +283,10 @@ export interface ICurrent_RPT {
     outputAsSimpleJSONPageArray: IOutputAsSimpleJSONPageArray;
     paging: (rptTpl: IRptTpl, dataObj: IDataObj, defProperties: IDefProperties, option: string, outputType: string) => void;
     fields: ITargetFields;
-
-    flowTab: IFlowTab;
-    flowTabEx?: any;
+    flowTab: IFlowTabClass;
+    flowTabEx: IFlowTabClass;
+    billTab: IBillTabClass;
+    crossTab: ICostTabClass;
     runTimePageData: { currentPage?: number };
 }
 
@@ -510,4 +512,20 @@ interface IFlowGroup {
     group_field_s: { FieldID: number }[];
     group_lines: IGrpLine[];
     sum_field_s: Fields[];
-};
+};
+
+
+
+export interface IRstPage {
+    page_seq?: number;
+    cells?: INode[];
+    page_merge_border?: IMergeBand;
+}
+
+export interface IMergeBand {
+    Bottom?: number;
+    Left?: number;
+    Right?: number;
+    Top?: number;
+    style?: any;
+}

+ 34 - 34
report/src/interface/classType.ts

@@ -1,12 +1,12 @@
-import { Fields, IBandDetail, IBands, ICell, IControlCollection, ICrossTab, ICurrent_DATA, ICustomizeCfg, IDataObj, IDefProperties, IGrpLine, IMergePos, INode, IPreviewPage, IRptTpl, ITab } from "./basic";
+import { Fields, IBandDetail, IBands, ICell, IControlCollection, ICrossTab, ICurrent_DATA, ICurrent_RPT, ICustomizeCfg, IDataObj, IDefProperties, IGrpLine, IMergePos, INode, IPreviewPage, IRptTpl, ITab } from "./basic";
 
 export declare class IFlowTabClass {
     auto_height_fields_idx: [number, Fields][];
     auto_height_info: number[][];
-    checkCombineEvent: ($RUN_TYPE: String, $VER_COMB_ARRAY: number[][], $HOR_COMB_ARRAY: any[], $CURRENT_CELL_ITEMS: ICell[], $CURRENT_RPT: any) => void;
-    checkGrpTxtOutEvent: ($RUN_TYPE: String, $TEXT: any, $TIMES: any, $CURRENT_RPT: any) => void;
+    checkCombineEvent: ($RUN_TYPE: String, $VER_COMB_ARRAY: number[][], $HOR_COMB_ARRAY: any[], $CURRENT_CELL_ITEMS: ICell[], $CURRENT_RPT: ICurrent_RPT) => void;
+    checkGrpTxtOutEvent: ($RUN_TYPE: String, $TEXT: any, $TIMES: any, $CURRENT_RPT: ICurrent_RPT) => void;
     combinePageCells: (rstPageCells: ICell[], verticalCombinePos: number[][], horizonCombinePos: number[][]) => void;
-    commonTabRestOutput: (dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, band: IBandDetail, unitFactor: number, tab: ITab, multiColIdx: number, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg | null) => void;
+    commonTabRestOutput: (dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, band: IBandDetail, unitFactor: number, tab: ITab, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) => void;
     disp_fields_ex_idx: any[];
     disp_fields_idx: any[];
     dispValueIdxLst: any[];
@@ -18,14 +18,14 @@ export declare class IFlowTabClass {
     groupSumValLst: any[]
     isEx: boolean;
     multiCols: number;
-    outputAsPreviewPage: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any) => any;
-    outputAsSimpleJSONPage: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, adHocMergePos: IMergePos, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any[];
+    outputAsPreviewPage: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT) => any;
+    outputAsSimpleJSONPage: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, adHocMergePos: IMergePos, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any[];
     outputAutoHeightTabField: (band: IBandDetail, tab_field: Fields, data_field: string[], contentValInfo: number[], rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number) => any;
-    outputColumn: (rptTpl: IRptTpl, dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, unitFactor: number, multiColIdx: number, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg | null) => any[]
+    outputColumn: (rptTpl: IRptTpl, dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, unitFactor: number, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) => any[]
     outputAsSimpleJSONPageArray?: (rptTpl: IRptTpl, dataObj: IDataObj, startPage: number, endPage: number, defProperties: IDefProperties, customizeCfg: ICustomizeCfg) => any;
-    outputSegSum: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, segIdx: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any
+    outputSegSum: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, segIdx: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any
     outputTabField: (band: IBandDetail, tab_field: Fields, data_field: string[] | null, valueIdx: number, serialIdx: number, rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number) => any
-    outputTabGrpLine: (band: IBandDetail, grp_line: IGrpLine, page: number, grpValueIdx: number[], rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number, grpCntIdx: number, $CURRENT_RPT: any) => any
+    outputTabGrpLine: (band: IBandDetail, grp_line: IGrpLine, page: number, grpValueIdx: number[], rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number, grpCntIdx: number, $CURRENT_RPT: ICurrent_RPT) => any
     page_seg_map: number[][];
     page_sum_fields_idx: any[][]
     page_sum_tab_fields: any[]
@@ -33,23 +33,23 @@ export declare class IFlowTabClass {
     pageStatusLst: boolean[][];
     pageSumValLst: any[];
     paging_option: string
-    preSetupPages: (rptTpl: IRptTpl, dataObj: IDataObj, defProperties: IDefProperties, option: string, $CURRENT_RPT: any, followTabEx: any) => any
+    preSetupPages: (rptTpl: IRptTpl, dataObj: IDataObj, defProperties: IDefProperties, option: string, $CURRENT_RPT: ICurrent_RPT, followTabEx: any) => any
     seg_sum_fields_idx: any[];
     seg_sum_tab_fields: any[];
     segments: number[][];
     segSumValLst: any[];
-    setupAutoHeightData: (bands: IBands, segIdx: number, rptTpl: IRptTpl, dataObj: IDataObj, $CURRENT_RPT: any, defProperties: IDefProperties) => void
-    setupGroupingData: (rptTpl: IRptTpl, dataObj: IDataObj, $CURRENT_RPT: any) => void
-    sorting: (rptTpl: IRptTpl, dataObj: IDataObj, dataSeq: number[][], $CURRENT_RPT: any) => void
-    sumSeg: (dataObj: IDataObj, $CURRENT_RPT: any) => void
-    sumUpGrp: (rptTpl: IRptTpl, $CURRENT_RPT: any, dataObj: IDataObj, segIdx: number, preGrpIdx: number, nexGrpIdx: number) => void
+    setupAutoHeightData: (bands: IBands, segIdx: number, rptTpl: IRptTpl, dataObj: IDataObj, $CURRENT_RPT: ICurrent_RPT, defProperties: IDefProperties) => void
+    setupGroupingData: (rptTpl: IRptTpl, dataObj: IDataObj, $CURRENT_RPT: ICurrent_RPT) => void
+    sorting: (rptTpl: IRptTpl, dataObj: IDataObj, dataSeq: number[][], $CURRENT_RPT: ICurrent_RPT) => void
+    sumSeg: (dataObj: IDataObj, $CURRENT_RPT: ICurrent_RPT) => void
+    sumUpGrp: (rptTpl: IRptTpl, $CURRENT_RPT: ICurrent_RPT, dataObj: IDataObj, segIdx: number, preGrpIdx: number, nexGrpIdx: number) => void
 }
 
 export declare class IBillTabClass {
     disp_fields_idx: any[];
-    outputAsPreviewPage: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any) => any
-    outputAsSimpleJSONPage: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any;
-    outputContent: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, pageStatus: boolean[], $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any
+    outputAsPreviewPage: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT) => any
+    outputAsSimpleJSONPage: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any;
+    outputContent: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, pageStatus: boolean[], $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any
     outputPreviewContent: (rptTpl: IRptTpl, bands: IBands, unitFactor: number, controls: IControlCollection, pageStatus: boolean[]) => any;
     paging: (rptTpl: IRptTpl, dataObj: IDataObj) => number
     sorting: (rptTpl: IRptTpl) => void
@@ -76,23 +76,23 @@ export declare class ICostTabClass {
     crsOrient: number;
     pageStatusLst: any[];
     paging_option: string;
-    sorting: (rptTpl: IRptTpl, dataObj: IDataObj, dataSeq: number[][], $CURRENT_RPT: any) => void;
+    sorting: (rptTpl: IRptTpl, dataObj: IDataObj, dataSeq: number[][], $CURRENT_RPT: ICurrent_RPT) => void;
     preSetupPages: (rptTpl: IRptTpl, defProperties: IDefProperties, option: string) => number;
-    outputAsPreviewPage: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any; //最后一个参数其实没作用,方法中定义了,但是在实际使用并没有传值
-    outputPreviewContent: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, maxRowRec: number, maxColRec: number, unitFactor: number) => any;
-    outputPreviewRowTab: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, maxRowRec: number, unitFactor: number) => INode[];
-    outputPreviewColTab: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, maxColRec: number, unitFactor: number) => INode[];
-    outputPreviewTabExt: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, maxColRec: number, unitFactor: number) => INode[];
-    outputPreviewSumTabExt: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, unitFactor: number) => INode[];
-    outputPreviewTabSum: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, maxRowRec: number, tabNodeName: string, unitFactor: number) => INode[];
-    private_OutputPreviewCommon: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg, maxRowRec: number, maxColRec: number, tab: ICrossTab, unitFactor: number) => any
-    outputAsSimpleJSONPage: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any;
-    outputTabSum: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, tabNodeName: string, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any
-    outputTabExt: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any;
-    outputSumTabExt: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, segIdx: number, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any
-    outputContent: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any;
-    outputColTab: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => any
-    outputRowTabCommon: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, tabStr: string, rowFieldsIdxArr: any[], unitFactor: number, controls: IControlCollection, $CURRENT_RPT: any, customizeCfg: ICustomizeCfg) => INode[];
+    outputAsPreviewPage: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any; //最后一个参数其实没作用,方法中定义了,但是在实际使用并没有传值
+    outputPreviewContent: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, maxRowRec: number, maxColRec: number, unitFactor: number) => any;
+    outputPreviewRowTab: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, maxRowRec: number, unitFactor: number) => INode[];
+    outputPreviewColTab: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, maxColRec: number, unitFactor: number) => INode[];
+    outputPreviewTabExt: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, maxColRec: number, unitFactor: number) => INode[];
+    outputPreviewSumTabExt: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, unitFactor: number) => INode[];
+    outputPreviewTabSum: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, maxRowRec: number, tabNodeName: string, unitFactor: number) => INode[];
+    private_OutputPreviewCommon: (rptTpl: IRptTpl, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg, maxRowRec: number, maxColRec: number, tab: ICrossTab, unitFactor: number) => any
+    outputAsSimpleJSONPage: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any;
+    outputTabSum: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, tabNodeName: string, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any
+    outputTabExt: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any;
+    outputSumTabExt: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, segIdx: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any
+    outputContent: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any;
+    outputColTab: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => any
+    outputRowTabCommon: (rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, tabStr: string, rowFieldsIdxArr: any[], unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) => INode[];
     outputTabField: (band: IBandDetail, tab_field: Fields, data_field: any, valueIdx: number, serialIdx: number, rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection) => INode;