테이블 위젯은 테이블 형태의 위젯입니다. 각종 위젯의 속성을 사용하여 다양한 테이블 표현이 가능합니다.
복수의 행과 복수의 칼럼을 구성하여 테이블을 표현할 때 사용
개별 행 헤더와 칼럼을 설정하고 디바이스별로 좌표를 설정하여 사용
멀티칼럼 사용을 선택시 행 헤더와 칼럼 헤더를 설정하는 화면 출력
로우 헤더 설정 및 로우 헤더 넓이(픽셀단위) 설정
로우 합계 사용은 각 행마다 합계를 계산후 개별 칼럼 헤더에 설정된 합계 항목 칼럼으로 자동 출력
개별 행 헤더 설정은 행 헤더의 수 만큼 ','구분자로 하여 설정
개별 칼럼 헤더 설정은 칼럼 헤더 수 만큼 ','구분자로 하여 설정. 각 항목은 ':' 구분자로 하여 앞쪽은 이름뒤쪽은 폭을 설정. 폭의 단위는 픽셀.
만약 "로우 합계 사용"을 설정한 경우 반드시 합계용 칼럼명도 개별 칼럼헤더의 마지막에 정의 해야함.
각 디바이스 별로 '좌표'는 1기준으로 행과 열을 정의. 앞쪽은 행번호이고 뒤쪽은 칼럼 순서. 예를 들어 1,1이면 1행의 1번 칼럼이고 2,2는 두번째 행의 두번째 칼럼을 의미.
행 헤더가 3개이고 칼럼 헤더가 2개이면 선택되어야 하는 디바이스 수량은 6개어야 함. 위의 칼럼헤더 수 2에서 로우 합계용 칼럼은 수량에서 제외된 수량임.
상,하한 값을 설정하여 이상시 지정된 폰트 색상으로 자동 알람 처리
LSL과 USL값을 입력
각각의 상, 하한에 대한 색상 입력
LSL이나 USL을 입력하지 않으면 테이블 상에는 입력한 항목에 대해서만 칼럼이 생성됨
로우 헤더 설정 및 로우 헤더 넓이(픽셀단위) 설정
로우 합계 사용은 각 행마다 합계를 계산후 개별 칼럼 헤더에 설정된 합계 항목 칼럼으로 자동 출력
개별 행 헤더 설정은 행 헤더의 수 만큼 ','구분자로 하여 설정
개별 칼럼 헤더 설정은 칼럼 헤더 수 만큼 ','구분자로 하여 설정. 각 항목은 ':' 구분자로 하여 앞쪽은 이름뒤쪽은 폭을 설정. 폭의 단위는 픽셀.
만약 "로우 합계 사용"을 설정한 경우 반드시 합계용 칼럼명도 개별 칼럼헤더의 마지막에 정의 해야함.
각 디바이스 별로 '좌표'는 1기준으로 행과 열을 정의. 앞쪽은 행번호이고 뒤쪽은 칼럼 순서. 예를 들어 1,1이면 1행의 1번 칼럼이고 2,2는 두번째 행의 두번째 칼럼을 의미.
행 헤더가 3개이고 칼럼 헤더가 2개이면 선택되어야 하는 디바이스 수량은 6개어야 함. 위의 칼럼헤더 수 2에서 로우 합계용 칼럼은 수량에서 제외된 수량임.
Script는 timer함께 사용 할 수 있습니다.
다양한 수식과 복수개의 데이터를 조회하여 계산식에 사용도 가능합니다.
왼쪽에 선택된 디바이스 목록의 데이터를 조회하여 아래와 같이 각각의 조회된 데이터를 가지고 조합하여 devicename과 value속성을 이용해 array에 push하면 자동으로 해당 테이블의 디바이스 명과 일치 시켜 데이터를 테이블로 출력합니다.
var array = [];
var target = {};
var targetCount = 170000;
target.devicename = "S020_TARGET";
target.value = targetCount;
target.textColor = '#ffeb3b';
array.push(target);
var produced= {};
produced.devicename = "S020_PRODUCED_COUNT";
produced.value = $S020_PRODUCED_COUNT.sum$;
array.push(produced);
var value2 = $S022_BAD.count$;
var value3 = $S034_BAD.count$;
var value4 = $S035_BAD.count$;
if(value2 == undefined) {
value2 = 0;
}
if(value3 == undefined) {
value3 = 0;
}
if(value4 == undefined) {
value4 = 0;
}
var bad = {};
bad.devicename = "S021_BAD";
bad.value = $S021_BAD.count$ + value2 + value3 +value4 ;
bad.textColor = '#f50057';
array.push(bad);
var targetRate = {};
targetRate.devicename = "S020_TARGET_RATE";
targetRate.value = (produced.value / targetCount) * 100;
array.push(targetRate);
var operationRate = {};
operationRate.devicename = "S020_STATE";
var ratio = $S020_STATE.timeAvgOfStats$;
if(isNaN(ratio['RUN'])) {
operationRate.value = 0;
} else {
operationRate.value = Number(parseFloat(ratio['RUN']*100).toFixed(2));
}
array.push(operationRate);
return array;.
Realtime Script는 실시간 데이터를 조작할 때 사용한다.
if(data.devicename == 'M01_STATE') {
if(data.value == 'RUN') {
data.value = '실행';
data.textColor = '#374D81';
} else if(data.value == 'IDLE') {
data.value = '대기중';
data.textColor = 'yellow';
} else if(data.value == 'STOP') {
data.value = '중지';
data.textColor = '#FF0000';
}
}
위와 같이 테이블에 선택된 디바이스가 M01_STATE라고 할때 이 데이터의 값에 따라 위와 같이 변형을 할 수 있다.
디바이스의 데이터를 스크립트에서 사용하기 위해서는 반드시 위의 예제처럼 data.value와 같이 data명의 변수를 사용해야 한다.
디바이스별 조건 검사 없이 데이터의 값만 비교하여 변경하는 예제는 아래와 같다
if(data.value == 'RUN') {
data.value = '실행';
data.textColor = '#374D81';
} else if(data.value == 'IDLE') {
data.value = '대기중';
data.textColor = 'yellow';
} else if(data.value == 'STOP') {
data.value = '중지';
data.textColor = '#FF0000';
}
주의: 타이머 사용하기가 반드시 비활성화 되어 있어야 한다.
Realtime Script는 실시간 데이터를 조작할 때 사용한다.
if(data.devicename == 'M01_STATE') {
if(data.value == 'RUN') {
data.value = '실행';
data.textColor = '#374D81';
} else if(data.value == 'IDLE') {
data.value = '대기중';
data.textColor = 'yellow';
} else if(data.value == 'STOP') {
data.value = '중지';
data.textColor = '#FF0000';
}
}
위와 같이 테이블에 선택된 디바이스가 M01_STATE라고 할때 이 데이터의 값에 따라 위와 같이 변형을 할 수 있다.
디바이스의 데이터를 스크립트에서 사용하기 위해서는 반드시 위의 예제처럼 data.value와 같이 data명의 변수를 사용해야 한다.
디바이스별 조건 검사 없이 데이터의 값만 비교하여 변경하는 예제는 아래와 같다
if(data.value == 'RUN') {
data.value = '실행';
data.textColor = '#374D81';
} else if(data.value == 'IDLE') {
data.value = '대기중';
data.textColor = 'yellow';
} else if(data.value == 'STOP') {
data.value = '중지';
data.textColor = '#FF0000';
}
주의: 타이머 사용하기가 반드시 비활성화 되어 있어야 한다.
Excludes 추가 속성
return $M01_ALARM.count[excludes=0,OK]$;
원시데이터 aggregation 사용시 excludes항목은 제외 된다.
현재는 문자열 type만 지원되고 있음.
M01_ALARM디바이스의 수량 조회 시 '0'과 'OK'를 제외한 수량 리턴
Includes 추가 속성
return $M01_ALARM.count[includes=0,OK]$;
원시데이터 aggregation 사용시 includes항목들만 포함된다. Exclude와 Include모두 복수개 대상 변수를 복수개 설정 가능.
현재는 문자열 type만 지원되고 있음.
M01_ALARM디바이스의 수량 조회 시 '0'과 'OK'의 수량만 처리.
Equal, Greater, Less 추가 속성
return $M01_TEMPERATURE.count[equal=22]$;
원시데이터 aggregation 사용시 euqal 항목들만 포함된다.
현재는 숫자형 type만 지원되고 있음.
M01_TEMPERATURE디바이스의 수량 조회 시 값이 22인것만 카운트.
연산자는 equal, greater, less 3가지 제공.
집계 기능은 count, sum 2가지 제공.
return $M01_TEMPERATURE.sum[greater=22]$;
위젯의 속성 변경 시 일부 속성은 변경 후 즉시 반영되지 않고 저장 후 '레이아웃 편집 닫기' 로 대시보드가 리로드(Realod)되어야 적용되는 속성이 있음.