205 lines
6.2 KiB
JavaScript
Executable File
205 lines
6.2 KiB
JavaScript
Executable File
/*=========================================================================================
|
|
File Name: handsontable-utilities.js
|
|
Description: Handsontable Utilities.
|
|
----------------------------------------------------------------------------------------
|
|
Item Name: Modern Admin - Clean Bootstrap 4 Dashboard HTML Template
|
|
Version: 1.0
|
|
Author: GeeksLabs
|
|
Author URL: http://www.themeforest.net/user/geekslabs
|
|
==========================================================================================*/
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
|
|
/***********************************************
|
|
* Context menu with default options *
|
|
***********************************************/
|
|
|
|
function getData() {
|
|
return [
|
|
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
|
|
['2012', 10, 11, 12, 13, 15, 16],
|
|
['2013', 10, 11, 12, 13, 15, 16],
|
|
['2014', 10, 11, 12, 13, 15, 16],
|
|
['2015', 10, 11, 12, 13, 15, 16],
|
|
['2016', 10, 11, 12, 13, 15, 16]
|
|
];
|
|
}
|
|
|
|
var
|
|
example1 = document.getElementById('context'),
|
|
settings1,
|
|
hot1;
|
|
|
|
settings1 = {
|
|
data: getData(),
|
|
rowHeaders: true,
|
|
colHeaders: true,
|
|
contextMenu: true
|
|
};
|
|
hot1 = new Handsontable(example1, settings1);
|
|
|
|
|
|
/**********************************************************
|
|
* Context menu with fully custom configuration *
|
|
**********************************************************/
|
|
|
|
|
|
function getCustomData() {
|
|
return [
|
|
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
|
|
['2012', 10, 11, 12, 13, 15, 16],
|
|
['2013', 10, 11, 12, 13, 15, 16],
|
|
['2014', 10, 11, 12, 13, 15, 16],
|
|
['2015', 10, 11, 12, 13, 15, 16],
|
|
['2016', 10, 11, 12, 13, 15, 16]
|
|
];
|
|
}
|
|
|
|
var
|
|
example3 = document.getElementById('configuration'),
|
|
settings3,
|
|
hot3;
|
|
|
|
settings3 = {
|
|
data: getCustomData(),
|
|
rowHeaders: true,
|
|
colHeaders: true
|
|
};
|
|
hot3 = new Handsontable(example3, settings3);
|
|
|
|
hot3.updateSettings({
|
|
contextMenu: {
|
|
callback: function(key, options) {
|
|
if (key === 'about') {
|
|
setTimeout(function() {
|
|
// timeout is used to make sure the menu collapsed before alert is shown
|
|
alert("This is a context menu with default and custom options mixed");
|
|
}, 100);
|
|
}
|
|
},
|
|
items: {
|
|
"row_above": {
|
|
disabled: function() {
|
|
// if first row, disable this option
|
|
return hot3.getSelected()[0] === 0;
|
|
}
|
|
},
|
|
"row_below": {},
|
|
"hsep1": "---------",
|
|
"remove_row": {
|
|
name: 'Remove this row, ok?',
|
|
disabled: function() {
|
|
// if first row, disable this option
|
|
return hot3.getSelected()[0] === 0
|
|
}
|
|
},
|
|
"hsep2": "---------",
|
|
"about": { name: 'About this menu' }
|
|
}
|
|
}
|
|
})
|
|
|
|
/**************************************
|
|
* Copy-paste configuration *
|
|
**************************************/
|
|
|
|
|
|
function getData() {
|
|
return [
|
|
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
|
|
['2012', 10, 11, 12, 13, 15, 16],
|
|
['2013', 10, 11, 12, 13, 15, 16],
|
|
['2014', 10, 11, 12, 13, 15, 16],
|
|
['2015', 10, 11, 12, 13, 15, 16],
|
|
['2016', 10, 11, 12, 13, 15, 16]
|
|
];
|
|
}
|
|
|
|
var
|
|
copyPaste = document.getElementById('copyPaste'),
|
|
hot4;
|
|
|
|
hot4 = new Handsontable(copyPaste, {
|
|
data: getData(),
|
|
rowHeaders: true,
|
|
colHeaders: true,
|
|
contextMenu: true,
|
|
contextMenuCopyPaste: {
|
|
swfPath: '/bower_components/zeroclipboard/dist/ZeroClipboard.swf'
|
|
}
|
|
});
|
|
|
|
|
|
|
|
/****************************
|
|
* Custom buttons *
|
|
****************************/
|
|
|
|
|
|
var
|
|
data = [
|
|
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
|
|
['2012', 10, 11, 12, 13, 15, 16],
|
|
['2013', 10, 11, 12, 13, 15, 16],
|
|
['2014', 10, 11, 12, 13, 15, 16],
|
|
['2015', 10, 11, 12, 13, 15, 16],
|
|
['2016', 10, 11, 12, 13, 15, 16]
|
|
],
|
|
container = document.getElementById('buttons'),
|
|
selectFirst = document.getElementById('selectFirst'),
|
|
rowHeaders = document.getElementById('rowHeaders'),
|
|
colHeaders = document.getElementById('colHeaders'),
|
|
hot;
|
|
|
|
hot = new Handsontable(container, {
|
|
rowHeaders: true,
|
|
colHeaders: true,
|
|
outsideClickDeselects: false,
|
|
removeRowPlugin: true
|
|
});
|
|
hot.loadData(data);
|
|
|
|
Handsontable.Dom.addEvent(selectFirst, 'click', function() {
|
|
hot.selectCell(0, 0);
|
|
});
|
|
Handsontable.Dom.addEvent(rowHeaders, 'click', function() {
|
|
hot.updateSettings({
|
|
rowHeaders: this.checked
|
|
});
|
|
});
|
|
Handsontable.Dom.addEvent(colHeaders, 'click', function() {
|
|
hot.updateSettings({
|
|
colHeaders: this.checked
|
|
});
|
|
});
|
|
|
|
/**********************
|
|
* Comments *
|
|
**********************/
|
|
|
|
function getData() {
|
|
return [
|
|
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
|
|
['2012', 10, 11, 12, 13, 15, 16],
|
|
['2013', 10, 11, 12, 13, 15, 16],
|
|
['2014', 10, 11, 12, 13, 15, 16],
|
|
['2015', 10, 11, 12, 13, 15, 16],
|
|
['2016', 10, 11, 12, 13, 15, 16]
|
|
];
|
|
}
|
|
|
|
var container = document.getElementById('comments'),
|
|
hot1;
|
|
|
|
hot1 = new Handsontable(container, {
|
|
data: getData(),
|
|
rowHeaders: true,
|
|
colHeaders: true,
|
|
contextMenu: true,
|
|
comments: true,
|
|
cell: [
|
|
{ row: 1, col: 1, comment: 'Some comment' },
|
|
{ row: 2, col: 2, comment: 'More comments' }
|
|
]
|
|
});
|
|
}); |