• MattFox

    No, you'll have to make your own watchlist page. But since it's made up of a lot of core elements without much code, you could replicate it yourself. You'd have to replace <ma-watch-list-chart> with your own ma-serial-chart and apply similar parameters plus the changes you want though.

    Depends if the want outweighs the need. I'd argue this isn't much of an issue rather than being a means to display watchlist values. If you want something more specific you're going to need to leverage the dashboard designer or implement some custom code.

    That's my take on it.

    EDIT: I've read the components section under api help. There is an additional option to set options for the ma-watch-list-chart:

    ui/docs/ng-mango/ma-watch-list-chart
    options
    (optional)
    object	
    extend AmCharts configuration object for customizing design of the chart (see amCharts)
    

    So it was pulled out for you to amend. Basically means you can make custom watchlist pages with the designer. No problems whatsoever.

    Fox

    posted in User help read more
  • MattFox

    You need to set a valueAxes option:

    autoGridCount:false
    

    If autoGridCount is not set to false it ignores your preferred grid count setting.

    So under options you'll need:

    options="{valueAxes:[{autoGridCount:false},{autoGridCount:false}]
    

    Depending on the number of axes you're using.

    Hope that solves your conundrum

    Fox

    posted in User help read more
  • MattFox

    @terrypacker said in java.nio.file.NoSuchFileException: /mysql/datadir:

    I would be interested to find out if there is a configuration problem here or if Mango could be doing something better.

    Can you confirm:

    1. You are using MySQL
    2. The results of this query on that MySQL instance: select @@DATADIR
    3. The version of MySQL
    4. That /mysql/datadir does exist
    5. That the user running Mango has read access to /mysql/datadir

    Then I can provide more specific help I think.

    1. Yes, 5.7.25 on a separate dedicated mysql server
    2. SELECT @@DATADIR
      /mysql/datadir/
    3. as above 5.7.25
    4. There is no /mysql/datadir
    5. err looks like mango is running as root...

    posted in Mango feedback read more
  • MattFox

    Noted thanks. Is there anything I can put into the config so I'm not getting this error cropping up and throwing me off??

    Fox

    posted in Mango feedback read more
  • MattFox

    Trying to do a restore nosql db complete backup. ver 3.7.7
    And mango crashes and I receive this error:

    ERROR 2020-07-31T00:36:41,201 (com.infiniteautomation.mango.spring.components.DiskUsageMonitoringService.doPoll:159) - Unable to get Filestore partition usage
    java.nio.file.NoSuchFileException: /mysql/datadir
            at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86) ~[?:1.8.0_171]
            at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:1.8.0_171]
            at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:1.8.0_171]
            at sun.nio.fs.UnixFileStore.devFor(UnixFileStore.java:57) ~[?:1.8.0_171]
            at sun.nio.fs.UnixFileStore.<init>(UnixFileStore.java:64) ~[?:1.8.0_171]
            at sun.nio.fs.LinuxFileStore.<init>(LinuxFileStore.java:44) ~[?:1.8.0_171]
            at sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:51) ~[?:1.8.0_171]
            at sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:39) ~[?:1.8.0_171]
            at sun.nio.fs.UnixFileSystemProvider.getFileStore(UnixFileSystemProvider.java:368) ~[?:1.8.0_171]
            at java.nio.file.Files.getFileStore(Files.java:1461) ~[?:1.8.0_171]
            at com.infiniteautomation.mango.spring.components.DiskUsageMonitoringService.doPoll(DiskUsageMonitoringService.java:155) ~[mango-3.7.7.jar:?]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_171]
            at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_171]
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_171]
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_171]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171]
            at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
    
    

    EDIT: I realised I had accidentally clicked the incremental restore button. Don't know if that caused it but it may have something to do with trying to move 5GB of compressed NoSQL data...

    Fox

    posted in Mango feedback read more
  • MattFox

    https://forum.infiniteautomation.com/topic/4883/events-table-for-a-specific-data-source/2

    Do some forum searching please.

    replace pt.activeEvents with pt.value

    Also, this post.shows.you how to iterate through point values...
    https://forum.infiniteautomation.com/topic/4843/dashboard-losing-connectivity

    posted in How-To read more
  • MattFox

    No worries, it might involve CSS to hide unwanted elements.
    Alternatively...
    perhaps hacking Jared's events viewer code to display a truncated version of this might be beneficial...
    I'll consider it since it might be beneficial for my dashboard also....

    Fox

    posted in How-To read more
  • MattFox

    Ah I see.. looks like this has changed a bit since I've last commented on that thread..
    Sorry about that!
    Let's use the events table component... I have no idea how well this will sit in amongst the table I provided! Some styling may be in order...
    In fact... you may be able to replace my table tds in entirety with just one <td></td> and plonk this in the middle!

    <ma-events-table single-point="true" point-id="pt.id" limit="5" active-status="'active'"></ma-events-table>
    

    Use that in place of the ma-get-point-values, it's all written in the components api information in the dashboard menu.

    /ui/docs/ng-mango/ma-events-table
    

    posted in How-To read more
  • MattFox

    Looks like because there are no current active events, hence why it's empty. You have actually set up events for these individual points haven't you?

    posted in How-To read more
  • MattFox

    Get rid of the [] around your datasource XID for a start -it needs to be the exact same as your datasource XID.
    2, if still nothing, write into the dashboard designer on the edit view: {{eventPoints}}

    posted in How-To read more
  • MattFox

    This is really basic but:

    <ma-point-query query="'eq(dataSourceXid,[DATASOURCE_XID])&sort(deviceName,name)&limit(200)'" points="eventPoints"></ma-point-query>
    <md-table-container>
             <table md-table>
    <thead md-head >
                  <tr md-row>
                    <th md-column><span>Device name</span></th>
                    <th md-column><span>Point name</span></th>
                    <th md-column><span>Active Events</span></th>
                  </tr>
                </thead>
    <tbody>
    <tr ng-repeat="pt in eventPoints">
    <td> {{pt.deviceName}} </td><td> {{pt.name}} </td><td><ma-get-point-value point="pt"></ma-get-point-value>  {{pt.activeEvents}} </td>
    
    </tr>
    </tbody>
    </table>
    </md-table-container>
    

    Am doing this off the top of my head here so not 100% sure it'll work as I haven't tested it...

    Fox

    posted in How-To read more
  • MattFox

    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

    posted in User help read more
  • MattFox

    although might actually currently be a timeout in the network, as it's on the top of a mountain in NZ. at the end of a Mimomax link :/
    I do believe it's snowing up there currently..

    @dan Sounds like I need to make a roadtrip! Haha

    posted in User help read more
  • MattFox

    I think your answer is right here craig, something is amiss with how I did it, but looking at it now, I think we're all starting to break the back of it.

    posted in User help read more
  • MattFox

    It's greyed out and disabled.

    posted in User help read more
  • MattFox

    Ok, so I can understand using 166774 gives you 0x00028b76, basically just bit shifts the entire thing in. And that by using a holding register implicitly puts a 4 in the front so only 104 is needed... But if the manual states you need a control key into 8 and its 1's complement into register 9, shouldn't it be 0x8B768B76 = 2339801974 DEC?

    Fox

    posted in User help read more
  • MattFox

    You're welcome, sorry for the lack of comments. Let me know if there's anything you don't understand after comparing it with the angularJS docs

    Fox

    posted in User help read more
  • MattFox

    Ok, I'm gonna be clever...

    <md-select ng-model="serialID" ng-required="true" >
    <md-option ng-repeat="(index,serial) in serials" ng-value="index" > {{serial.value}} </md-option>
    </md-select>
    
    <div ng-if="serialID==(serials.length-1)">
    <ma-now update-interval="15 MINUTES" output="time"></ma-now>
    <ma-point-values point-xid="DP_bf4e8b98-ff25-439c-a63e-4af21bc92902" point="point1" values="point1Values" from="serials[serialID].timestamp" to="time" ></ma-point-values>
    </div>
    
    <div ng-if="serialID<(serials.length-1)">
    <ma-point-values point-xid="DP_bf4e8b98-ff25-439c-a63e-4af21bc92902" point="point1" values="point1Values" from="serials[serialID].timestamp" to="serials[(serialID+1)].timestamp" ></ma-point-values>
    
    </div>
    

    Using Ng-if will create these elements provided one of the if statements are met. Using the index allows us to make this list grow wholly depending on the number of your serials. If you're on the last serial, it sees we're using the last index and thus uses a ma-now directive to give us the browser time from the serial creation time!

    Fox

    posted in User help read more
  • MattFox

    @ronnyhinkel said in Dropdown selection for datapoint values:

    ng-change="callOnChange()"

    ng-change="callOnChange()"
    Are you writing your own controller?

    posted in User help read more