Facility Control

Expand all | Collapse all

#XPression and DashBoard

  • 1.  #XPression and DashBoard

    Posted 27 days ago
    Hello!

    I'm working with XPression and DashBoard and I've been wanting to create a Key Pad on DashBoard, so when I put the Take ID number and press the button "TAKE" it starts playing the clip I selected. I already have the "TAKE" button, I just need to get the Key Pad on DashBoard and connect it with XPression.

    Thank you!

    #XPression #DashBoard​​​

    ------------------------------
    Bruna Gregorio
    ------------------------------


  • 2.  RE: #XPression and DashBoard

    Ross Staff
    Posted 24 days ago
    Hello Bruna,

    I've added the source code for a custom panel which has a number pad. The numbers entered on the number pad adjust the value of a parameter named "take_id". Once the desired number is input, you can click the "Take" button to print the value to the openGear Debug Information. You can show this debug window by selecting Views > openGear Debug Information within DashBoard.

    Printing the information is nice but you are trying to interact with XPression. You will need to edit the task assigned to the "Take" button. In the else statement, you should see a commented out RossTalk command. You will want to uncomment this line and replace the IP address with your XPression server. Then you should update the values on the TAKE argument. It should have the format of: TAKE [take ID]:[buffer ID]:[layer ID] . You will want to use the take_id parameter we created as the value for [take ID].

    Please let me know if you have any questions.

    <abs contexttype="opengear" gridsize="20" id="_top" keepalive="false" virtualheight="921" virtualwidth="1498">
       <meta>
          <params>
             <param access="1" maxlength="0" name="take_id" oid="take_id" type="STRING" value="" widget="text"/>
          </params>
          <api>function addNumber(num) {
       var value = params.getValueAsString('take_id', 0);
       new_value = value + num;
       params.setValue('take_id', 0, new_value);
       
    }
    
    function clearNumber() {
       params.setValue('take_id', 0, "");
       
    }</api>
       </meta>
       <param expand="true" height="40" left="220" oid="take_id" showlabel="false" top="60" width="280"/>
       <label height="40" left="60" name="Take ID:" style="txt-align:west" top="60" width="160"/>
       <abs height="260" left="60" top="140" width="340">
          <simplegrid cols="4" height="180" left="0" rows="3" top="0" width="260">
             <button buttontype="push" name="1">
                <task tasktype="ogscript">addNumber(1);</task>
             </button>
             <button buttontype="push" name="2">
                <task tasktype="ogscript">addNumber(2);</task>
             </button>
             <button buttontype="push" name="3">
                <task tasktype="ogscript">addNumber(3);</task>
             </button>
             <button buttontype="push" name="Take">
                <task tasktype="ogscript">var value = params.getValueAsString('take_id', 0);
    if (value == "" || value == null){
    ogscript.debug("No number is entered");
    }
    else{
    ogscript.debug("TAKE " +value);
    // rosstalk.sendMessage('172.16.x.x', 7788, 'TAKE 0:0:0');
    clearNumber();
    }</task>
             </button>
             <button buttontype="push" name="4">
                <task tasktype="ogscript">addNumber(4);</task>
             </button>
             <button buttontype="push" name="5">
                <task tasktype="ogscript">addNumber(5);</task>
             </button>
             <button buttontype="push" name="6">
                <task tasktype="ogscript">addNumber(6);</task>
             </button>
             <button buttontype="push" name="Clear">
                <task tasktype="ogscript">clearNumber();</task>
             </button>
             <button buttontype="push" name="7">
                <task tasktype="ogscript">addNumber(7);</task>
             </button>
             <button buttontype="push" name="8">
                <task tasktype="ogscript">addNumber(8);</task>
             </button>
             <button buttontype="push" name="9">
                <task tasktype="ogscript">addNumber(9);</task>
             </button>
             <button buttontype="push" name="0">
                <task tasktype="ogscript">addNumber(0);</task>
             </button>
          </simplegrid>
       </abs>
    </abs>
    ​

    Thanks,

    ------------------------------
    Dave Sampson
    Ross Video
    ------------------------------



  • 3.  RE: #XPression and DashBoard

    Posted 22 days ago
    Hello Dave, 

    I hope you're fine. 

    My name is João and I'm coworker of Bruna. We're developing this project ( key pad) together, and we already tested your programming, it's very useful for us, thanks a lot. However, the TAKE button didn't behaves as we expected, after pressed it the clip in my Xpression playlist doesn't start.  We verified the Opengear debug information, apparently everything is working as you said,  when I just hit take button the message ''no number is entered'' appears to me and when I type some number + take button the message '' take 9'' shows up. 

    We also uncommented the line ''rosstalk.sendmessage'' and filled this field with our Xpression IP address. We can't understand why this command doesn't work.  Follow, below, our coding: 

    <abs contexttype="opengear" dblinqport="2222" gridsize="20" id="_top" keepalive="false" virtualheight="921" virtualwidth="1498">
    <meta>
    <params>
    <param access="1" maxlength="0" name="take_id" oid="take_id" type="STRING" value="" widget="text"/>
    </params>
    <api>function addNumber(num) {
    var value = params.getValueAsString('take_id', 0);
    new_value = value + num;
    params.setValue('take_id', 0, new_value);

    }

    function clearNumber() {
    params.setValue('take_id', 0, "");

    }</api>
    <context contexttype="opengear" id="XPression.1" objectid="192.168.41.30:8020:XPression" objecttype="XPression"/>
    </meta>
    <param expand="true" height="40" left="220" oid="take_id" showlabel="false" top="60" width="280"/>
    <label height="40" left="60" name="Take ID:" style="txt-align:west" top="60" width="160"/>
    <abs height="260" left="60" top="140" width="340">
    <simplegrid cols="4" height="180" left="0" rows="3" top="0" width="260">
    <button buttontype="push" name="1">
    <task tasktype="ogscript">addNumber(1);</task>
    </button>
    <button buttontype="push" name="2">
    <task tasktype="ogscript">addNumber(2);</task>
    </button>
    <button buttontype="push" name="3">
    <task tasktype="ogscript">addNumber(3);</task>
    </button>
    <button buttontype="push" name="Take">
    <task tasktype="ogscript">var value = params.getValueAsString('take_id', 0);
    if (value == "" || value == null){
    ogscript.debug("No number is entered");
    }
    else{
    ogscript.debug("TAKE " +value);
    rosstalk.sendMessage('192.168.41.30', 7788, 'TAKE take_id:0:0');
    clearNumber();
    }</task>
    </button>
    <button buttontype="push" name="4">
    <task tasktype="ogscript">addNumber(4);</task>
    </button>
    <button buttontype="push" name="5">
    <task tasktype="ogscript">addNumber(5);</task>
    </button>
    <button buttontype="push" name="6">
    <task tasktype="ogscript">addNumber(6);</task>
    </button>
    <button buttontype="push" name="Clear">
    <task tasktype="ogscript">clearNumber();</task>
    </button>
    <button buttontype="push" name="7">
    <task tasktype="ogscript">addNumber(7);</task>
    </button>
    <button buttontype="push" name="8">
    <task tasktype="ogscript">addNumber(8);</task>
    </button>
    <button buttontype="push" name="9">
    <task tasktype="ogscript">addNumber(9);</task>
    </button>
    <button buttontype="push" name="0">
    <task tasktype="ogscript">addNumber(0);</task>
    </button>
    </simplegrid>
    </abs>
    </abs>

    If you could highlight any error in our coding, please, let me know. 

    Thanks,

    ------------------------------
    João victhor Mariano
    ------------------------------



  • 4.  RE: #XPression and DashBoard

    Ross Staff
    Posted 22 days ago

    Hi João,

    In the task for the Take button, we store the value of take_id in a variable called "value". We can use this in our RossTalk command.

    Also, keep in mind that we are building a string in the RossTalk command and variables cannot be referenced inside of quotes. In the code line below, notice how value is not contained within the quotes and we are using the addition sign to concatenate the strings.

    rosstalk.sendMessage('192.168.41.30', 7788, 'TAKE '+value+':0:0');

    Please let me know if this works for you.



    ------------------------------
    Dave Sampson
    Ross Video
    ------------------------------



  • 5.  RE: #XPression and DashBoard

    Posted 22 days ago
    Hello Dave, 

    Now, it's clearer for us. After applied the changes suggested by you, the key pad panel is running well. 

    Thank you very much for your time. 

    My best,

    ------------------------------
    João victhor Mariano
    ------------------------------



  • 6.  RE: #XPression and DashBoard

    Posted 17 days ago
    Hello Dave!

    First of all I would like to say thank you for your time and help! Our panel is working great!

    I have question about Dashboard and I'm not sure if it is a limitation or we could actually do that.
    So I've been wanting to visualize on DashBoard the blue line that appears on the XPression Sequencer, so I could see what clips are playing or the ones that were last played, I was able to drag & drop the Sequencer but I can't see the blue line. The Up and Down command is working, but the visualizing status is not. Is there a way we could do that? 

    Thank you!

    ------------------------------
    Bruna Gregorio
    ------------------------------



  • 7.  RE: #XPression and DashBoard

    Ross Staff
    Posted 16 days ago
    Hi Bruna,

    It's always great to hear when people are enjoying their custom panels.

    Unfortunately this feature will not be possible on your panel. DashBoard does not receive the necessary information to construct this line.

    Please let me know if you have any other questions as you develop your panel.

    ------------------------------
    Dave Sampson
    Ross Video
    ------------------------------



  • 8.  RE: #XPression and DashBoard

    Posted 16 days ago
    Hello Dave, 

    Thanks you for your time. We've learned a lot during last weeks, and your support have been essential for this. It's really a pity, the Dashboard doesn't have the feature to able us see the blue indication line over clips. 

    As we mentioned before, the key pad panel works fine and will fit our needs perfectly. However, we'd like to know if is it possible attributes the TAKE button action to ENTER button of my keyboard? we believe that it'll improve our operation. 

    Thanks,

    ------------------------------
    João victhor Mariano
    ------------------------------



  • 9.  RE: #XPression and DashBoard

    Ross Staff
    Posted 14 days ago
    Hi João,

    Below you will find the source of an updated version of the keypad panel I made previously. This should handle pressing the enter key to submit the take by either clicking the number buttons with the mouse, or by entering it into the text field. The enter functionality is possible because of the ogscript tags near the top. There are 3 things worth mentioning with these tags.

    The handles="onkeyrelease" will make DashBoard pay attention to keyboard input. There are a list of different values for the handles attribute in the DashBoard help but I chose "onkeyrelease" which will trigger after releasing a pressed down key.

    You may eventually want the enter key to do different things on your panel. So for now, we only want the enter key to submit a take if you are interacting with the text field or with the number buttons. This is where the targetid attribute comes in. This tells DashBoard to only trigger the onkeyrelease if this ID is in focus. Unless you specify otherwise, the last component you interact with will have focus. I added ogscript.focus("keypad"); in the addNumber() function to give focus to the parent <abs> container after clicking a number button.

    The third value worth mentioning in the ogscript tag is the checkEnter(event); text. This is the code that will run if a key is released and the right component is in focus. This submits the onkeyrelease event that occurred on either the number_entry or the keypad to the checkEnter() function. The checkEnter() function then retrieves the keycode that was pressed and determines if it was the enter key. If the keycode resolves to be the enter key, then the sendTake() function is triggered which carries out the functionality you have already seen.

    Please let me know if you have any questions when including this functionality in your panel.

    <abs contexttype="opengear" gridsize="20" id="_top" keepalive="false" virtualheight="921" virtualwidth="1498">
       <meta>
          <ogscript handles="onkeyrelease" targetid="number_entry">checkEnter(event);</ogscript>
          <ogscript handles="onkeyrelease" targetid="keypad">checkEnter(event);</ogscript>
          <params>
             <param access="1" maxlength="0" name="take_id" oid="take_id" type="STRING" value="" widget="text"/>
          </params>
          <api>function addNumber(num) {
          ogscript.focus("keypad");
       var value = params.getValueAsString('take_id', 0);
       new_value = value + num;
       params.setValue('take_id', 0, new_value);
       
    }
    
    function clearNumber() {
       params.setValue('take_id', 0, "");
       
    }
    function checkEnter(event){
    var keyCode = event.getKeyCode();
          var keyText = event.getKeyText(keyCode).toLowerCase();
          if (keyText == "enter"){
          sendTake();
          }}
    
    function sendTake(){
    var value = params.getValueAsString('take_id', 0);
    if (value == "" || value == null){
    ogscript.debug("No number is entered");
    }
    else{
    ogscript.debug("TAKE " +value);
    // rosstalk.sendMessage('192.168.41.30', 7788, 'TAKE '+value+':0:0');
    clearNumber();
    }
    }</api>
       </meta>
       <param expand="true" height="40" id="number_entry" left="220" oid="take_id" showlabel="false" top="60" width="280"/>
       <label height="40" left="60" name="Take ID:" style="txt-align:west" top="60" width="160"/>
       <abs height="300" id="keypad" left="60" top="140" width="720">
          <simplegrid cols="4" height="180" left="0" rows="3" top="0" width="260">
             <button buttontype="push" name="1">
                <task tasktype="ogscript">addNumber(1);</task>
             </button>
             <button buttontype="push" name="2">
                <task tasktype="ogscript">addNumber(2);</task>
             </button>
             <button buttontype="push" name="3">
                <task tasktype="ogscript">addNumber(3);</task>
             </button>
             <button buttontype="push" name="Take">
                <task tasktype="ogscript">sendTake();</task>
             </button>
             <button buttontype="push" name="4">
                <task tasktype="ogscript">addNumber(4);</task>
             </button>
             <button buttontype="push" name="5">
                <task tasktype="ogscript">addNumber(5);</task>
             </button>
             <button buttontype="push" name="6">
                <task tasktype="ogscript">addNumber(6);</task>
             </button>
             <button buttontype="push" name="Clear">
                <task tasktype="ogscript">clearNumber();</task>
             </button>
             <button buttontype="push" name="7">
                <task tasktype="ogscript">addNumber(7);</task>
             </button>
             <button buttontype="push" name="8">
                <task tasktype="ogscript">addNumber(8);</task>
             </button>
             <button buttontype="push" name="9">
                <task tasktype="ogscript">addNumber(9);</task>
             </button>
             <button buttontype="push" name="0">
                <task tasktype="ogscript">addNumber(0);</task>
             </button>
          </simplegrid>
       </abs>
    </abs>
    



    ------------------------------
    Dave Sampson
    Ross Video
    ------------------------------



  • 10.  RE: #XPression and DashBoard

    Posted 13 days ago
    Hello Dave, 

    I am glad to inform you that this update version of keypad panel worked fine. To be able to reproduce the TAKE action by pressing enter button was exactly what we needed. Also, your detailed explanation about this ogscript, opened our mind and helped us increment new features to our custom panel. Thank you very much for your attention!

    The next step, we would like to reach, is create a visualization box which allows us to see the clip that I play by my keypad or shot box panel. We tried do that creating a widget ``Xpression desktop preview`` and adding to it the parameters <param oid="Ext.CGTemp.DisplayTake" value="1"/>;
    <param oid="Ext.CGTemp.BackgroundStyle" value="bg#ff0000;"/>; <param oid="Ext.CGTemp.Layout.ImagePosition" value="east"/>, however, we didn´t get success. Do you know what we´re doing wrong?

    Thanks,

    ------------------------------
    João victhor Mariano
    ------------------------------



  • 11.  RE: #XPression and DashBoard

    Posted 13 days ago
    Hi João,

    Following up on the sequencer preview question. When you're using this Dashboard, do you have the XPression sequencer also up on a different monitor/window? If you want to focus the blue line on the item you just took to air, rather than sending a "TAKE" RossTalk command, you can always do a Sequence In, or "SEQI" RossTalk command. This will take your graphic to air and also shift the sequencer to the item you just took to air.

    ------------------------------
    Drew Shealy
    XPression Designer & Programmer
    SoFi Stadium
    ------------------------------



  • 12.  RE: #XPression and DashBoard

    Posted 10 days ago
      |   view attached
    Hello Drew,

    Thanks for your attention in our case. I don´t know if I was clear in my previous question related to Xpression sequencer, but we created a simple panel containing two arrows (up and down) and a TAKE  button, which basically use the arrows to select the clip in my playlist and Take button to play it. However, when I hitting the arrows I can´t see the blue bar moving over the clips as I see in the Xpression, so I need to deduce which clip I´ll run counting how many times I triggered my arrows. It just highlighted the clip after I pressed TAKE button. It isn´t user friendly. 

    Dave informed us that it isn´t possible to see in Dashboard, because Dashboard does not receive the necessary information to construct this line. So, if you know a way to overcome it, it´ll be very useful for us. 

    Thanks, 




    ------------------------------
    João victhor Mariano
    ------------------------------



  • 13.  RE: #XPression and DashBoard

    Ross Staff
    Posted 8 days ago
    Hi João,

    To setup the XPression Desktop Preview widget, place the widget into your custom panel and
    specify which channel of XPression you would like to show.

    From XPression, click the Edit > Hardware Setup option. Select the "Inputs/Outputs" tab and click "Add". Next, choose "XPression Desktop Preview Client" as the brand. Enter the IP address of your DashBoard computer and select the channel you would like to send.

    Please let me know if you have any questions.


    ------------------------------
    Dave Sampson
    Ross Video
    ------------------------------



  • 14.  RE: #XPression and DashBoard

    Posted 6 days ago
    Hello Dave!

    I'm still working with João in that case and I tried to do what was told but it doesn't seem to work. I'll send you the images of the steps and if you could point me anything that you might think it's wrong it would be very helpful.
    I created the widget on DashBoard and chose the Channel 1, then I added the DashBoard Computer on Xpression and it shows "Active" but nothing shows up on Dashboard. 

    Thank you for your time.


    ------------------------------
    Bruna Gregorio
    ------------------------------



  • 15.  RE: #XPression and DashBoard

    Ross Staff
    Posted 3 days ago
    Hi Bruna,

    I was experiencing the same issue as you when I configured this locally. XPression would show the Desktop preview client as active and DashBoard would only show a black bar with the channel number on the custom panel.

    I managed to fix the issue by restarting XPression after configuring the Desktop preview client. Any changes I made to the channel number while XPression was open did not take effect until XPression restarted.

    DashBoard only requires you to provide the correct channel number. All other configuration is done on XPression. If you are still having issues with this widget I suggest leaving a post on the discussion board for XPression. Here is the link to their discussion board:

    Discussion board for XPression

    Please let me know if restarting XPression helps.

    ------------------------------
    Dave Sampson
    Ross Video
    ------------------------------



  • 16.  RE: #XPression and DashBoard

    Posted 2 days ago
    Hello Dave!

    I tried to restart the Xpression but unfortunately it didn't work, it keeps showing me only the black bar on Dashoard.
    But I will ask about that on the discussion board you sent me, hopefully it will help me solve the problem.

    Thank you so much for your time and patience, you've helped us a lot!
    Our panel looks very nice thanks you, the way you teached and showed us the codes was amazing. 

    Thank you so much and have a great day!

    ------------------------------
    Bruna Gregorio
    ------------------------------