SMART datagrid v.1 >  Concepts
Concepts.Expression Overivew  
準備中...
SMART datagrid Expressionはグリッドでデータを表示し、扱うときに使われる数式である。 値を扱うのに便利な複数の特別な演算子を含んでいるが、 大きいデータセットで使えるように最大限に単純に正義され、具現された。 
特に、既存の言語で関係、比較、論理演算子別優先順位が一つに纏まっているので必要な場合必ず各戸で束ねなければならない。 値を除いた数式ティストは大文字、小文字を区別しない。 
EditValidation.expression, DynamicStyle.expressionなどで使われている。 
1. Syntax Grammer
Expression ::= ComparisonExpression (LogicalOperator ComparisonExpression)*
ComparisonExpression ::= SimpleExpression (ComparisonOperator SimpleExpression | SetOperator ExpressionList)*
ExpressionList ::= "()" | "(" SimpleExpression ("," SimpleExpression)* ")"
SimpleExpression ::= Term *(AddingOperator Term)
Term ::= Factor (MultiplyingOperator Factor)*
Factor ::= "(" Expression ")" | Variable | Constant | Converting Factor | Unary Factor
Constant ::= Unsigned Number | Charactor String | null | empty | defined | nan | true | false
2. Operators
優先順位が高い方から表示する。 同じグループに含まれた演算子達の間には優先順位がない。 強制的に優先順位を与えたければ括弧で束ねる。 集合(Set)演算子と比較(Comparison)演算子は優先順位が同じである。 
Table-1  定数(Constants)
| 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 | 
Table-2  変換(Converting)演算子
| Operator | 説明 | サンプル | 結果 | 
|---|
| str | 文字列に変換 | str 100 | '100' | 
| num | 数字に変換 | num '199' | 199 | 
| int | Integerに変換 | int '199.9' | int | 
| date | Dateに変換 | date '2010-11-11' | javascript Date 客体生成者に渡せる形式の文字列でなければならない。 | 
| bool | Booleanに変換 | bool '1' | true | 
Table-3  単項(Unaray)演算子 
| Operator | 説明 | サンプル | 結果 | 
|---|
| not | 否定 | ! true | false | 
| - | 負数 | -100 | -100 | 
| + | 正数 | +100 | 100 | 
| len | 文字列の長さ | len 'abcd' | 4 | 
Table-4  積(Multiplying)演算子
| Operator | 説明 | サンプル | 結果 | 
|---|
| * | 掛け算 | 11 * 2 | 22 | 
| / | 割り算 | 5 / 2 | 2.5 | 
| div | 整数の割り算 | 5 div 2 | 2 | 
| % (mod) | 残り | 5 % 2, 5 mod 2 | 1 | 
Table-5  合(Adding)演算子
| Operator | 説明 | サンプル | 結果 | 
|---|
| + | 加え算 | 11 + 2 | 13 | 
| - | 引き算 | 5 - 2 | 3 | 
Table-6  比較(Comparison)演算子
| 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 | 
* 集合演算子たちは比較演算子たちと優先順位が同一である。 
Table-7  集合(Set)演算子
| Operator | 説明 | サンプル | 結果 | 
|---|
| in, not in | 含む | 3 in (1, 2 3), value not in ('a', 'b', 'c') 右側のオペランドは必ず括弧('(', ')')で包んで、項目達がコンマ(',')で分離されたリストでなければならない。 | true|false | 
Table-8  論理(Logical)演算子
| Operator | 説明 | サンプル | 結果 | 
|---|
| && | 条件And | true && false | false | 
| || | 条件Or | true || false | true | 
Code -1
    grid.setColumns([{
        fieldName: 'product_id',
        styles: [{
            expression: "valu > 1000",
            styles: {
                background: "#01ff0000",
                ...
            }
        }]
    ], {
        ...
    }]);
Code -2
    column.setValidations([{
        "expression": "value is not empty",
        "level": DataLudi.ValidationLevel.ERROR,
        "message": strings["CommCodeMsg"]
    }]);
- See Also
 - DynamicStyle
 - EditValidation
 - DataColumn.dynamicStyles
 - GridBody.dynamicStyles
 
- Examples
 - カラム動的スタイル
 - 基本動的スタイル
 - セルValidation
 - 行Validation