Modern Dashboard - User Links

Miss the widget "User Links" from classic dashboards? I did so tried to create something in modern. 

Here we create a table from some datasource that we know the values are static in, a system table, and change the output values. Configure the widgets one and only column as "Format=Link".

If you want the same links on several modern dashboards the same widget can be created once and added several times, linked to the original one.

Anonymous
  • And just as an FYI, I removed the comments and ORDER BY when I put it into the dashboard widget. I left them in above in hopes of someone smarter than me seeing what I did, and how I was looking at it, and correcting my mishaps and making my query better.

  • It's a shame some of these little things didn't get accounted for in the new modern dashboards. I also started rebuilding many of our views into the new dashboards but had run into several little annoyances such as this one.

    I'm sure I've overworked the SWQL here, so there's likely a much easier way to pull the info, but this SWQL query should get you a solid list of everything currently in those user link widgets.

    SELECT DISTINCT
    rp.ResourceID
    --,rp.PropertyName
    --,rp.PropertyValue
    --,rp2.PropertyName
    ,rp2.PropertyValue
    --,rp3.PropertyName
    ,rp3.PropertyValue
    --,rp.DisplayName
    --,rp.Description
    --,rp.InstanceType
    --,rp.Uri
    --,rp.InstanceSiteId
    ,SUBSTRING(rp2.PropertyName,1,4) AS PropertyType
    ,SUBSTRING(rp2.PropertyName,5,2) AS LinkNumber
    ,SUBSTRING(rp3.PropertyName,1,3) AS PropertyType2
    ,SUBSTRING(rp3.PropertyName,4,2) AS UrlNumber
    
    FROM Orion.ResourceProperties AS rp
    
    JOIN (SELECT ResourceID FROM Orion.Resources WHERE ResourceFile IN ('/Orion/NetPerfMon/Resources/Misc/UserLinks.ascx')) AS r ON rp.ResourceID=r.ResourceID
    JOIN (SELECT DISTINCT ResourceID, PropertyName, PropertyValue FROM Orion.ResourceProperties WHERE PropertyName LIKE '%link%') AS rp2 ON rp.ResourceID=rp2.ResourceID AND rp.PropertyName=rp2.PropertyName
    JOIN (SELECT DISTINCT ResourceID, PropertyName, PropertyValue FROM Orion.ResourceProperties WHERE PropertyName LIKE '%url%') AS rp3 ON rp.ResourceID=rp3.ResourceID-- AND rp2.PropertyName=rp.PropertyName
    
    WHERE (rp.ResourceID = rp2.ResourceID AND rp.ResourceID=rp3.ResourceID)
    AND (SUBSTRING(rp2.PropertyName,5,2) = SUBSTRING(rp3.PropertyName,4,2))
    AND (rp2.PropertyValue IS NOT NULL AND rp3.PropertyValue IS NOT NULL)
    AND (rp2.PropertyValue != '' AND rp3.PropertyValue != '')
    
    ORDER BY rp.ResourceID,LinkNumber--rp2.PropertyName--,rp3.PropertyName

    I'm sure, perhaps with a bit of clever naming, you could build a view full of user link widgets, and use that as a sort of front end to maintain your links. Then use the dashboard widget you have above and pull in what you'd like to display. (maybe add a fixed length prefix/code to the name of the link, then substring it off into a tag... or something like that, to make it easier to group into the dashboard results.)

    Anyway, I like your idea here, and appreciate you sharing your work too.

    Thank you,

    -Will