i want able clear whole array of images click of button , reload array updated values. cannot work clearing vertpanel. can done somehow resetting data? appreciated.
var maximgs = 6; // number of images in grid var colurl = 0; // column containing url var colname = 2; // column containing name var colattr = 1; // column containing attributes function doget(e) { var app = uiapp.createapplication().settitle('not here'); var abspanel = app.createabsolutepanel().setstyleattribute('padding','25px'); var grid = app.creategrid(8, 8); var titlelabel = app.createlabel('not here'); titlelabel.setstyleattribute('margin-left','85px'); titlelabel.setstyleattribute("font-size", "135%"); titlelabel.setstyleattribute("font-weight", "bold"); var insertlabel = app.createlabel('which schedule? (insert document key)'); var inserttxtbox = app.createtextbox().setid('txtbox').setname('ttbox').setmaxlength(44); var loadbtn = app.createbutton('load pictures').setid('loadbtn'); var resetbtn = app.createbutton('refresh').setid('rbtn').setvisible(false); var daylabel = app.createlabel('select day'); var mon = "p - mon" var tues = "p - tues" var wed = "p - wed" var thurs = "p - thurs" var fri = "p - fri" var daylistbox = app.createlistbox().setwidth('140px').setid('day').setname('sday') daylistbox.additem(mon); daylistbox.additem(tues); daylistbox.additem(wed); daylistbox.additem(thurs); daylistbox.additem(fri); // borrowed https://sites.google.com/site/scriptsexamples/learn-by-example/uiapp-examples- code-snippets/progress-indicators var spinner = app.createimage('https://dl.dropboxusercontent.com/u/211279/loading3t.gif') .setvisible(false) .setid('spinner'); // client handler loadbtn start spinner when button clicked // server handler stop spinner when done loading pictures var loadspinner = app.createclienthandler() .fortargets(spinner) .setvisible(true); loadbtn.addclickhandler(loadspinner); var loadhandler = app.createserverhandler('loadpics'); loadhandler.addcallbackelement(abspanel); loadbtn.addclickhandler(loadhandler); grid .setwidget(1, 0, insertlabel) .setwidget(1, 1, inserttxtbox) .setwidget(2, 0, daylabel) .setwidget(2, 1, daylistbox) .setwidget(3, 1, loadbtn) .setwidget(3, 2, resetbtn) .setwidget(2, 2, spinner) .setcellspacing(5); (var img = 0, row = 5; img < maximgs; img++) { var image = app.createimage().setpixelsize(350, 350).setid('image' + img); var imagename = app.createlabel('name').setid('name'+img); var imageattr = app.createlabel('attr').setid('attr'+img); var vertpan = app.createverticalpanel().add(imagename).add(imageattr).add(image).setstyleattributes({'padding':'15px','borderstyle':'solid','border-radius':'15px','background':'silver'}).setvisible(false).setid('vertpanel'+img); grid.setwidget(row + math.floor(img / 4), 1 + (img % 4), vertpan) } abspanel.add(titlelabel); abspanel.add(grid); app.add(abspanel); return app; } function loadpics(e) { var app = uiapp.getactiveapplication(); var ss = spreadsheetapp.openbyid(e.parameter.ttbox); var list = ss.getsheetbyname(e.parameter.sday); var data = list.getrange("a121:c230").getvalues().splice(1); // whole spreadsheet, without headers (var row = 0, img = 0; row < data.length && img < maximgs; row++) { var rowdata = data[row]; if (rowdata[0] != '') { var image = app.getelementbyid('image' + img); var imagename = app.getelementbyid('name'+img); var imageattr = app.getelementbyid('attr'+img); var vertpan = app.getelementbyid('vertpanel'+img).setvisible(true); image.seturl(rowdata[colurl]) .settitle(rowdata[colname].tostring() === '' ? 'image'+img : rowdata[colname]); imagename.settext(rowdata[colname]).setstyleattribute("font-size", "150%"); imageattr.settext(rowdata[colattr]); img++; } } // done loading, hide spinner app.getelementbyid('spinner').setvisible(false); return app; }
better define grid , add abspanel
, in handler function, call image grid id , use method clear()
; clear grid. , reconstruct new images.
i hope trying say.
in doget()
function use
var imggrid = app.creategrid(1,1).setid('imggrid'); abspanel.add(imggrid);
in handler function use
var imggrid = app.getelementbyid('imggrid').clear(); imggrid.resize(row, column); //now manipulate grid show new images