Workflow List

Workflow List is a type of drop-down in SpreadJS, which is defined in JavaScript code as a cell style in the workbook. The developer can specify the items of the list and the items that they transition to when the user selects them. Try selecting different items in the Workflow List in the spreadsheet below to see how the options change.

Description
app.vue
index.html
Copy to CodeMine

Drop-downs provide developers 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 Workflow List.

Before opening the Workflow List, you need to set the options data in cell's style. You can use Workflow List drop-down with the following code :

    // The way of click the dropdown icon to open Workflow List. 
   let style = new GC.Spread.Sheets.Style();
       style.cellButtons = [
           {
               imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
               command: "openWorkflowList",
               useButtonStyle: true,
           }
       ];
       style.dropDowns = [
           {
               type: GC.Spread.Sheets.DropDownType.workflowList,
               option: {
                   items: [
                       { value: "New", transitions: [1] },
                       { value: "Open",transitions: [0,2,3,5] },
                       { value: "In Progress", transitions: [1, 3, 5] },
                       { value: "Resolved", transitions: [5, 4] },
                       { value: "Reopened",transitions: [5, 3, 2] },
                       { value: "Closed", transitions: [4] },
                   ]
               }
           }
       ];
       sheet.setText(4, 4, "Workflow List");
       sheet.setStyle(5, 4, style);

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

The option of Workflow List should follow the structure like this :

export interface IWorkFlowOption {
    items: IWorkFlowItem[];
}


export interface IWorkFlowItem {
    value: string;
    transitions: number[]|string[];
}
Drop-downs provide developers 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 Workflow List. Before opening the Workflow List, you need to set the options data in cell's style. You can use Workflow List drop-down with the following code : The option of Workflow List should follow the structure like this :
<template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> </gc-spread-sheets> </div> </template> <script setup> import '@mescius/spread-sheets-vue' import { ref } from "vue"; import GC from "@mescius/spread-sheets"; const spreadRef = ref(null); function initSpread(spread) { spreadRef.value = spread; let sheet = spread.getSheet(0); sheet.suspendPaint(); // -------------------- WorkFlow --------------------- let style = new GC.Spread.Sheets.Style(); style.cellButtons = [{ imageType: GC.Spread.Sheets.ButtonImageType.dropdown, command: "openWorkflowList", useButtonStyle: true, }]; style.dropDowns = [{ type: GC.Spread.Sheets.DropDownType.workflowList, option: { items: [{ value: "New", transitions: [1] }, { value: "Open", transitions: [0, 2, 3, 5] }, { value: "In Progress", transitions: [1, 3, 5] }, { value: "Resolved", transitions: [5, 4] }, { value: "Reopened", transitions: [5, 3, 2] }, { value: "Closed", transitions: [4] }, ] } }]; sheet.setText(4, 4, "Workflow List"); sheet.setStyle(5, 4, style); sheet.resumePaint(); spread.commandManager().execute({ cmd: "openWorkflowList", row: 5, col: 4, sheetName: "Sheet1" }); } </script> <style scoped> .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 http-equiv="X-UA-Compatible" content="IE=edge" /> <title>SpreadJS VUE</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/vue3/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/en/vue3/node_modules/systemjs/dist/system.src.js"></script> <script src="./systemjs.config.js"></script> <script src="./compiler.js" type="module"></script> <script> var System = SystemJS; System.import("./src/app.js"); System.import('$DEMOROOT$/en/lib/vue3/license.js'); </script> </head> <body> <div id="app" style="height: 100%;"></div> </body> </html>
(function (global) { SystemJS.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, packageConfigPaths: [ './node_modules/*/package.json', "./node_modules/@mescius/*/package.json", "./node_modules/@babel/*/package.json", "./node_modules/@vue/*/package.json" ], map: { '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-io': 'npm:@mescius/spread-sheets-io/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js', 'vue': "npm:vue/dist/vue.esm-browser.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", }, meta: { '*.css': { loader: 'systemjs-plugin-css' }, '*.vue': { loader: "../plugin-vue/index.js" } } }); })(this);