SMART datagrid v1.4 > Concepts
SMART datagrid Expression은 그리드에서 데이터를 표시하고 다루는데 사용되는 수식이다. 값을 다루기에 편리한 몇 가지 특별한 연산자를 포함하고 있지만, 큰 데이터셋에서 사용될 수 있도록 최대한 단순하게 정의되고 구현되었다.
특히, 기존 언어에서 관계, 비교, 논리 연산자 별 우선 순위가 하나로 통합되어 있으므로 필요한 경우 반드시 괄호로 묶어야 한다. 값을 제외한 수식 텍스트는 대소문자를 가리지 않는다.
EditValidation.expression, DynamicStyle.expression 등에서 사용되고 있다.
우선 순위가 높은 것 부터 표시한다. 같은 그룹에 포함된 연산자들 사이에는 우선 순위가 없다. 강제로 우선 순위를 주고 싶으면 괄호로 묶어야 한다. 집합(Set) 연산자와 비교(Comparison) 연산자는 우선 순위가 동일하다.
Operator | 설명 | 예제 |
---|---|---|
null | javascript null. is, is not 피연사자로만 사용. | value is null |
empty | 빈 값. undefined, null, 빈 문자열. is, is not 피연사자로만 사용. | value is empty |
defined | javascript undefiend가 아닌 값. is, is not 피연사자로만 사용. | value is defined |
nan | javascript NaN. is, is not 피연사자로만 사용. | value is nan |
true, false | javascript true, false | value == true |
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
str | 문자열로 변환 | str 100 | '100' |
num | 숫자로 변환 | num '199' | 199 |
int | Integer로 변환 | int '199.9' | int |
date | Date로 변환. 변환된 두 값을 비교할 때 Date.getTime() 값으로 비교한다. | date '2010/11/11' <= local date date('2010-11-11') <= utc date date('2010-11-11T00:00:00+09:00') | javascript Date 객체 생성자로 전달할 수 있는 형식의 문자열이어야 한다. 특히, 시간 값을 포함한 날짜 비교 연산이 모든 브라우저에서 동일하게 동작하게 하려면 반드시 시간존이 포함된 ISO 표준형식을 사용해야 한다. Date.parse 함수 참조. |
bool | Boolean으로 변환 | bool '1' | true |
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
not, ! | 부정 | not true, ! true | false |
- | 음수 | -100 | -100 |
+ | 양수 | +100 | 100 |
len | 문자열 길이 | len 'abcd' | 4 |
rand | 0 이상이고 매개변수 보다 작은 정수형 난수 | rand 100 | 15 |
srand | 매개변수로 지정한 길이 만큼의 Ascill 문자열 | srand 7 | 'xfeDfdG' |
lower | 매개변수로 지정한 문자열을 소문자 문자열로 변경 | lower 'AbcdEf' | 'abcdef' |
upper | 매개변수로 지정한 문자열을 대문자 문자열로 변경 | upper 'AbcdEf' | 'ABCDEF' |
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
* | 곱하기 | 11 * 2 | 22 |
/ | 나누기 | 5 / 2 | 2.5 |
div | 정수 나누기 | 5 div 2 | 2 |
% (mod) | 나머지 | 5 % 2, 5 mod 2 | 1 |
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
+ | 더하기 | 11 + 2 | 13 |
- | 빼기 | 5 - 2 | 3 |
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
==, !=, <, <=, >, >= | 비교 | true|false | |
is | 비교 | value is null, value is empty, value is defined, value is nan | true|false |
is not | 비교 | value is not null, value is not empty, value is not defined, value is not nan | true|false |
match, not match | 정규식 | value match '[^d.-+]' | true|false |
imatch, not imatch | 대소문자 구분 없는 정규식 | value match '[^d.-+]' | true|false |
like, not like | 텍스트 비교 | value like '%abc%', value not like '%abc', value like 'abc% | true|false |
ilike, not ilike | 대소문자 구분없는 텍스트 비교 | value ilike '%abc%', value not ilike '%abc', value ilike 'abc% | true|false |
* 집합 연산자들은 비교 연산자들과 우선 순위가 동일하다.
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
in, not in | 포함 | 3 in (1, 2 3), value not in ('a', 'b', 'c') 우측 피연산자는 반드시 괄호('(', ')')로 둘러싸이고, 항목들이 콤마(',')로 분리된 리스트이어야 한다. | true|false |
Operator | 설명 | 예제 | 결과 |
---|---|---|---|
&& | 논리곱(And) | true && false | false |
|| | 논리합(Or) | true || false | true |
grid.setColumns([{
fieldName: 'product_id',
styles: [{
expression: "value > 1000",
styles: {
background: "#01ff0000",
...
}
}]
], {
...
}]);
column.setValidations([{
"expression": "value is not empty",
"level": DataLudi.ValidationLevel.ERROR,
"message": strings["CommCodeMsg"]
}]);