Employee Attendance Record

The following sample shows how you can use the SpreadJS spreadsheet to create useful templates that track your teams' yearly attendance.

Description
app.vue
index.html
Copy to CodeMine

The example is loading a predefined template using fromJSON.

  1. Record all the employee leaves on the Leave Tracker page or add specific company holidays on the Holiday sheet and see that how the data changes.

  2. Change the Employee - from dropdown below to retrieve data from different employees.

  3. Print the information by clicking the Print button.

The example is loading a predefined template using fromJSON. Record all the employee leaves on the Leave Tracker page or add specific company holidays on the Holiday sheet and see that how the data changes. Change the Employee - from dropdown below to retrieve data from different employees. Print the information by clicking the Print button.
<template> <div class="sample-tutorial"> <gc-spread-sheets hostClass="sample-spreadsheets" @workbookInitialized="initSpread"> <gc-worksheet> <gc-column> </gc-column> </gc-worksheet> </gc-spread-sheets> </div> </template> <script setup> import GC from "@mescius/spread-sheets"; import { ref } from "vue"; import "@mescius/spread-sheets-vue"; import '@mescius/spread-sheets-print'; const spreadRef = ref(null); const initSpread = (spread) => { spreadRef.value = spread; spread.suspendPaint(); spread.fromJSON(data); let sheet = spread.sheets[0]; let printInfo = sheet.printInfo(); printInfo.showBorder(false); printInfo.showGridLine(false); printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide); printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide); let style = new GC.Spread.Sheets.Style(); style.cellButtons = [ { caption:"Print", buttonBackColor: "#FA896B", hoverBackColor: "#CCCCCC", useButtonStyle: true, width:150, height:70, command: (sheet, row, col, option) => { spread.print(0); } } ]; style.foreColor = "white"; style.font = "15pt Calibri"; sheet.setStyle(0, 20, style); spread.resumePaint(); } </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; } #app { height: 100%; } </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$/spread/source/data/attendance-record.js" type="text/javascript"></script> <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"></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: { '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", '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-print': 'npm:@mescius/spread-sheets-print/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js' }, meta: { '*.css': { loader: 'systemjs-plugin-css' }, '*.vue': { loader: "../plugin-vue/index.js" } } }); })(this);