Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website

Dashboard losing connectivity


  • Hi all,
    I have an issue with a dashboard that is causing the browser to become unresponsive. The dialog box on the bottom says "Connectivity Lost, restoring connection..."
    The dashboard was working fine. Nothing was changed, it just started crashing. Any help would be appreciated.
    See error below. Thanks. Rob

    [user=Testing Dashboard, cause=<marker inkscape:stockid="Arrow1Lstart" orient="auto" refY="0" refX="0" id="Arrow1Lstart" style="overflow:visible" inkscape:isstock="true">, location=http://192.168.1.58:8080/ui/Insulated-Glove-Testing, userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0, language=en-US, date=2020-06-12T10:23:22.167+01:00, timezone=Europe/London]
    ReferenceError: google is not defined
            at i (http://192.168.1.58:8080/ui/mangoUi~ngMango.js?v=8cb0234a2dec15eb57f3:18:435685)
            at le/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:7418)
            at ke (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:56689)
            at ae (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:51498)
            at ce/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:44367)
            at ce/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:44384)
            at ce/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:44384)
            at ie/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:43580)
            at link (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:152726)
            at le/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:7418)
            at ke (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:56689)
            at ae (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:51498)
            at ce/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:44367)
            at ie/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:43580)
            at fe/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:46787)
            at r (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:44729)
            at f (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:49982)
            at compile/</</< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:152197)
            at u/</< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:94777)
            at u/< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:94915)
            at $digest (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:100341)
            at $apply (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:102518)
            at i/c< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:124858)
            at Qr/this.$get</</this.completeTask (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:122819)
            at un/this.$get</</a.defer/r< (http://192.168.1.58:8080/ui/mangoUi~ngMango~ngMangoServices.js?v=2fcf97988116666c7bfe:78:34332)

  • It would probably help if you gave us the markup of your Insulated-Glove-Testing page or the last pages that you have edited.

    Fox


  • Hi @MattFox Sorry for the delay. Looks like there was some other issues with the database. I use this machine for testing so I may have corrupted it somehow. Anyway - I did a fresh install of mango and just set up this dashboard and the required data points. It is working a lot better but still looses connectivity now and then. There is a 60 second timer on the dashboard and you can see it freezing. 1,2,3,4...11,12,13 etc. The machine is running win 10 with i5 processor and 8GB RAM. See mark up below. Thanks.

    <div class="ma-designer-root" style="width: 1366px; height: 768px; position: relative;" id="e3669178-63af-44fc-82f3-ee84de44b2da" ma-center="true" ma-maintain-ratio="letterbox">
    </div>
        
     <ma-point-values point-xid="Max1" values="point1Values" latest="120"></ma-point-values>
        <ma-point-values point-xid="Max2" values="point2Values" latest="120"></ma-point-values>
        <ma-point-values point-xid="Max3" values="point3Values" latest="120"></ma-point-values>
        <ma-point-values point-xid="Max4" values="point4Values" latest="120"></ma-point-values>
        <ma-point-values point-xid="Max5" values="point5Values" latest="120"></ma-point-values>
        <ma-point-values point-xid="Max6" values="point6Values" latest="120"></ma-point-values>
        <ma-point-values point-xid="Voltage" values="Point7Values" latest="120"></ma-point-values>
    
    
    <ma-serial-chart style="position: absolute; width: 1860px; height: 300px; left: 5px; top: 660px; border-color: rgb(76, 76, 76); border-width: medium; border-style: groove; border-radius: 30px; background-color: rgba(153, 153, 153, 0.38);" series-1-values="point1Values" series-1-title="Glove 1 Leakage (mA)" series-1-point="Max1" series-2-values="point2Values" series-2-title="Glove 2 Leakage (mA)" series-2-point="Max2" series-3-values="point3Values" series-3-title="Glove 3 Leakage (mA)" series-3-point="Max3" series-4-values="point4Values" series-4-title="Glove 4 Leakage (mA)" series-4-point="Max4" series-5-values="point5Values" series-5-title="Glove 5 Leakage (mA)" series-5-point="Max5" series-6-values="point6Values" series-6-title="Glove 6 Leakage (mA)" series-6-point="Max6" series-7-values="point7Values" series-7-title="Voltage" series-7-point="GloveVoltage" series-7-axis="right" legend="true" balloon="true" export="false">
    </ma-serial-chart> 
    <ma-button id="148f1a11-d62b-4986-ab91-4ceb88cd52c8" style="position: absolute; left: 1307px; top: 39px; z-index: 1;" raised="true" ui-sref="ui.glovesQrg" label="Help" palette="accent" hue="hue-1"></ma-button>
    
    <ma-watch-list-get ng-model="designer.watchList" parameters="designer.parameters" on-points-change="designer.points = $points" id="863b7145-de54-4cd7-9f5d-cb27f93d3abe" watch-list-xid="WL_830d5487-4191-47d7-894c-85c6f3371968"></ma-watch-list-get>
    
        <ma-set-point-value id="e7f24aed-8b6b-461f-96df-d5d5e855a375" style="position: absolute; left: 140px; width: 318px; height: 30px; z-index: 5; font-size: 25px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); top: 153px; background-size: cover; background-repeat: no-repeat; background-position: center center; border-radius: 10px; border-width: thin; border-color: rgb(178, 178, 178); border-style: groove; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" point="designer.points | filter:{name:'Glove1SNPt'}:true | maFirst" point-xid="Glove1SNPt" label="Serial No.:"></ma-set-point-value>
        <ma-set-point-value id="279c1002-ac83-4bc4-ac1d-c820822b97c2" style="position: absolute; left: 660px; top: 153px; width: 318px; height: 30px; z-index: 6; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-width: thin; border-style: groove; border-radius: 10px; border-color: rgb(178, 178, 178); font-weight: bold; padding-left: 2px; padding-bottom: 4px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove3SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
        <ma-set-point-value id="17f2a32f-b141-4f75-a85c-91c09e518103" style="position: absolute; left: 1185px; top: 153px; z-index: 4; width: 318px; height: 30px; font-size: 25px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); border-color: rgb(178, 178, 178); border-width: thin; border-style: groove; border-radius: 10px; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove5SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
        <ma-set-point-value id="e179f987-85b8-42d1-9bf8-44b89f32ad61" style="position: absolute; left: 141px; top: 305px; z-index: 6; width: 318px; height: 30px; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-width: thin; border-style: groove; border-radius: 10px; border-color: rgb(178, 178, 178); font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove2SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
        <ma-set-point-value id="14f75f75-919f-4471-9082-77635d36b49c" style="position: absolute; left: 660px; top: 304px; z-index: 3; width: 318px; height: 30px; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-color: rgb(178, 178, 178); border-width: thin; border-style: groove; border-radius: 10px; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove4SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
        <ma-set-point-value id="2996ff30-acf5-4d87-88b9-b38c8c20cc3a" style="position: absolute; left: 1185px; top: 304px; z-index: 5; width: 311px; height: 30px; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-color: rgb(178, 178, 178); border-width: thin; border-style: groove; border-radius: 10px; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove6SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
        <ma-set-point-value id="47fab070-dc11-48cc-aa1d-6b5081a50910" style="position: absolute; left: 1450px; top: 16px; width: 400px; z-index: 3; height: 30px; color: rgb(1, 1, 1); font-size: 22px; background-color: rgb(255, 255, 255); text-align: center; font-weight: bold; border-width: thin; border-style: groove; border-radius: 10px; padding-left: 5px; padding-bottom: 6px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'CustomerPt'}:true | maFirst" label="Customer:"></ma-set-point-value>
        <ma-set-point-value id="0564cc38-1eeb-4e16-91ac-4d6ed118abc8" style="position: absolute; left: 1450px; top: 52px; width: 400px; z-index: 3; color: rgb(1, 1, 1); font-size: 22px; background-color: rgb(255, 255, 255); height: 30px; font-weight: bold; border-width: thin; border-style: groove; border-radius: 10px; padding-left: 5px; padding-bottom: 6px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'CertificatePt'}:true | maFirst" label="Certificate No.:"></ma-set-point-value>
        <ma-set-point-value id="9cbc487e-39d6-47e3-9db3-7c86466dcd5a" style="position: absolute; left: 1449.75px; top: 89px; width: 400px; z-index: 2; color: rgb(1, 1, 1); font-size: 22px; background-color: rgb(255, 255, 255); height: 30px; font-weight: bold; border-width: thin; border-style: groove; border-radius: 10px; padding-left: 5px; padding-bottom: 6px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'JobNoPt'}:true | maFirst" label="Job No.:"></ma-set-point-value>
        <ma-excel-report-run id="e34a5734-d780-46e2-98af-d40415dd0504" style="position: absolute; left: 1332px; top: 580px; z-index: 2;" xid="XLST_91c2e8db-e4dc-4390-bc2c-1ffe4f3d6ffc" button-text="Run Report"></ma-excel-report-run>
    
    
        <ma-get-point-value point-xid="Max1" point="GloveMax1Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max2" point="GloveMax2Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max3" point="GloveMax3Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max4" point="GloveMax4Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max5" point="GloveMax5Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max6" point="GloveMax6Pt"></ma-get-point-value>
        
        <ma-get-point-value point-xid="Voltage" point="GloveVoltagePt"></ma-get-point-value>
        
        <ma-get-point-value point-xid="ResetMax" point="ResetMaxPt"></ma-get-point-value>
        
        <ma-get-point-value point-xid="Glove1Size" point="Glove1SizePt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove2Size" point="Glove2SizePt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove3Size" point="Glove3SizePt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove4Size" point="Glove4SizePt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove5Size" point="Glove5SizePt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove6Size" point="Glove6SizePt"></ma-get-point-value>
        
        <ma-get-point-value point-xid="Glove1Length" point="Glove1LengthPt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove2Length" point="Glove2LengthPt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove3Length" point="Glove3LengthPt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove4Length" point="Glove4LengthPt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove5Length" point="Glove5LengthPt"></ma-get-point-value>
        <ma-get-point-value point-xid="Glove6Length" point="Glove6LengthPt"></ma-get-point-value>
        
        <ma-get-point-value point-xid="GloveClass" point="GloveClassPt"></ma-get-point-value>
        
        
        <ma-get-point-value point-xid="DP_4ca502c7-00b2-4c0e-abf6-8db6a10bf296" point="Countdown"></ma-get-point-value>
        <ma-get-point-value point-xid="60SecTimer" point="Status"></ma-get-point-value>
        
       
    
    
       <ma-svg ng-include="'/rest/v2/file-stores/default/SVGs/10GlovesMaxOnly.svg'" style="position: absolute; width: 1890px; left: -10px; top: 10px;">
           
        <div ma-selector="#ReadyLED" ng-style="{'fill': Status.renderedValue == 0 ? 'yellowgreen' : 'grey'}"></div>
         <div ma-selector="#TestStartingLED" ng-style="{'fill': Status.renderedValue == 1 ? 'orange' : 'grey'}"></div>
          <div ma-selector="#TestInProgressLED" ng-style="{'fill': Status.renderedValue == 2 ? 'red' : 'grey'}" ng-class="{'ma-throb-opacity': Status.value == 2 }"></div>
           <div ma-selector="#TestCompleteLED" ng-style="{'fill': Status.renderedValue == 3 ? 'yellowgreen' : 'grey'}"></div>
            <div ma-selector="#StartButton" ng-click="Status.setValue(1)" ng-style="{'fill': Status.renderedValue == 0 ? 'yellowgreen' : 'grey'}"></div>
                     <div ma-selector="#TimerText tspan" ng-bind="Countdown.renderedValue" ng-style="{'fill': Status.renderedValue == 2 ? 'yellow' : 'black'}"></div>
             
        
        <div ma-selector="#Current1 tspan" ng-bind="GloveCurrent1Pt.renderedValue"></div>
        <div ma-selector="#Current2 tspan" ng-bind="GloveCurrent2Pt.renderedValue"></div>
        <div ma-selector="#Current3 tspan" ng-bind="GloveCurrent3Pt.renderedValue"></div>
        <div ma-selector="#Current4 tspan" ng-bind="GloveCurrent4Pt.renderedValue"></div>
        <div ma-selector="#Current5 tspan" ng-bind="GloveCurrent5Pt.renderedValue"></div>
        <div ma-selector="#Current6 tspan" ng-bind="GloveCurrent6Pt.renderedValue"></div>
        <div ma-selector="#MaxCurrent1 tspan" ng-bind="GloveMax1Pt.renderedValue"></div>
        <div ma-selector="#MaxCurrent2 tspan" ng-bind="GloveMax2Pt.renderedValue"></div>
        <div ma-selector="#MaxCurrent3 tspan" ng-bind="GloveMax3Pt.renderedValue"></div>
        <div ma-selector="#MaxCurrent4 tspan" ng-bind="GloveMax4Pt.renderedValue"></div>
        <div ma-selector="#MaxCurrent5 tspan" ng-bind="GloveMax5Pt.renderedValue"></div>
        <div ma-selector="#MaxCurrent6 tspan" ng-bind="GloveMax6Pt.renderedValue"></div>
        <div ma-selector="#Voltage tspan" ng-bind="GloveVoltagePt.renderedValue"></div>
       
       <div ma-selector="#ResetButtonAll" ng-click="ResetMax.setValue(2); Status.setValue(0); Glove1LengthPt.setValue('n/a'); Glove2LengthPt.setValue('n/a'); Glove3LengthPt.setValue('n/a'); Glove4LengthPt.setValue('n/a'); Glove5LengthPt.setValue('n/a'); Glove6LengthPt.setValue('n/a'); Glove1SizePt.setValue('n/a'); Glove2SizePt.setValue('n/a'); Glove3SizePt.setValue('n/a'); Glove4SizePt.setValue('n/a'); Glove5SizePt.setValue('n/a'); Glove6SizePt.setValue('n/a'); GloveClassPt.setValue('n/a'); CertificatePt.setValue('n/a'); JobNoPt.setValue('n/a'); CustomerPt.setValue('n/a')" ng-style="{'fill': Status.renderedValue == 3 ? 'yellowgreen' : 'grey'}"></div>
       
       <div ma-selector="#Glove1Size8" ng-click="Glove1SizePt.setValue('8')"></div>
       <div ma-selector="#Glove1Size9" ng-click="Glove1SizePt.setValue('9')"></div>
       <div ma-selector="#Glove1Size10" ng-click="Glove1SizePt.setValue('10')"></div>
       <div ma-selector="#Glove1Size11" ng-click="Glove1SizePt.setValue('11')"></div>
      
       <div ma-selector="#Glove2Size8" ng-click="Glove2SizePt.setValue('8')"></div>
       <div ma-selector="#Glove2Size9" ng-click="Glove2SizePt.setValue('9')"></div>
       <div ma-selector="#Glove2Size10" ng-click="Glove2SizePt.setValue('10')"></div>
       <div ma-selector="#Glove2Size11" ng-click="Glove2SizePt.setValue('11')"></div>
       
        <div ma-selector="#Glove3Size8" ng-click="Glove3SizePt.setValue('8')"></div>
       <div ma-selector="#Glove3Size9" ng-click="Glove3SizePt.setValue('9')"></div>
       <div ma-selector="#Glove3Size10" ng-click="Glove3SizePt.setValue('10')"></div>
       <div ma-selector="#Glove3Size11" ng-click="Glove3SizePt.setValue('11')"></div>
       
        <div ma-selector="#Glove4Size8" ng-click="Glove4SizePt.setValue('8')"></div>
       <div ma-selector="#Glove4Size9" ng-click="Glove4SizePt.setValue('9')"></div>
       <div ma-selector="#Glove4Size10" ng-click="Glove4SizePt.setValue('10')"></div>
       <div ma-selector="#Glove4Size11" ng-click="Glove4SizePt.setValue('11')"></div>
       
        <div ma-selector="#Glove5Size8" ng-click="Glove5SizePt.setValue('8')"></div>
       <div ma-selector="#Glove5Size9" ng-click="Glove5SizePt.setValue('9')"></div>
       <div ma-selector="#Glove5Size10" ng-click="Glove5SizePt.setValue('10')"></div>
       <div ma-selector="#Glove5Size11" ng-click="Glove5SizePt.setValue('11')"></div>
       
        <div ma-selector="#Glove6Size8" ng-click="Glove6SizePt.setValue('8')"></div>
       <div ma-selector="#Glove6Size9" ng-click="Glove6SizePt.setValue('9')"></div>
       <div ma-selector="#Glove6Size10" ng-click="Glove6SizePt.setValue('10')"></div>
       <div ma-selector="#Glove6Size11" ng-click="Glove6SizePt.setValue('11')"></div>
       
       <div ma-selector="#Glove1Length280" ng-click="Glove1LengthPt.setValue('280')"></div>
       <div ma-selector="#Glove1Length360" ng-click="Glove1LengthPt.setValue('360')"></div>
       <div ma-selector="#Glove1Length410" ng-click="Glove1LengthPt.setValue('410')"></div>
       <div ma-selector="#Glove1Length460" ng-click="Glove1LengthPt.setValue('460')"></div>
       
        <div ma-selector="#Glove2Length280" ng-click="Glove2LengthPt.setValue('280')"></div>
       <div ma-selector="#Glove2Length360" ng-click="Glove2LengthPt.setValue('360')"></div>
       <div ma-selector="#Glove2Length410" ng-click="Glove2LengthPt.setValue('410')"></div>
       <div ma-selector="#Glove2Length460" ng-click="Glove2LengthPt.setValue('460')"></div>
       
        <div ma-selector="#Glove3Length280" ng-click="Glove3LengthPt.setValue('280')"></div>
       <div ma-selector="#Glove3Length360" ng-click="Glove3LengthPt.setValue('360')"></div>
       <div ma-selector="#Glove3Length410" ng-click="Glove3LengthPt.setValue('410')"></div>
       <div ma-selector="#Glove3Length460" ng-click="Glove3LengthPt.setValue('460')"></div>
      
       <div ma-selector="#Glove4Length280" ng-click="Glove4LengthPt.setValue('280')"></div>
       <div ma-selector="#Glove4Length360" ng-click="Glove4LengthPt.setValue('360')"></div>
       <div ma-selector="#Glove4Length410" ng-click="Glove4LengthPt.setValue('410')"></div>
       <div ma-selector="#Glove4Length460" ng-click="Glove4LengthPt.setValue('460')"></div>
       
        <div ma-selector="#Glove5Length280" ng-click="Glove5LengthPt.setValue('280')"></div>
       <div ma-selector="#Glove5Length360" ng-click="Glove5LengthPt.setValue('360')"></div>
       <div ma-selector="#Glove5Length410" ng-click="Glove5LengthPt.setValue('410')"></div>
       <div ma-selector="#Glove5Length460" ng-click="Glove5LengthPt.setValue('460')"></div>
      
      
       <div ma-selector="#Glove6Length280" ng-click="Glove6LengthPt.setValue('280')"></div>
       <div ma-selector="#Glove6Length360" ng-click="Glove6LengthPt.setValue('360')"></div>
       <div ma-selector="#Glove6Length410" ng-click="Glove6LengthPt.setValue('410')"></div>
       <div ma-selector="#Glove6Length460" ng-click="Glove6LengthPt.setValue('460')"></div>
       
       <div ma-selector="#GloveClass00" ng-click="GloveClassPt.setValue('00')"></div>
       <div ma-selector="#GloveClass0" ng-click="GloveClassPt.setValue('0')"></div>
       <div ma-selector="#GloveClass1" ng-click="GloveClassPt.setValue('1')"></div>
       <div ma-selector="#GloveClass2" ng-click="GloveClassPt.setValue('2')"></div>
       <div ma-selector="#GloveClass3" ng-click="GloveClassPt.setValue('3')"></div>
       <div ma-selector="#GloveClass4" ng-click="GloveClassPt.setValue('4')"></div>
       
       <div ma-selector="#Glove1Size8LED" ng-style="{'fill': Glove1SizePt.renderedValue == 8 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove1Size9LED" ng-style="{'fill': Glove1SizePt.renderedValue == 9 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove1Size10LED" ng-style="{'fill': Glove1SizePt.renderedValue == 10 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove1Size11LED" ng-style="{'fill': Glove1SizePt.renderedValue == 11 ? 'red' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove2Size8LED" ng-style="{'fill': Glove2SizePt.renderedValue == 8 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove2Size9LED" ng-style="{'fill': Glove2SizePt.renderedValue == 9 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove2Size10LED" ng-style="{'fill': Glove2SizePt.renderedValue == 10 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove2Size11LED" ng-style="{'fill': Glove2SizePt.renderedValue == 11 ? 'red' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove3Size8LED" ng-style="{'fill': Glove3SizePt.renderedValue == 8 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove3Size9LED" ng-style="{'fill': Glove3SizePt.renderedValue == 9 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove3Size10LED" ng-style="{'fill': Glove3SizePt.renderedValue == 10 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove3Size11LED" ng-style="{'fill': Glove3SizePt.renderedValue == 11 ? 'red' : '#6a6a6a'}"></div>
           
        <div ma-selector="#Glove4Size8LED" ng-style="{'fill': Glove4SizePt.renderedValue == 8 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove4Size9LED" ng-style="{'fill': Glove4SizePt.renderedValue == 9 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove4Size10LED" ng-style="{'fill': Glove4SizePt.renderedValue == 10 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove4Size11LED" ng-style="{'fill': Glove4SizePt.renderedValue == 11 ? 'red' : '#6a6a6a'}"></div>
           
        <div ma-selector="#Glove5Size8LED" ng-style="{'fill': Glove5SizePt.renderedValue == 8 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove5Size9LED" ng-style="{'fill': Glove5SizePt.renderedValue == 9 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove5Size10LED" ng-style="{'fill': Glove5SizePt.renderedValue == 10 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove5Size11LED" ng-style="{'fill': Glove5SizePt.renderedValue == 11 ? 'red' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove6Size8LED" ng-style="{'fill': Glove6SizePt.renderedValue == 8 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove6Size9LED" ng-style="{'fill': Glove6SizePt.renderedValue == 9 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove6Size10LED" ng-style="{'fill': Glove6SizePt.renderedValue == 10 ? 'red' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove6Size11LED" ng-style="{'fill': Glove6SizePt.renderedValue == 11 ? 'red' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove1Length280LED" ng-style="{'fill': Glove1LengthPt.renderedValue == 280 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove1Length360LED" ng-style="{'fill': Glove1LengthPt.renderedValue == 360 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove1Length410LED" ng-style="{'fill': Glove1LengthPt.renderedValue == 410 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove1Length460LED" ng-style="{'fill': Glove1LengthPt.renderedValue == 460 ? 'blue' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove2Length280LED" ng-style="{'fill': Glove2LengthPt.renderedValue == 280 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove2Length360LED" ng-style="{'fill': Glove2LengthPt.renderedValue == 360 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove2Length410LED" ng-style="{'fill': Glove2LengthPt.renderedValue == 410 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove2Length460LED" ng-style="{'fill': Glove2LengthPt.renderedValue == 460 ? 'blue' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove3Length280LED" ng-style="{'fill': Glove3LengthPt.renderedValue == 280 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove3Length360LED" ng-style="{'fill': Glove3LengthPt.renderedValue == 360 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove3Length410LED" ng-style="{'fill': Glove3LengthPt.renderedValue == 410 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove3Length460LED" ng-style="{'fill': Glove3LengthPt.renderedValue == 460 ? 'blue' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove4Length280LED" ng-style="{'fill': Glove4LengthPt.renderedValue == 280 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove4Length360LED" ng-style="{'fill': Glove4LengthPt.renderedValue == 360 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove4Length410LED" ng-style="{'fill': Glove4LengthPt.renderedValue == 410 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove4Length460LED" ng-style="{'fill': Glove4LengthPt.renderedValue == 460 ? 'blue' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove5Length280LED" ng-style="{'fill': Glove5LengthPt.renderedValue == 280 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove5Length360LED" ng-style="{'fill': Glove5LengthPt.renderedValue == 360 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove5Length410LED" ng-style="{'fill': Glove5LengthPt.renderedValue == 410 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove5Length460LED" ng-style="{'fill': Glove5LengthPt.renderedValue == 460 ? 'blue' : '#6a6a6a'}"></div>
       
       <div ma-selector="#Glove6Length280LED" ng-style="{'fill': Glove6LengthPt.renderedValue == 280 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove6Length360LED" ng-style="{'fill': Glove6LengthPt.renderedValue == 360 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove6Length410LED" ng-style="{'fill': Glove6LengthPt.renderedValue == 410 ? 'blue' : '#6a6a6a'}"></div>
       <div ma-selector="#Glove6Length460LED" ng-style="{'fill': Glove6LengthPt.renderedValue == 460 ? 'blue' : '#6a6a6a'}"></div>
       
       <div ma-selector="#GloveClass00LED" ng-style="{'fill': GloveClassPt.renderedValue === '00' ? 'yellow' : '#6a6a6a'}"></div>
       <div ma-selector="#GloveClass0LED" ng-style="{'fill': GloveClassPt.renderedValue == '0' ? 'yellow' : '#6a6a6a'}"></div>
       <div ma-selector="#GloveClass1LED" ng-style="{'fill': GloveClassPt.renderedValue == 1 ? 'yellow' : '#6a6a6a'}"></div>
       <div ma-selector="#GloveClass2LED" ng-style="{'fill': GloveClassPt.renderedValue == 2 ? 'yellow' : '#6a6a6a'}"></div>
       <div ma-selector="#GloveClass3LED" ng-style="{'fill': GloveClassPt.renderedValue == 3 ? 'yellow' : '#6a6a6a'}"></div>
       <div ma-selector="#GloveClass4LED" ng-style="{'fill': GloveClassPt.renderedValue == 4 ? 'yellow' : '#6a6a6a'}"></div>
       
       <div ma-selector="#AllGlovesSize8" ng-click="Glove1SizePt.setValue('8'); Glove2SizePt.setValue('8'); Glove3SizePt.setValue('8'); Glove4SizePt.setValue('8'); Glove5SizePt.setValue('8'); Glove6SizePt.setValue('8')"></div>
       <div ma-selector="#AllGlovesSize9" ng-click="Glove1SizePt.setValue('9'); Glove2SizePt.setValue('9'); Glove3SizePt.setValue('9'); Glove4SizePt.setValue('9'); Glove5SizePt.setValue('9'); Glove6SizePt.setValue('9')"></div>
       <div ma-selector="#AllGlovesSize10" ng-click="Glove1SizePt.setValue('10'); Glove2SizePt.setValue('10'); Glove3SizePt.setValue('10'); Glove4SizePt.setValue('10'); Glove5SizePt.setValue('10'); Glove6SizePt.setValue('10')"></div>
       <div ma-selector="#AllGlovesSize11" ng-click="Glove1SizePt.setValue('11'); Glove2SizePt.setValue('11'); Glove3SizePt.setValue('11'); Glove4SizePt.setValue('11'); Glove5SizePt.setValue('11'); Glove6SizePt.setValue('11')"></div>
       
       <div ma-selector="#AllGlovesLength280" ng-click="Glove1LengthPt.setValue('280'); Glove2LengthPt.setValue('280'); Glove3LengthPt.setValue('280'); Glove4LengthPt.setValue('280'); Glove5LengthPt.setValue('280'); Glove6LengthPt.setValue('280')"></div>
       <div ma-selector="#AllGlovesLength360" ng-click="Glove1LengthPt.setValue('360'); Glove2LengthPt.setValue('360'); Glove3LengthPt.setValue('360'); Glove4LengthPt.setValue('360'); Glove5LengthPt.setValue('360'); Glove6LengthPt.setValue('360')"></div>
       <div ma-selector="#AllGlovesLength410" ng-click="Glove1LengthPt.setValue('410'); Glove2LengthPt.setValue('410'); Glove3LengthPt.setValue('410'); Glove4LengthPt.setValue('410'); Glove5LengthPt.setValue('410'); Glove6LengthPt.setValue('410')"></div>
       <div ma-selector="#AllGlovesLength460" ng-click="Glove1LengthPt.setValue('460'); Glove2LengthPt.setValue('460'); Glove3LengthPt.setValue('460'); Glove4LengthPt.setValue('460'); Glove5LengthPt.setValue('460'); Glove6LengthPt.setValue('460')"></div>
       
     </ma-svg>

  • @robmalone said in Dashboard losing connectivity:

    <ma-point-values point-xid="Max1" values="point1Values" latest="120"></ma-point-values>
    <ma-point-values point-xid="Max2" values="point2Values" latest="120"></ma-point-values>
    <ma-point-values point-xid="Max3" values="point3Values" latest="120"></ma-point-values>
    <ma-point-values point-xid="Max4" values="point4Values" latest="120"></ma-point-values>
    <ma-point-values point-xid="Max5" values="point5Values" latest="120"></ma-point-values>
    <ma-point-values point-xid="Max6" values="point6Values" latest="120"></ma-point-values>
    <ma-point-values point-xid="Voltage" values="Point7Values" latest="120"></ma-point-values>

    <ma-serial-chart style="position: absolute; width: 1860px; height: 300px; left: 5px; top: 660px; border-color: rgb(76, 76, 76); border-width: medium; border-style: groove; border-radius: 30px; background-color: rgba(153, 153, 153, 0.38);" series-1-values="point1Values" series-1-title="Glove 1 Leakage (mA)" series-1-point="Max1" series-2-values="point2Values" series-2-title="Glove 2 Leakage (mA)" series-2-point="Max2" series-3-values="point3Values" series-3-title="Glove 3 Leakage (mA)" series-3-point="Max3" series-4-values="point4Values" series-4-title="Glove 4 Leakage (mA)" series-4-point="Max4" series-5-values="point5Values" series-5-title="Glove 5 Leakage (mA)" series-5-point="Max5" series-6-values="point6Values" series-6-title="Glove 6 Leakage (mA)" series-6-point="Max6" series-7-values="point7Values" series-7-title="Voltage" series-7-point="GloveVoltage" series-7-axis="right" legend="true" balloon="true" export="false">
    </ma-serial-chart>
    <ma-button id="148f1a11-d62b-4986-ab91-4ceb88cd52c8" style="position: absolute; left: 1307px; top: 39px; z-index: 1;" raised="true" ui-sref="ui.glovesQrg" label="Help" palette="accent" hue="hue-1"></ma-button>

    <ma-watch-list-get ng-model="designer.watchList" parameters="designer.parameters" on-points-change="designer.points = $points" id="863b7145-de54-4cd7-9f5d-cb27f93d3abe" watch-list-xid="WL_830d5487-4191-47d7-894c-85c6f3371968"></ma-watch-list-get>

    <ma-set-point-value id="e7f24aed-8b6b-461f-96df-d5d5e855a375" style="position: absolute; left: 140px; width: 318px; height: 30px; z-index: 5; font-size: 25px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); top: 153px; background-size: cover; background-repeat: no-repeat; background-position: center center; border-radius: 10px; border-width: thin; border-color: rgb(178, 178, 178); border-style: groove; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" point="designer.points | filter:{name:'Glove1SNPt'}:true | maFirst" point-xid="Glove1SNPt" label="Serial No.:"></ma-set-point-value>
    <ma-set-point-value id="279c1002-ac83-4bc4-ac1d-c820822b97c2" style="position: absolute; left: 660px; top: 153px; width: 318px; height: 30px; z-index: 6; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-width: thin; border-style: groove; border-radius: 10px; border-color: rgb(178, 178, 178); font-weight: bold; padding-left: 2px; padding-bottom: 4px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove3SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
    <ma-set-point-value id="17f2a32f-b141-4f75-a85c-91c09e518103" style="position: absolute; left: 1185px; top: 153px; z-index: 4; width: 318px; height: 30px; font-size: 25px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); border-color: rgb(178, 178, 178); border-width: thin; border-style: groove; border-radius: 10px; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove5SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
    <ma-set-point-value id="e179f987-85b8-42d1-9bf8-44b89f32ad61" style="position: absolute; left: 141px; top: 305px; z-index: 6; width: 318px; height: 30px; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-width: thin; border-style: groove; border-radius: 10px; border-color: rgb(178, 178, 178); font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove2SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
    <ma-set-point-value id="14f75f75-919f-4471-9082-77635d36b49c" style="position: absolute; left: 660px; top: 304px; z-index: 3; width: 318px; height: 30px; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-color: rgb(178, 178, 178); border-width: thin; border-style: groove; border-radius: 10px; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove4SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
    <ma-set-point-value id="2996ff30-acf5-4d87-88b9-b38c8c20cc3a" style="position: absolute; left: 1185px; top: 304px; z-index: 5; width: 311px; height: 30px; font-size: 25px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); border-color: rgb(178, 178, 178); border-width: thin; border-style: groove; border-radius: 10px; font-weight: bold; padding-bottom: 4px; padding-left: 2px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'Glove6SNPt'}:true | maFirst" label="Serial No.:"></ma-set-point-value>
    <ma-set-point-value id="47fab070-dc11-48cc-aa1d-6b5081a50910" style="position: absolute; left: 1450px; top: 16px; width: 400px; z-index: 3; height: 30px; color: rgb(1, 1, 1); font-size: 22px; background-color: rgb(255, 255, 255); text-align: center; font-weight: bold; border-width: thin; border-style: groove; border-radius: 10px; padding-left: 5px; padding-bottom: 6px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'CustomerPt'}:true | maFirst" label="Customer:"></ma-set-point-value>
    <ma-set-point-value id="0564cc38-1eeb-4e16-91ac-4d6ed118abc8" style="position: absolute; left: 1450px; top: 52px; width: 400px; z-index: 3; color: rgb(1, 1, 1); font-size: 22px; background-color: rgb(255, 255, 255); height: 30px; font-weight: bold; border-width: thin; border-style: groove; border-radius: 10px; padding-left: 5px; padding-bottom: 6px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'CertificatePt'}:true | maFirst" label="Certificate No.:"></ma-set-point-value>
    <ma-set-point-value id="9cbc487e-39d6-47e3-9db3-7c86466dcd5a" style="position: absolute; left: 1449.75px; top: 89px; width: 400px; z-index: 2; color: rgb(1, 1, 1); font-size: 22px; background-color: rgb(255, 255, 255); height: 30px; font-weight: bold; border-width: thin; border-style: groove; border-radius: 10px; padding-left: 5px; padding-bottom: 6px;" show-button="false" set-on-change="true" enable-popup="hide" point="designer.points | filter:{name:'JobNoPt'}:true | maFirst" label="Job No.:"></ma-set-point-value>
    <ma-excel-report-run id="e34a5734-d780-46e2-98af-d40415dd0504" style="position: absolute; left: 1332px; top: 580px; z-index: 2;" xid="XLST_91c2e8db-e4dc-4390-bc2c-1ffe4f3d6ffc" button-text="Run Report"></ma-excel-report-run>
    
    
    <ma-get-point-value point-xid="Max1" point="GloveMax1Pt"></ma-get-point-value>
    <ma-get-point-value point-xid="Max2" point="GloveMax2Pt"></ma-get-point-value>
    <ma-get-point-value point-xid="Max3" point="GloveMax3Pt"></ma-get-point-value>
    <ma-get-point-value point-xid="Max4" point="GloveMax4Pt"></ma-get-point-value>
    <ma-get-point-value point-xid="Max5" point="GloveMax5Pt"></ma-get-point-value>
    <ma-get-point-value point-xid="Max6" point="GloveMax6Pt"></ma-get-point-value>
    
    <ma-get-point-value point-xid="Voltage" point="GloveVoltagePt"></ma-get-point-value>
    
    <ma-get-point-value point-xid="ResetMax" point="ResetMaxPt"></ma-get-point-value>
    
    <ma-get-point-value point-xid="Glove1Size" point="Glove1SizePt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove2Size" point="Glove2SizePt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove3Size" point="Glove3SizePt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove4Size" point="Glove4SizePt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove5Size" point="Glove5SizePt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove6Size" point="Glove6SizePt"></ma-get-point-value>
    
    <ma-get-point-value point-xid="Glove1Length" point="Glove1LengthPt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove2Length" point="Glove2LengthPt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove3Length" point="Glove3LengthPt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove4Length" point="Glove4LengthPt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove5Length" point="Glove5LengthPt"></ma-get-point-value>
    <ma-get-point-value point-xid="Glove6Length" point="Glove6LengthPt"></ma-get-point-value>
    
    <ma-get-point-value point-xid="GloveClass" point="GloveClassPt"></ma-get-point-value>
    
    
    <ma-get-point-value point-xid="DP_4ca502c7-00b2-4c0e-abf6-8db6a10bf296" point="Countdown"></ma-get-point-value>
    <ma-get-point-value point-xid="60SecTimer" point="Status"></ma-get-point-value>
    

    Holy heck, no wonder you're having problems. Ok let me explain. For each ma-point-values and ma-get-point-value, your dashboard makes a query to the api.
    If all of your values are updating every minute, that means you're making
    30 datapoint value queries all in one go. Also this means whenever you manually set a value, this will also cause a ripple effect with any other points tied to it making another query as the point-values also use a socket connection.
    Next, your ma-get-point-value doesn't use points, but the xids. This means each one will do an api query to get the datapoint information on page load for each individual one...

    My idea? Use a datapoint query - use the watchlist builder to help you model your rql query then apply that. You should be able to pull all of the points you want in one go. Then still add all said points into a ma-point-values with a latest="1"
    This reduces your two dozen queries to two.
    I think the same should be applied to your first ma-point-values so that only one query is made to pull all 120 points through for each datapoint.

    Ok so for your first query:

    <ma-point-query query="'or(like(xid,Max*),eq(xid,Voltage))&sort(xid)'" points="maxes"></ma-point-query> 
    

    Then you can make your ma-point-values work as above:

    <ma-point-values points="maxes" values="maxesValues" latest="120"></ma-point-values>
    

    Use {{maxes}} and {{maxesValues}} to view on your dashboard. You can view individual points themselves with {{maxes[0]}} so you can use this below combined with a ng-repeat to loop through and filter by name or xid value. Secondly, since you know for a fact you're always pulling 120 values you don't need to double up with

        <ma-get-point-value point-xid="Max1" point="GloveMax1Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max2" point="GloveMax2Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max3" point="GloveMax3Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max4" point="GloveMax4Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max5" point="GloveMax5Pt"></ma-get-point-value>
        <ma-get-point-value point-xid="Max6" point="GloveMax6Pt"></ma-get-point-value>
        
        <ma-get-point-value point-xid="Voltage" point="GloveVoltagePt"></ma-get-point-value>    
    

    You're already pulling these values above. Next by using that rql query you're removing the doubling up of the same datapoint query to get the datapoint info! If you want to display just the latest value just do this:

    maxesValues['Max1'][0]
    

    As the first value in the array will be the latest value when you use the latest attribute. So get rid of the ma-get-point-values.
    Next Query:

    <ma-point-query query="'or(like(xid,Glove*))&sort(xid)'" points="gloves"></ma-point-query>  <!-- pulls through all of your glove named points -->
    

    Have a play with this and see what you find!

    Fox

    EDIT: amended

    <ma-point-query query="'or(eq(like,Max*),eq(xid,Voltage))&sort(xid)'" points="maxes"></ma-point-query> 
    

    to

    <ma-point-query query="'or(like(xid,Max*),eq(xid,Voltage))&sort(xid)'" points="maxes"></ma-point-query>
    

  • Yep - total noob! Thanks for the pointers.
    So I got the serial chart going RQL query and the page is already working better but I cant seem to get my correct values on the SVG Graphic.
    What do I use where I have -
    <div ma-selector="#MaxCurrent1 tspan" ng-bind="**GloveMax1Pt.renderedValue**"></div>

    I tried <div ma-selector="#MaxCurrent1 tspan" ng-bind="{{maxes[0]}}.renderedValue"></div> but it only gives me a value of zero?


  • @robmalone said in Dashboard losing connectivity:

    {{maxes[0]}}.renderedValue"></div>

    Is that a misstype?
    Should be

    <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxes[0].renderedValue"></div> 
    

    since it's an angular attribute.

    Secondly if you want to use renderedValue, make sure you use the attribute on ma-point-values rendered="true"


  • @mattfox I'm still having a problem getting the values to display in the SVG. I have used the line you suggested but no values are displayed.
    <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxes[0].renderedValue"></div>

    I have also tried value instead of rendered value to test but no difference. Any Ideas?
    Thanks.


  • Take a step back and see of you're even getting the values you want. print out into the markup {{maxes}} first and then we can break it down into bits. Secondly I think I lost you, you need to use {{maxesValues}} for the values. {{maxes}} are your points!

    EDIT: Apologies, I found an error in my RQL query for getting the maxes, I've amended it above for you
    Fox


  • Sorry @MattFox now I an confused.
    If I use <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxes[0].value"></div> I get nothing
    If I use <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxes[0].renderedValue"></div> I also get nothing.
    If I use <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxes[0]"></div> I also get a string of data with all of the tags etc but no current value.
    If I use <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxesValues[0]"></div> I also get a string of data but this time with all max values.

    So I take it I use the last one above and filter it somehow to only show the relevant dp value? I thought [0], [1], [2].......was doing that?


  • Hi Rob

    I think I know what is going on just diving in here so im not 100% sure.

    <ma-point-query query="'or(like(xid,Max*),eq(xid,Voltage))&sort(xid)'" points="maxes"></ma-point-query>
    

    Will give you an array of data point objects but it does not open up any WebSockets to the server that gives you the live value.
    use

    <ma-get-point-value point="maxes[0]"></ma-get-point-value>
    <div ma-selector="#MaxCurrent1 tspan" ng-bind="maxes[0].renderedValue"></div>
    

    To add the WebSocket to that points object.


  • Thanks Craig, that did the trick. So I removed all of them previously thinking the I could pull live values too.
    Just curious, is there any benefit to doing it this way (using the point query) if i need to open up WebSockets for the live values anyway?


  • The benefit of using the query is that you are not hard coding the XiDs so you will receive all points that match the query. In your situation probably no real benefit but when you need the page to be dynamic it helps.