SMART datagrid v.1 > Concepts

Back  Forward

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説明サンプル
nulljavascript null. is, is not オペランドとしてだけ使用value is null
empty空の値。 undefinednull、空の文字列。isis notのオペランドとしてだけ使う。value is empty
definedjavascript undefiendではない値。isis notのオペランドとしてだけ使う。value is defined
nanjavascript NaN. is, is not オペランドとしてだけ使う。value is nan
true, falsejavascript true, falsevalue == true
Table-2  変換(Converting)演算子
Operator説明サンプル結果
str文字列に変換str 100'100'
num数字に変換num '199'199
intIntegerに変換int '199.9'int
dateDateに変換date '2010-11-11'javascript Date 客体生成者に渡せる形式の文字列でなければならない。
boolBooleanに変換bool '1'true
Table-3  単項(Unaray)演算子
Operator説明サンプル結果
not否定! truefalse
-負数-100-100
+正数+100100
len文字列の長さlen 'abcd'4
Table-4  積(Multiplying)演算子
Operator説明サンプル結果
*掛け算11 * 222
/割り算5 / 22.5
div整数の割り算5 div 22
% (mod)残り5 % 2, 5 mod 21
Table-5  合(Adding)演算子
Operator説明サンプル結果
+加え算11 + 213
-引き算5 - 23
Table-6  比較(Comparison)演算子
Operator説明サンプル結果
==, !=, <, <=, >, >=比較true|false
is比較value is null, value is empty, value is defined, value is nantrue|false
is not比較‘value is not null, value is not empty, value is not defined, value is not nantrue|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説明サンプル結果
&&条件Andtrue && falsefalse
||条件Ortrue || falsetrue
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