Hi there, I'm struggling to get this to work and I'm hoping you guys can give me some ideas about what could be possible.
I want to have a workspace which contains an alarm console card, and a card showing a webpage. When the user interacts with alarms in the console, I want to modify the URL of the displayed webpage in the other card. The webpage in question is a dashboard from a separate system, and I'm hoping to bring it together with Dataminer alarms in a single workspace.
My current thinking is:
- Display a custom element in the second card, which shows a Visio diagram
- Visio has a shape to display a webpage using data fields:
- Stretch = Fill
- Link = #<URL prefix goes here>[param:*,1]
- Options = DisposeWebBrowserWhenNotSelectedPage=false|SingleSignOn
- User can execute an automation script from the right-click menu of the alarm added using hyperlinks.xml
- Parameter 1 of the custom element can then be set by the automation script to change the URL of the webpage
This doesn't work quite right though unfortunately, as every time the parameter value changes the webpage session is reset despite my best efforts in the Options shape data field. This is an issue because the displayed webpage requires user authentication, and resetting the session means they need to log-in again every time the URL changes (combined with 2FA this is a pain!). Unless I'm mistaken, it looks like the docs suggest that this no longer happens in DataMiner 10.3.6/10.4.0, but alas I am using the 10.3.0CU2 Main Release currently.
Is there a better way of achieving my goal of having the user modify the URL from the alarm console, preferably one that doesn't require me to upgrade? I am interested to hear your thoughts on this, and hoping that there is a much easier way to do this that I am missing! Thanks in advance for your help.
Hi Sean,
The webbrowser control in Visio will be reinitialized whenever the URI changes in the Link shape data, similar to opening a new tab in a browser. The note in the docs as you have found will preserve the browser instance but only when the clientside (fragment) part of a URI changes, e.g. going from https://server/path?query#fragment to https://server/path?query#abcde.
The option DisposeWebBrowserWhenNotSelectedPage=false will only have an effect when you navigate around within the same card. What I believe you want is a new feature DisposeWebBrowserWhenURIChanges=false where the browser instance is always preserved.
If you have control over the website that is displayed, there are some options to consider with the current software:
- Use cookies or the Local Storage as a way to keep a user authenticated. It is only the Session Storage that will be lost between URI changes. If you currently use basic/digest/negotiate authentication, that would need to be delegated into a separate service (quite some work).
- Forward the necessary information in the fragment part of the URI, and process it in javascript as a change in document.location. Note that using Cube 10.3.6 while on the 10.3.0 main release server is supported and will automatically happen if the client has internet connectivity. So even if you request this as a new feature and it later gets implemented in e.g. 10.3.12 or 10.4.2, you can use that latest Cube without needing to upgrade the servers.
Hi Bert, thanks for your quick and thorough response on this. Since we do have control over the website that is displayed, we are considering the solutions you proposed and already have started building some proof-of-concept models.
However I have managed to get slightly closer to my goal without the need of modifying the webpage – which is by using the element’s web interface in the Display tag in the protocol:
Display defaultPage=”Web Interface” pageOrder=”Web Interface#https://[Polling Ip]/;”
Once the user is authenticated on the “Web Interface” element page, the browser sessions in the Visio then keeps them logged in despite changes to the URI. So I have one more question: is there a way to have the user authenticate on that webinterface and then be redirected to the Visio of the element somehow? Maybe there is a way to display the webinterface element page on the visio or something like that? Thanks again for your help.