document.addEventListener("DOMContentLoaded",function(){function isEmptyRow(instance,row){for(var rowData=instance.getData()[row],i=0,ilen=rowData.length;i<ilen;i++)
if(null!==rowData[i])return!1;return!0}
function defaultValueRenderer(instance,td,row,col,prop,value,cellProperties){var args=arguments;null===args[5]&&isEmptyRow(instance,row)?(args[5]=tpl[col],td.style.color="#999"):td.style.color="",Handsontable.renderers.TextRenderer.apply(this,args)}
var hot1,tpl=["one","two","three"],data=[["","Kia","Nissan","Toyota","Honda"],["2014",10,11,12,13],["2015",20,11,14,13],["2016",30,15,12,13]],container=document.getElementById("populating");hot1=new Handsontable(container,{startRows:8,startCols:5,minSpareRows:1,contextMenu:!0,cells:function(row,col,prop){var cellProperties={};return cellProperties.renderer=defaultValueRenderer,cellProperties},beforeChange:function(changes){var i,c,instance=hot1,ilen=changes.length,clen=instance.colCount,rowColumnSeen={},rowsToFill={};for(i=0;i<ilen;i++)null===changes[i][2]&&null!==changes[i][3]&&isEmptyRow(instance,changes[i][0])&&(rowColumnSeen[changes[i][0]+"/"+changes[i][1]]=!0,rowsToFill[changes[i][0]]=!0);for(var r in rowsToFill)
if(rowsToFill.hasOwnProperty(r))
for(c=0;c<clen;c++)rowColumnSeen[r+"/"+c]||changes.push([r,c,null,tpl[c]])}}),hot1.loadData(data)});