TimePicker

TimePicker is a drop-down in SpreadJS that can be defined in JavaScript code with the style properties. This drop-down shows a different selection of times, which the developer specifies in terms of minimum, maximum, and step. This gives developers the ability to add a simple time picker to their workbook, which can be useful for creating user input forms. An example of the two different ways to display the time in the TimePicker are shown in the spreadsheet below.

Description
app.jsx
app-func.jsx
app-class.jsx
index.html
styles.css
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 Time Picker.

You can use the Time Picker drop-down with the following code :

    // The way of click the dropdown icon to open TimePicker.     
    var timePickerStyle = new GC.Spread.Sheets.Style();
    timePickerStyle.cellButtons = [
          {
              imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
              command: "openTimePicker",
              useButtonStyle: true,
          }
      ];
      timePickerStyle.dropDowns = [
          {
              type: GC.Spread.Sheets.DropDownType.timePicker,
              option: {
                  min: { hour: 8 },
                  max: { hour: 19 },
                  step: { minute: 30 },
                  formatString: "h:mm AM/PM",
              }
          }
      ];
      sheet.setText(1, 5, "Time Picker");
      sheet.setStyle(2, 5, timePickerStyle);

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

There are also some option items for customizing the TimePicker:

  • max: ITimePickerValue : The maximum value the time picker can display, the value needs the hour, minute and second attributes.
  • min: ITimePickerValue : The minimum value the time picker can display, the value needs the hour, minute and second attributes.
  • step: ITimePickerValue : The granularity the time picker can step through values.
  • formatString: string : Specify the format of the time item.
  • height: number : Specify the container of the time picker's size.
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 Time Picker. You can use the Time Picker drop-down with the following code : There are also some option items for customizing the TimePicker: max: ITimePickerValue : The maximum value the time picker can display, the value needs the hour, minute and second attributes. min: ITimePickerValue : The minimum value the time picker can display, the value needs the hour, minute and second attributes. step: ITimePickerValue : The granularity the time picker can step through values. formatString: string : Specify the format of the time item. height: number : Specify the container of the time picker's size.
import * as React from 'react'; import * as ReactDOM from 'react-dom'; import './styles.css'; import { AppFunc } from './app-func'; // import { App } from './app-class'; // 1. Functional Component sample ReactDOM.render(<AppFunc />, document.getElementById('app')); // 2. Class Component sample // ReactDOM.render(<App />, document.getElementById('app'));
import * as React from 'react'; import GC from '@mescius/spread-sheets'; import { SpreadSheets } from '@mescius/spread-sheets-react'; export function AppFunc() { const createPickerStyle = (option) => { let timePickerStyle = new GC.Spread.Sheets.Style(); timePickerStyle.cellButtons = [{ imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openTimePicker", useButtonStyle: true, }]; timePickerStyle.dropDowns = [{ type: GC.Spread.Sheets.DropDownType.timePicker, option: option }]; return timePickerStyle; } const initSpread = (spread) => { let sheet = spread.getSheet(0); sheet.suspendPaint(); sheet.setText(1, 3, "Time Picker"); sheet.setStyle(2, 3, createPickerStyle({ min: { hour: 8 }, max: { hour: 19 }, step: { minute: 30 }, formatString: "h:mm AM/PM", })); sheet.setText(1, 7, "Time Picker"); sheet.setStyle(2, 7, createPickerStyle({ min: { hour: 5 }, max: { hour: 20 }, step: { minute: 30 }, formatString: "h:mm:ss", height: 350 })); sheet.resumePaint(); spread.commandManager().execute({ cmd: "openTimePicker", row: 2, col: 3, sheetName: "Sheet1" }); } return (<div class="sample-tutorial"> <div class="sample-spreadsheets"> <SpreadSheets workbookInitialized={initSpread}> </SpreadSheets> </div> </div>); }
import * as React from 'react'; import GC from '@mescius/spread-sheets'; import { SpreadSheets } from '@mescius/spread-sheets-react'; const Component = React.Component; export class App extends Component { constructor(props) { super(props); this.spread = null; this.autoGenerateColumns = false; } render() { return (<div class="sample-tutorial"> <div class="sample-spreadsheets"> <SpreadSheets workbookInitialized={spread => this.initSpread(spread)}> </SpreadSheets> </div> </div>); } createPickerStyle(option) { let timePickerStyle = new GC.Spread.Sheets.Style(); timePickerStyle.cellButtons = [{ imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openTimePicker", useButtonStyle: true, }]; timePickerStyle.dropDowns = [{ type: GC.Spread.Sheets.DropDownType.timePicker, option: option }]; return timePickerStyle; } initSpread(spread) { let sheet = spread.getSheet(0); sheet.suspendPaint(); sheet.setText(1, 3, "Time Picker"); sheet.setStyle(2, 3, this.createPickerStyle({ min: { hour: 8 }, max: { hour: 19 }, step: { minute: 30 }, formatString: "h:mm AM/PM", })); sheet.setText(1, 7, "Time Picker"); sheet.setStyle(2, 7, this.createPickerStyle({ min: { hour: 5 }, max: { hour: 20 }, step: { minute: 30 }, formatString: "h:mm:ss", height: 350 })); sheet.resumePaint(); spread.commandManager().execute({ cmd: "openTimePicker", row: 2, col: 3, sheetName: "Sheet1" }); } }
<!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/react/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <!-- SystemJS --> <script src="$DEMOROOT$/en/react/node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import('$DEMOROOT$/en/lib/react/license.js').then(function () { System.import('./src/app'); }); </script> </head> <body> <div id="app"></div> </body> </html>
.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; } #app { height: 100%; }
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true, react: true }, meta: { '*.css': { loader: 'css' } }, 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-react': 'npm:@mescius/spread-sheets-react/index.js', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js', 'react': 'npm:react/umd/react.production.min.js', 'react-dom': 'npm:react-dom/umd/react-dom.production.min.js', 'css': 'npm:systemjs-plugin-css/css.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: 'jsx' }, "node_modules": { defaultExtension: 'js' }, } }); })(this);