본문으로 건너뛰기

syn.controls.js 라이브러리

일관된 기능과 디자인을 표현하는 비즈니스 앱 화면을 개발하기 위해 다양한 오픈소스를 활용하여 필요한 기능을 구현하고 고도화된 라이브러리를 syn.controls.js UI 컨트롤 단위로 제공합니다.

https://github.com/handstack77/handstack/blob/master/2.Modules/wwwroot/libman.json

HandStack 에서 기본적으로 제공되는 컨트롤은 UI 컨트롤 주요 사용법에서 확인 할 수 있습니다. 이 컨트롤은 비즈니스 앱 화면을 개발하기 위해 반드시 필요한 기능을 제공합니다. 어떠한 유료/무료 컨트롤을 사용하더라도 비즈니스 앱 화면 개발을 위해 일관된 디자인과 화면에서 서버와의 거래 요청과 응답에 대해 공통적인 기능을 제공하는 것을 목표로 합니다.

오픈소스를 기반으로 제공되는 syn.controls.js 컨트롤의 장점과 단점을 이해하면 도메인 업무에 적절한 비즈니스 컨트롤을 추가 할 수 있습니다.

syn.controls.js 장점과 단점

장점

  • 일관성: 기존 오픈소스에서 제공하는 기능을 그대로 사용 가능합니다. 자주 사용되는 기능을 기본값으로 제공합니다.
  • 유지보수: 오픈소스에 대한 버전 업데이트에 따른 유지보수가 용이합니다.
  • 문서화: 기본적으로 커뮤니티와 문서화가 잘 되어 있는 오픈소스를 기반으로 고도화 합니다
  • 라이선스: 오픈소스 라이선스로 제공되어 무료로 사용할 수 있습니다. 필요에 따라 유료 라이선스를 구매하여 사용 할 수 있습니다.

단점

  • 커스터마이징: 오픈소스를 기반으로 제공되는 컨트롤은 기본적인 기능을 제공하며, 도메인 업무에 따라 커스터마이징이 필요합니다.
  • 버그: 오픈소스에 대한 버그가 있을 수 있으며, 이에 대한 대응이 필요합니다.
  • 라이선스: 오픈소스 라이선스에 따라 사용에 제약이 있을 수 있습니다.
  • 지원: 오픈소스에 대한 지원이 필요한 경우 유료 라이선스를 구매하여야 합니다.

기본 옵션

syn.controls.js 컨트롤은 기본적으로 다음과 같은 옵션을 제공합니다. 다만 모든 컨트롤이 동일한 옵션을 제공하지는 않습니다.

{
dataType: 'string', // string, bool, number, int, date
belongID: null, // '' 또는 ['']
controlText: null,
validators: ['require', 'unique', 'numeric', 'ipaddress', 'email', 'date', 'url'],
transactConfig: null,
triggerConfig: null,
getter: false,
setter: false,
bindingID: '',
resourceKey: '',
localeID: 'ko-KR',
required: false,
tooltip: ''
}

dataType

기본값은 string 입니다. Javascript 언어는 데이터 타입이 없습니다. 그래서 서버에 데이터를 전달할 때 데이터에 대한 유형을 5개로 구분하여 전달하도록 정의합니다. string, bool, number, int, date 중 하나를 지정할 수 있습니다.

belongID

화면에서 서버에 거래를 요청할 때 데이터를 전달할 거래 ID를 지정합니다. 지정된 거래 ID의 요청이 시작될 때 자동으로 데이터를 수집하여 전달합니다. 문자열 또는 문자열 배열값으로 거래 ID를 지정 가능합니다.

controlText

사용자 입장에서 컨트롤을 표현하는 텍스트를 지정합니다.

validators

컨트롤에 대한 유효성 검사를 지정합니다. require, unique, numeric, ipaddress, email, date, url 중 하나 이상을 지정할 수 있습니다.

transactConfig

업무 로직을 작성하지 않고 HTML 문법만으로 서버와의 거래 요청에 대한 설정을 지정합니다. 거래 요청에 대한 설정을 지정하여 컨트롤에 대한 데이터를 서버에 전달합니다.

<button type="button" class="btn btn-default" syn-datafield id="btnRetrieve" syn-options="{
transactConfig: {
triggerEvent: 'click',
functionID: 'GD01',
inputs: [{ type: 'Row', dataFieldID: 'MainForm' },{ type: 'Row', dataFieldID: 'MainForm' }],
outputs: []}
}">
조회
</button>

triggerConfig

업무 로직을 작성하지 않고 HTML 문법만으로 컨트롤에 대한 이벤트 핸들러를 지정합니다. 이벤트에 대한 설정을 지정하여 컨트롤에 대한 반복적인 기능을 실행합니다.

<button type="button" syn-datafield id="btnUIFunction" syn-options="{
triggerConfig: {
triggerEvent:'click',
triggerID: 'txtApplicationID',
action: 'change',
params: {
options:{value: 'btnUIFunction triggerEvent'}
}
}}">
화면 모듈 메서드 호출
</button>

<button type="button" syn-datafield id="btnControlFunction" syn-options="{
triggerConfig: {
triggerEvent:'click',
triggerID: 'txtApplicationID',
action: 'syn.uicontrols.$textbox.setValue',
params: {
options:{value: 'btnControlFunction triggerEvent'}
}
}}">
컨트롤 메서드 호출
</button>

getter

화면에서 서버에 거래를 요청할 때 데이터를 전달할 컨트롤에 대한 데이터를 수집하여 반환하는 커스텀 기능을 지정합니다. true 또는 false 값을 지정할 수 있습니다.

setter

서버에서 화면에 대한 거래 응답을 받을 때 데이터를 컨트롤에 설정하는 커스텀 기능을 지정합니다. true 또는 false 값을 지정할 수 있습니다.

bindingID

syn.uicontrols.$data 컨트롤과 통합하여 메모리의 데이터 소스와 컨트롤 간의 데이터를 연동할 컨트롤에 대한 ID를 지정합니다. 문자열 값을 지정할 수 있습니다.

resourceKey

다국어 지원을 위한 리소스 키를 지정합니다. 문자열 값을 지정할 수 있습니다.

localeID

다국어 지원을 위한 로케일 ID를 지정합니다. 문자열 값을 지정할 수 있습니다.

required

컨트롤에 대한 필수 입력 여부를 지정합니다. true 또는 false 값을 지정할 수 있습니다.

tooltip

컨트롤에 대한 툴팁을 지정합니다. 문자열 값을 지정할 수 있습니다.