Get values from another parameter based on value

Hi!

I’m trying to make a sports panel for Xpression graphics. Currently you manually have to copy paste player numbers from the lineup parameter into the substitution parameter. So my question is, how do you get the name and surname values from the lineup parameter into the substitution paramter based on only changing the players number? Attached is the code to my panel and a screenshot explaining the feature I need.

name_H1 name_H2 name_H3 name_H4 name_H5 name_H6 name_H7 name_H8 name_H9 name_H10 name_H11 name_H12 name_H13 name_H14 name_H15 name_H16 name_H17 name_H18 name_H19 name_H20 surnname_H1 surnname_H2 surnname_H3 surnname_H4 surnname_H5 surnname_H6 surnname_H7 surnname_H8 surnname_H9 surnname_H10 surnname_H11 surnname_H12 surnname_H13 surnname_H14 surnname_H15 surnname_H16 surnname_H17 surnname_H18 surnname_H19 surnname_H20 number name surname surnname_A1 surnname_A2 surnname_A3 surnname_A4 surnname_A5 surnname_A6 surnname_A7 surnname_A8 surnname_A9 surnname_A10 surnname_A11 surnname_A12 surnname_A13 surnname_A14 surnname_A15 surnname_A16 surnname_A17 surnname_A18 surnname_A19 surnname_A20 name_a1 name_a2 name_a3 name_a4 name_a5 name_a6 name_a7 name_a8 name_a9 name_a10 name_a11 name_a12 name_a13 name_a14 name_a15 name_a16 name_a17 name_a18 name_a19 name_a20 number name surname name_H8 name_H16 surnname_H8 surnname_H16 minute name surname minute name surname number name surname number name surname number name surname number name surname 1 2 3 4 5 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 1 2 3 4 5 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 number name surname
     <timertask tasktype="ogscript">params.setValue('main_timer', 0, event.getDisplay());</timertask>
     </timer>
     <timer autostart="false" id="add_timer" pattern="mm:ss" rate="500" start="00:00" stop="00:00">
        <timertask tasktype="ogscript">params.setValue('add_timer', 0, event.getDisplay());</timertask>
     </timer>
     <param expand="true" height="60" left="840" oid="main_timer" style="style:timerLabel" top="100" width="120"/>
     <param expand="true" height="60" left="840" oid="main_timer_set" style="size:Big;" top="180" widget="time-picker" width="120"/>
     <button buttontype="push" height="60" left="980" name="Start / Pause" top="100" width="120">
        <task tasktype="ogscript">var timer = ogscript.getTimerManager().getTimer("main_timer");

if (!timer.isRunning())
{
timer.startTimer(false);
}
else
{
timer.stopTimer(false);
}


var startValue = params.getValue(‘main_timer_set’, 0);
var timer = ogscript.getTimerManager().getTimer(‘main_timer’);
var parsedStartValue = timer.getFormat().parseObject(startValue);
timer.setTime(parsedStartValue);







var timer = ogscript.getTimerManager().getTimer(“add_timer”);
if (!timer.isRunning())
{
timer.startTimer(false);
}
else
{
timer.stopTimer(false);
}
rosstalk.sendMessage(‘localhost’, 7789, ‘TAKE 5:0:0’);


var startValue = params.getValue(‘add_timer_set’, 0);
var timer = ogscript.getTimerManager().getTimer(‘add_timer’);
var parsedStartValue = timer.getFormat().parseObject(startValue);
timer.setTime(parsedStartValue);

  <label height="40" left="880" name="ADD CLOCK" style="txt-align:center;size:Big;" top="280" width="160"/>
  <param expand="true" height="40" left="980" oid="add_tim" showlabel="false" top="360" width="100"/>
     <param height="40" left="1000" oid="add_time" showlabel="false" style="size:Big;" top="480" width="60"/>
     <label height="40" left="820" name="SETT ADD TIME" style="txt-align:center;size:Big;" top="480" width="160"/>
  <button buttontype="push" height="60" id="timebar_in" left="1120" name="IN" top="100" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 5:0:3');</task>
     </button>
     
  <button buttontype="push" height="60" id="timebar_out" left="1120" name="OUT" top="180" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 5');</task>
     </button>
  
  <button buttontype="push" height="60" id="scoreident_in" left="1420" name="IN" top="660" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 50:0:0');</task>
     </button>
     <button buttontype="push" height="60" id="timebar_out" left="1520" name="OUT" top="660" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 50');</task>
     </button>
  <button buttontype="push" height="40" id="sub_h1_in" left="800" name="IN" top="620" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 71:0:0');</task>
     </button>
     <button buttontype="push" height="40" id="sub_h2_in" left="800" name="IN" top="660" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 72:0:0');</task>
     </button>
  <button buttontype="push" height="40" id="sub_a1_in" left="800" name="IN" top="780" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 74:0:0');</task>
     </button>
     <button buttontype="push" height="40" id="sub_h1_out" left="860" name="OUT" top="620" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 71');</task>
     </button>
     <button buttontype="push" height="40" id="sub_h2_out" left="860" name="OUT" top="660" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 72');</task>
     </button>
     <button buttontype="push" height="40" id="sub_h3_out" left="860" name="OUT" top="700" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 73');</task>
     </button>
     <button buttontype="push" height="40" id="sub_a1_out" left="860" name="OUT" top="780" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 74');</task>
     </button>
     <button buttontype="push" height="40" id="sub_h3_in" left="800" name="IN" top="700" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 73:0:0');</task>
     </button>
     <button buttontype="push" height="40" id="sub_a2_in" left="800" name="IN" top="820" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 75:0:0');</task>
     </button>
     <button buttontype="push" height="40" id="sub_a2_out" left="860" name="OUT" top="820" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 75:0:0');</task>
     </button>
     <button buttontype="push" height="40" id="sub_a3_out" left="860" name="OUT" top="860" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 76');</task>
     </button>
     <button buttontype="push" height="40" id="sub_a3_in" left="800" name="IN" top="860" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 76:0:0');</task>
     </button>
     <label height="40" left="20" name="IN" style="txt-align:center;size:Big;" top="580" width="240"/>
     <label height="40" left="20" name="IN" style="txt-align:center;size:Big;" top="740" width="240"/>
     <label height="40" left="480" name="OUT" style="txt-align:center;size:Big;" top="580" width="240"/>
  <label height="40" left="480" name="OUT" style="txt-align:center;size:Big;" top="740" width="240"/>
     <button buttontype="push" height="40" id="lineup_a_in" left="480" name="IN" top="500" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 4:0:0');</task>
     </button>
  <button buttontype="push" height="40" id="lineup_a_out" left="580" name="OUT" top="500" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 4');</task>
     </button>
     <button buttontype="push" height="40" id="lineup_h_in" left="80" name="IN" top="500" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 3:0:0');</task>
     </button>
     <button buttontype="push" height="40" id="lineup_h_out" left="180" name="OUT" top="500" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 3');</task>
     </button>
  <param expand="true" height="40" left="1160" oid="0x8F" showlabel="false" style="size:Big;" top="720" width="240"/>
  <label height="40" left="980" name="HOME" style="txt-align:center;size:Big;" top="720" width="160"/>
     <button buttontype="push" height="60" id="timebar_out_w_add_time" left="1120" name="OUT" top="320" width="100">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 5:0:3');</task>
     </button>
  <label height="40" left="560" name="AWAY" style="txt-align:center;size:Big;" top="0" width="160"/>
  </abs>
  <abs name="Penalties">
     <param expand="true" height="60" left="0" oid="0x5f" precision="0" showlabel="false" style="size:Big;" top="20" widget="table" width="740"/>
     <param expand="true" height="60" left="0" oid="0x6f" showlabel="false" style="size:Big;" top="100" widget="table" width="740"/>
     <label height="20" left="0" name="HOME" style="txt-align:center;size:Big;" top="0" width="260"/>
     <button buttontype="push" gpi="1" height="80" id="reset_pen_button" left="740" name="Reset" style="size:Big;" top="20" width="120">
        <task tasktype="ogscript">params.setAllValues('0x10a', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x11a', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x12a', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x13a', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x14a', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x10b', ['Not taken 0']);</task>
        <task tasktype="ogscript"/>
        <task tasktype="ogscript">params.setAllValues('0x11b', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x12b', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x13b', ['Not taken 0']);</task>
        <task tasktype="ogscript">params.setAllValues('0x14b', ['Not taken 0']);</task>
     </button>
     <label height="20" left="0" name="AWAY" style="txt-align:center;size:Big;" top="80" width="260"/>
     <button buttontype="push" height="60" id="Penalties_in" left="740" name="IN" style="size:Big;" top="100" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'TAKE 60:0:0');</task>
     </button>
     <button buttontype="push" height="60" id="Penalties_in" left="800" name="OUT" style="size:Big;" top="100" width="60">
        <task tasktype="rosstalk">rosstalk.sendMessage('localhost', 7789, 'SEQO 60');</task>
     </button>
  </abs>

Hi Hermangud
One mechanism to copy the values for you would be to add an onchange handler to the numeric field of your substitution tables. Inside of the script, you can look-up the appropriate player information and copy it to the substitution parameters.

Here is how it would look with the “out” side of your “home” table:

var index = this.getIndex();
var numericValue = this.getValue();
for (var i = 0; i < params.getElementCount(‘0x2A’); i++)
{
if (numericValue == params.getValue(0x2A, i))
{
var name = params.getValue(‘0x3A’, i);
var surname = params.getValue(‘0x4A’, i);
params.setValue(‘0x8E’, index, name);
params.setValue(‘0x9E’, index, surname);
}
}
As another tip: you may want to start using string-based OIDs instead of numeric ones. It can make it a lot easier to find your parameters.

This is your overall code with that single handler added:

name_H1 name_H2 name_H3 name_H4 name_H5 name_H6 name_H7 name_H8 name_H9 name_H10 name_H11 name_H12 name_H13 name_H14 name_H15 name_H16 name_H17 name_H18 name_H19 name_H20 surnname_H1 surnname_H2 surnname_H3 surnname_H4 surnname_H5 surnname_H6 surnname_H7 surnname_H8 surnname_H9 surnname_H10 surnname_H11 surnname_H12 surnname_H13 surnname_H14 surnname_H15 surnname_H16 surnname_H17 surnname_H18 surnname_H19 surnname_H20 number name surname surnname_A1 surnname_A2 surnname_A3 surnname_A4 surnname_A5 surnname_A6 surnname_A7 surnname_A8 surnname_A9 surnname_A10 surnname_A11 surnname_A12 surnname_A13 surnname_A14 surnname_A15 surnname_A16 surnname_A17 surnname_A18 surnname_A19 surnname_A20 name_a1 name_a2 name_a3 name_a4 name_a5 name_a6 name_a7 name_a8 name_a9 name_a10 name_a11 name_a12 name_a13 name_a14 name_a15 name_a16 name_a17 name_a18 name_a19 name_a20 number name surname name_H8 name_H16 surnname_H8 surnname_H16 minute name surname minute name surname number name surname number name surname number name surname number name surname name_H11 surnname_H11 1 2 3 4 5 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 1 2 3 4 5 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 Not taken 0 Not taken 0 Goal 1 Miss 2 number name surname var index = this.getIndex(); var numericValue = this.getValue(); for (var i = 0; i < params.getElementCount('0x2A'); i++) { if (numericValue == params.getValue(0x2A, i)) { var name = params.getValue('0x3A', i); var surname = params.getValue('0x4A', i); params.setValue('0x8E', index, name); params.setValue('0x9E', index, surname); } } params.setValue('main_timer', 0, event.getDisplay()); params.setValue('add_timer', 0, event.getDisplay()); var timer = ogscript.getTimerManager().getTimer("main_timer"); if (!timer.isRunning()) { timer.startTimer(false); } else { timer.stopTimer(false); } var startValue = params.getValue('main_timer_set', 0); var timer = ogscript.getTimerManager().getTimer('main_timer'); var parsedStartValue = timer.getFormat().parseObject(startValue); timer.setTime(parsedStartValue); var timer = ogscript.getTimerManager().getTimer("add_timer"); if (!timer.isRunning()) { timer.startTimer(false); } else { timer.stopTimer(false); } rosstalk.sendMessage('localhost', 7789, 'TAKE 5:0:0'); var startValue = params.getValue('add_timer_set', 0); var timer = ogscript.getTimerManager().getTimer('add_timer'); var parsedStartValue = timer.getFormat().parseObject(startValue); timer.setTime(parsedStartValue); rosstalk.sendMessage('localhost', 7789, 'TAKE 5:0:3'); rosstalk.sendMessage('localhost', 7789, 'SEQO 5'); rosstalk.sendMessage('localhost', 7789, 'TAKE 50:0:0'); rosstalk.sendMessage('localhost', 7789, 'SEQO 50'); rosstalk.sendMessage('localhost', 7789, 'TAKE 71:0:0'); rosstalk.sendMessage('localhost', 7789, 'TAKE 72:0:0'); rosstalk.sendMessage('localhost', 7789, 'TAKE 74:0:0'); rosstalk.sendMessage('localhost', 7789, 'SEQO 71'); rosstalk.sendMessage('localhost', 7789, 'SEQO 72'); rosstalk.sendMessage('localhost', 7789, 'SEQO 73'); rosstalk.sendMessage('localhost', 7789, 'SEQO 74'); rosstalk.sendMessage('localhost', 7789, 'TAKE 73:0:0'); rosstalk.sendMessage('localhost', 7789, 'TAKE 75:0:0'); rosstalk.sendMessage('localhost', 7789, 'TAKE 75:0:0'); rosstalk.sendMessage('localhost', 7789, 'SEQO 76'); rosstalk.sendMessage('localhost', 7789, 'TAKE 76:0:0'); rosstalk.sendMessage('localhost', 7789, 'TAKE 4:0:0'); rosstalk.sendMessage('localhost', 7789, 'SEQO 4'); rosstalk.sendMessage('localhost', 7789, 'TAKE 3:0:0'); rosstalk.sendMessage('localhost', 7789, 'SEQO 3'); rosstalk.sendMessage('localhost', 7789, 'TAKE 5:0:3'); params.setAllValues('0x10a', ['Not taken 0']); params.setAllValues('0x11a', ['Not taken 0']); params.setAllValues('0x12a', ['Not taken 0']); params.setAllValues('0x13a', ['Not taken 0']); params.setAllValues('0x14a', ['Not taken 0']); params.setAllValues('0x10b', ['Not taken 0']); params.setAllValues('0x11b', ['Not taken 0']); params.setAllValues('0x12b', ['Not taken 0']); params.setAllValues('0x13b', ['Not taken 0']); params.setAllValues('0x14b', ['Not taken 0']); rosstalk.sendMessage('localhost', 7789, 'TAKE 60:0:0'); rosstalk.sendMessage('localhost', 7789, 'SEQO 60'); [#DashBoard](https://livinglive.community/search?s=tags%3A%22DashBoard%22&executesearch=true)

Thank you so much! Exactly what I was after! :slight_smile:
#DashBoard