Reputation: 11
I've setup UI, seemes to work.
I want to check if two textboxes
are NOT empty and then do something.
Showing the script involving the topic below and can add whole function if needed.
Anyone can help me out? Current code generates a message that length cant be retrieved.
Last: log says everything is undefined except for app when running debug for handlerFunction
function handlerFunction(eventInfo)
{
var app=UiApp.getActiveApplication();
var parameter = eventInfo.parameter;
var panel = parameter.panel;
var source = parameter.source;
var text100 = parameter.text100;
var text101 = parameter.text101;
var text102 = parameter.text102;
var text103 = parameter.text103;
var text104 = parameter.text104;
var text105 = parameter.text105;
var text106 = parameter.text106;
var stations=parameter.stations;
var stations2=parameter.stations2;
var systems = parameter.systems;
var systems2 = parameter.systems2;
var products=parameter.products;
var products2=parameter.products2;
var but200 = parameter.but200;
var but201 = parameter.but201;
switch (source)
{
case '1':
var app=UiApp.getActiveApplication();
app.getElementById('text100').setText(systems)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '2':
// get the value of last changed element in listbox written to editbox
var app=UiApp.getActiveApplication();
app.getElementById('text101').setValue(stations)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '3':
var app=UiApp.getActiveApplication();
app.getElementById('text102').setValue(products)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '4':
var app=UiApp.getActiveApplication();
app.getElementById('text10').setText(systems2)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '5':
// get the value of last changed element in listbox written to editbox
var app=UiApp.getActiveApplication();
app.getElementById('text11').setValue(stations)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '6':
var app=UiApp.getActiveApplication();
app.getElementById('text12').setValue(products2)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '200': // SAVE button cliked
var app=UiApp.getActiveApplication();
// var parameter = eventInfo.parameter;
var test1=app.getElementById('text100').setText(parameter.text.length);
var test2=app.getElementById('text101').setText(parameter.text.length);
if (test1 >= '1' && test2 >= '1')
{
app.getElementById('text103').setValue('123');
}
return app;
break;
}
}
Upvotes: 0
Views: 72
Reputation: 11
Problem solved, not saying its elegant :)
Scriptcode down below.
Thanks for Your interests, see you.
regards
function handlerFunction(eventinfo)
{
var app=UiApp.getActiveApplication();
var parameter =eventinfo.parameter;
var panel = parameter.panel;
var source = parameter.source;
var text100 = parameter.text100;
var text101 = parameter.text101;
var text102 = parameter.text102;
var text103 = parameter.text103;
var text104 = parameter.text104;
var text105 = parameter.text105;
var text106 = parameter.text106;
var stations=parameter.stations;
var stations2=parameter.stations2;
var systems = parameter.systems;
var systems2 = parameter.systems2;
var products=parameter.products;
var products2=parameter.products2;
var but200 = parameter.but200;
var but201 = parameter.but201;
switch(parameter.source)
{
case '1':
var app=UiApp.getActiveApplication();
app.getElementById('text100').setText(systems)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '2':
// get the value of last changed element in listbox written to editbox
var app=UiApp.getActiveApplication();
app.getElementById('text101').setValue(stations)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '3':
var app=UiApp.getActiveApplication();
app.getElementById('text102').setValue(products)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '4':
var app=UiApp.getActiveApplication();
app.getElementById('text10').setText(systems2)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '5':
// get the value of last changed element in listbox written to editbox
var app=UiApp.getActiveApplication();
app.getElementById('text11').setValue(stations)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '6':
var app=UiApp.getActiveApplication();
app.getElementById('text12').setValue(products2)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '200': // SAVE button cliked
var app=UiApp.getActiveApplication();
var val1=parameter.text100.length;
var val2=parameter.text101.length;
if (val1 !=0 && val2 !=0 )
{
app.getElementById('text103').setValue(val1);
return app;
}
break;
}
}
Upvotes: 1
Reputation: 11
heres all scripts.
function doGet() {
var app = UiApp.createApplication();
app.setStyleAttribute("background", '#aaaaaa').setStyleAttribute("color", "white");
app.setTitle("Elite Dangerous trading");
app.setHeight('1100');
app.setWidth('1850');
// drawui();
var app=UiApp.getActiveApplication();
//create panel
var panel = app.createAbsolutePanel();
panel.setStyleAttribute("position",0);
panel.setStyleAttribute("height",1100);
panel.setStyleAttribute("width",1850);
panel.setStyleAttribute('backgroundImage',"url('http://www.incgamers.com/wp-content/uploads/2014/07/elite-dangerous.jpg')");
var handle = app.createServerHandler("handlerFunction");
// create grid1
var mygrid1 = app.createGrid(3, 4)
.setStyleAttribute("background", '#5F9EF5')
.setBorderWidth(3)
.setCellSpacing(8)
.setCellPadding(8);
// create grid2
var mygrid2 = app.createGrid(3, 4)
.setStyleAttribute("background", '#754F0E')
.setBorderWidth(3)
.setCellSpacing(8)
.setCellPadding(8);
// create 3 listboxes with handle for save
var systems = app.createListBox().setId('1').setName('systems').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center');
var stations = app.createListBox().setId('2').setName('stations').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center');
var products = app.createListBox().setId('3').setName('products').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center');
// create 3 listboxes with handle for show
var systems2 = app.createListBox().setId('4').setName('systems2').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center');
var stations2 = app.createListBox().setId('5').setName('stations2').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center');
var products2 = app.createListBox().setId('6').setName('products2').setPixelSize(200,24).addChangeHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center');
//create 4 read only text boxes
var text1 = app.createTextBox()
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text1')
.setId('text1')
.setText("System input")
.setWidth(200)
.setReadOnly(true);
var text2 = app.createTextBox()
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text2')
.setId('text2')
.setText("Station input")
.setWidth(200)
.setReadOnly(true);
var text3 = app.createTextBox()
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text3')
.setId('text3')
.setText("Product input")
.setWidth(200)
.setReadOnly(true);
// price pr. item textbox
var text4= app.createTextBox()
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text4')
.setId('text4')
.setText("Station sellingprice a piece")
.setWidth(200)
.setReadOnly(true);
//create 4 read only text boxes for textbox showfields showing
var text9 = app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text9')
.setId('text9')
.setWidth(200)
.setReadOnly(true);
var text10= app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text10')
.setId('text10')
.setWidth(200)
.setReadOnly(true);
var text11 = app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text11')
.setId('text11')
.setWidth(200)
.setReadOnly(true);
// price pr. item textbox
var text12= app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text12')
.setId('text12')
.setWidth(200)
.setReadOnly(true);
//create 4 read only text boxes for textbox showfields showing
var text5 = app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text5')
.setId('text5')
.setText("System")
.setWidth(200)
.setReadOnly(true);
var text6 = app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text6')
.setId('text6')
.setText("Station")
.setWidth(200)
.setReadOnly(true);
var text7 = app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text7')
.setId('text7')
.setText("Product")
.setWidth(200)
.setReadOnly(true);
// price pr. item textbox
var text8= app.createTextBox()
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setName('text8')
.setId('text8')
.setText("Station sellingprice a piece")
.setWidth(200)
.setReadOnly(true);
// create 4 textboxes 100,101,102,103, from which to save system,station,products input
var text100 = app.createTextBox().addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text100')
.setId('text100')
.setText("")
.setWidth(200)
.setReadOnly(false);
var text101= app.createTextBox().addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text101')
.setId('text101')
.setText("")
.setWidth(200)
.setReadOnly(false);
var text102 = app.createTextBox().addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text102')
.setId('text102')
.setText("")
.setWidth(200)
.setReadOnly(false);
var text103 = app.createTextBox().addChangeHandler(handle)
.setStyleAttribute("background", "blue").setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setName('text103')
.setId('text103')
.setText("")
.setWidth(200)
.setReadOnly(false);
//create submit buttons
var inputbutton = app.createButton().addClickHandler(handle)
.setStyleAttribute("background", '#0000FF').setStyleAttribute("color", "white").setStyleAttribute('textAlign', 'center')
.setId('200')
.setWidth(80)
.setHeight(80)
.setText("SAVE");
//create submit buttons
var showbutton = app.createButton().addClickHandler(handle)
.setStyleAttribute("background", '#4D3308').setStyleAttribute("color", "yellow").setStyleAttribute('textAlign', 'center')
.setId('201')
.setWidth(80)
.setHeight(80)
.setText("SHOW");
// fill listboxes save
//Open the spreadsheet and get the sheet objects
var openedSS = SpreadsheetApp.openById("15tGpfnt72_yxVcO3Kp0wFBLfYpf8nr3vZCteprtX_Ss");
var sheetList1 = openedSS.getSheetByName("data");//Spreadsheet must match with sheet name
numItemList1 = sheetList1.getLastRow()-1;//-1 is to exclude header row
//get the item array
list1ItemArray = sheetList1.getRange(2,1,numItemList1,1).getValues();
//Add the items in ListBox
for(var i=0; i<list1ItemArray.length; i++){
products.addItem(list1ItemArray[i][0]);
}
i=0;
numItemList2 = sheetList1.getLastRow()-1;//-1 is to exclude header row
//get the item array
list2ItemArray = sheetList1.getRange(2,3,numItemList2,1).getValues();
//Add the items in ListBox
for(var i=0; i<list2ItemArray.length; i++){
stations.addItem(list2ItemArray[i][0]);
}
i=0;
numItemList3 = sheetList1.getLastRow()-1;//-1 is to exclude header row
//get the item array
list3ItemArray = sheetList1.getRange(2,5,numItemList3,1).getValues();
//Add the items in ListBox
for(var i=0; i<list3ItemArray.length; i++){
systems.addItem(list3ItemArray[i][0]);
}
i=0;
// fill listboxes read
//Open the spreadsheet and get the sheet objects
// var openedSS = SpreadsheetApp.openById("15tGpfnt72_yxVcO3Kp0wFBLfYpf8nr3vZCteprtX_Ss");
// var sheetList1 = openedSS.getSheetByName("data");//Spreadsheet must match with sheet name
numItemList4 = sheetList1.getLastRow()-1;//-1 is to exclude header row
//get the item array
list4ItemArray = sheetList1.getRange(2,1,numItemList1,1).getValues();
//Add the items in ListBox
for(var i=0; i<list4ItemArray.length; i++){
products2.addItem(list4ItemArray[i][0]);
}
i=0;
numItemList5 = sheetList1.getLastRow()-1;//-1 is to exclude header row
//get the item array
list5ItemArray = sheetList1.getRange(2,3,numItemList2,1).getValues();
//Add the items in ListBox
for(var i=0; i<list5ItemArray.length; i++){
stations2.addItem(list5ItemArray[i][0]);
}
i=0;
numItemList6 = sheetList1.getLastRow()-1;//-1 is to exclude header row
//get the item array
list6ItemArray = sheetList1.getRange(2,5,numItemList3,1).getValues();
//Add the items in ListBox
for(var i=0; i<list6ItemArray.length; i++){
systems2.addItem(list6ItemArray[i][0]);
}
i=0;
// fill up grid
mygrid1.setWidget(0, 0, text1);
mygrid1.setWidget(0, 1, text2);
mygrid1.setWidget(0, 2, text3);
mygrid1.setWidget(0, 3, text4);
mygrid1.setWidget(1, 3, text103);
mygrid1.setWidget(1, 0, text100);
mygrid1.setWidget(1, 1, text101);
mygrid1.setWidget(1, 2, text102);
mygrid1.setWidget(2, 0, systems);
mygrid1.setWidget(2, 1, stations);
mygrid1.setWidget(2, 2, products);
panel.add(mygrid1,24,100);
panel.add(inputbutton,436,270);
mygrid2.setWidget(0, 0, text5);
mygrid2.setWidget(0, 1, text6);
mygrid2.setWidget(0, 2, text7);
mygrid2.setWidget(0, 3, text8);
mygrid2.setWidget(1, 3, text9);
mygrid2.setWidget(1, 0, text10);
mygrid2.setWidget(1, 1, text11);
mygrid2.setWidget(1, 2, text12);
mygrid2.setWidget(2, 0, systems2);
mygrid2.setWidget(2, 1, stations2);
mygrid2.setWidget(2, 2, products2);
panel.add(mygrid2,24,570);
panel.add(showbutton,436,740);
//add the panel to the application
app.add(panel);
// add callbacks
handle.addCallbackElement(inputbutton)
.addCallbackElement(showbutton)
.addCallbackElement(text100)
.addCallbackElement(text101)
.addCallbackElement(text102)
.addCallbackElement(text103)
.addCallbackElement(text9)
.addCallbackElement(text10)
.addCallbackElement(text11)
.addCallbackElement(text12)
.addCallbackElement(systems)
.addCallbackElement(stations)
.addCallbackElement(products2)
.addCallbackElement(systems2)
.addCallbackElement(stations2)
.addCallbackElement(products2)
.addCallbackElement(panel);
var doc = SpreadsheetApp.getActive();
doc.show(app);
return app;
}
function handlerFunction(eventInfo)
{
var app=UiApp.getActiveApplication();
var parameter = eventInfo.parameter;
// There's a lot of information in 'parameter' about the event too, but we'll focus here
// only on the callback elements.
var panel = parameter.panel;
var source = parameter.source;
var text100 = parameter.text100;
var text101 = parameter.text101;
var text102 = parameter.text102;
var text103 = parameter.text103;
var text104 = parameter.text104;
var text105 = parameter.text105;
var text106 = parameter.text106;
var stations=parameter.stations;
var stations2=parameter.stations2;
var systems = parameter.systems;
var systems2 = parameter.systems2;
var products=parameter.products;
var products2=parameter.products2;
var but200 = parameter.but200;
var but201 = parameter.but201;
var test1 = parameter.test1;
var test2 = parameter.test2;
switch (source)
{
case '1':
var app=UiApp.getActiveApplication();
app.getElementById('text100').setText(systems)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '2':
// get the value of last changed element in listbox written to editbox
var app=UiApp.getActiveApplication();
app.getElementById('text101').setValue(stations)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '3':
var app=UiApp.getActiveApplication();
app.getElementById('text102').setValue(products)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '4':
var app=UiApp.getActiveApplication();
app.getElementById('text10').setText(systems2)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '5':
// get the value of last changed element in listbox written to editbox
var app=UiApp.getActiveApplication();
app.getElementById('text11').setValue(stations)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '6':
var app=UiApp.getActiveApplication();
app.getElementById('text12').setValue(products2)
.setStyleAttribute('textAlign', 'center');
return app;
break;
case '200': // SAVE button cliked
var app=UiApp.getActiveApplication();
var parameter = eventInfo.parameter;
// var parameter = eventInfo.parameter;
// var test1=app.getElementById('text100').setText(parameter.text.length);
// var test2=app.getElementById('text101').setText(parameter.text.length);
var test1=app.getElementById('text100').setValue(text100);
var test2=app.getElementById('text101').setValue(text101);
if (test1 >= '1' && test2 >= '1')
{
app.getElementById('text103').setValue('123');
}
return app;
break;
}
}
Upvotes: 0
Reputation: 31310
Try changing this line:
var test1=app.getElementById('text100').setText(parameter.text.length);
to this:
var test1=app.getElementById('text100').setText(eventInfo.parameter.text.length);
I just added eventInfo
.
That's how it's used in the example in the documentation:
Google Documentation - Class TextBox
Upvotes: 0