realgrid
Version:
RealGrid is a javascript data grid component with various powerful functions such as editing, row grouping, filtering, and sorting data on web environment.
2,348 lines (2,313 loc) • 830 kB
TypeScript
/**
* @public
* 각각 두 개의 데이터 필드에 저장된 목표값(혹은 기대값)과 실행값을 비교하여 표시하는 시리즈 렌더러
*
* Bullet renderer는 목표값을 수직바로 실행값을 수평바로 표시한다.
*
* {@link SeriesColumn} 에서만 사용 가능하다.
*
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* columns = [
* "target",
* "actual",
* {
* name: "actualtargetText",
* type: "series",
* fieldNames: 'target,actual',
* renderer: {
* type: "actualtargetbullet"
* }
* }
* ]
* ```
*/
export declare interface ActualTargetBulletRenderer extends CellRenderer {
/**
* 종류: 성과/목표 bullet Renderer
*/
type?: "actualtargetbullet";
/**
* actualBar의 스타일 클래스 명
*/
actualStyle?: string;
/**
* targetBar의 스타일 클래스 명
*/
targetStyle?: string;
/**
* background의 스타일 클래스 명
*/
backgroundStyle?: string;
/**
* 최대값
*
* @defaultValue `100`
*/
maxValue?: number;
/**
* 최소값
*
* @defaultValue `0`
*/
minValue?: number;
/**
* targetBar의 너비를 지정한다.
*
* @defaultValue `3`
*/
targetWidth?: number;
/**
* actualBar 테두리의 너비를 지정한다.
*
* @remarks
* actualStyle에서 지정한 stroke의 width / 2를 입력한다.
*
* @defaultValue `1`
*/
strokeWidth?: number;
/**
* actualBar의 높이를 지정한다.
*
* @remarks
* 'px'또는 '%'단위로 입력한다.
*
* @defaultValue `25%`
*/
actualHeight?: number | string;
}
/**
* 각각 두 개의 데이터 필드에 저장된 목표값(혹은 기대값)과 실행값을 비교하여 표시하기 위한 렌더러.
*
* ActualTarget text renderer 는 '실행값 / 목표값' 형식으로 표시한다.
*
* {@link SeriesColumn} 에서만 사용 가능하다.
*
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* columns = [
* "target",
* "actual",
* {
* name: "actualtargetText",
* type: "series",
* fieldNames: 'target,actual',
* renderer: {
* type: "actualtargettext"
* }
* }
* ]
* ```
*
*/
export declare interface ActualTargetTextRenderer extends CellRenderer {
/**
* 종류: 성과/목표 Text
*/
type?: "actualtargettext";
/**
* 성과 값과 목표 값의 구분자를 입력한다.
*
* @defaultValue `/`
*/
separator?: string;
/**
* 성과 값의 스타일 명
*
* @defaultValue `rg-actualtarget-target`
*/
targetStyle?: string;
/**
* 목표 값의 스타일 명
*
* @defaultValue `rg-actualtarget-actual`
*/
actualStyle?: string;
/**
* 구분자의 스타일명
*
* @defaultValue `rg-actualtarget-separator`
*/
separatorStyle?: string;
}
/**
* @public
*
* 숫자 형 컬럼 셀의 값을 바(bar)로 표시하는 렌더러
*
* @remarks
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* // string type
* column.renderer = 'bar';
*
* // object type
* column.renderer = {
* "type": "bar",
* "minimum": 0,
* "maximum": 100,
* "minWidth": 150,
* "showLabel": true,
* "origin": "left"
* }
* ```
*/
export declare interface BarCellRenderer extends CellRenderer {
/**
* 종류: 바
*/
type?: "bar";
/**
* 왼쪽에서 시작하는 바의 스타일 명
*
* @defaultValue `'rg-bar-renderer-bar'`
*/
barStyle?: string;
/**
* 오른쪽에서 시작하는 바의 스타일 명
*
* @defaultValue `'rg-bar-renderer-bar-right'`
*/
rightBarStyle?: string;
/**
* 위쪽에서 시작하는 바의 스타일 명
*
* @defaultValue `'rg-bar-renderer-bar-top'`
*/
topBarStyle?: string;
/**
* 아래쪽에서 시작하는 바의 스타일 명
*
* @defaultValue `'rg-bar-renderer-bar-bottom'`
*/
bottomBarStyle?: string;
/**
* 최소값
*/
minimum?: number;
/**
* 최대값
*/
maximum?: number;
/**
* 바의 넓이
*/
barWidth?: number | string;
/**
* Label 을 표시할 것인지의 여부
*/
showLabel?: boolean;
/**
* 바의 시작 위치
*
* @defaultValue {@link BarOrigin.LEFT}
*/
origin?: BarOrigin;
/**
* 절대값 기준으로 렌더링 할지의 여부
*/
absoluteValue?: boolean;
/**
* 값이 지정되면 middleValue보다 큰값은 오른쪽으로 작은 값은 왼쪽으로 표시한다.
*
* @remarks
* `origin`이 {@link BarOrigin.LEFT} 또는 {@link BarOrigin.BOTTOM}인 경우만 적용된다.
*
* @defaultValue `NaN`
*/
baseValue?: number;
/**
* baseValue보다 작은 값일때 적용되는 스타일 명
*
* @defaultValue `'rg-bar-renderer-bar-negative'`
*/
negativeStyle?: string;
/**
* baseValue가 지정되었을때 bar와 text의 간격
* @remarks
* 값이 `0`인경우 셀의 중간에 출력된다.
* @defaultValue `5`
*/
textOffset?: number;
}
/**
* {@link BarCellRenderer} 의 바의 위치
*
* @example
* ```js
* column.renderer = {
* "type": "bar",
* "origin":"right"
* }
* ```
*/
export declare enum BarOrigin {
/**
* 기본값
*/
DEFAULT = "default",
/**
* 왼쪽
*/
LEFT = "left",
/**
* 오른쪽
*/
RIGHT = "right",
/**
* 위쪽
*/
TOP = "top",
/**
* 아래쪽
*/
BOTTOM = "bottom"
}
/**
* @public
*
* {@link DataColumn.equalBlank}가 `true`일때 셀의 위치
*/
declare enum BlankState {
/**
* equalBlank가 적용되지 않음.
*/
NONE = "none",
/**
* 첫번째 셀
*/
HEAD = "head",
/**
* 중간에 위치한 셀
*/
BODY = "body",
/**
* 마지막에 위치한 셀
*/
TAIL = "tail"
}
/**
* boolean 필드 변환시 수행 될 콜백함수 형식
*
* @remarks
* {@link DataOutputOptions.booleanCallback} 에서 사용된다.
*
* [매개변수 목록]
*
* `ds` - DataProvider 컨트롤
*
* `row` - 아이템의 인덱스
*
* `field` - 필드명
*
* `value` - 값
*
* [반환값] - 출력할 값
*
* @example
* ```js
* const f = function(ds, row, field, value) {
* return !!value;
* }
* ```
*/
export declare type BooleanOutputCallback = (ds: DataProviderBase, row: number, field: string, value: any) => boolean | any;
/**
* @public
* BootStrap DatePicker 를 이용한 편집기
*
* @remarks
*
* 번들 이후 다음과 같이 파일을 적용해야 정상적으로 작동한다.
*
* {@link TextCellEditor} 를 상속 한다.
*
* [상위 클래스]
*
* {@link CellEditor} - {@link TextCellEditor}
*
* @example
*
* ```js
* // string type
* column.editor = "btdate"
*
* // object type
* column.editor = { type: "btdate", maxLength: 6, textReadOnly: true }
* ```
*
* ```html
* <script type="text/javascript" src="/lib/bootstrap/bootstrap-datepicker.js"></script>
* <script type="text/javascript" src="/lib/bootstrap/bootstrap-datepicker.ko.min.js"></script>
* <link rel="stylesheet" type="text/css" href="/lib/css/bootstrap-datepicker.css">
* ```
*/
export declare interface BTDateCellEditor extends TextCellEditor {
/**
* 셀 에디터 종류: 부트스트랩 날짜 편집기
*
*/
type?: 'btdate';
/**
* BootStrap DatePicker의 옵션
*
* @remarks
* {@link https://uxsolutions.github.io/bootstrap-datepicker/ | 참조}
*/
btOptions: any;
/**
* 키보드를 이용한 입력 금지 여부
*/
textReadOnly: boolean;
/**
* 입력 가능한 최소 날짜
*
* @remarks
* 키보드로 minDate 보다 이전 날짜가 입력되면, minDate 로 변경된다.
*
* @defaultValue `new Date(1970, 0, 1)`
*/
minDate: string | Date;
/**
* 입력 가능한 최대 날짜
*
* @remarks
* 키보드로 maxDate 보다 이후 날짜가 입력되면, maxDate 로 변경된다.
*
* @defaultValue `new Date(2100, 11, 31)`
*/
maxDate: string | Date;
/**
* 그리드 DOM 내부에 포함시킬 것인지의 여부
*
* @defaultValue `false`
*/
viewGridInside: boolean;
/**
* 달력 선택 상자의 위치
*
* @defaultValue {@link DropDownPosition.BUTTON}
*/
dropDownPosition: DropDownPosition;
/**
* 셀을 클릭했을 때 목록을 펼칠지의 여부
*
* @defaultValue `false`
*/
dropDownWhenClick: boolean;
/**
* 선택 시 commit 여부
*
* @defaultValue `false`
*/
commitOnSelect: boolean;
}
/**
* @public
*
* 버튼을 표시하는 렌더러
*
* @remarks
* 자동 높이에서 `TOP_EDGE`, `BOTTOM_EDGE` 를 사용할 수 없다.
*
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* // string type
* column.renderer = 'button';
*
* // object type
* column.renderer = {
* "type": "button",
* "hideWhenEmpty": false
* }
* ```
*/
export declare interface ButtonCellRenderer extends CellRenderer {
/**
* 종류: 버튼
*/
type?: 'button';
/**
* 표시 되는 버튼의 스타일 클래스 명
*
* @defaultValue `'rg-button-renderer-button'`
*/
buttonStyle?: string;
/**
* 빈 값일 때 버튼을 표시할지의 여부
*
* @remarks
* `true` 시 `undefined`, `null`, `''`, `NaN` 일 경우 버튼을 표시하지 않는다.
*
* @defaultValue `true`
*/
hideWhenEmpty?: boolean;
/**
* spaceKey를 입력했을때 button.click 실행여부
*
* @remarks
* true이면 스페이스바를 입력했을때 button.click이 실행된다.
* {@link GridBase.onCellItemClicked}가 있는 경우 해당 이벤트가 호출된후 결과값이 false이면 기본동작을 실행하지 않는다
*
* @defaultValue `true`
*/
spaceKey?: boolean;
/**
* enter를 입력했을때 button.click 실행여부
*
* @remarks
* true이면 enterKey를 입력했을때 입력했을때 button.click이 실행된다.
* {@link GridBase.onCellItemClicked}가 있는 경우 해당 이벤트가 호출된후 결과값이 false이면 기본동작을 실행하지 않는다
*
* @defaultValue `true`
*/
enterKey?: boolean;
}
/**
* @public
*
* 컬럼에 버튼이 설정된 경우, 데이터 셀에 컬럼 버튼과 편집 버튼을 표시하는 방법
*
* @remarks
* ValueColumn의 {@link ValueColumn.buttonVisibility | buttonVisibility} 속성과 {@link ValueColumn.editButtonVisibility| editButtonVisibility} 속성에 사용된다.
*
* @example
* ```js
* // 컬럼 버튼
* column.buttonVisibility = false;
*
* // 편집기의 버튼
* column.editButtonVisibility = false;
* ```
*/
export declare enum ButtonVisibility {
/**
* 항상 표시
*/
ALWAYS = "always",
/**
* 마우스가 셀 위에 있거나, 셀을 선택한 상태에서만 표시
*/
DEFAULT = "default",
/**
* 셀을 선택한 상태에서 표시
*/
VISIBLE = "visible",
/**
* 표시하지 않음
*/
HIDDEN = "hidden",
/**
* 행이 선택된 상태에서 표시
*/
ROWFOCUSED = "rowfocused"
}
/**
* @public
* column.button이 `action` 또는 `popup`인 경우 visible을 지정한 콜백
*
* [매개변수]
*
* `grid` - gridView
*
* `index` - 셀의 CellIndex
*
* [반환값] - boolean `false`를 return하면 버튼을 표시하지 않는다.
*/
declare type ButtonVisibleCallback = (grid: GridBase, index: CellIndex, focused: boolean, mouseEntered: boolean) => boolean;
/**
* 년도, 월, 일 선택화면의 제한을 설정한다.
*
* @remarks
* 년-월 또는 년도만 선택할때 사용한다.
*/
export declare enum CalendarMode {
/**
* `일`을 선택할수 있다.
*/
DAY = "day",
/**
* `월`까지만 선택할수 있다.
*/
MONTH = "month",
/**
* `년도`만 선택가능하다.
*/
YEAR = "year"
}
/**
* 자동 필터링 시 사용자 지정 분류를 위한 콜백 형식
*
* @remarks
* [매개변수 목록]
*
* `column` - 자동 필터링이 걸려있는 컬럼
*
* `values` - 전체 값들
*
* [반환값] - 카데고리 분류 모델의 배열 형태
*
* @example
*
* ```js
* const f = function(column, values) {
* const emptyText = '빈 아이템'
* if (!values) {
* return null;
* }
* const valids = values.filter(function (el) { return el != undefined && el != null; });
* const min = Math.min.apply(null, valids);
* const vlen = values.length;
* let unit;
* if (vlen > 15) {
* const groupCount = Math.min(Math.round(vlen / 5)), 10);
* unit = Math.round(vlen / groupCount);
* } else {
* unit = 1;
* }
* let categories = [];
* let gvals = [];
* let gindex = 0;
* let gmin = min;
* let isEmpty = false;
* for (let i = 0; i < vlen; i++) {
* const v = values[i];
* if (v === undefined || v === null) {
* isEmpty = true;
* continue;
* }
* if (i == gindex + unit || i === vlen - 1) {
* categories.push({ text: gmin + ' ~ ' + v, values: gvals });
* gvals = [v];
* gindex = i;
* gmin = v;
* } else {
* gvals.push(v);
* }
* }
* if (isEmpty) {
* categories.push({ text: emptyText, empty: true });
* }
* return categories;
* }
* ```
*
*/
export declare type CategoryCallback = (column: DataColumn, values: any[]) => FilterCategory[];
/**
* @public
*
* 데이터 셀의 우측에 표시할 버튼 종류
*
* @remarks
* {@link ValueColumn.button} 에서 사용된다.
*
* @example
* ```js
* column.button = 'popup';
* ```
*/
export declare enum CellButton {
/**
* 버튼 없음
*/
NONE = "none",
/**
* 실행 버튼 (클릭 시 {@link GridBase.onCellButtonClicked | onCellButtonClicked} 콜백 호출)
*/
ACTION = "action",
/**
* 팝업 메뉴 버튼
*
* @remarks
* 컬럼에 {@link ValueColumn.popupMenu | popupMenu } 속성값이 있고, 컬럼의 popupMenu 값과 {@link GridBase.addPopupMenu | addPopupMenu} 호출 시 name 값과 일치 해야 한다.
*
* 팝업 메뉴의 메뉴 항목 클릭 시 {@link GridBase.onMenuItemClicked | onMenuItemClicked} 콜백이 호출된다.
*/
POPUP = "popup"
}
/**
* @public
* 셀 편집기들의 기반이 되는 모델
*
* @remarks
* 셀 편집기 별로 지정할 수 있는 속성이 있으며, DataColumn 에 지정하지 않을 시 {@link LineCellEditor} 가 기본으로 설정된다.
*
* 또, 오브젝트 형태일 때의 `type` 속성을 {@link ValueColumn.editor | column.editor} 에 문자열 형태로 지정 가능하다.
*
* [목록]
*
* {@link LineCellEditor}: 한 줄 입력 편집기
*
* {@link PasswordCellEditor}: 암호 입력 편집기
*
* {@link MultiLineCellEditor}: 여러 줄 입력 편집기
*
* {@link NumberCellEditor}: 숫자 입력 편집기
*
* {@link DateCellEditor}: 날짜 편집기
*
* {@link BTDateCellEditor}: 부트스트랩 날짜 편집기
*
* {@link DropDownCellEditor}: 드롭 다운 편집기
*
* {@link SearchCellEditor}: 검색 기능이 추가 된 드롭 다운 편집기
*
* {@link MultiCheckCellEditor}: 여러 항목이 선택 가능한 드롭 다운 편집기
*
* @warning CellEditor 로 직접 설정하거나 호출할 수 없다.
*
* @example
*
* ```js
* // string type
* column.editor = "line"
*
* // object type
* column.editor = { type: "line", maxLength: 1}
* ```
*/
export declare interface CellEditor {
/**
* 셀 편집기 종류
*
* @remarks
*
* {@link LineCellEditor}: "line" 또는 "text"
*
* {@link PasswordCellEditor}: "password"
*
* {@link MultiLineCellEditor}: "multiline"
*
* {@link NumberCellEditor}: "number"
*
* {@link DateCellEditor}: "date"
*
* {@link BTDateCellEditor}: "btdate"
*
* {@link DropDownCellEditor}: "dropdown" 또는 "list"
*
* {@link SearchCellEditor}: "search"
*
* {@link MultiCheckCellEditor}: "checklist"
*/
type?: string;
/**
* 셀의 값을 제거하거나 편집후 공백일때 저장되는 값
*/
emptyValue?: any;
/**
* 편집기의 입력되는 문자의 대소문자 구분 형태
*
* @remarks
* 편집기에 입력되는 문자를 자동으로 대소문자로 변경한다.
* {@link TextInputCase.DEFAULT} 로 지정하면 컬럼의 textInputCase에 지정한 값을 따르게 된다.
*/
textCase?: TextInputCase;
/**
* 날짜 형식의 값일 때 표시되는 편집기의 서식
*
* @remarks
* 데이터 필드가 날짜 타입일 때 작동
*/
datetimeFormat?: string;
/**
* 편집기에서 현재 날짜를 입력하도록 하는 문자
*
* @remarks
* 데이터 필드가 날짜 타입이거나, 텍스트 타입이지만 날짜 편집기일 때 동작한다.
*
*/
todayChar?: string;
/**
* Boolean 값일 때 표시되는 편집기의 서식
*
* @remarks
* 데이터 필드가 boolean 타입일 때 동작한다.
*/
booleanFormat?: string;
/**
* 데이터 셀의 값 수정 가능 여부
*
* @remarks
* `true` 일 때
*
* @defaultValue `false`
*/
readOnly?: boolean;
}
/**
* @public
*
* 셀의 위치정보 모델
*
* @remarks
* {@link GridBase.onCurrentChanging | onCurrentChanging} 등 {@link GridBase} 의 여러 콜백 및 셀 위치 관련 method 들에서 주로 사용된다.
*
* 필요한 정보만 사용하면 된다.
*
* @example
* ```js
* gridView.setCurrent({ itemIndex: 1, column: '행정구역별' });
* ```
*/
export declare interface CellIndex {
/**
* 그리드 상에서의 순서
*/
itemIndex?: number;
/**
* 컬럼 이름
*/
column?: string | GridColumn;
/**
* 고유의 행 번호
*/
dataRow?: number;
/**
* 필드 순서
*/
fieldIndex?: number;
/**
* 필드명
*/
fieldName?: string;
}
/**
* @public
* 컬럼 레이아웃 정보 모델
*
* @remarks
* {@link GridBase.getLayoutByColumn} 에서 해당 모델을 반환할 수 있다.
*
* {@link GridBase.setColumnLayout} 로 설정될 때에는 특정 속성만 사용 가능하다.
*
* {@link GridColumn.layout} 의 속성으로 설정 가능하다.
*
* {@link CellLayoutItem} 을 상속한다.
*
* [상위 클래스]
*
* {@link CellLayoutItem}
*
*
* @example
* ```js
* // 반환값일 경우
* {
* mergeRule: undefined,
* breakMergeOnEmpty: false,
* equalBlank: undefined,
* equalBlankExpression: undefined,
* cellSpan: 1,
* headerSpan: undefined,
* summarySpan: undefined,
* footerSpan: undefined,
* dataSpan: undefined,
* spanCallback: undefined,
* visible: true,
* vindex: 1,
* width: 100,
* fillWidth: NaN,
* cellWidth: 250
* }
*
* // method 로 설정할 경우
* {
* column: 'Country'
* cellSpan: 3,
* width: 100,
* }
*
* {
* column: 'Country'
* headerSpan: 2,
* summarySpan: 2,
* footerSpan: 2,
* dataSpan: 4,
* }
*
* // 컬럼에 설정할 경우
* column.layout.spanCallback = function (grid, layout, itemIndex) {
* var value = grid.getValue(itemIndex, layout.column.name);
* if (value) {
* return value[0] === "B" ? 2 : value[0] === "F" ? 3 : 1;
* }
* ```
*/
export declare interface CellLayoutColumnItem extends CellLayoutItem {
/**
* 컬럼 머지할 때의 규칙
*
* @remarks
* `undefined` 이면(기본값) 컬럼의 mergeRule 로 병합한다.
* `null` 이면 컬럼의 mergeRule 을 무시한다.
* `{criteria: string}`은 이전버전과 호환성을 위해서 사용한다.
*/
mergeRule?: string | {
criteria: string;
};
/**
* 빈 셀일 때 머지 중단 여부
*/
breakMergeOnEmpty?: boolean;
/**
* 같은 컬럼의 이전 행의 셀과 값이 동일할때 셀의 묶음 여부
*
* @defaultValue `undefined`
*/
equalBlank?: boolean;
/**
* {@link CellLayoutColumnItem.equalBlank | equalBlank } 가 `true`인 경우 같은 값으로 처리할 수식
*
* @defaultValue `undefined`
*/
equalBlankExpression?: string;
/**
* 컬럼명
*
*/
column: string | ValueColumn;
/**
* 기본 셀 스팬 개수
*
* @remarks
* 다른 스팬이 지정이 되지 않을 때, 해당 값을 따른다.
*
* {@link GridBase.setColumnLayout} 로 설정될 때 사용 가능하다.
*/
cellSpan?: number;
/**
* 헤더 스팬 개수
*
* @remarks
* {@link GridBase.setColumnLayout} 로 설정될 때 사용 가능하다.
*/
headerSpan?: number;
/**
* headerSummary가 하나일때 컬럼레이아웃별 headerSummary의 span을 지정한다.
*/
summarySpan?: number;
/**
* summary 스팬 개수
*
* @remarks
* summary가 하나인 경우 summarySpan 으로 지정한다.
* {@link GridBase.setColumnLayout} 로 설정될 때 사용 가능하다.
*/
summarySpans?: number[];
/**
* footer가 하나일때 컬럼레이아웃별 footer의 span을 지정한다.
*/
footerSpan?: number;
/**
* 푸터 스팬 개수
*
* @remarks
* footer가 하나인 경우 footerSpan 으로 지정한다.
* {@link GridBase.setColumnLayout} 로 설정될 때 사용 가능하다.
*/
footerSpans?: number[];
/**
* 그룹 푸터 스팬 개수
*
* @remarks
* groupFooter가 하나인 경우 groupFooterSpan으로 지정한다.
* {@link GridBase.setColumnLayout} 로 설정될 때 사용 가능하다.
*/
groupFooterSpans?: number[];
/**
* 셀 스팬 개수
*
* @remarks
* 상위 그룹의 direction이 vertical인 경우 rowSpan하고 horizontal인 경우 colspan한다.
* {@link GridBase.setColumnLayout} 로 설정될 때 사용 가능하다.
*/
dataSpan?: number;
/**
* 사용자 지정 스팬을 위한 콜백
*
* @eventProperty
* @example
* ```js
* let layout = column.layout
* layout.spanCallback = function (grid, layout, itemIndex) {
* var value = grid.getValue(itemIndex, layout.column.dataIndex);
* if (value) {
* return value[0] === "B" ? 3 : value[0] === "F" ? 2 : 1;
* }
* return 1;
* };
* ```
*/
spanCallback?: CellSpanCallback;
/**
* 사용자 지정 headerSummary 스팬을 위한 콜백
*
* @eventProperty
*/
summarySpanCallback?: SummaryCellSpanCallback;
/**
* 사용자 지정 footer 스팬을 위한 콜백
*
* @eventProperty
*/
footerSpanCallback?: SummaryCellSpanCallback;
/**
* 사용자 지정 groupFooter 스팬을 위한 콜백
*
* @eventProperty
*/
groupFooterSpanCallback?: GroupFooterCellSpanCallback;
/**
* 사용자 지정 groupFooter UserSpan을 위한 콜백 groupFooterSpanCallback과는 다르게 block단위로 span할수 있다.
*
* @eventProperty
*/
groupFooterUserSpanCallback?: GroupFooterUserSpanCallback;
/**
* 사용자 지정 footer span
*/
footerUserSpans?: UserSpan[];
/**
* 사용자 지정 headerSummary span
*/
summaryUserSpans?: UserSpan[];
/**
* 사용자 지정 groupFooter span
*/
groupFooterUserSpans?: UserSpan[];
}
/**
* @public
*
* {@link CellLayoutGroupItem.header}의 설정 정보 모델
*
* [상위 클래스]
* {@link CellLayoutHeader}
*/
export declare interface CellLayoutGroupHeader extends CellLayoutHeader {
/**
* 툴팁에 표시될 문자열을 지정.
*
* @remarks
* 지정하지 않으면 text가 표시된다.
*/
tooltip?: string;
/**
* header에 적용되어 표시될 html 템플릿
*
* @remarks
* header에 text가 아닌 html을 표시할때 사용한다.
*
* @example
* ```js
* var layouts = [
* { type: "group"
* header: {
* template : "<span class='test-style' style='color:red'>HTML 표시 ${key}</span>"
* }
* }
* ]
* ```
*/
template?: string;
/**
* template에 특정 문자열을 교체해서 표시할때 사용
*
* @remarks
* `"${}"`로 둘러싼 문자열을 특정 문자열로 변경할때 사용한다.
* {@link CellLayoutGroupHeader.template} 참조
*
*/
values?: {
[key: string]: string;
};
/**
*
* edgeMark 표시여부
*
* @remarks
* Header에 강조 표시를 할때 사용한다.
* {@link EdgeMark} 참조
*/
edgeMark?: EdgeMark;
/**
* template에 특정 문자열을 교체해서 표시할때 사용
*
* @remarks
* `values`에 없는 문자열인 경우 호출된다.
*/
templateCallback?: RealizeHeaderCallback;
/**
* 생성된 요소에 이벤트를 추가한다.
*
* {@link TemplateCellRenderer} 의 설명을 참고
*/
templateEvents?: HeaderTemplateEvent | HeaderTemplateEvent[];
}
/**
* @public
* 그룹 레이아웃 정보 모델
*
* @remarks
* 실제 컬럼이 아닌 화면 상에서 보이는 컬럼 묶음이다.
*
* {@link CellLayoutItem} 을 상속한다.
*
* [상위 클래스]
*
* {@link CellLayoutItem}
*
* @example
* ```js
* {
* name: "companyGroup",
* items: [
* {
* column: "Country",
* cellSpan: 3
* },
* 20,20,
* {
* column: "CompanyName",
* cellSpan: 3
* },
* 20,20,
* ],
* header: true
* },
* ```
*/
export declare interface CellLayoutGroupItem extends CellLayoutItem {
/**
* 셀 배치 방향
*/
direction?: ColumnLayoutDirection;
/**
* 너비 조정 가능 여부
*/
resizable?: boolean;
/**
* 이동 가능 여부
*/
movable?: boolean;
/**
* 하위 레이아웃의 헤더 숨김 여부
*/
hideChildHeaders?: boolean;
/**
* 하위 레이아웃의 이동여부
*/
childColumnMovable?: boolean;
/**
* 하위 레이아웃 아이템들
*
* @remarks
* 문자열 형태로 입력 시 해당 값을 {@link CellLayoutColumnItem.column | column} 으로 설정한 {@link CellLayoutColumnItem} 을 생성한다.
*
* 숫자 형태로 입력시 해당 값을 {@link CellLayoutItem.width | width} 로 설정한 {@link CellLayoutColumnItem} 을 생성한다.
*/
items?: (LayoutItem | number | string)[];
/**
* 헤더의 레이아웃 설정 정보
*
* @remarks
* `string` 또는 `boolean` 으로 {@link CellLayoutHeader.text | text} 또는 {@link CellLayoutHeader.visible | visible} 속성에 부여 가능하다.
*
* @example
*
* ```js
* ...
* header: {
* text: 'group1',
* visible: true
* },
* ...
*
* ...
* header: false,
* ...
*
* ...
* header: 'group3',
* ...
* ```
*/
header?: CellLayoutGroupHeader | string | boolean;
/**
* 하위 레이아웃확장 여부
*
* @remarks
*
* 하위 레이아웃을 접거나 펼쳐서 일부 레이아웃만 보이도록 한다.
*
* @defaultValue `false`
*
* @example
*
* ```js
* var layout = [ {
* name: "group0",
* expandable: true,
* expanded: true,
* header:{text:"2018년도"}
* items:[{column: "합계", groupShowMode: "always"},
* {column: "1분기", groupShowMode: "expand"},
* {column: "2분기", groupShowMode: "expand"},
* {column: "3분기", groupShowMode: "expand"},
* {column: "4분기", groupShowMode: "expand"}
* ]
* }, { ....
* }, { ....
* }]
* ```
*/
expandable?: boolean;
/**
* 레이아웃 확장 상태
*
* @remarks
* 레이아웃의 확장상태 `true`이면 하위 레이아웃중 {@link CellLayoutItem.groupShowMode}가 `expand`이거나 `always`인 레이아웃만 표시된다.
* `false`이면 `collapse`이거나 `always`인 레이아웃이 표시된다.
*/
expanded?: boolean;
/**
* {@link CellLayoutGroupItem.hideChildHeaders}가 `true`일때 그룹헤더 대신 표시할 컬럼을 지정한다.
*/
tiedColumn?: string;
/**
* 하위 layout또는 컬럼을 추가한다.
*
* @remarks
* 그리드에 layout이 설정되어있지 않으면 사용할수 없다 {@link GridBase.setColumnLayout}을 이용해서 layout을 설정후 사용한다.
* 그리드의 root에 추가하기 위해서는 {@link GridBase.addLayout}을 사용한다.
*
* @param source - 컬럼명 또는 추가될 layout의 설정
* @param index - 삽입될 위치 생략하면 마지막에 추가된다.
*
* @example
* ```js
* const layout = gridView.layoutByName("group0");
* layout.addLayout("column");
* ```
*/
addLayout?(source: ConfigObject | string, index?: number): CellLayoutItem;
/**
* 하위 layout을 제거한다.
*
* @remarks
* 그리드에 layout이 설정되어있지 않으면 사용할수 없다.
* 그리드 root의 layout을 제거하기 위해서는 {@link GridBase.removeLayout}을 사용한다.
*
* @param layout - 제거할 layout의 이름 또는 layout객체
*/
removeLayout?(layout: LayoutItem | string): void;
}
/**
* @public
* 셀 레이아웃 헤더의 설정 정보 모델
*
* @remarks
* `string` 으로 부여시 `text` 에 설정된다.
*
* `boolean` 으로 부여시 `visible` 에 설정된다.
*
* 따로 `text` 가 설정되지 않은 경우 컬럼 명이 텍스트로 지정된다.
*
* @example
* ```js
* {
* text: 'group1',
* visible: true
* }
* ```
*/
export declare interface CellLayoutHeader {
/**
* 레이아웃 설정 시 보여질 헤더의 텍스트
*/
text?: string;
/**
* 레이아웃 설정 시 적용될 스타일 클래스 명
*/
styleName?: string;
/**
* excel로 export시 적용될 스타일 클래스 명
*/
exportStyleName?: string;
/**
* 표시 여부
*
* @remarks
* 그룹 헤더일 때만 적용 가능
*/
visible?: boolean;
/**
* header 셀의 row count
*
* @remarks
* 여러 level의 그룹이 혼재되어있을때 header의 높이를 일치시키기 위해서 사용한다.
*
* 그룹 헤더일 때만 적용 가능
*
* @example
* ```js
* var layout = [{
* name:"group0",
* items:[
* { name:"group0-1", items:["col1", "col2", "col3"] },
* { name:"group0-2", items:["col4", "col5", "col6"] }]
* }, {
* name: "group1",
* header: {text:"group1", rows:2},
* items: ["col7", "col8"]
* }]
* ```
*/
rows?: number;
/**
* 툴팁 표시 여부
*
* @remarks
*
* @defaultValue `undefined`
*/
showTooltip?: boolean;
/**
* ellipsis상태인 셀의 툴팁 표시여부
*
* @defaultValue `undefined`
*/
tooltipEllipsisOnly?: boolean;
}
/**
* @public
* 레이아웃을 설정하기 위한 기반 모델
*
* @remarks
* 하위 모델을 이용하여 {@link GridBase.setColumnLayout} 으로 설정 시, 특정 속성만 사용 가능하다.
*
* [하위 클래스]
*
* {@link CellLayoutColumnItem}
*
* {@link CellLayoutGroupItem}
*
* @warning CellLayoutItem 으로 직접 설정할 수 없다.
*/
export declare interface CellLayoutItem {
/**
* layout의 type을 지정한다.
*
* @remarks
* {@link CellLayoutType} 참조
*/
type?: CellLayoutType;
/**
* 레이아웃 명
*
* @remarks
* {@link GridBase.setColumnLayout} 로 설정 할 수 있다.
*/
name?: string;
/**
* 표시 여부
*
* @remarks
* {@link GridBase.setColumnLayout} 로 설정 할 수 있다.
*/
visible?: boolean;
/**
* 너비
*
* @remarks
* {@link GridBase.setColumnLayout} 로 설정 할 수 있다.
*/
width?: number;
/**
* 셀 너비
*
*/
cellWidth?: number;
/**
* {@link GridFitStyle.FILL} 로 설정된 후 사용하는 너비 비율
*/
fillWidth?: number;
/**
* 전체 그룹 혹은 상위 그룹 내에서의 표시 순서
*
* @readonly
*/
vindex?: number;
/**
* 상위 레이아웃의 expanded상태에서 따라서 표시하거나 숨긴다.
*
* @defaultValue {@link GroupShowMode.ALWAYS | always}
*/
groupShowMode?: GroupShowMode;
}
/**
* @public
* layout의 type을 지정한다.
*
* @remarks
* {@link GridBase.addLayout} 또는 {@link CellLayoutGroupItem.addLayout} 을 이용해서 Layout을 추가할때 layout의 type을 지정한다.
*/
export declare enum CellLayoutType {
/**
* groupLayout을 추가할때 사용한다.
* @remarks
* `type`이 `group`이거나 `items`가 배열로 설정되면 groupLayout이다.
*/
GROUP = "group",
/**
* 컬럼과 연결된 layout을 생성한다.
*/
COLUMN = "column",
}
/**
* 셀에 대한 메모 정보 모델
*
* @remarks
* 각 셀의 메모에 표시할 내용을 정의
*/
export declare interface CellMemo {
/**
* 메모에 작성자를 설정
* 설정하지 않을 경우, {@link ExportMemo.author}가 적용된다.
*/
author?: string;
/**
* 메모에 작성될 작성자 표시 유무
* 설정하지 않을 경우, {@link ExportMemo.authorVisible}가 적용된다.
*/
authorVisible?: boolean;
/**
* 메모에 작성될 메시지
*/
message: string;
/**
* 메모에 표시될 글씨 크기 (단위: pt)
*
* @defaultValue 10
*/
fontSize?: number;
/**
* 엑셀에 표시될 메모의 minWidth 설정 (단위: px)
*
* @defaultValue 128
*/
minWidth?: number;
/**
* 엑셀에 표시될 메모의 maxWidth 설정 (단위: px)
*
* @defaultValue 400
*/
maxWidth?: number;
}
/**
* @public
*
* 셀 잠금 또는 셀 숨김을 설정한다.
*
* @remarks
* DataCell영역에만 적용되고 그외 영역은 적용할수 없다.
* {@link DataColumn.cellProtectProps} 또는 {@link ColumnStyleObject.cellProtectProps}에서 사용한다.
* {@link GridExportOptions.sheetProtect}을 이용해서 시트 보호를 설정해야 적용된다.
*/
export declare interface CellProtectProperties {
/**
* 잠금
*
* @remarks
* 엑셀 셀의 기본 설정은 잠금이다. 입력가능한 컬럼 또는 셀만 `locked`를 `'0'`으로 설정한다.
*/
locked?: string;
/**
* 수식 숨기기
*
* @remarks
* 셀의 수식을 숨기기 위해서는 `hidden`을 `'1'`로 설정한다.
*/
hidden?: string;
}
/**
* @public
*
* 셀 렌더러들의 기반 모델
*
* @remarks
* 데이터 셀들의 값을 그리드에 표시하기 위한 장치이다.
*
* CellRenderer 의 모든 프로퍼티는 이를 상속한 클래스에서만 호출 / 설정할 수 있다. 아래 목록을 참조할 것.
*
* 이전 버전의 셀 렌더러는 기본적으로 컬럼에서 생성되는 스타일 정보를 이용해서 렌더링하지만, 2.0 부터는 css style class 로 적용된다.
*
* 각각의 {@link ValueColumn.renderer | 컬럼}에 셀렌더러의 종류와 속성들을 지정한다.
*
* 셀 렌더러 별로 지정할 수 있는 속성이 있으며, DataColumn 에 지정하지 않을 시 {@link TextCellRenderer} 가 기본으로 설정된다.
*
* 또, 오브젝트 형태일 때 `type` 속성을 {@link ValueColumn.renderer | column.renderer} 에 문자열 형태로 지정 가능하다.
*
* [목록]
*
* {@link TextCellRenderer}: 기본 텍스트 렌더러
*
* {@link BarCellRenderer}: 바 렌더러
*
* {@link ImageCellRenderer}: 이미지 렌더러
*
* {@link IconCellRenderer}: 아이콘 렌더러
*
* {@link CheckCellRenderer}: 체크 셀 렌더러
*
* {@link ButtonCellRenderer}: 버튼 렌더러
*
* {@link ShapeCellRenderer}: 도형 렌더러
*
* {@link LinkCellRenderer}: 링크 셀 렌더러
*
* {@link SignalBarCellRenderer}: 시그널 바 렌더러
*
* {@link Code39CellRenderer}: 바코드 렌더러
*
* {@link Code128CellRenderer}: 바코드 렌더러
*
* {@link SeriesTextCellRenderer}: 시리즈 텍스트 렌더러
*
* {@link SparkLineRenderer}: 시리즈 스파크 라인 렌더러
*
* {@link SparkColumnRenderer}: 시리즈 컬럼 렌더러
*
* {@link SparkWinLossRenderer}: 시리즈 윈 로스 렌더러
*
* {@link TemplateCellRenderer}: 템플릿 렌더러
*
* @warning CellRenderer 로 직접 설정하거나 호출할 수 없다.
*
* @example
* ```js
* // string type
* column.renderer = "text"
*
* // object type
* column.renderer = { type: "text", showTooltip: true}
* ```
*/
export declare interface CellRenderer {
/**
* 렌더러의 종류
*
* @remarks
* {@link TextCellRenderer}: `'text'`
*
* {@link BarCellRenderer}: `'bar'`
*
* {@link ImageCellRenderer}: `'image'`
*
* {@link IconCellRenderer}: `'icon'`
*
* {@link CheckCellRenderer}: `'check'`
*
* {@link ButtonCellRenderer}: `'button'`
*
* {@link ShapeCellRenderer}: `'shape'`
*
* {@link LinkCellRenderer}: `'link'`
*
* {@link SignalBarCellRenderer}: `'signalbar'`
*
* {@link Code39CellRenderer}: `'code39'`
*
* {@link Code128CellRenderer}: `'code128'`
*
* {@link SeriesTextCellRenderer}: `'series'`
*
* {@link SparkLineRenderer}: `'sparkline'`
*
* {@link SparkColumnRenderer}: `'sparkcolumn'`
*
* {@link SparkWinLossRenderer}: `'sparkswinloss'`
*
* {@link TemplateCellRenderer}: `'template'`
*/
type?: string;
/**
* 툴팁 표시 여부
*/
showTooltip?: boolean;
/**
* ellipsis상태인 셀에서만 툴팁 표시 여부
*/
tooltipEllipsisOnly?: boolean;
/**
* aria-label을 직접 설정할경우 사용하는 콜백
*
*
* @remarks
* 스크린 리더가 셀의 정보를 읽을때 사용할 문자열을 설정한다.
*
* {@link GetAriaLabelCallback} 의 형식을 따른다.
*
* [프로퍼티 목록]
*
* `grid` - GridBase 컨트롤
*
* `model` - 그리드의 셀
*
* @eventProperty
* @example
* ```js
* const f = function(grid, model) {
* var s = model.value;
* var date = grid.getValue(model.item.index, "date")
* s += (date.getTime() > Date.now() - 60*60*24*7*1000) ? " 신규" : "";
* return s;
* }
*
* column.renderer = {
* type: 'text',
* ariaLabelCallback: f
* }
* ```
*/
ariaLabelCallback?: GetAriaLabelCallback;
/**
* `true`이면 focus된 셀 또는 focus가 이동할수 있는 셀인 경우에만 click이벤트가 발생하도록 한다.
*
* @remarks
* {@link GridBase.onCurrentChanging} 이벤트에서 false를 return하는 경우 check, link등의 기본동작이 실행되는것을 방지하기위해 사용.
*
* @defaultValue `true`
*/
clickOnlyFocusedCell?: boolean;
}
/**
* @public
* 사용자 지정의 cell spanning을 설정하기 위한 콜백
*
* @remarks
* {@link CellLayoutColumnItem} 에서 사용된다.
*
* [매개변수 목록]
* `grid` - GridBase 컨트롤
*
* `layout` - 레이아웃 아이템
*
* `itemIndex` - 행의 인덱스
*
* @example
* ```js
* const f = function (grid, layout, itemIndex) {
* var value = grid.getValue(itemIndex, layout.column.dataIndex);
* if (value) {
* return value[0] === "B" ? 3 : value[0] === "F" ? 2 : 1;
* }
* return 1;
* };
* ```
*/
export declare type CellSpanCallback = (grid: GridBase, layout: CellLayoutColumnItem, itemIndex: number) => number;
/**
* @public
* 동적 셀 스타일 변경을 위한 콜백
*
* @remarks
* {@link ColumnStyleObject} 를 반환 할 때는 {@link GridBase.setCellStyleCallback}, {@link ValueColumn.styleCallback} 에서 사용한다.
*
* {@link ColumnSummaryStyleObject} 를 반환 할 때는 {@link GridFooter.cellStyleCallback}, {@link HeaderSummary.cellStyleCallback} 에서 사용한다.
*
* 문자열 반환 시 스타일 명으로 지정
*
* [매개변수 목록]
*
* `grid` - GridBase 컨트롤
*
* `model` - 그리드의 셀
*
* [반환값] - 동적 스타일을 부여하기 위한 오브젝트 혹은 스타일 클래스 명
*
* @example
* ```js
* const f1 = function(grid, model) {
* if (model.value > 5) return "rg-data-cell bold-cell";
* if (model.value < 0 && model.value > -10) {
* return {
* styleName: 'custom-negative-cell',
* renderer: {
* type: 'bar',
* absoluteValue: true
* }
* }
* }
* }
*
* const f2 = function(grid, model) {
* if (model.value > 10) {
* return {
* styleName: 'custom-summary-cell'
* }
* }
* }
*
* // 전체 데이터 셀에 적용
* gridView.setCellStyleCallback(f1);
*
* // 컬럼 별 적용
* let column = gridView.columnByName('Price');
* column.styleCallback = f1;
*
* // 푸터 적용
* gridView.footer.cellStyleCallback = f2;
*
* // header summary 적용
* gridView.headerSummary.cellStyleCallback = f2;
* ```
*/
export declare type CellStyleCallback = (grid: GridBase, model: GridCell) => string | ColumnStyleObject | ColumnSummaryStyleObject | undefined;
/**
* {@link CheckBar} 에서 체크 가능 여부를 결정하는 콜백
*
* @remarks
*
* [매개변수 목록]
*
* `dataSource` - DataProvider 컨트롤
*
* `item` - 체크의 대상이 되는 아이템 (행 아이템, 헤더 아이템 등)
*
* [반환값] - 체크 가능 여부
*
* @example
* ```js
* const f = function(dataSource, item) {
* if (item.value) {
* return item.value !== 'doNotCheck';
* }
* else {
* return false;
* }
* }
* ```
*/
export declare type CheckableCallback = (dataSource: any, item: any) => boolean;
/**
* 체크바와 관련된 설정 모델
*
* @remarks
* 체크바 영역에서 shift를 누른 상태에서 이전의 행이나 이후의 행을 클릭하면 일괄체크
*
* {@link GridBase.setCheckBar} 사용시 필요한 정보만 입력하면 된다.
*
* @example
*
* ```js
* gridView.setCheckBar({exclusive: true});
* ```
*/
export declare interface CheckBar {
/**
* 너비
*
* @defaultValue `20`
*/
width?: number;
/**
* 한 행만 체크 가능한지의 여부
*
* @defaultValue `false`
*/
exclusive?: boolean;
/**
* exclusive가 `true`일때 radio의 check상태가 전환된다.
*
* @defaultValue `false`
*/
toggleRadio?: boolean;
/**
* 체크바 헤드에 “v” 표시 여부
*
* @remarks
* 표시 후 체크 시 전체 체크
*
* @defaultValue `true`
*/
showAll?: boolean;
/**
* 행 그룹핑시 그룹 헤더 영역에 체크박스 표시 여부
*
* @defaultValue `true`
*/
showGroup?: boolean;
/**
* 행 그룹핑시 그룹 푸터 영역에 체크박스 표시 여부
*
* @remarks
* {@link CheckBar.showGroup}이 `false`인 경우에는 값이 `true`여도 표시되지 않는다.
*
* @defaultValue `true`
*/
showGroupFooter?: boolean;
/**
* 체크바 헤드를 체크하여 전체선택 시 보이는 행만 체크할 것인지의 여부
*
* @defaultValue `true`
*/
visibleOnly?: boolean;
/**
* 체크 가능한 행만 체크할 수 있는지의 여부
*
* @remarks
* checkableExpression 에서 체크 가능 여부를 지정할 수 있다.
*
* @defaultValue `true`
*/
checkableOnly?: boolean;
/**
* 체크 가능 여부의 수식
*/
checkableExpression?: string;
/**
* 체크 가능 여부를 결정하는 콜백
* @eventProperty
*
* @remarks
* `false` 반환 시 체크가 불가능하다.
*
* @example
* ```js
* const f = function(dataSource, item) {
* if (item.value) {
* return item.value !== 'doNotCheck';
* }
* else {
* return false;
* }
* }
*
* gridView.setCheckBar({checkableCallback: f});
* ```
*/
checkableCallback?: CheckableCallback;
/**
* 데이터 영역의 전체 item 체크 상태와 체크바의 헤드 연동 여부
*
* @remarks
* 데이터행의 모든 item이 체크되면 Head영역에도 자동으로 체크가 됨
*
* @defaultValue `false`
*/
syncHeadCheck?: boolean;
/**
* 일부만 체크되었을때 head영역의 checkBox에 일부선택 표시여부
*
* @defaultValue `false`
*/
headThreeStates?: boolean;
/**
* checkBox의 위치를 지정한다.
*
* @remarks
* headText가 표시될때 checkBox의 위치를 지정한다. checkBar의 너비 또는 {@link GridHeader.height} 높이를 적절히 변경해야 한다.
*
* @defaultValue `top`
*/
checkLocation?: ColumnHeaderItemLocation;
/**
* checkBox와 headText의 간격을 지정한다.
*
* @defaultValue `5`
*/
itemGap?: number;
/**
* checkBar의 체크상태를 dataField와 연결한다.
*
* @defaultValue `null`
*/
fieldName?: string;
/**
* checkBar의 check를 image를 이용해서 표시한다.
*
* @defaultValue `false`
*/
useImages?: boolean;
/**
* 체크바, 상태바, 인디케이터 중에서 보여지는 순서 (인덱스)
*
* @remarks
* 숫자가 작을 수록 왼쪽에 배치된다.
*/
displayOrder?: number;
/**
* head 영역에 표시할 텍스트
*
* @defaultValue `null`
*/
headText?: string;
/**
* foot 영역에 표시할 텍스트
*
* @defaultValue `null`
*/
footText?: string;
/**
* summary 영역에 표시할 텍스트
*
* @defaultValue `null`
*/
sumText?: string;
/**
* 팝업 메뉴
*/
popupMenu?: PopupMenuItem[] | string;
/**
* 표시 여부
*/
visible?: boolean;
/**
* CheckBox 머지 규칙
*
* @remarks
* 지정된 field에서 동일한 값을 가지는 행들의 CheckBox를 묶어서 보여지도록 한다.
*
* @example
* ```js
* gridView.checkBar.mergeRule = "values['fieldName']";
* gridView.checkBar.mergeRule = "values['field1'] + values['field2']";
* ```
*/
mergeRule?: string;
/**
* checkBox를 클릭했을때 클릭된 행으로 focus이동여부
*
* @defaultValue `false`
*/
focusMove?: boolean;
/**
* 셀의 스타일을 지정하기 위한 콜백
*/
cellStyleCallback?: RowBarCellStyleCallback;
/**
* focus 된 행에 해당하는 셀의 스타일 적용여부 여부
*
* @remarks
* `true`면 focus 된 행에 해당하는 셀을 `'rg-checkbar-focus'` 스타일로 표시한다.
*
* @defaultValue `false`
*/
showFocus?: boolean;
/**
* 데이터 선택 영역에 맞춰 관련된 셀들의 스타일 적용 여부
*
* @remarks
* `true`면 데이터 선택 영역에 맞춰 관련된 셀들을 `'rg-checkbar-select'` 스타일로 표시한다.
*
* @defaultValue `false`
*/
showSelection?: boolean;
}
/**
* @public
*
* 값이 참인지 거짓인지를 표시하는 렌더러
*
* @remarks
* 셀의 값을 `true`/`false` 두 가지 상태로 표시하는 렌더러이다.
*
* 컬럼에 연결된 필드의 자료형이 `Boolean`이 아니라면, 렌더러의 `trueValues` 에 지정된 값들을 `true`로, `falseValues` 로 지정된 값들을 `false`로 판단한다.
*
* 자동 높이에서 `TOP_EDGE`, `BOTTOM_EDGE`를 사용할 수 없다.
*
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* // string type
* column.renderer = 'check';
*
* // object type
* column.renderer = {
* "type": "check",
* "trueValues": "France,Germany",
* "falseValues": "Korea,England"
* }
* ```
*/
export declare interface CheckCellRenderer extends CellRenderer {
/**
* 종류: 체크
*/
type?: 'check';
/**
* 렌더링 시 체크 값을 결정하는 콜백
*
* @remarks
* `true` 반환 시 체크 값을 `false`로 간주한다.
*
* 지정하지 않은 경우나, `undefined` 반환 시 체크 값을 `true`로 간주한다.
*
* `false` 반환시 `threeStates` 가 `true` 일 경우 체크값을 `undefined`로, 아닐 경우 `true` 로 간주한다.
*
* `setCheckedCallback` 가 지정되어 있지 않아야 반환값이 체크 값에 영향을 미친다.
*
* {@link GetCheckedCallback} 의 형식을 따른다.
* @eventProperty
*
* @example
* ```js
* const f = function(grid, itemIndex, column, value) {
* if (typeof value === "number") {
* return value % 2 === 1;
* }
* else if (typeof value ==="boolean") {
* return value;
* }
* else {
* return Boolean(v);
* }
* }
*
* column.renderer = {
* "type": "check",
* "getCheckedCallback": f
* }
* ```
*/
getCheckedCallback?: GetCheckedCallback;
/**
* 편집 시 체크 결과 값을 결정하는 콜백
*
* @remarks
* 편집 시 `getCheckedCallback` 보다 우선하여 체크 값을 지정한다.
*
* {@link SetCheckedCallback} 의 형식을 따른다.
*
* @eventProperty
* @example
* ```js
* const f = function(grid, itemIndex, column, oldValue, checked) {
* if (itemIndex % 2 === 0) {
* return checked;
* }
* else {
* return false;
* }
* }
* column.renderer = {
* "type": "check",
* "setCheckedCallback": f
* }
* ```
*/
setCheckedCallback?: SetCheckedCallback;
/**
* boolean 자료형이 아닌 필드에서 `true` 로 간주할 값들
*
* @remarks
* 콤마(,)로 구분하여 입력한다.
*
* @example
* ```js
* column.renderer = {
* "type": "check",
* "trueValues": "France,Germany"
* }
* ```
*/
trueValues?: string;
/**
* boolean 자료형이 아닌 필드에서 `false` 로 간주할 값들
*
* @remarks
* 콤마(,)로 구분하여 입력한다.
*
* @example
* ```js
* column.renderer = {
* "type": "check",
* "falseValues": "Korea,England"
* }
* ```
*/
falseValues?: string;
/**
* boolean 자료형과 `trueValues` 나 `falseValues` 에 속하는 값이 없을 경우 intermediate 상태로 표시 할 것인지의 여부
*
* @remarks
* `threeStates` 가 `true`며, 값이 `trueValues`, `falseValues` 에 포함되지 않는 경우 intermediate 상태로 표시된다.
*
* @defaultValue `false`
*/
strictValue?: boolean;
/**
* intermediate 상태를 포함할 건지의 여부
*
* @remarks
* `strictValue` 와 같이 쓰이거나, 값이 `''`, `undefined`, 또는 `null` 이면 intermediate 상태로 간주한다.
*
* @defaultValue `false`
*/
threeStates?: boolean;
/**
* 스페이스 바로 체크를 가능하게 할 것인지의 여부
*
* @defaultValue `true`
*/
spaceKey?: boolean;
/**
* enterKey로 체크를 가능하게 할 것인지의 여부
*
* @defaultValue `false`
*/
enterKey?: boolean;
/**
* 체크박스의 위치
*
* @defaultValue {@link IconLocation.CENTER}
*/
checkLocation?: IconLocation;
/**
* 체크박스 대신에 이미지를 사용할 것인지의 여부
*
* @remarks
* 각 css 클래스에 이미지를 지정하면 된다.
*
* [css 스타일 명 목록]
*
* 체크 `true` 스타일 명: "rg-check-renderer-checked"
*
* 체크 `false` 스타일 명: "rg-check-renderer-unchecked"
*
* `intermediate` 스타일 명: "rg-check-renderer-intermediate"
*
* @defaultValue `false`
*/
useImages?: boolean;
/**
* 체크 표시랑 별개로 편집기로 수정 가능한지의 여부
*
* @defaultValue `true`
*/
editable?: boolean;
/**
* 선택 시 표시되는 내부 focus 표시 여부
*
* @defaultValue `false`
*/
showInnerFocus?: boolean;
/**
* editable이 false인 경우 disabled로 표시할지 여부
*
* @defaultValue `false`
*/
readOnlySetDisabled?: boolean;
}
/**
* @public
*
* 클릭한 아이템의 정보 모델
*
* @remarks
* {@link GridBase.onMenuItemClicked} 이나 {@link GridBase.onCellClicked} 등 클릭 관련 콜백에서 사용하는 아이템의 정보 모델이다.
*
* @example
* ```js
* gridView.onMenuItemClicked = function (grid, item, clickData) {
* console.log(item.label + "was clicked.");
* console.log("cellType is: " + clickData.cellType);
* };
* ```
*/
export declare interface ClickData {
/**
* 클릭한 셀의 종류
*/
cellType?: GridCellType;
/**
* 클릭한 대상의 서브 타입
*/
subType?: GridCellType;
/**
* 클릭한 대상의 필드
*/
field?: number;
/**
* 클릭한 대상이 위치한 순서
*/
itemIndex?: number;
/**
* 클릭한 셀의 컬럼
*/
column?: string;
/**
* 클릭한 셀의 인덱스
*
* @remarks
* footer, summary 등의 인덱스이다.
*/
index?: number;
/**
* 클릭한 셀의 그룹 레벨
*/
groupLevel?: number;
/**
* 클릭한 셀이 DataCell인 경우 dataRow
*/
dataRow?: number;
/**
* 셀이 DataCell이면서 클릭한 element가 renderer의 item인 경우 renderer의 type
*/
type?: string;
/**
* linkCellRenderer의 A Tag를 클릭했을때 url
*/
url?: string;
/**
* 클릭한 대상의 필드명
*/
fieldName?: string;
/**
* 클릭한 셀의 종류가 data인 경우의 데이터 값
*/
value?: any;
/**
* TemplateCellRenderer의 HtmlElement를 클릭했을때 target
*/
target?: HTMLElement;
/**
* 스크롤바의 수직여부
*
* @remarks
* 세로스크롤바인 경우 `true`이다
*/
vertical?: boolean;
/**
* 스크롤 버튼의 상하 또는 좌우 여부
*
* @remarks
* 오른쪽 또는 아래쪽 버튼인 경우 `true`이다
*/
far?: boolean;
}
/**
* @public
*
* Code128 Barcode를 표시하는 렌더러
*
* @remarks
* 셀의 값으로 Code128 바코드를 생성한다.
*
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* // string type
* column.renderer = 'code128';
*
* // object type
* let column.renderer = {
* "type": "code128",
* "barStyle": "custom-code128-renderer-bar"
* }
* ```
*/
export declare interface Code128CellRenderer extends CellRenderer {
/**
* 종류: code128 바코드
*/
type?: 'code128';
/**
* 바코드의 바 클래스 스타일 명
* @defaultValue `'rg-code128-renderer-bar'`
*/
barStyle?: string;
}
/**
* @public
*
* Code39 Barcode를 표시하는 렌더러
*
* @remarks
* 셀의 값으로 Code39 바코드를 생성한다.
*
* [상위 클래스]
*
* {@link CellRenderer}
*
* @example
* ```js
* // string type
* column.renderer = 'code39';
*
* // object type
* let column.renderer = {
* "type": "code39",
* "barStyle": "custom-code39-renderer-bar"
* }
* ```
*/
export declare interface Code39CellRenderer extends CellRenderer {
/**
* 종류: code39 바코드
*/
type?: 'code39';
/**
* 바코드의 바 클래스 스타일 명
* @defaultValue `'rg-code39-renderer-bar'`
*/
barStyle?: string;
}
/**
* 컬럼 필터링에 관련된 설정 정보
*
* @remarks
* {@link GridBase.onFilteringChanged} 나 {@link GridBase.getColumnFilter} 같은 필터 관련 메소드에서 사용된다.
*
* {@link GridBase.setColumnFilters} 같이 설정을 위한 형식일 때에는, 원하는 정보만 넣으면 된다.
*/
export declare interface ColumnFilter {
/**
* 이름
*/
name: string;
/**
* 표현식
*
* @remarks
* criteria 또는 callback 둘중 하나는 지정되어야 한다.
*/
criteria?: string;
/**
* 필터를 결정하는 콜백
*
* @remarks
* `true`: 필터링 대상일 때, `false`: 필터링 제외 대상일 때
* @eventProperty
*/
callback?: FilterCallback;
/**
* 필터 선택 상자에 표시되는 문자열
*
* @remarks
* `null`이면 `name`이 표시된다.