Project Management Spreadsheet
A simple example including table scripting to perform a photo update and a progress bar added to any new task.
<html>
<script src="https://jspreadsheet.com/v7/jspreadsheet.js"></script>
<script src="https://jsuites.net/v5/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v7/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v5/jsuites.css" type="text/css" />
<div id="spreadsheet"></div>
<script>
let data1 = [
[ '=B1', '2', 'New products section', '2019-02-12', '80', '=PROGRESS(E1, "darkgreen")' ],
[ '=B2', '2', 'API integration', '2019-03-01', '100', '=PROGRESS(E2, "darkgreen")' ],
[ '=B3', '3', 'Deck', '2018-11-10', '30', '=PROGRESS(E3, "darkgreen")' ],
[ '=B4', '2', 'Prototype', '2019-01-12', '0', '=PROGRESS(E4, "darkgreen")' ],
];
let spreadsheet = jspreadsheet(document.getElementById('spreadsheet'), {
data:data1,
columns: [
{ type: 'text', width: '60px', title: 'Photo', readOnly:true },
{ type: 'dropdown', width: '140px', title: 'Name', source: [ { id:'2', name: 'Jorge'}, { id:'7359', name: 'Cosme Sergio' }] },
{ type: 'text', width: '200px', title: 'Task' },
{ type: 'calendar', width: '100px', title: 'When' },
{ type: 'text', width: '50px', title: '%' },
{ type: 'text', width: '100px', title: 'Progress' },
],
allowComments:true,
updateTable: function(instance, cell, col, row, val, label, cellName) {
if (col == 0) {
if (instance.jexcel.options.data[row][col+1]) {
cell.innerHTML = '<img src="/templates/default/img/' + instance.jexcel.options.data[row][col+1] + '.jpg" style="width:24px;border-radius:16px">';
} else {
cell.innerHTML = '<img src="/templates/default/img/nophoto.jpg" style="width:24px;border-radius:16px">';
}
}
},
license: 'MDc2MGU0MzA1Y2JhYTNjN2MxNWFlMzg4MGMzYTU5ZmFhYWEyODE2MGQ0MGUyY2Q4ZmRiOTNlYzNkMTc4YjRhMzc3ZDFjNTdjYTFhODVlZmE1Yzg2MmU1MmNlNWNmMDI2ZTBmMWZkZGNhNGZmODZlYWY1ZGIzNmFjZTZhN2NmZGIsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpZd01qWXdOems1TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0ltTm9ZWEowY3lJc0ltWnZjbTF6SWl3aVptOXliWFZzWVNJc0luQmhjbk5sY2lJc0luSmxibVJsY2lJc0ltTnZiVzFsYm5Seklpd2lhVzF3YjNKMFpYSWlMQ0ppWVhJaUxDSjJZV3hwWkdGMGFXOXVjeUlzSW5ObFlYSmphQ0lzSW5CeWFXNTBJaXdpYzJobFpYUnpJaXdpWTJ4cFpXNTBJaXdpYzJWeWRtVnlJaXdpYzJoaGNHVnpJaXdpWm05eWJXRjBJbDBzSW1SbGJXOGlPblJ5ZFdWOQ==',
});
</script>
</html>