MonthPicker

MonthPicker is a type of drop-down cell style in SpreadJS. Using JavaScript code, the developer can define a starting year, ending year, and height of the Month Picker. When set as a style on a cell in the workbook, the user can click on the drop-down arrow to select a month that will be displayed in that cell. An example of this drop-down is shown in the spreadsheet below.

Description
app.vue
index.html
Copy to CodeMine

Drop-downs provide a developer the ability to add a drop-down menu with specific properties to cells in a workbook. These drop-down menus don't require any extra code other than simply specifying which one to use for the drop-down menu.

SpreadJS has 9 different kinds of drop-downs, and this demo shows how to use the Month Picker.

You can use MonthPicker drop-down with the following code :

    // The way of click the dropdown icon to open MonthPicker. 
   var monthPickerStyle = new GC.Spread.Sheets.Style();
       monthPickerStyle.cellButtons = [
           {
               imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
               command: "openMonthPicker",
               useButtonStyle: true,
           }
       ];

       monthPickerStyle.dropDowns = [
           {
               type: GC.Spread.Sheets.DropDownType.monthPicker,
               option: {
                   startYear: 2009,
                   stopYear: 2019,
                   height: 300,
               }
           }
       ];
       sheet.setText(1, 5, "Month Picker");
       sheet.setStyle(2, 5, monthPickerStyle);

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

There are several item in options that can customize the MonthPicker.

  • startYear: number : Specify the month picker's start year, default value is ten year ago.
  • stopYear: number : Specify the month picker's start year, default value is this year.
  • height: number : Specify the DOM's height of month picker, default value is 300.
Drop-downs provide a developer the ability to add a drop-down menu with specific properties to cells in a workbook. These drop-down menus don't require any extra code other than simply specifying which one to use for the drop-down menu. SpreadJS has 9 different kinds of drop-downs, and this demo shows how to use the Month Picker. You can use MonthPicker drop-down with the following code : There are several item in options that can customize the MonthPicker. startYear: number : Specify the month picker's start year, default value is ten year ago. stopYear: number : Specify the month picker's start year, default value is this year. height: number : Specify the DOM's height of month picker, default value is 300.
<template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> </gc-spread-sheets> </div> </template> <script> import Vue from "vue"; import "@mescius/spread-sheets-vue"; import GC from "@mescius/spread-sheets"; let App = Vue.extend({ name: "app", data: function () { return { spread: null }; }, methods: { createMonthPickerStyle(startYear, stopYear, height) { let monthPickerStyle = new GC.Spread.Sheets.Style(); monthPickerStyle.cellButtons = [{ imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openMonthPicker", useButtonStyle: true, }]; monthPickerStyle.dropDowns = [{ type: GC.Spread.Sheets.DropDownType.monthPicker, option: { startYear: startYear, stopYear: stopYear, height: height } }]; return monthPickerStyle; }, initSpread(spread) { let sheet = spread.getSheet(0); sheet.suspendPaint(); sheet.setText(1, 5, "Month Picker"); sheet.setStyle(2, 5, this.createMonthPickerStyle(2009, 2019, 300)); sheet.setText(1, 11, "Month Picker"); sheet.setStyle(2, 11, this.createMonthPickerStyle(1970, 2030, 400)); sheet.resumePaint(); spread.commandManager().execute({ cmd: "openMonthPicker", row: 2, col: 5, sheetName: "Sheet1" }); } } }); new Vue({ render: h => h(App) }).$mount("#app"); </script> <style> .sample-tutorial { position: relative; height: 100%; overflow: hidden; } .sample-spreadsheets { width: 100%; height: 100%; overflow: hidden; float: left; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } </style>
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/vue/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <!-- SystemJS --> <script src="$DEMOROOT$/en/vue/node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app.vue'); System.import('$DEMOROOT$/en/lib/vue/license.js'); </script> </head> <body> <div id="app"></div> </body> </html>
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' }, '*.vue': { loader: 'vue-loader' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js', 'jszip': 'npm:jszip/dist/jszip.js', 'css': 'npm:systemjs-plugin-css/css.js', 'vue': 'npm:vue/dist/vue.min.js', 'vue-loader': 'npm:systemjs-vue-browser/index.js', 'tiny-emitter': 'npm:tiny-emitter/index.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, rxjs: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' } } }); })(this);