I recognize this would not be a simple change, but perhaps the answer would be not to search the OPC server itself, but to search a cache of the information contained within the opc server. Then when a tag is selected, it can retrieve the actual OPC tag.
You could also limit the search to only be enabled after an OPC device connection has been selected.
Fuzzy search for OPC isn't possible, you can only fuzzy search if you had the entire address space in memory to search in. OPC browsing is live and dynamic.
Any search would require first doing a recursive browse of the tree you wish to search in. Basically a non-starter.
This doesn't really belong here... but at least while the session.custom props disappearing act bug is still around, I've also added a tool to backup the session.custom props (note: not the session.props) up from the file on the gateway (10 backups total), detect if the file has lost its props and flash a toolbar icon if so, and allow you to select the backup to restore and restore it. It's a bit hard to share at the moment as it's using functions from a few other libraries part of a larger collection... but here it is in action!
One thing I was reminded of today when exporting some resources to send to the exchange was that it would be nice if the resources would be in structured folders instead of a long list of items under each module. It would make selecting a lot of resources in a folder easier as I could just select the folder rather than clicking each individual resource. Plus it would clean up the list (this may be fixed in 8.3 but we haven't moved to 8.3 yet pending some CirrusLink ABB drivers.)
Hey @nminchin . With all of the integrations to the designer you have figured out, is there a way you can create custom keyboard shortcuts? One QOL I have wanted for a long time is the ability to assign keyboard shortcuts to things like the alignment buttons at the top of the toolbar (center, align top, align bottom, etc). Do you think that is even possible and if you have done something like that could you point me in the right direction? Thanks!
A qol feature I would like is a collapse/expand (all/region/current) for every tree-like interface in the Designer. ie. Perspective Views, Styles, Named Queries etc.
My main use case is for Perspective Views, it would save me lots of time instead of drilling down with double-clicks.
The project scripts and script console offers the same concept with fold/unfold.
If this was ever implemented, I would kindly ask for the same feature with Perspective properties (I'm sure you could all agree on this one?).
very nice. Just got bit by the missing session.custom stuff 2x last week.. If it was just props it wouldn't be to bad.. but i've got bindings on most..
An initialization script that inhibits the introduction of any new GUI blocking tag expressions
With this patch in place, the ok button on the expression binding editor will become disabled and display a warning icon with a helpful tool tip message if an inexperienced developer attempts to introduce a tag expression anywhere other than an expression tag:
This approach is backward compatible because it prevents the creation of new tag expression bindings without affecting the existing ones. It also does not restrict the use of tag expressions within expression tags.
To automatically add this patch when the designer is first opened, use a dateTime Vision client tag that has its value bound to the expression now(0) and simply call the setBindingEditorPatch() library script on value change.
Edits:
• Simplified tool tip text
• Made detection more robust ~ switching from a key adapter to a document listener and capturing the ok button action event
• Added lightweight dialog popup that occurs if an unpermitted ok button click occurs
• Improved visualizations by keeping the okay button enabled and by reevaluating the warning label when on binding configurator change
• Replaced incomplete and obsolete script with a link to the current version that is now available on The Exchange
Your tooltip isn't quite right. tag()does make a subscription to the target like an indirect binding, and is not making a conventional blocking read. The problem is that expressions have to deliver a result every time, and tag() stalls for up to 1000ms trying to get that first subscription result when the expression runs the first time. In a UI, especially a Vision UI, lots of tag() expressions yields pathological expression startup stalls.
tag() also pays a slight penalty on every value change to re-execute whatever tag-path generating expression is used. Indirect tag bindings decouple the indirection from the value delivery.
Expression tags don't really suffer from the tag() startup stall because they are in the tag subsystem.
Perhaps:
They improve performance by decoupling tag target determination from value delivery, while avoiding pathological expression startup UI stalls.
Automatically jumps your project browser selection including expanding folders to whatever view/script/query/etc you have open in the current workspace.
Would be nice to have an updated database query browser that allows a different database connection per tab and doesn't clear out the contents of the tab when switching connections.
There should already be an existing ticket from a decade ago.
Another QOL thing I'd like to see is the multi instance wizard not automatically closing after you create tags. There's many times I need to create related tags of 2 different UDTs that will use the same patterns as the first set of tags but maybe with a different suffix or prefix. I have to re-open the wizard and re-enter everything again instead of just picking the next UDT and making my small name change.
When you have some views opened in the designer, and the ressources tree is collapsed and you need to search for your view to be abe to select some components of it.
It will be awesome if we could right click on view tab to re-open the ressouce tree on the selected view.
I haven't used this basically ever since I discovered early on that it wasn't efficient for UDT instances with nested UDT instances. Normally I set the nested UDT instance parameters to inherit or partially inherit param values from the main parent, but if you didn't supply every nested udt instance param values, they would just get written to blanks... This was back in v7.9.5 so I don't know if this has changed since, but maybe this is a QOL improvement as well to fix this if not