날짜/시간 선택

SpreadJS의 드롭다운 중 하나는 날짜/시간 선택기입니다. 개발자는 JavaScript 코드로 이 드롭다운을 정의하여 시간을 표시할 때 연도, 월, 일 또는 날짜 범위를 포함할지 지정할 수 있습니다. 아래 스프레드시트는 통합 문서의 셀에 여러 가지 설정이 적용된 날짜/시간 선택기를 보여줍니다.

설명
app.js
index.html
styles.css

드롭다운은 개발자에게 특정 속성이 있는 드롭다운 메뉴를 통합 문서의 셀에 추가하는 기능을 제공합니다. 이 드롭다운 메뉴는 드롭다운 메뉴에 사용할 코드를 지정하는 것 이외에 추가 코드가 필요하지 않습니다.

SpreadJS에는 9가지 종류의 드롭다운이 있으며, 이 데모에서는 날짜/시간 선택기를 사용하는 방법을 보여줍니다.

다음 코드와 같이 DateTimePicker 드롭다운을 사용할 수 있습니다.

    // The way of click the dropdown icon to open DateTimePicker. 
    var style = new GC.Spread.Sheets.Style();
    style.cellButtons = [
        {
            imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
            command: "openDateTimePicker",
            useButtonStyle: true,
        }
    ];
    style.dropDowns = [
        {
            type: GC.Spread.Sheets.DropDownType.dateTimePicker,
             option: {
                showTime: true,
             }
        }
    ];
    sheet.setStyle(2, 5, style);

    // The way just open DateTimePicker with command rather then clicking the dropdown button.
    spread.commandManager().execute({cmd:"openDateTimePicker",row:2,col:18,sheetName:"Sheet1"});

다음과 같은 옵션이 있습니다.

  • showTime: boolean: 달력에 시간 부분을 표시해야 하는지 여부를 지정합니다.
  • calendarPage: CalendarPage: 기본 페이지를 지정합니다. 값에는 년, 월, 일이 있습니다. 예: calendarPage: GC.Spread.Sheets.CalendarPage.year.
  • startDay: CalendarStartDay: 시작 요일을 지정합니다. 일반적으로 시작 요일은 월요일 또는 일요일입니다. 사용자가 임의 요일을 시작 요일로 설정할 수 있습니다. 예: startDay: GC.Spread.Sheets.CalendarStartDay.monday.
  • showDateRange: boolean: 달력을 날짜 범위 모드로 표시해야 하는지를 지정합니다. 기본값은 false입니다.
  • showBuiltInDateRange: boolean: 달력에 build-in 날짜 범위 패널을 표시해야 하는지를 지정합니다.
  • defaultDateTime: Date | GC.Spread.Sheets.ICalendarDateRange : 기본적으로 선택한 달력의 날짜 및 시간을 지정합니다. showDateRange가 true인 경우 선택된 기본 날짜 범위를 나타냅니다.
  • minDate: Date : 달력에서 선택할 수 있는 최소 날짜를 나타냅니다.
  • maxDate: Date : 달력에서 선택할 수 있는 최대 날짜를 나타냅니다.
드롭다운은 개발자에게 특정 속성이 있는 드롭다운 메뉴를 통합 문서의 셀에 추가하는 기능을 제공합니다. 이 드롭다운 메뉴는 드롭다운 메뉴에 사용할 코드를 지정하는 것 이외에 추가 코드가 필요하지 않습니다. SpreadJS에는 9가지 종류의 드롭다운이 있으며, 이 데모에서는 날짜/시간 선택기를 사용하는 방법을 보여줍니다. 다음 코드와 같이 DateTimePicker 드롭다운을 사용할 수 있습니다. 다음과 같은 옵션이 있습니다. showTime: boolean: 달력에 시간 부분을 표시해야 하는지 여부를 지정합니다. calendarPage: CalendarPage: 기본 페이지를 지정합니다. 값에는 년, 월, 일이 있습니다. 예: calendarPage: GC.Spread.Sheets.CalendarPage.year. startDay: CalendarStartDay: 시작 요일을 지정합니다. 일반적으로 시작 요일은 월요일 또는 일요일입니다. 사용자가 임의 요일을 시작 요일로 설정할 수 있습니다. 예: startDay: GC.Spread.Sheets.CalendarStartDay.monday. showDateRange: boolean: 달력을 날짜 범위 모드로 표시해야 하는지를 지정합니다. 기본값은 false입니다. showBuiltInDateRange: boolean: 달력에 build-in 날짜 범위 패널을 표시해야 하는지를 지정합니다. defaultDateTime: Date | GC.Spread.Sheets.ICalendarDateRange : 기본적으로 선택한 달력의 날짜 및 시간을 지정합니다. showDateRange가 true인 경우 선택된 기본 날짜 범위를 나타냅니다. minDate: Date : 달력에서 선택할 수 있는 최소 날짜를 나타냅니다. maxDate: Date : 달력에서 선택할 수 있는 최대 날짜를 나타냅니다.
var spreadNS = GC.Spread.Sheets; window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss")); initSpread(spread); }; function initSpread(spread) { var sheet = spread.getSheet(0); sheet.suspendPaint(); // -------------------- Date Time Picker : showTime true --------------------- var showTimeStyle = new GC.Spread.Sheets.Style(); showTimeStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; showTimeStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showTime: true } } ]; sheet.setText(1, 3, "Date Time Picker (showTime: true)"); sheet.setColumnWidth(3, 200); sheet.setStyle(2, 3, showTimeStyle); // -------------------- Date Time Picker : showTime False --------------------- let notShowTimestyle = new GC.Spread.Sheets.Style(); notShowTimestyle.formatter = 'm/d/yyyy'; notShowTimestyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; notShowTimestyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showTime: false } } ]; sheet.setText(10, 3, "Date Time Picker (showTime: false)"); sheet.setStyle(11, 3, notShowTimestyle); // -------------------- Date Time Picker : CalendarPage - Year --------------------- let calendarYearStyle = new GC.Spread.Sheets.Style(); calendarYearStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; calendarYearStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showTime: true, calendarPage: GC.Spread.Sheets.CalendarPage.year, } } ]; sheet.setText(10, 6, "Date Time picker (calendarPage - Year)"); sheet.setColumnWidth(6, 200); sheet.setStyle(11, 6, calendarYearStyle); // -------------------- Date Time Picker : CalendarPage - Month --------------------- let calendarMonthStyle = new GC.Spread.Sheets.Style(); calendarMonthStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; calendarMonthStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showTime: true, calendarPage: GC.Spread.Sheets.CalendarPage.month, } } ]; sheet.setText(1, 6, "Date Time picker (calendarPage - Month)"); sheet.setColumnWidth(6, 200); sheet.setStyle(2, 6, calendarMonthStyle); let rangeCalendarStyle = new GC.Spread.Sheets.Style(); rangeCalendarStyle.formatter = '=IF(ISBLANK(@), "", TEXT(@.start, "m/d/yyyy")&"~"&TEXT(@.end, "m/d/yyyy"))'; rangeCalendarStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; rangeCalendarStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showDateRange: true, } } ]; sheet.setText(1, 10, "Date Range picker"); sheet.setColumnWidth(9, 100); sheet.setText(3, 9, "Start Time:"); sheet.setFormula(3, 10, '=IF(ISBLANK(K3), "", TEXT(K3.start, "m/d/yyyy")'); sheet.setText(4, 9, "End Time:"); sheet.setFormula(4, 10, '=IF(ISBLANK(K3), "", TEXT(K3.end, "m/d/yyyy")'); sheet.setColumnWidth(10, 200); sheet.setStyle(2, 10, rangeCalendarStyle); const defaultDateTimeStyle = new GC.Spread.Sheets.Style(); defaultDateTimeStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; defaultDateTimeStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showTime: true, defaultDateTime: new Date('2024/5/6 14:30:00') } } ]; sheet.setText(19, 3, "Date Time Picker (defaultDateTime)"); sheet.setStyle(20, 3, defaultDateTimeStyle); let defaultDateRangeStyle = new GC.Spread.Sheets.Style(); defaultDateRangeStyle.formatter = '=IF(ISBLANK(@), "", TEXT(@.start, "m/d/yyyy")&"~"&TEXT(@.end, "m/d/yyyy"))'; defaultDateRangeStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; defaultDateRangeStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showDateRange: true, defaultDateTime: { start: new Date('2017/9/10'), end: new Date('2021/7/7') } } } ]; sheet.setText(19, 6, "Date Range picker(defaultDateTime)"); sheet.setColumnWidth(5, 100); sheet.setText(21, 5, "Start Time:"); sheet.setFormula(21, 6, '=IF(ISBLANK(G21), "", TEXT(G21.start, "m/d/yyyy")'); sheet.setText(22, 5, "End Time:"); sheet.setFormula(22, 6, '=IF(ISBLANK(G21), "", TEXT(G21.end, "m/d/yyyy")'); sheet.setStyle(20, 6, defaultDateRangeStyle); const defaultDateLimitedStyle = new GC.Spread.Sheets.Style(); defaultDateLimitedStyle.cellButtons = [ { imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openDateTimePicker", useButtonStyle: true, } ]; defaultDateLimitedStyle.dropDowns = [ { type: GC.Spread.Sheets.DropDownType.dateTimePicker, option: { showTime: true, minDate: new Date('2018/5/25'), maxDate: new Date('2027/8/12') } } ]; sheet.setText(10, 10, "Date Time Picker (minDate & maxDate)"); sheet.setStyle(11, 10, defaultDateLimitedStyle); sheet.resumePaint(); spread.commandManager().execute({ cmd: "openDateTimePicker", row: 2, col: 10, sheetName: "Sheet1" }); // spread.commandManager().execute({cmd:"openDateTimePicker",row:2,col:11,sheetName:"Sheet1"}); // spread.commandManager().execute({cmd:"openDateTimePicker",row:21,col:11,sheetName:"Sheet1"}); // spread.commandManager().execute({cmd:"openDateTimePicker",row:21,col:5,sheetName:"Sheet1"}); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="ko-kr"/> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-resources-ko/dist/gc.spread.sheets.resources.ko.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" style="width:100%; height: 100%"></div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }