데이터셋 데이터에 대해서 다중 정렬을 처리하는 API이다.
Parameters | Type | Description |
---|---|---|
strSortOption | STRING | 정렬옵션 |
strCallback | STRING | [옵션] 정렬 완료 콜백 함수 이름 |
nStartRow | long | [옵션] 정렬 범위 시작 행 인덱스 |
nEndRow | long | [옵션] 정렬 범위 시작 행 인덱스 |
Type | Description |
---|---|
BOOL | 정상 처리 여부 |
strSortOption 파라미터 형식은 아래와 같다. - 컬럼 정렬 정보 구분자 : "," - 단위 컬럼 정렬 정보 형식 : 컬럼인덱스:정령방식:데이터형식:정렬함수이름 - 정렬방식: ASC(오름차순)/DESC(내림차순) - 데이터형식: 0(숫자)/1(문자) - 정렬함수이름: 사용자 정의 정렬 처리 함수 이름을 지정한다. (함수 형식은 샘플 소스를 참조한다.) 예) "0:ASC:0:,1:DESC:2:" -> 0번째컬럼은 숫자형으로 오름차순 정렬, 1번째 컬럼은 문자형으로 내림차순 정렬
nStartRow 파라미터 값이 -1, 유효하지 않은 값, 값 미정시 데이터셋 첫번째 행으로 처리된다.
nEndRow 파라미터 값이 -1, 유효하지 않은 값, 값 미정시 데이터셋 마지막 행으로 처리된다.
function btn_on_mouseup()
{
// 사용자 정의 정렬 함수 미지정
DS_DATA.multisort("0:ASC:0:,1:DESC:1:");
// 사용자 정의 정렬 함수 지정
DS_DATA.multisort("0:ASC:0:,1:DESC:1:XDatasetSortFunc");
// 컬럼 이름을 기준으로 정렬
DS_DATA.multisortbyname("COL_NUM:ASC:1:,COL_ENG:DESC:1:XDatasetSortFunc");
// 정렬 완료 콜백 함수 지정
DS_DATA.multisortbyname("COL_NUM:ASC:1:,COL_ENG:DESC:1:XDatasetSortFunc", "XDatasetSortCallback");
// 정렬 범위 지정
DS_DATA.multisortbyname("COL_NUM:ASC:1:,COL_ENG:DESC:1:XDatasetSortFunc", "XDatasetSortCallback", 0, 10);
}
/**
* XDataset multisort API에서 콜백 함수 지정시
* @param objInst XDataset 오브젝트
*/
function XDatasetSortCallback(objInst, nSortStartTime)
{
var objEndDate, nSortEndTime, nElapseSecond;
objEndDate = new Date();
nSortEndTime = objEndDate.getTime();
nElapseSecond = (nSortEndTime - nSortStartTime) / 1000;
factory.consoleprint("XDatasetSortCallback> ID = " + objInst.getid() + ", SortTime = " + nElapseSecond);
}
/**
* 데이터셋 사용자 정의 정렬 함수
* @param objInst XDataset 오브젝트
* @param nColumn 데이터셋 칼럼 인덱스 (Zero-Based)
* @param nSortOrder 정렬 순서 (1(ASC)/2(DESC))
* @param nDataType 데이터 형식 (0(NUMBER)/1(STRING))
* @param strValueA 비교 대상 값 A
* @param strValueB 비교 대상 값 B
* @return 정렬 순서가 1(ASC)인 경우, 아래의 기준에 따름,
0: strValueA와 strValueB 값이 같은 경우,
1: strValueA와 strValueB 보다 값이 큰 경우
-1: strValueA와 strValueB 보다 값이 작은 경우
정렬 순서가 2(DESC)인 경우, 1(ASC)와 반대 값
*/
function XDatasetSortFunc(objInst, nColumn, nSortOrder, nDataType, strValueA, strValueB)
{
var nValue1, nValueB;
factory.consoleprint("XDatasetSortFunc> " + nColumn + ", " + nSortOrder + ", " + nDataType);
factory.consoleprint("XDatasetSortFunc> strValueA = " + strValueA + ", strValueB = " + strValueB);
if (nDataType == 0) {
nValueA = parseFloat(strValueA);
nValueB = parseFloat(strValueB);
if (nSortOrder == 1) { return nValueA - nValueB; }
else if (nSortOrder == 2) { return nValueB - nValueA; }
else { return 0; }
}
else {
if (strValueA == strValueB) { return 0; }
if (nSortOrder == 1) { return strValueA > strValueB ? 1 : -1; }
else if (nSortOrder == 2) { return strValueA > strValueB ? -1 : 1; }
else { return 0; }
}
return 0;
}