Skip to main content
Question

case statement in api_addrecord javascript

  • February 9, 2018
  • 0 replies
  • 39 views

Hi Quickbase Community,

I am having an issue using a switch statement in Javascript while adding a record. I have defined a variable in the URL button called F9 that provides the number of site visits, the code runs perfectly without the switch statement - can someone please let me know if I am doing something wrong and how i can correct it? (there are 10 visits, i have just shortened for testing)

$.get(dbidWR, {
act: "API_AddRecord",
_fid_48: F72,
_fid_132: F77,
_fid_150: F98,
_fid_147: F84,
_fid_77: F100,
switch(F9){
case '1':
_fid_137: F21;
_fid_251: F22;
_fid_442: F23;
_fid_164: F999;
break;
case '2':
_fid_137: F21;
_fid_251: F22;
_fid_442: F23;
_fid_164: F999;
_fid_138: F25;
_fid_252: F26;
_fid_443: F27;
_fid_165: F999;
break;
}
This topic has been closed for replies.

  • Quickbase Alumni
  • February 9, 2018
Your code is a mess. You need to merge the different sets of options objects together using native JavaScript Object.assign() or jQuery.extend().

I don't have your F* variables you so I just converted them to string values in the following code.
var options1 = {
  act: "API_AddRecord",
  _fid_48: "F72",
  _fid_132: "F77",
  _fid_150: "F98",
  _fid_147: "F84",
  _fid_77: "F100",
}
var options2 = {
  _fid_137: "F21",
  _fid_251: "F22",
  _fid_442: "F23",
  _fid_164: "F999",
}
var options3 = {
  _fid_137: "F21",
  _fid_251: "F22",
  _fid_442: "F23",
  _fid_164: "F999",
  _fid_138: "F25",
  _fid_252: "F26",
  _fid_443: "F27",
  _fid_165: "F999"
}
var F9 = "1";
var options;
switch (F9) {
  case '1':
    options = Object.assign({}, options1, options2)
    break;
  case '2':
    option = Object.assign({}, options1, options3)
    break;
}
console.log(JSON.stringify(options, null, "  "));
var F9 = "2";
var options;
switch (F9) {
  case '1':
    options = Object.assign({}, options1, options2)
    break;
  case '2':
    options = Object.assign({}, options1, options3)
    break;
}
console.log(JSON.stringify(options, null, "  "));

$.get(dbidWR, options)
  .then(function(xml) {
    console.dirxml(xml)
  });


The first and second console.logs will display as follows depending on for F9 equal to "1" or "2" as follows:
{
  "act": "API_AddRecord",
  "_fid_48": "F72",
  "_fid_132": "F77",
  "_fid_150": "F98",
  "_fid_147": "F84",
  "_fid_77": "F100",
  "_fid_137": "F21",
  "_fid_251": "F22",
  "_fid_442": "F23",
  "_fid_164": "F999"
}
 {
  "act": "API_AddRecord",
  "_fid_48": "F72",
  "_fid_132": "F77",
  "_fid_150": "F98",
  "_fid_147": "F84",
  "_fid_77": "F100",
  "_fid_137": "F21",
  "_fid_251": "F22",
  "_fid_442": "F23",
  "_fid_164": "F999",
  "_fid_138": "F25",
  "_fid_252": "F26",
  "_fid_443": "F27",
  "_fid_165": "F999"
}

  • Author
  • Quickbase Alumni
  • February 11, 2018
Thank you so much, For anyone else needing to use this

/*
The below code is to be loaded against a URL Button
*/
"javascript:" &
"var F3= " & URLEncode([Record ID#]) & ";" &
  "var F9= '" & [Number of Store Visits Required ? ] & "';" &
  "var F72= '" & [Related Project] & "';" &
  "var F77= '" & [Related Site] & "';" &
  "var F98= '" & [Type of Scope] & "';" &
  "var F84= '" & [Project - Related customer] & "';" &
  "var F100= '" & [Date of Issue] & "';" &
  "var F999= '" & "Installation" & "';" &
  "var F21= '" & [Visit 1 Date] & "';" &
  "var F22= '" & [Visit 1 Time] & "';" &
  "var F23= '" & [Visit 1 Labour Qty] & "';" &
  "var F25= '" & [Visit 2 Date] & "';" &
  "var F26= '" & [Visit 2 Time] & "';" &
  "var F27= '" & [Visit 2 Labour Qty] & "';" &
  "var F29= '" & [Visit 3 Date] & "';" &
  "var F30= '" & [Visit 3 Time] & "';" &
  "var F31= '" & [Visit 3 Labour Qty] & "';" &
  "var F33= '" & [Visit 4 Date] & "';" &
  "var F34= '" & [Visit 4 Time] & "';" &
  "var F35= '" & [Visit 4 Labour Qty] & "';" &
  "var F37= '" & [Visit 5 Date] & "';" &
  "var F38= '" & [Visit 5 Time] & "';" &
  "var F39= '" & [Visit 5 Labour Qty] & "';" &
  "var F41= '" & [Visit 6 Date] & "';" &
  "var F42= '" & [Visit 6 Time] & "';" &
  "var F43= '" & [Visit 6 Labour Qty] & "';" &
  "var F45= '" & [Visit 7 Date] & "';" &
  "var F46= '" & [Visit 7 Time] & "';" &
  "var F47= '" & [Visit 7 Labour Qty] & "';" &
  "var F49= '" & [Visit 8 Date] & "';" &
  "var F50= '" & [Visit 8 Time] & "';" &
  "var F51= '" & [Visit 8 Labour Qty] & "';" &
  "var F53= '" & [Visit 9 Date] & "';" &
  "var F54= '" & [Visit 9 Time] & "';" &
  "var F55= '" & [Visit 9 Labour Qty] & "';" &
  "var F57= '" & [Visit 10 Date] & "';" &
  "var F58= '" & [Visit 10 Time] & "';" &
  "var F59= '" & [Visit 10 Labour Qty] & "';" &
  "$.getScript('" & URLRoot() & "db/[DBID]?act=dbpage&pagename=AddWR.js');void(0);"
/*
The below code is to be loaded onto .js codepage
*/
// Connecting to SOW Table:
var dbidSOW = "xxxxxxx";
// Connecting to Work Package Table:
var dbidWR = "xxxxxx";
// Providing the App Token below:
var apptoken = "xxxxxx";
// Set Variable for options no null
var options;
//Setting up an AJAX call to tell the script we are expecting to receive back XML later in the script
$.ajaxSetup({
  data: {
    apptoken: apptoken
  }
});
// Setup the options, What fields for each option. 
var optionsone = {
  act: "API_AddRecord",
  _fid_48: F72,
  _fid_132: F77,
  _fid_150: F98,
  _fid_147: F84,
  _fid_77: F100,
}
var optionstwo = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999
}
var optionsthree = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999
}
var optionsfour = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999
}
var optionsfive = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999
}
var optionssix = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999,
  _fid_141: F37,
  _fid_255: F38,
  _fid_446: F39,
  _fid_168: F999
}
var optionsseven = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999,
  _fid_141: F37,
  _fid_255: F38,
  _fid_446: F39,
  _fid_168: F999,
  _fid_142: F41,
  _fid_256: F42,
  _fid_447: F43,
  _fid_169: F999
}
var optionseight = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999,
  _fid_141: F37,
  _fid_255: F38,
  _fid_446: F39,
  _fid_168: F999,
  _fid_142: F41,
  _fid_256: F42,
  _fid_447: F43,
  _fid_169: F999,
  _fid_143: F45,
  _fid_257: F46,
  _fid_448: F47,
  _fid_170: F999
}
var optionsnine = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999,
  _fid_141: F37,
  _fid_255: F38,
  _fid_446: F39,
  _fid_168: F999,
  _fid_142: F41,
  _fid_256: F42,
  _fid_447: F43,
  _fid_169: F999,
  _fid_143: F45,
  _fid_257: F46,
  _fid_448: F47,
  _fid_170: F999,
  _fid_144: F49,
  _fid_258: F50,
  _fid_449: F51,
  _fid_171: F999
}
var optionsten = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999,
  _fid_141: F37,
  _fid_255: F38,
  _fid_446: F39,
  _fid_168: F999,
  _fid_142: F41,
  _fid_256: F42,
  _fid_447: F43,
  _fid_169: F999,
  _fid_143: F45,
  _fid_257: F46,
  _fid_448: F47,
  _fid_170: F999,
  _fid_144: F49,
  _fid_258: F50,
  _fid_449: F51,
  _fid_171: F999,
  _fid_145: F53,
  _fid_259: F54,
  _fid_450: F55,
  _fid_172: F999
}
var optionseleven = {
  _fid_137: F21,
  _fid_251: F22,
  _fid_442: F23,
  _fid_164: F999,
  _fid_138: F25,
  _fid_252: F26,
  _fid_443: F27,
  _fid_165: F999,
  _fid_139: F29,
  _fid_253: F30,
  _fid_444: F31,
  _fid_166: F999,
  _fid_140: F33,
  _fid_254: F34,
  _fid_445: F35,
  _fid_167: F999,
  _fid_141: F37,
  _fid_255: F38,
  _fid_446: F39,
  _fid_168: F999,
  _fid_142: F41,
  _fid_256: F42,
  _fid_447: F43,
  _fid_169: F999,
  _fid_143: F45,
  _fid_257: F46,
  _fid_448: F47,
  _fid_170: F999,
  _fid_144: F49,
  _fid_258: F50,
  _fid_449: F51,
  _fid_171: F999,
  _fid_145: F53,
  _fid_259: F54,
  _fid_450: F55,
  _fid_172: F999,
  _fid_146: F57,
  _fid_260: F58,
  _fid_451: F59,
  _fid_173: F999
}
// setup switch to assign options defined against an object under a case statement so only data relevant to the switch condition will be returned, Get function is called and new Work Package is created
switch (F9) {
  case '1':
    options = Object.assign({}, optionsone, optionstwo)
    break;
  case '2':
    options = Object.assign({}, optionsone, optionsthree)
    break;
  case '3':
    options = Object.assign({}, optionsone, optionsfour)
    break;
  case '4':
    options = Object.assign({}, optionsone, optionsfive)
    break;
  case '5':
    options = Object.assign({}, optionsone, optionssix)
    break;
  case '6':
    options = Object.assign({}, optionsone, optionsseven)
    break;
  case '7':
    options = Object.assign({}, optionsone, optionseight)
    break;
  case '8':
    options = Object.assign({}, optionsone, optionsnine)
    break;
  case '9':
    options = Object.assign({}, optionsone, optionsten)
    break;
  case '10':
    options = Object.assign({}, optionsone, optionseleven)
    break;
}
// Test to display XML returned from the above switch case and get call
console.log(JSON.stringify(options, null, "  "));
// returns the Work Package Record ID from the newly created record above then pushes it to a Edit Record function against the SOW Table to input against the related SOW.
$.get(dbidWR, options).then(function(xml) {
  console.dirxml(xml);
  var WRrid = $("rid", xml).text();
  console.log(WRrid);
  // I'm using the URL Editrecord method below, could easily do a second AJAX call but no need with this use case
  document.location.href = "https://[realm].quickbase.com/db/[dbidsow]?a=API_EditRecord&apptoken=[xxxxxxxxxxxxxxxxxxxxx]&...; + F3 + "&_fid_114=" + WRrid + "&disprec=13"
});

  • Quickbase Alumni
  • February 11, 2018


Supersize Me! 

It that whole thing a formula URL?

It is over 8000 characters long?

Does it even work?

Which Browser?

  • Author
  • Quickbase Alumni
  • February 11, 2018
Works perfectly, i use Chrome, also used it in IE as well. Only the below code is put into a URL Button, the rest comes from the AddWR.js.

"javascript:" &
"var F3= " & URLEncode([Record ID#]) & ";" &
  "var F9= '" & [Number of Store Visits Required ? ] & "';" &
  "var F72= '" & [Related Project] & "';" &
  "var F77= '" & [Related Site] & "';" &
  "var F98= '" & [Type of Scope] & "';" &
  "var F84= '" & [Project - Related customer] & "';" &
  "var F100= '" & [Date of Issue] & "';" &
  "var F999= '" & "Installation" & "';" &
  "var F21= '" & [Visit 1 Date] & "';" &
  "var F22= '" & [Visit 1 Time] & "';" &
  "var F23= '" & [Visit 1 Labour Qty] & "';" &
  "var F25= '" & [Visit 2 Date] & "';" &
  "var F26= '" & [Visit 2 Time] & "';" &
  "var F27= '" & [Visit 2 Labour Qty] & "';" &
  "var F29= '" & [Visit 3 Date] & "';" &
  "var F30= '" & [Visit 3 Time] & "';" &
  "var F31= '" & [Visit 3 Labour Qty] & "';" &
  "var F33= '" & [Visit 4 Date] & "';" &
  "var F34= '" & [Visit 4 Time] & "';" &
  "var F35= '" & [Visit 4 Labour Qty] & "';" &
  "var F37= '" & [Visit 5 Date] & "';" &
  "var F38= '" & [Visit 5 Time] & "';" &
  "var F39= '" & [Visit 5 Labour Qty] & "';" &
  "var F41= '" & [Visit 6 Date] & "';" &
  "var F42= '" & [Visit 6 Time] & "';" &
  "var F43= '" & [Visit 6 Labour Qty] & "';" &
  "var F45= '" & [Visit 7 Date] & "';" &
  "var F46= '" & [Visit 7 Time] & "';" &
  "var F47= '" & [Visit 7 Labour Qty] & "';" &
  "var F49= '" & [Visit 8 Date] & "';" &
  "var F50= '" & [Visit 8 Time] & "';" &
  "var F51= '" & [Visit 8 Labour Qty] & "';" &
  "var F53= '" & [Visit 9 Date] & "';" &
  "var F54= '" & [Visit 9 Time] & "';" &
  "var F55= '" & [Visit 9 Labour Qty] & "';" &
  "var F57= '" & [Visit 10 Date] & "';" &
  "var F58= '" & [Visit 10 Time] & "';" &
  "var F59= '" & [Visit 10 Labour Qty] & "';" &
  "$.getScript('" & URLRoot() & "db/[DBID]?act=dbpage&pagename=AddWR.js');void(0);"