리포트 테이블
리포트 테이블은 캔버스에 이력 데이터를 표 형태로 표시할 때 사용하는 용도로 사용됩니다.
리포트 테이블은 기존에 개발된 이력 데이터 표시 기능과 다음과 같은 차이점이 있습니다.
- 상태 포인트와 아날로그 포인트를 함께 표에 표시할 수 있습니다.
- 리포트에 표시할 이력 데이터의 속성을 혼합하여 표시할 수 있습니다. 예를 들어 포인트 1의 순시 값과 포인트 2의 변화량 값을 동일한 표에 표시할 수 있습니다.
- 서로 다른 이력 데이터 그룹의 데이터를 함께 표시할 수 있습니다. 예를 들어 이력 데이터 그룹 1과 그룹 2의 데이터를 함께 표시할 수 있습니다.
- 스크립트를 활용해 실제 데이터 값에 연산식을 적용하여 새로운 값을 표시할 수 있습니다.
- 시작과 끝 날짜를 선택해 해당 범위의 데이터를 불러 올수 있습니다.
- 데이터 표시 범위(일, 월, 년)를 지정할 수 있습니다.
아래 그림은 리포트 테이블의 설정화면 예시 입니다. 설정화면을 통해 표에 출력할 데이터 및 데이터 형식 등을 설정 할수 있습니다.
사용자는 리포트 테이블 위젯에서 제공하는 툴바를 이용하여 리포트 조회 및 출력할 수 있으며,
툴바를 사용하지 않을 경우 아래의 함수로 스크립트를 작성하여 원하는 기능을 사용할 수 있습니다.
Method
리포트 테이블에서 제공하는 기능은 아래 표와 같습니다.
리턴 값 |
함 수 |
설 명 |
표에 선택된 항목 변경시 이벤트를 수신 합니다. |
||
date |
리포트 테이블에 표시된 이력 데이터의 날짜를 읽어 옵니다. |
|
loadDateRange( fromDate,toDate ) |
시작일과 마지막 일을 지정해 해당 기간의 데이터를 불러 옵니다. |
|
exportToFile (reportName) |
표에 표시된 데이터를 파일(엑셀, CSV)로 출력 합니다. |
|
replaceText( replaceList ) |
리포트 테이블의 표시 데이터 이름을 변경해 필요에 따라 표에 다른 데이터를 불러올때 사용합니다. |
|
selectRow(row) |
리포트 테이블에서 지정된 행을 선택합니다 |
|
setCurrentLogDate( date ) |
리포트 테이블에 선택한 날짜(Python Date형식)의 데이터를 표시 합니다. |
|
setCurrentLogDateYMD( year,month,day ) |
리포트 테이블에 선택한 날짜의 데이터를 표시 합니다. |
|
setColumnValueConvertor( column, functor ) |
지정한 열에 변환 함수를 등록해 해당열의 값에 연산식을 적용해 새로운 값을 표시합니다. |
|
setDataType( kind ) |
리포트 테이블에 지정한 리포트 형식(시보,일보,월보,연보)의 데이터를 불러 옵니다. 리포트 테이블에 설정된 리포트 종류가 데이터 리포트인 경우에만 동작합니다. |
|
setDisplayDateRange(kind ) |
리포트 테이블의 표시 기간 범위(일별, 월별, 연별, 범위)를 지정합니다. |
|
setDisplayStep(minute) |
데이터의 표시시간 간격을 설정합니다. 예를 들어 30으로 설정한 경우 30분 단위로 데이터가 표에 표시 됩니다. |
|
현재 설정된 날짜기준으로 다음 날짜의 데이터를 불러와 표시 합니다. |
||
현재 설정된 날짜기준으로 이전 날짜의 데이터를 불러와 표시 합니다. |
|
|
리포트 테이블의 선택된 항목 변경시 이벤트를 수신받을때 사용합니다. 이벤트 발생시 핸들러의 이름은 고정되어 있으며 아래 그림과 같이 추가 할수 있습니다. def onCurrentIndexChanged (obj,index) obj : 이벤트가 발생한 리포트 테이블 개체 입니다. index : 현재 선택된 인덱스 입니다. 예)
|
|
|
리포트 테이블에 설정된 날짜를 읽어 옵니다. 리턴값은 Python Date 타입니다. 예)
결과) >>> 2023-06-14 |
주어진 기간의 데이터를 리포트 테이블에 불러 옵니다. 날짜 형식은 Python Date 형식을 사용합니다.
예)
결과) 해당 범위의 데이터를 불러와 테이블에 표시 합니다. |
|
|
리포트 테이블 화면에 표시된 데이터를 파일로 출력 합니다.
예)
결과) 스크립트 실행시 파일 저장 화면이 표시 되며, 저장 버튼 클릭시 파일로 저장 됩니다. |
|
|
replaceText는 리포트 테이블에 설정된 데이터 이름을 변경해 필요에 따라 하나의 리포트 테이블에 각각 다른 데이터를 표시 할때 사용합니다. 아래 그림과 같이 하나의 테이블에 설비#1,설비#2 버튼 클릭시 해당 설비의 데이터를 불러 올 수 있습니다. 예) 설비#1 클릭시 예) 설비#2 클릭시 replaceText를 사용할때는 아래 그림과 같이 실제 데이터를 선택하여 사용하지 않고 나중에 스크립트를 이용해 변경할 이름을 미리 지정합니다. (아래 그림에서는 $1, $2는 나중에 변경할 이름 입니다)
예) '[변경전 문자1:변경후 문자1','변경전 문자2:변경후 문자2'] 예)
|
|
|
리포트 테이블에서 주어진 행을 선택 합니다. 예)
결과) 5번째 열을 선택 합니다. |
|
|
주어진 날짜의 데이터를 불러와 리포트 테이블에 표시 합니다. 보통 날짜 위젯과 함께 사용하여 날짜 위젯에 선택된 날의 데이터를 불러 올때 사용합니다.
예)
|
|
주어진 날짜의 데이터를 불러와 리포트 테이블에 표시 하며 기능은 setCurrentLogDate와 동일 합니다. 다른점은 날짜 입력 형식을 Python Date 대신 년, 월, 일 형식으로 받습니다.
|
|
|
본 함수는 테이블에 데이터를 출력 할때 지정한 열의 데이터 값을 바로 표시하지 않고 변환 하여 표시 할때 사용합니다. 예를 들어 아래 그림과 같이 '배터리 운전상태'의 실제값을 출력하면 숫자 형태로 출력 되지만, 변환 함수를 적용해 숫자 대신 숫자에 해당하는 코드값으로 출력 할수 있습니다. 변환식은 열 단위로 지정할 수 있습니다. <실제값> <변환값>
def 함수명 (rowNo,value)
예)
|
|
|
리포트 테이블에 지정한 리포트 형식(시보,일보,월보,연보)의 데이터를 불러 옵니다.
리포트 테이블에 설정된 리포트 종류가 데이터 리포트인 경우에만 동작합니다. 예)
|
|
|
리포트 테이블에 표시할 데이터 범위를 설정 합니다. 기본적으로 분보, 시보, 일보, 월보, 년보의 표시 범위는 다음과 같습니다. - 분데이터와 시데이터는는 일 단위로 테이블에 표시 합니다. - 일데이터는 월단위로 테이블에 표시 합니다. - 월데이터는 년단위로 테이블에 표시 합니다. - 년데이터는 전체를 테이블에 표시 합니다. setDisplayDateRange를 이용하면 range 인자에 따라 분 데이터를 월별, 년별로 표시할 수 있습니다. range 인자 형식은 다음과 같습니다.
예)
결과) 1년치 데이터가 표에 표시 됩니다. |
|
|
테이블 행에 표시 간격을 지정합니다. 기본적으로 데이터 저장 간격이 15분 데이터인 경우 15분 간격으로 표에 표시 됩니다. 표시 간격을 설정하면 설정한 간격으로 데이터가 표시 됩니다. 예를 들어 60으로 설정시 1시간 단위로 데이터가 표시 됩니다.
예)
결과) 데이터를 1시간 단위로 표시 합니다. |
|
|
현재 리포트 테이블에 설정된 날짜에 다음 날짜의 데이터를 불러 옵니다. 예를 들어 표시 범위가 일 단위 이며 설정된 날짜가 2023-06-01 인 경우 showNextDateReport를 호출시 2023-06-02일의 데이터가 표에 표시 됩니다. 예)
|
|
|
현재 리포트 테이블에 설정된 날의 이전 날짜의 데이터를 불러 옵니다. 예를 들어 표시 범위가 월 단위 이며 설정된 날짜가 2023-06-01 인 경우 showPrevDateReport를 호출시 2023년 5월의 데이터가 표에 표시 됩니다. 예)
|