BAS Briefing
Efficient PX Graphics in Niagara
Introduction
In my position, I often end up replacing or finishing PX graphics made by other contractors. While style is certainly subjective, there are almost always some very large mistakes I see being made in regards to the scalability/reusability of these graphics, specifically. PX files end up commonly copied/pasted just to use absolute ords on each binding, opportunities for reusable includes are missed, and as a result of the amount of manual work being done, there are even constant misspellings and typos. There are a large number of best practices and efficient tricks to creating and maintaining graphics more easily within Niagara, and we’re going to go over some of the most useful ones today!
Requirements
PX graphics are very adaptable, and you can make them fit to any station. However, everything I’ll say in this guide will be working with a few assumptions in regards to your station. The biggest, and most important, is that you have consistent point naming. Re-using any PX files will require that each device of a similar type has the same point names for the same data, for example, HTG_O for your heating valve actuator command, SF_C for your supply fan command. If your data model isn’t consistent, scalability becomes a major problem, for far more than just PX graphics.
It’s also important to keep a consistent file structure. This is easier to work around than inconsistent naming, but if one AHU has all points directly under the device’s “points” folder, and another has subfolders under “points” for “outputs”, “inputs”, and “setpoints”, that inconsistency will also cause problems. Similarly to point naming, this can also limit you in other ways, such as making you unable to filter a BQL query with something like “where parent.parent.name like ‘AHU*‘“.
Ord Relativization
To start, let’s take a look at our station. To keep things simple and quick, all we have are some reheat coils, with Zone Temp, Zone Temp Setpoint, and Heating Valve Output, with each coil in its own folder. We also have a Discharge Air Temp Sensor in some reheats, but not all. Below is a screenshot of our station:
Most commonly, when someone is new to Niagara, I see them binding ords in PX files by just copying the absolute ord (station:|slot:/TravisLogic/DemoReheats/RHC_1/ZN_T, in this case) and pasting it into the binding. They then do all linking to direct PX files in the file tree of the station. This, however, is incredibly inefficient. Niagara allows you to tie PX graphics to folders directly, and in doing so, provides several tricks to re-use files. To start, we want to right click one of our device folders (RHC_1, to start) and choose “new view”. This gives the following UI:
You point to an existing file in the Source→Px File option, but you can also point to one that doesn’t exist, and Niagara will create a blank graphic for you to work with. After this view is added, the default view of this folder will no longer be property sheet, but our graphic. First, lets set up our Zone Temp binding! This should mostly be familiar, but here, we’re going to use a relativized ord. If you bind to “slot:” on a PX graphic, it is functionally identical to binding directly to the folder we are viewing. Continuing to build out our ord from here will specify slots under the current folder. Below is our configuration for Zone Temp’s value label:
Now, this label will hold the correct Zone Temp on every folder, and allow us to re-use our PX file across all RHC_X folders!
PX Object Degradation
One thing you may have noticed is that not all folders have the same points; We have a Discharge Air Temp in some reheats, but not all! Often, even when a contractor knows how to relative ords, they would split this into 2 different PX files, which can be harder to maintain. If you update to a newer graphical standard, for example, this means you have to make these changes twice! Luckily, there are also a few tricks to get around this limitation. To start, we’re assuming you’ve already added a discharge probe graphic and label to our existing graphic, and you’re viewing it from RHC_2’s folder.
In label bindings, there is a property called “degradeBehavior”. This will determine how an object in a PX graphic responds if the ord is unresolved. This option is what we’ll use to hide our discharge probe graphic and labels when they don’t exist. To start, we need to add some bindings that aren’t used for animation. We should already have our binding on the value label for Discharge Temp, but we need to add the same binding to the probe graphic and Discharge Temp label as well. To add a binding, you just have to click the icon circled below, and then choose “kitPx:Bound Label Binding” in the resulting popup:
This gives us the same binding as we get on Bound Labels, so all we need to do is add our “slot:DA_T” ord, then in degradeBehavior, just choose “Hide”. After making this change, we can view RHC_1 and RHC_2 using the same graphic, but Niagara hides our Discharge Temp info if it doesn’t exist.
This works very reliably, but one thing to point out is that if an object is hiding on degrade, it’s tough to select in the PX editor. Ideally, you want to edit this graphic on devices that have all possible points, but in a pinch, you can drag a box over where the hidden objects are placed, and edit them that way.
Bulk-Adding PX Views
Now that we have our graphic built and ready to go, we want to add the view to every RHC folder. This can be done manually, but the Batch Editor allows us to add these views to all applicable folders at once. I made a more in-depth Batch Editor guide previously, and I will link to it down below, but I’m covering it here because there are some specific quirks to using the Batch Editor to add views specifically that I want to cover.
As usual, we want to select all of our target folders, in this case all RHC folders, and we want to use the “Add Slot” action in Batch Editor. Our specific type is baja:PxView. Below is the configuration I’m using here:
We already have this view on two of our reheats, but since we’re using the same slot name and checking “Set if exists”, it doesn’t hurt to apply this action to all RHC folders. Now, at first glance, it appears to already be done, but this lack of clarity is why I’m documenting this process specifically. If you were to log in with a non-admin account, these graphics actually wouldn’t show up! The screenshot below shows why this is the case:
The Graphic slot we just added was added with no slot flags; Graphics actually aren’t visible to non-admin users without the “Operator” flag checked. Luckily, this is easy to remedy with the Batch Editor. With our same list of all RHC folders still in place, we can choose “Edit Slot Flags” and add this operator flag. Below is a screenshot of what we’ll set in the Batch Editor to make this fix.
PX Includes
The final important thing I see contractors regularly miss is usage of PX Includes. These allow you to re-use small PX files to tie data to multiple different folders. We’re going to make an include that will show some our RHC name and current Zone Temp, as well as link to the RHC graphics we just made. First, we need a blank graphic on our parent folder “DemoReheats”, and we also need to make a new PX file to serve as our include. We then want to start off as normal, and build a small graphic with absolute ords. Once we have that built, we’ll do a bulk ord search+replace by clicking the button circled below:
We’ll want to populate the search and replace dialog box with the following:
Our resulting ords look a little strange, but it will make more sense in a moment! For now, just remember that we are replacing the ord to the device with $(device) (Technically any string inside of the $() will work). Save this change, and the graphic should lose all data in the direct PX file view. This is expected! This ord is invalid outside of properly deployed includes. To deploy this, we’ll want to go to our overview graphic, select all of our RHC folders, and drag them out onto the PX file. This will give the following popup, which I’ve filled out:
Make sure to select “device” under our PX file variables; This can be easy to forget, but Niagara won’t properly populate our PX includes if we do! We end up with a series of PX objects populated with basic data, as well as links to the individual graphics if we made sure to add a blank label over top, with a bound label binding and $(device) in our hyperlink slot. Below is how this will look in the end:
Obviously this is quite ugly, but fortunately, this is a technical guide and not a graphic design guide!
Additional Resources
As always, you can use ctrl+L inside of Niagara and paste in the following documentation ords to view them.
PxInclude Widget: module://docGraphics/doc/AboutthePxIncludeWidget.html
PX Data Binding: module://docGraphics/doc/aBindingTypes.html
If you’d like to be notified of future guides, enter your email below!
Ready for more?
Navigation Menu
Search code, repositories, users, issues, pull requests..., provide feedback.
We read every piece of feedback, and take your input very seriously.
Saved searches
Use saved searches to filter your results more quickly.
To see all available qualifiers, see our documentation .
- Notifications
Latest commit
File metadata and controls, web development in niagara 4.
- Logan Byam, JJ Frankovich, and Gareth Johnsom
- Software Engineers @ Tridium
Note: this slideshow was originally delivered as a live, HTML/JS-based demonstration running in a browser. Therefore, Powerpoint slides were not created. This is a Markdown export of the original text and images.
UI Development Basics
Open Source Java Web Server
Servlet version 3.1 compliant
Supports Web Sockets
Servlets in Niagara
BWebServlet : Servlet Components in a Station.
BServletView : Servlets that are Niagara Views.
HttpServlet : traditional Java Web Servlets.
NiagaraRpc : Remote Procedure Calls new to Niagara 4.1.
Servlets as Components
Servlet components - step 1.
Extend javax.baja.web.BWebServlet , implement doGet() ...
Servlet Components - Step 2
Implement servletName Property...
Servlet Components - Step 3
Run slot-o-matic
Add to the module's palette
Start Station
Add the Servlet to the Station from the palette
Open a browser and navigate to https://localhost/myServlet
Servlets as Views
Servlet views - step 1.
Extend javax.baja.web.BServletView , implement doGet() , register view as an agent...
Servlet Views - Step 2
Slot-o-matic, build etc.
Open browser to a MyComponent instance...
https://localhost/ord/station:|slot:/MyComponent
Standard Java Servlets
Httpservlet - step 1.
Extend javax.servlet.http.HttpServlet ...
HttpServlet - Security
Validate all inputs. Check what you're given.
Use org.owasp.encoder.Encode to prevent XSS (cross-site scripting) attacks.
Follow OWASP best practices guidelines - https://www.owasp.org
When resolving ORDs, pass in a user Context.
When working with Components, check security permissions.
HttpServlet - Step 2
Add WEB-INF/web.xml :
HttpServlet - Step 3
Ensure web.xml is picked up during the build...
Build, start Station, etc.
Open browser to...
https://localhost/webServerDemo/myFirstServlet/rocks
Remote Procedure Calls
Make JSON Remote Procedure Calls via...
- RESTful Web Server
Annotation based
Transport agnostic
NiagaraRpc Server
Annotate a Java method...
NiagaraRpc Client
Invoke via BajaScript...
Invoke via AJAX...
Invoke via Fox...
NiagaraRpc Overview
RPC methods can be static or instance based
Supports multiple arguments
Java Collection encoding/decoding
Developer can define security permissions
Developer can define support transports
Data format is pure JSON
Web Server Conclusion
Create Servlets in a variety of ways via...
- Standard Java technology
NiagaraRpc provides a super simple way to create RPC calls!
Client UI Technologies
What's new in n4, bajascript v2.
Workbench Web Browser
Why all this new stuff?
Applet's days are numbered
bajaui outdated
Capitalize on open source and innovation
What is BajaScript?
- JavaScript data API
Resolve and Subscribe
- Database queries
Tags and Relations
- Not a UI framework
Keep up to date with Niagara data values.
Database Queries
Retrieve data from the history and alarm databases.
Query for tag and relation data from components.
Unit Database support
Convert numeric values between units of measure.
Promises are new in BajaScript v2.
Interact with other promise-based libraries.
(Callbacks still work.)
http://bluebirdjs.com
What is a Promise?
A unit of asynchronous work
Can be fulfilled or rejected
Bring try/catch/finally semantics to asynchronous code
Can be orchestrated / grouped together
A Promise is like...
Promise example
Try/catch/finally, offline support.
As of 4.2, BajaScript can be used to configure offline BOG files in Workbench.
Implement BIOffline to mark a field editor or type extension as supporting offline mode.
- Keep JS modular
- Load the code you need, when you need it
User interface framework: bajaux
What is bajaux .
is an HTML5 widget framework
that integrates with the Niagara Framework.
We used it to write a new Property Sheet, Web Charts, Search, and more.
What is a Widget ?
Self-contained UI element in the browser.
Can be small and simple, like a button.
Or made of many child Widget s, like a Property Sheet.
It can hold a data value.
It can integrate with Workbench, the web Profile, Px, and Hx.
How to write a bajaux Widget
You will need:
- JavaScript.
Key API: Widget
Base class from which all Widget s inherit.
Specify its behavior by overriding certain functions.
Key API: fe
I have a Baja value .
I want a Widget for it here .
I want it to just work .
bajaux Workflow
Make a widget .
Bind it to an element in your page.
Load in a value.
Read it back out.
Save changes.
bajaux Override Points
doInitialize() : bind a Widget to a DOM element (once)
doLoad() : load a value in (multiple times)
doRead() : read the current state of the Widget
doSave() : commit changes made to the Widget
doDestroy() : release resources held by the Widget
Example Widget
doInitialize()
Bind the Widget to an HTML element. Call it once .
Give it a value, and the value gets loaded into the widget. Call it many times.
Read the current state of your widget.
Stay up to date
Save changes, properties().
Use properties() to expose properties you can change in the Px editor.
Framework integration
Create a Java class that tells the framework where to find your JS code.
Register it as an agent on a Type.
Workbench integration: Commands
bajaux Widgets have Commands. Workbench can invoke them.
Workbench integration: Events
bajaux Widgets fire events. Workbench can listen for them.
- Find bugs before they occur
- Maintain code quality
- Test-driven JS development
- Run tests in all browsers at once
Open source tools
Tridium provide some open source tools to ease development.
- niagara-station : start/stop stations in Node
- niagara-test-server : station test utilities (login, spec filtering)
- grunt-niagara : smart defaults for linting and testing
- grunt-init-niagara : boilerplate for brand new web modules
https://github.com/tridium
Quick note: public vs. private API
Jump in and play
Check the docDeveloper palette.
- Mark Forums Read
- Who's Online
- Thanks / Like Statistics
- Hottest Threads / Posts
- Contracting Business
- Advanced Search
- The ARPA Zone/Open Membership Discussion Forums
Some images not visible in JACE web page?
- Cookie Consent We use cookies to improve your website experience. To learn about our use of cookies and how you can manage your cookie settings, please see our Cookie Policy . By continuing to use the website, you consent to our use of cookies.
- Gain access to our free AOP (Ask a Professional) Section to get real answers for your questions. All this and much more is available to you absolutely free when you register ; for an account, so join our community today today! We suggest not registering using an AT&T, BellSouth, AOL or Yahoo email address. If you have any problems with the registration process or your account login, please contact support .
- Jump to page:
Thread: Some images not visible in JACE web page?
Thread tools.
- Show Printable Version
- View Profile
- View Forum Posts
- Visit Homepage
- View Forum Threads
I have used some of the canned graphics from KitPxHVAC in my AX JACE and WB. I tried viewing the page through the local loopback of 127.0.0.1. Some of the pipes show up, but others don't. I also don't have the ducts appearing. I've compared properties of the items that appear to those that don't and the properties are identical. I've also made sure the KitPxhvac is in the software on the platform (local and remote). Anything you guys can think of? Thanks in advance.
Upload your px file.
Say it...t!
Upload the px to what? I think he is running the station on his pc. Your running the station in workbench and then opening your browser and typing in "localhost" and then enter right? Do you have both 3.0 and 3.1 loaded on the pc your using? Post up the px file also, lets have a look.
I am running it both on the PC and a 201. The KitPx and KitPxHvac are both on the remote platform (quadzillion checked). These are basic test pages that aren't even going to work right as far ass the points are concerned (and i re-found the Label item so I don't have to use the Bound Lable and unanimate it anymore). It's just certain images such as the pipewarmvert, and then the dpsshort... there are others, too, though. Here's the xml <?xml version="1.0" encoding="UTF-8"?> <!-- Niagara Presentation XML --> <px version="1.0" media="workbench:WbPxMedia"> <import> <module name="baja"/> <module name="bajaui"/> <module name="converters"/> <module name="gx"/> <module name="kitPx"/> </import> <content> <ScrollPane> <CanvasPane name="content" viewSize="800.0,600.0" background="silver"> <BoundLabel layout="300,90,140,115" background="#e0e0e0" border="top(1.0 solid black) right(1.5 solid black) bottom(1.5 solid black) left(1.0 solid black)"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="243,320,7,30" image="module://kitPxHvac/piping/hotVert.gif"/> <BoundLabel layout="278,273,7,33" image="module://kitPxHvac/piping/hotVert.gif"/> <BoundLabel layout="229,340,7,95" image="module://kitPxHvac/piping/warmVert.gif"/> <BoundLabel layout="150,309,83,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="449,396,40,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="370,385,40,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="530,332,25,40" image="module://kitPxHvac/devices/pipeSensorTop.gif"/> <BoundLabel layout="393,233,25,40" image="module://kitPxHvac/devices/pipeSensorTop.gif"/> <BoundLabel layout="320,326,7,33" image="module://kitPxHvac/piping/hotVert.gif"/> <BoundLabel layout="409,324,41,25" image="module://kitPxHvac/equipment/pumpHotLeftTrue.gif"> <ValueBinding/> </BoundLabel> <BoundLabel layout="409,380,41,25" image="module://kitPxHvac/equipment/pumpHotLeftTrue.gif"> <ValueBinding/> </BoundLabel> <BoundLabel layout="370,329,40,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="340,345,21,29" image="module://kitPxHvac/piping/hotTeeW.gif"/> <BoundLabel layout="350,326,21,21" image="module://kitPxHvac/piping/hotElbowSE.gif"/> <BoundLabel layout="350,371,21,21" image="module://kitPxHvac/piping/hotElbowNE.gif"/> <BoundLabel layout="260,357,83,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="518,368,58,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="449,340,40,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="488,337,21,21" image="module://kitPxHvac/piping/hotElbowSW.gif"/> <BoundLabel layout="488,382,21,21" image="module://kitPxHvac/piping/hotElbowNW.gif"/> <BoundLabel layout="498,356,21,29" image="module://kitPxHvac/piping/hotTeeE.gif"/> <BoundLabel layout="308,313,21,21" image="module://kitPxHvac/piping/hotElbowSW.gif"/> <BoundLabel layout="276,302,21,21" image="module://kitPxHvac/piping/hotElbowNE.gif"/> <BoundLabel layout="290,289,25,50" image="module://kitPxHvac/valves/globeValve2Way.gif"/> <BoundLabel layout="265,269,103,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="241,344,21,21" image="module://kitPxHvac/piping/hotElbowNE.gif"/> <BoundLabel layout="226,266,21,21" image="module://kitPxHvac/piping/hotElbowSE.gif"/> <BoundLabel layout="231,306,21,21" image="module://kitPxHvac/piping/hotElbowSW.gif"/> <BoundLabel layout="216,283,21,21" image="module://kitPxHvac/piping/hotElbowNW.gif"/> <BoundLabel layout="7,269,211,91" image="module://kitPxHvac/equipment/heatExchanger.gif"/> <BoundLabel layout="364,269,103,7" image="module://kitPxHvac/piping/hotHoriz.gif"/> <BoundLabel layout="243,207,29,75" image="module://kitPxHvac/devices/dpsShortBtmAlarm.gif" valign="fill"/> <BoundLabel layout="120,30,110,30" text="1738 Home" background="#e0e0e0" border="top(1.0 solid black) right(1.5 solid black) bottom(1.5 solid black) left(1.0 solid black)" mouseOver="highlight"> <BoundLabelBinding hyperlink="file:^PX_Files/1738home.px" statusEffect="none"/> </BoundLabel> <Slider layout="469,260,200,20" min="140" max="200" value="155"> <SetPointBinding widgetEvent="actionPerformed" widgetProperty="value"> <IStatusToBrush name="trackBrush"/> </SetPointBinding> </Slider> <BoundLabel layout="474,240,190,17" text="Discharge Water Temp Setpoint"> <BoundLabelBinding statusEffect="none"> <IBooleanToSimple name="image"> <Image name="trueValue" value="null"/> <Image name="falseValue" value="null"/> </IBooleanToSimple> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="475,445,100,7" image="module://kitPxHvac/piping/warmHoriz.gif"/> <BoundLabel layout="375,445,100,7" image="module://kitPxHvac/piping/warmHoriz.gif"/> <BoundLabel layout="280,445,100,7" image="module://kitPxHvac/piping/warmHoriz.gif"/> <BoundLabel layout="245,445,100,7" image="module://kitPxHvac/piping/warmHoriz.gif" valign="fill"/> <BoundLabel layout="227,431,21,21" image="module://kitPxHvac/piping/warmElbowNE.gif"/> <BoundLabel layout="217,320,21,21" image="module://kitPxHvac/piping/warmElbowSW.gif"/> <BoundLabel layout="500,400,99,20" text="Return Water Temp"> <BoundLabelBinding statusEffect="none"> <IBooleanToSimple name="image"> <Image name="trueValue" value="null"/> <Image name="falseValue" value="null"/> </IBooleanToSimple> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="520,420,70,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="210,210,90,19" text="Flow Switch"> <BoundLabelBinding statusEffect="none"> <IBooleanToSimple name="image"> <Image name="trueValue" value="null"/> <Image name="falseValue" value="null"/> </IBooleanToSimple> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="220,230,70,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="309,344,29,21" image="module://kitPxHvac/piping/hotTeeN.gif"/> <BoundLabel layout="267,266,29,21" image="module://kitPxHvac/piping/hotTeeS.gif"/> <BoundLabel layout="10,90,140,115" background="#e0e0e0" border="top(1.0 solid black) right(1.5 solid black) bottom(1.5 solid black) left(1.0 solid black)"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="25,155,100,20" text="Pump Status"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="25,175,100,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="25,95,100,20" text="Pump 1 Command"> <BoundLabelBinding/> </BoundLabel> <ImageButton layout="15,115,60,30" text="RUN"> <ActionBinding widgetEvent="actionPerformed"/> </ImageButton> <ImageButton layout="85,115,60,30" text="STOP"> <ActionBinding widgetEvent="actionPerformed"/> </ImageButton> <BoundLabel layout="155,90,140,115" background="#e0e0e0" border="top(1.0 solid black) right(1.5 solid black) bottom(1.5 solid black) left(1.0 solid black)"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="170,155,100,20" text="Pump Status"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="170,175,100,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="170,95,100,20" text="Pump 2 Command"> <BoundLabelBinding/> </BoundLabel> <ImageButton layout="160,115,60,30" text="RUN"> <ActionBinding widgetEvent="actionPerformed"/> </ImageButton> <ImageButton layout="230,115,60,30" text="STOP"> <ActionBinding widgetEvent="actionPerformed"/> </ImageButton> <BoundLabel layout="470,50,140,160" background="#e0e0e0" border="top(1.0 solid black) right(1.5 solid black) bottom(1.5 solid black) left(1.0 solid black)"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="490,50,100,20" text="Outside Air Temp"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="490,180,100,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <AnalogMeter layout="490,70,100,100" min="-15"> <ValueBinding> <INumericToNumber name="value"/> <ObjectToString name="text"/> </ValueBinding> </AnalogMeter> <BoundLabel layout="320,100,100,20" text="Summer / Winter"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="320,125,100,20" text="SUMMER" background="lime"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="320,150,100,20" text="WINTER" background="blue"> <BoundLabelBinding/> </BoundLabel> </CanvasPane> </ScrollPane> </content> </px>
I removed a couple of labels to get inside the post limit, but they are just bound labels with text or links to other pages in them... but I forgot that they don't appear in the screen either. <BoundLabel layout="350,275,99,20" text="High Temp Water"> <BoundLabelBinding statusEffect="none"> <IBooleanToSimple name="image"> <Image name="trueValue" value="null"/> <Image name="falseValue" value="null"/> </IBooleanToSimple> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="492,293,108,17" text="Discharge Water Temp"> <BoundLabelBinding statusEffect="none"> <IBooleanToSimple name="image"> <Image name="trueValue" value="null"/> <Image name="falseValue" value="null"/> </IBooleanToSimple> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="214,365,128,15" text="Control Valve"> <BoundLabelBinding statusEffect="none"> <IBooleanToSimple name="image"> <Image name="trueValue" value="null"/> <Image name="falseValue" value="null"/> </IBooleanToSimple> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="500,310,70,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <BoundLabel layout="370,295,70,20"> <BoundLabelBinding> <ObjectToString name="text"/> </BoundLabelBinding> </BoundLabel> <SetPointFieldEditor layout="230,380,100,20"> <SetPointBinding> <IStatusToBrush name="foreground" mode="foreground"/> <IStatusToBrush name="background"/> </SetPointBinding> </SetPointFieldEditor> <BoundLabel layout="0,0,210,20" text="Heat Exchanger System" font="18pt Tahoma" halign="left"> <BoundLabelBinding/> </BoundLabel> <BoundLabel layout="0,30,110,30" text="Base Home" background="#e0e0e0" border="top(1.0 solid black) right(1.5 solid black) bottom(1.5 solid black) left(1.0 solid black)" mouseOver="highlight"> <BoundLabelBinding statusEffect="none"/> </BoundLabel>
hmm... works fine for me... I'll look deeper later, the wifey wants to go to dinner.
I noticed that the modules at the top do not list KitPxHvac... but there are items from Hvac showing up... makes no freakin sense. It is ALWAYS the same images showing or not showing, though... if that helps. Thanks CW, I look forward to helping you help me
Send me the entire station zipped, something is wrong somewhere else. Is this on 3.0 or 3.1 on your end?
Upload the px to what? To this forum. glennmcaz, here are 2 screenshoots. Same to yours or not?
Leaflying... dagnabbit, you got it to work... you suck. LOL I am missing the lower warm pipes buttons at the top and some other things... consistently. But only when viewing through the web interface (IE6 with all the latest packs, as well as latest java updates). in PxView, it works fine. Codewriter... email sent
Last edited by glennmcaz; 02-01-2007 at 09:28 PM .
Code handles it, so I dont have to think hard. This reminds me a geek's t-shirt, it says "I write code so you dont have to".
I have one that says _ _ _ _ you in binary Just one more of my offensive t-shirts that we've discussed before. There's also the hex for "I _ _ _ _ed your girlfriend"
Code handles what? Sorry leaflying, I now understand what you mean, I was thinking hard to, like what trick do I not know about... lol... I thought you were going to break out some super secret or something... When I open the px, mine looks just like those as well.
Have you run it in a web browser, not the pxviewer in WB
Yep, it works in everything I try it in. Your horizontal pipe images are not sized properly, but other than that it all appears as I think you intended. Maybe thats what your "not" seeing, when in px viewer click on your horizontal pipes, and drag the top handle up or the bottom handle down a bit so tha you see the entire width of the pipe, and then reposition so that it connects properly with the other pipes. In WB, go to the top menu, select Tools/Options/Px Editor/ and change the grid size and snap size to a smaller value and that will give you a finer control over placement, if that does not give you the resolution you want, switch the Use Snap to false. For basic pages I set grid to 5 and snap to 5, if I am doing detailed stuff I turn off the Use Snap to give me exact control.
I use Ctrl+arrow key to do fine placement. if memory serves me right, I just used the default image and dragged it around the page. I might have used the grab handles to shorten the h length of the h-pipes (anyone thinking of a Weezer song?), but i didn't do anything to the vert sizing. I'll see what I can do with your instructions. Thanks
Originally Posted by glennmcaz I use Ctrl+arrow key to do fine placement. Thanks! I just learned something! I still like adjusting my snap so I can drop it a little closer to exact placement the first time, but the Ctrl+arrow will make life just a wee bit easier when I am a click off.
It was something Phil showed us in AX training, and it's one pixel at a time. In a normal arrow move, it's something like 5 px (at least it is in a 10px grid). I was used to it from other graphics progs
Since we are here, I have a question. Did you guys find there are certain areas on the screen that you can not apply "down" or "left" arrow (you keep pressing the button, but the image block wont move.) ?
Try looking at the images layers
Sometimes images that are on the same layer hide one to the other... Or a image that is not resized correctly.
- Private Messages
- Subscriptions
- Search Forums
- Forums Home
- The #1 question asked by NEW MEMBERS. Please read this...
- Questions About Becoming A Professional Member? Step Inside...
- SITE Software Issues? Post Them Here
- RULES for AOP - Owner Assistance and Contractors
- AOP Residential HVAC (Beenthere Zone)
- AOP Commercial HVAC
- General Discussion
- Job Wanted/Needed Discussion
- Industry and Forum News
- Webinars and Virtual Events
- Tech to Tech Chat - Residential
- Tech to Tech Chat - Commercial
- Refrigeration & Ice Making
- Members Inventions **NEW
- Test & Balancing Forum NEW
- Control Sales Forum
- Professional Controls Forum
- Control Jobs Forum
- Chillers Open Forum
- Energy Efficiency and Building Performance Discussion NEW
- Commercial Food Service Equipment
- Residential Geo Thermal / Water Source
- Commercial Geo Thermal / Water Source
- Indoor Air Quality
- Tools & Test Equipment
- Food and Grill Forum
- "Wall of Pride" - Pictures
- "Wall of Shame" - Pictures
- How To Become a Pro and Rules For Pro Members
- Pro's Forum: General Discussion
- Charlie's Corner (Icemeister)
- HVAC Basics **NEW
- Pro Forum: Refrigerants and EPA regulations **NEW
- Pro's Forum: Business & Marketing
- Pro Forum: Residential Refrigeration and Appliances **NEW
- Pro's Forum: Sales
- Pro Forum: Equipment Recalls and Bulletins **NEW
- Pro's Forum: Residential
- Pro's Forum: Commercial
- Pro's Forum: Geo Thermal / Water Source
- Pro's Forum: Refrigeration & Ice
- Pro's Forum: Chillers
- Pro's Forum: Oil Burners
- Pro's Forum: Hydronics/Boilers
- Pro's Forum: Building Science Discussions
- Pro's Forum: Training and Education
- Pro's Forum: Instructors Forum NEW
- Pro's Forum: Tips 'n Tricks of the Trade
- Pro's Forum:The Gun Enthusiast
- Frequently Asked Questions About Submissions
- Manufacturers' Technical Information
- Articles Authored by Others
- Self-Authored Articles
- Submit Quiz Questions
- About the Suggestion Box
- Voice Your Opinions
- Share Ideas
- Report Problems
- Educational, Training & Reference Information
- Manufacturer's Technical Information Links
- Quiz Questions
- Open Forum Discussion
- Split Systems, Package Units, Furnaces
- Geothermal / Water Source Heat Pumps
- Specialty Systems
- Boilers Hydronic, Steam
- Accessories Humidifiers, Air Cleaners, HRUs, Fans, Filters, etc
- Components Coils, Heaters, Motors, etc.
- Compressors
- Oil Burners
- Systems - General
- Accessories Pumps, Cooling Towers, Evap Condensers, etc
- Components Valves, Motors, Condensers, Evaporators, etc
- Refrigeration Systems
- Evaporators, Condensers, Etc.
- Valves, Regulators, Filters, Etc.
- Walk-Ins, Cold Storage
- Food Service Equipment, Display Cases
- Supermarket Cases & Compressor Systems
- Ice Machines
- Controls, Motors, Etc
- HVAC Load Calc Software
- Refrigeration Load Calc Software
- HVACR Software & Online Training
- HVACR Calculators & Apps
- Formulas and Calculations
- In Memoriam
- Licensing, Laws, Codes and Certification
- Jokes, Quotations, Humor, Wisdom Pills
- Practice, Testing Area
- Plumbing Forum Rules
- Plumbing General Open Forum
- Pro's Forum: Plumbing Discussion
- Electrical Forum Rules
- Open Discussion Electrical
- Photovoltaic
- New Products
- Bonding & Grounding
- Motors & Motor Controls
- Test & Measurement
- Tools & Equipment
- Code Violations
- Pro's Forum: Power Quality
- Pro's Forum: Calculations & Electrical Theory
- Pro's Forum: Electrical Business & Marketing
- Pro's Forum: Estimating
- Job Postings
vBulletin Message
The following errors occurred with your submission, quick reply, register now.
Please enter the name by which you would like to log-in and be known on this site.
- Confirm Password:
Please enter a password for your user account. Note that passwords are case-sensitive.
- Email Address:
Please enter a valid email address for yourself.
- HVAC/R Contractor
- HVAC/R Technician/Installer
- HVAC/R Wholesaler/Distributor
- HVAC/R Manufacturer
- Manufacturer Rep
- HVAC/R Consultant
- HVAC/R Engineer
- Facilities manager/Mechanical Engineer
- Homeowner or Building/Equipment Owner (We welcome homeowners and Building owners. Help us customize your experience) Please post in the AOP Section
- Residential HVAC
- Light Commercial HVAC (up to 25 tons)
- Commercial HVAC (over 25 tons)
- Refrigeration
- Hydronic Heating
- Building Automation/Controls
Posting Permissions
- You may post new threads
- You may post replies
- You may not post attachments
- You may not edit your posts
- BB code is On
- Smilies are On
- [IMG] code is On
- [VIDEO] code is On
- HTML code is Off
Forum Rules
- HVAC-Talk.com
© VerticalScope Inc. All Rights Reserved.
NIAGARA: A New Musical To Have A Concert Presentation
Niagara: A New Musical , will premiere this spring with a special one-night-only concert presentation at The Green Room 42 on May 23rd, 2024. The new musical is an universal story celebrating life and family. The book is written by Lauren Widner and Ryan McCurdy, tells the tale of six individuals connected by the wonder and adventure of Niagara Falls. With an original contemporary musical score and ubiquitous themes, Niagara is an uplifting and hope-filled experience.
This new story was first developed in 2019 at Manhattan Theatre Club Studios and the Hartford Fringe Festival. In 2020, writer Lauren Widner tragically passed away and now, Widner’s writing partner McCurdy, and her sister Cheryl Widner, continue to bring Niagara ’s message to new audiences.
The full creative team of Niagara includes Widner & McCurdy (Book, Music, and Lyrics), James Rushin (Additional Music), and Katie Walker (Dramaturgy). Cheryl Widner serves as the lead producer with an investment by J. Wilson Morris. The cast includes Grammy Nominee Mick Bleyer, Rebecca Faulkenberry, Pearl Gold, Brooke Ishibashi , Vanessa Sierra, and Julius Thomas III. The evening will be hosted by McCurdy and Rushin, with additional special guests to be announced.
“One thing that I always admired about my sister was the relationship she had with her students as a music teacher,” said Widner, Lauen’s sister and the lead producer of the musical. “She always expressed to her students to follow their dreams which is one reason why I’m so passionate about following hers.”
For more information, visit here.
As a native New Yorker, Alex has always loved everything involving theatre. With a degree in Theatre and New Media from Marymount Manhattan College, Alex realized that, since he was not talented enough to be on Broadway, the next best thing would be to write about it!
Holland Taylor and Ana Villafañe To Star in The World Premiere Play N/A Inspired by Nancy Pelosi and AOC This Summer
May 10, 2024
Robert Downey Jr Will Star In Lincoln Center Theaters Production Of MCNEAL - A New Play By Ayad Akhtar
May 7, 2024
Shiki Theatre Company’s New Original Musical THE GHOST & THE LADY Now Open
Schmigadoon, the 25th annual putnam county spelling bee, & legally blonde announced for the john f. kennedy center for the performing arts 2024–2025 theater season.
A fresh look at features, news, reviews, and interviews of theatre across the globe, from Broadway to London and everywhere in between. Your one-stop shop for the latest information in arts and culture by the next generation, for the next generation.
IMAGES
VIDEO
COMMENTS
Niagara Summit 2018 example code demonstrating: 1) the process of migrating a module to the Niagara 4.6 build environment and 2) some examples of Niagara Annotation usage. - tridium/summit18-building-niagara ... you should have a folder structure like the one shown in the presentation slides. Delete the generated module part code folder (e.g ...
Technical Document: Niagara AX-3.x User Guide, Ch. 6; Tridium Demo: www.axdemo.tridium.com Custom graphical views are defined with a Px file (Presentation XML), a special XML file that describes the graphical components. Px files can be any collection of components, up to a complete database.
3 • New Developer Environment Features • Slot-o-matic Improvements • Code Signing Agenda
Niagara 4.4 introduced Single Sign On (SSO) with your Identity Provider (IdP). Niagara 4.9 now features native IdP capability. Reduce reliance on IT support infrastructure when accessing Niagara Stations via a browser. Users can now utilize Niagara as an IdP, instead of manually configuring and managing an external IdP.
New provisioning steps. The ability to upgrade or reconfigure installed application templates. Flexibility in defining and configuring peer device and/or station proxies when installing an application template. Ability to capture and reuse the as-built configuration of an application template. Facilitating Niagara at the Edge.
Provides an enhanced querying workflow and improved user experience, giving you even more flexibility to quickly get the job done. Query components via an HTML5 Browser Interface. Configure Reports in a Browser using the Report Service. Create BQL queries for later use across your Niagara Stations. Connectivity.
This, however, is incredibly inefficient. Niagara allows you to tie PX graphics to folders directly, and in doing so, provides several tricks to re-use files. To start, we want to right click one of our device folders (RHC_1, to start) and choose "new view".
Presentation materials from the Niagara Summit 2016 Developer Bootcamp. - tridium/summit16-presentations
The Niagara Internet Query System is designed to have these characteristics. To support the "From *" clause, Niagara uses a novel collaboration between its XML query processor and its "text-in-context" XML search engine. When the XML query processor receives a query, expressed in a modified version of the XML-QL query language [8] (in ...
Introduction to XML Algebra Based on talk prepared for CS561 by Wan Liu and Bintou Kane
Niagara can be used for retrieving XML data, querying and monitoring them for some interesting changes. These three functionalities are implemented by its three main components: Search Engine, Query Engine and Trigger Manager. XML is gaining popularity for representing semi-structured data on the net. Additionally it is being used as a medium ...
C. HAPTER. 1. About NiagaraAX Framework. Software frameworks provide a platform to allow businesses to more easily build their end-product offerings. Tridium's patented Niagara Framework® is targeted at solving the challenges associated with managing diverse smart devices, unifying their data, and connecting them to enterprise applications.
Tagging in Niagara Introducing UxMedia March 25, 2021 . Q&A 1. How does this help Graphics on Supervisor? UxMedia shifts the rendering work from the station to the user's device. If your supervisor is running on a strong PC and performance is already acceptable, there's no requirement to switch to UxMedia. 2.
Supervisor it is usually C:\Niagara\Niagara-4.x.xx.xx\jre\lib\ext. Note: Close the Niagara Workbench after inserting all the modules in the folder. Next time you start the Niagara Workbench the driver will be loaded in Niagara Workbench and will be immediately available for use.
N4MIG N4 migration tool failure. Existing Systems Forum. Find answers to your questions regarding existing systems on the Schneider Electric. Collaborate and share with other professionals across the globe while learning about our solutions.
Scroll to page 2 of 403 C. HAPTER. 1. About NiagaraAX Framework
I have used some of the canned graphics from KitPxHVAC in my AX JACE and WB. I tried viewing the page through the local loopback of 127.0.0.1. Some of the pipes show up, but others don't. I also don't have the ducts appearing. I've compared properties of the items that appear to those that don't and the properties are identical. I've also made sure the KitPxhvac is in the software on the ...
Niagara Framework: Always Evolving - 4.10. Niagara 4.10 brings exciting new features that continue to evolve Niagara's key tenets of visualization, rapid deployment, security, Edge, connectivity, certification and IT compliance. Visualization. System DBSupport for Tag Based PX UI Performance Enhancements Video Surveillance Viewer HTML5 Tag ...
The summary info field shows up in Workbench in the "status bar" at the bottom of the window, or as a popup in HTML5 in a browser. To remove the entire contents, you can either do it manually for each binding (not what you asked for), or you have to write a robot that parses the XML in all your .px files and modifies all bindings that a summary ...
Niagara: A New Musical, will premiere this spring with a special one-night-only concert presentation at The Green Room 42 on May 23rd, 2024.The new musical is an universal story celebrating life and family. The book is written by Lauren Widner and Ryan McCurdy, tells the tale of six individuals connected by the wonder and adventure of Niagara Falls.
Niagara helps many of the world's most demanding customers meet their building automation and IoT needs in one comprehensive, \൳ecure, flexible and open platform.\爀屲Whether you are planning the HVAC needs of a single building. or are integrating Smart Bui對lding technologies for a multi-national organization with extreme cybersecurity demands, Niagara can be scaled to your requirem ...
Niagara: A New Musical will receive a concert premiere later this month at The Green Room 42.The one-night-only concert presentation will be held May 23. The new musical by Lauren Widner and Ryan ...
Niagara Framework Easily Connects Intelligent Systems. Niagara Framework® is a comprehensive software infrastructure that addresses the challenges of creating device-to-enterprise applications. It serves as a central console for connecting real-time operational data to the people and systems that manage workflows in smart buildings, data ...