본문 바로가기
Fiori/UI5

[UI5] DatePicker

by clode 2023. 3. 8.
728x90
반응형

datepicker는 기본으로 제공하는 위젯 중 하나이며, 날짜를 다룰 때 UI 형식으로 달력에서 쉽게 날짜를 선택 하도록 도와주는 역할을 한다. datepicker 모듈을 이용하면 많은 기능을 포함한 디자인된 달력을 간단한 코딩으로 만들 수 있다.

달력버튼을 누르면

날짜를 선택할 수 있게 나온다. 선택할 수 있는 범위를 지정해줄수 있다.

날짜를 선택하면 함수를 실행시켜 메세지 토스트를 출력하는것까지 해본다.


App.view.xml

<mvc:View 
    controllerName="control.controller.App" 
    xmlns:html="http://www.w3.org/1999/xhtml" 
    xmlns:mvc="sap.ui.core.mvc" 
    displayBlock="true"
    xmlns="sap.m" 
    xmlns:core="sap.ui.core" >
    <App>
        <pages>
            <Page title="{i18n>title}">
                <content>
                    <DatePicker 
                        value="{/sToday}"  
                        valueFormat = "yyyy-MM-dd"
                        displayFormat="{/dateFormat}" 
                        maxDate="{/maxDate}"  
                        minDate="{/minDate}"
                        change=".onChangeFirstDate" />
                                <DatePicker 
                        dateValue="{/oToday}"
                        displayFormat="yyyy-MM"/> 
                    <DateRangeSelection 
                        dateValue="{/oToday}"
                        secondDateValue="{/oToday2}"/>
                </content>
            </Page>
        </pages>
    </App>
</mvc:View>                            

value로 default값을 설정한다. 이때 value는 데이터의 타입이 string이어야 하고,
dateValue는 데이터 타입이 date여야 한다.

valueFormat은 날짜의 순서를 지정한다. 데이터를 가져올때 일월년으로 가져오기 때문에 년-월-일로 보여주기 위해 yyyy-MM-dd로 설정한다. 그러면 sToday의 문자열 "2020-08-01"이 2020.8.1로 출력된다.
displayFormat은 화면에 표시할 날짜 형식을 지정한다. dateFormat"yyyy-MM-dd" 으로 인해 2020-08-01로 출력된다.
월까지만 표시할땐 "yyyy-MM" 이런식으로 사용해 두번째 DatePicker는 월까지만 표시되고 날짜선택도 월만 선택할수 있다.

maxDate, minDate은 날짜의 선택 범위를 지정한다.

DateRangeSelection는 날짜가 from~ to 범위로 출력되는 모듈이다. 알아서 이전 데이터를 from 데이터로 넣어주고 더 늦은 날짜를 to 데이터로 넣어준다.




App.controller.js

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel",
    "sap/m/MessageToast"
], function(Controller, JSONModel, MessageToast) {
    "use strict";

    return Controller.extend("control.controller.App", {

사용할 기능들을 먼저 셋팅해준다.

    onInit: function() {
        var oData = {
            sToday : "2020-08-01", //value는 string    
            dateFormat : "yyyy-MM-dd",
            maxDate : new Date(),    
            minDate: new Date("2020-07-30"),

                    oToday: new Date("2020-08-01"), //dateValue는 date
                 oToday2 : new Date("2020-08-30")
        };
    var oModel = new JSONModel(oData);
    this.getView().setModel(oModel);
    },

sToday value에 오는 데이터 타입은 string이어야 한다. 그래서 따옴표 안에 입력한다.
maxDate에서 Date()의 괄호에 아무것도 넣지 않으면 오늘날짜 이후로는 선택하지 못하고 이전날짜만 선택할 수 있게 한다.

⭐ 이후 새로 생성한 자바스크립트 객체를 모델에 바인딩하고 그 모델을 뷰에 바인딩한다.

    onChangeFirstDate : function (oEvent) { 
        // MessageToast.show(oEvent.getSource().getValue());
         MessageToast.show(oEvent.getSource().getMaxDate());
    }
    });
});

이벤트 객체를 통해서도 데이터 가져올 수 있다. oEvent의 getValue 프로포티를 사용하면 사용자가 클릭한 데이터를 가져와 메세지 토스트로 뿌려준다.
앞에서 오늘날짜 이후로는 선택하지 못하게 설정했기 때문에 오늘날짜가 max 날짜가 된다. 그래서 getMaxDate 프로포티를 사용하면 오늘날짜가 출력된다.

728x90
반응형

'Fiori > UI5' 카테고리의 다른 글

[UI5] 배열을 바인딩하는 모듈(Table)  (0) 2023.03.08
[UI5] 배열을 바인딩하는 모듈(Select, ComboBox)  (0) 2023.03.08
[UI5] Routing (+뒤로가기버튼)  (0) 2023.03.08
[UI5] Filtering  (0) 2023.03.08
[UI5] Formatters  (0) 2023.03.08

댓글