Ignition Release Notes
Fixes, changes and features In Ignition
Version 8.0.3
Released August 8, 2019Area
Change Type
Description
Allen-Bradley Driver
Logix v21 Driver
Fixed
Made the Logix browse process more resilient to failures that occurwhen either browsing a program symbol or reading a template's attributesor definition.
Ignition Platform
Alarm Gateway
Fixed
Fixed an issue where Jump Blocks in Alarm Pipelines would jump to a pipeline in another project, instead of the current project.
Alarming
Fixed
Fixed an issue where alarms acknowledged on the redundant backup now remain acknowledged on the master after it starts up. Also, alarms acknowledged on a non-redundant gateway now remain acknowledged after the gateway is restarted
Alarming
Fixed
Fixed an issue where fields that used UDT parameters in the Alarm Status Table component were occasionally not resolving.
Alarming
Fixed
Fixed a serialization error when accessing the email acknowledgement webpage for alarms from remote notification pipelines.
Alarming
Fixed
Fixed an issue where adding a template instance to a Template Canvas would silently fail if the template path was null. An error message should now appear when adding instances containing a null template path.
Alarming
Fixed
Resolved an issue where disabled alarms could still generate new active events.
Client
Fixed
Fixed an issue where Icons in Vision Menu Bar Scripts were not correctly displaying from the client.
Client
Feature
Vision Cilent banners have been updated to better to provide better visibility. The following banners have been updated:- Project Update Available- Trial Time- Redundancy Role Change
Designer
Fixed
Fixed an issue where custom permissions on tags required a tag provider start before working properly.
Designer
Feature
Added tag reference insert action to Tag Event Script editor.
Designer
Fixed
Resolved an issue in the Tag Editor where switching from one UDT member to another would not commit changes.
Designer
Feature
Made slight UI improvements to the Resource Conflict window.
Designer
Changed
The icons for the Horizontal Menu and Menu Tree components have been updated.
Designer
Fixed
Fixed an issue where connections between pipeline blocks were not visible or configurable. Attempting to view or configure connections caused an exception, citing “The graph contains no edge supplier”.
Designer
Feature
Added a Copy Path menu item to all resource types and inherited resources.
Designer
Feature
Added keyboard shortcut to launch Perspective sessions and Vision clients from the Designer. - Perspective: Launch Session (F10)- Vision: Launch Windowed (F10), and Launch Full Screen (F11)
Designer
Feature
The conflict resolution dialog for resources now shows the full date and time of modification.
Designer
Fixed
Fixed an issue with configuring tag history datasources in Reporting if the Vision module was not installed.
Designer
Fixed
Fixed an issue system.dataset.exportCSV, exportExcel, and exportHTML were not creating files with file extensions
Designer
Fixed
Dragging and dropping tags in the Tag Browser now requires now asks for confirmation before moving the tags.
Designer
Fixed
Fixed an issue where Confirmation/Input popup windows appear on the wrong screen on multi-monitor environments.
Designer
Feature
The Open/Create Project window has received a visual overhaul, in addition to several enhancements: Projects are listed in a tabular fashion. Projects can be sorted and filtered. Added an “import” button, allowing the window to import project files. Importing a project from this window provides an opportunity to configure project properties.
Designer
Fixed
UDT tags can now be remotely edited over the gateway network.
Designer
Fixed
Fixed an issue where the 'Send Resource' menu item in the project browser could create resources with invalid names.
Designer
Fixed
Fixed an issue where resources were allowed to be created with names that are invalid for the Windows filesystem (CON, AUX, PRN, etc)
Designer
Feature
Added word wrap to resource notes panel.
Designer
Fixed
Resolved an issue where popup tag selector windows would not maintain selection
Designer
Fixed
Fixed an issue in the Project Browser's context menu where the text on "Copy Path" was not displaying correctly.
Designer
Fixed
Selected system.util scripting functions are now visible in the Designer when Vision is not installed.
Designer
Feature
Added support for HTTP Range Requests/Partial Content responses to the File resource type
EAM
Fixed
EAM Module sendProject agent task no longer includes inherited project resources.
EAM
Fixed
Fixed an issue where the Send Project Resource task failed if views, windows, or templates had names with a mix of uppercase and lowercase.
EAM
Fixed
EAM remote agent upgrade has been updated to use async method calls internally, which will prevent timeout errors when triggering an agent upgrade from the controller.
EAM
Feature
Added the system.eam.runTask() scripting function.
Expressions
Fixed
Importing 7.9 project/shared scripts no longer throws an invalid name error
Expressions
Feature
Added urlEncode() expression function.
Expressions
Fixed
Resolved a NullPointerException that could be caused by typos in bitwise expressions.
Expressions
Fixed
Resolved an issue where expressions referencing tags would erroneously return "Bad_Stale" when they should instead return "Bad_NotFound"
GCU
Fixed
Added '--name' or '-o' arg to the Gateway Command Utility to allow specifying a gateway name when restoring a backup. Additionally, the '-y' command now correctly skips prompts asking for a gateway name override.
Gateway
Fixed
Fixed a potential deadlock in transaction group monitoring code that was triggered by redundancy state synchronization.
Gateway
Fixed
Fixed a unique constraint violation error that could occur while upgrading from 7.9.12 to 8.0.+
Gateway
Fixed
Added new Web Server settings for public facing HTTP addresses, "Public HTTP Port", and "Public HTTPS Port". These replace the similarly named properties under the redundancy settings but now Vision Clients and Designers will connect to the gateway on these public settings if auto-detect is disabled. These settings are useful for non-standard installations, especially those where the public facing address for the gateway differs from the address or ports the Gateway is actually running: notably reverse proxy setups as well as Docker Containers with advanced port mapping configurations.
Gateway
Feature
The gateway's SSL certificate, SSL cipher suites, and the http / https ports may now be configured from the Gateway's config web interface.
Gateway
Fixed
Applied a fix that will guard against a possible NPE when importing built-in images during gateway startup.
Gateway
Fixed
Fixed a truncated error message that appeared when deleting schedules on the gateway.
Gateway Network
Fixed
Implemented impersonation role for gateway network tag services
Gateway Web Interface
Fixed
Fixed an issue where the Session Status page on the gateway's web interface would not load.
Gateway Web Interface
Feature
The Gateway will now periodically check the key store on-disk every 15 minutes, and replace the in-memory store if there is a difference. Also added a new gwcmd option (-g, --reloadks) which can be used to manually update the in-memory key store.
Gateway Web Interface
Fixed
Fixed incorrect capitalization in gateway setup messages
Installer
Fixed
Prevented an infinite loop that could be encountered while running the “install-ignition.bat” file.
Misc
Fixed
Upgraded Lodash library (from 4.17.10 to 4.17.14) to address a potential security vulnerability.
Misc
Fixed
Fixed an issue where Perspective app authentication could fail when multiple gateways are behind a reverse proxy due to authentication redirection. Newer versions of the Perspective app contain changes to account for this issue.
Misc
Fixed
Authentication through an Ignition IdP is now compatible with user sources configured to use a "Soft" Failover Mode.
Misc
Fixed
Tag history interpolation mode is now correctly synced and no long forced to analog.
NJ Driver
Fixed
Fixed rare issue where driver would remain in an 'Idle' state.
Named Queries
Feature
Added new scripting function to allow starting a transaction for named queries, and a new parameter to system.db.runNamedQuery for transactions.
Native Launchers
Fixed
Fixed an issue where Vision Launcher shortcuts would not connect to redundant backup gateways.
Native Launchers
Fixed
Changed how launchers behave when attempting to launch the default applications while the gateway is down:- Desktop shortcuts will show an error and exit - Using the Launcher will throw a modal warning, and return to the launcher.
Native Launchers
Changed
Made slight UI changes to the sidebar when managing the settings on the launcher or an application.- The icons have been changed- The items now appear as buttons.
Native Launchers
Fixed
Resolved an issue on Windows systems with existing Java 8 installations that caused the Native Launchers to fail with no feedback or indication.
Native Launchers
Feature
Added Support for stronger Ciphers to be used with SSL certificates.
Native Launchers
Feature
Added legacyClient shell scripts to aid in launching designers/clients on platforms the launchers don't support.
Project System
Fixed
Fixed an issue where importing a new resource into a project from the Designer would not automatically refresh the Project Browser, specifically in cases where the imported resources were originally in a folder.
Project System
Fixed
Fixed an issue where system.db.beginNamedQueryTransaction could not run in Perspective
Project System
Fixed
Invalid projects can now be deleted/edited in the gateway web interface.
Scripting
Feature
The system.util.queryAuditLog function may now be called from the gateway scope.
Scripting
Feature
Added getKey parameter to system.db.runNamedQuery()
Scripting
Fixed
Compiling scripts with unicode that result in a syntax error no longer throw an IllegalArgumentException
Scripting
Feature
Added several system.user functions to allow adding, editing and removing users through scripting. The following functions are now available:system.user.addUsersystem.user.editUsersystem.user.removeUsersystem.user.getNewUsersystem.user.createScheduleAdjustment
Tags
Fixed
Resolved a possible stack overflow when multiple UDT types are configured in a circular manner.
Tags
Fixed
Fixed an issue where tag history values were being interpolated incorrectly due to the inclusion of cached values.
Tags
Fixed
Resolved an issue where the "one shot" and "any change" Driven mode tag groups weren't executing correctly.
Tags
Feature
Improved mathematical operator support for UDT parameters.
Tags
Fixed
Fixed an issue where legacy tag conversion would fail if a UDT definition was missing its parent type before upgrading.
Tags
Feature
UDTs with an invalid or missing parent are now visually marked with an error indicator in the tag editor.
Tags
Fixed
UDTs with an invalid or missing parent are now visually marked with an error indicator in the tag browser.
Tags
Fixed
The Engineering Clamp Mode is now defaulted to “No_Clamp” if the clamp mode string on import does not match an existing clamp mode.
Tags
Fixed
Fixed an issue where a ConcurrentModificationException could occasionally force tags into a Bad_Stale state when restarting a tag provider.
Tags
Fixed
UDTs with parameters such as {BaseAddress+OffsetAddress} threw conversion exceptions during upgrade from Ignition 7 to 8.
Tags
Fixed
Fixed an issue where tag XML imports containing UDT parameter bindings were using the incorrect format for the binding; "{bindType=parameter, binding={myParam}}" instead of "{myParam}"
Tags
Fixed
Fixed a regression where the Value, Quality, and Timestamp meta properties were not being shown in the Tag Browser.
Tags
Fixed
Inherited properties aren't correct on member tags when creating a new instance.
Tags
Fixed
Fixed an issue where dragging a tag folder onto itself would result in the loss of the folder, and its contents.
Tags
Fixed
Resolved an issue that caused a delay between the creation of a UDT type, and the ability to create instances of that type.
Tags
Fixed
Resolved an issue where the Tag Browser would fail to automatically detect the correct datatype when adding array OPC tags.
Tags
Fixed
Trait badges used to show the presence of various configurations, such as Alarms and Tag History, will now appear in the UDT editor (Tag Editor window) and under the Data Types folder (Tag Browser). Additionally, the UDT type should now also be visible in these cases.
Tags
Fixed
Resolved an issue where nested UDT members were not being loaded correctly on gateway and tag provider startup.
Tags
Fixed
Fixed an issue where alarm properties were not being logged to the journal during acknowledge events - most notably, the label property.
Tags
Fixed
Fixed an issue where system.tag.configure did not correctly handle nested tag overrides.
Tags
Fixed
Added missing tag group diagnostics: Executions (total number of executions), Last Duration (the duration of the last execution, in milliseconds), Mean Duration (average duration of all executions, in milliseconds). The diagnostics can be found under the Gateway's Web Interface > Status > Tags > Details on any of the Realtime Providers.
Tags
Fixed
Resolved an issue where certain tag configurations led to a significant delay when trying to save changes.
Tags
Fixed
Resolved an issue where using the tag() function in a UDT required that a tag provider was explicitly specified (e.g., tag("[default]Path/to/tag")). With this fix, tag paths that do not state the tag provider will assume the path leads to the same provider as the UDT.
Tags
Fixed
Resolved an issue where moving a tag folder instead created a copy at the new location, preserving the old folder. Moving a folder will now delete the folder at the old location.
Tags
Fixed
Resolved an issue where built-in UDT parameters did not appear in the parameter popup helper.
Tags
Feature
Numerous tag properties have been reintroduced to the designer. Similar to tag properties in 7.9 and earlier, these new properties expose helpful information about their parent, such as a count of alarms in an Active and Unacknowledged state.
Tags
Fixed
When examining UDT definitions in the Tag Browser, members of the UDT will now show configured traits under the Traits column.
OPC-UA
Client
Fixed
Fixed possible failed session initialization due to a hardcoded 5s timeout.
Client
Fixed
Improved endpoint hostname matching for connections to OPC-UA servers
Client
Fixed
Fixed a bug browsing beyond a Node with a string-based NodeId that contained a newline character.
Client
Fixed
Added "Connect Timeout" and "Acknowledge Timeout" to advanced OPC UA connection settings.
Client
Fixed
Fixed an issue where subscribing to an array of DateTime values did not work.
Gateway Web Interface
Fixed
OPC UA security page certs download action now works for Firefox. Cert expiration date no longer displays 'Invalid Date' for non-english languages.
Server
Fixed
Fixed "AddressSpace already registered" warning on startup.
Perspective
Browser
Fixed
Fixed a regression where south docked views set to push were erroneously covering the primary view, specifically in cases where the primary view is using a coordinate layout.
Browser
Feature
When the Identity Provider for a project is not set, authentication screens in sessions will now provide a friendly reminder to configure an IdP. Additionally, the login and logout action descriptions now suggest that an Identity Provider must be configured.
Browser
Fixed
Resolved an issue where the selection and selectionData properties on the Tree component could desynchronize if the items property was modified.
Browser
Fixed
The perspective session “Info” button on App Bar now shows the name of the gateway while in mobile mode. Additionally, we’ve made some slight spacing adjustments around the button.
Components
Fixed
Fixed a memory leak on the Perspective XYChart that could occur when making changes to the underlying data and/or properties on the component.
Components
Feature
New Chart ComponentsTimeseries charts, where the X-axis of the chart represents the passage of time, are of crucial importance in industrial applications like the kind built in Perspective. This release brings with it 2 new timeseries chart components; the Time Series Component, and the Chart Range Selector Component. Each of these components are built with simplicity in mind. From the minimal configuration needed to get data displaying in the charts to the simplified style configuration, these components are easy to get functional and customized. These charts are of the sort where the data is represented in the chart’s properties. By default, the charts contain example data, but typically a tag history or named query binding will be used to feed data to the charts.The Time Series Component is the main display component in this pair. It contains the following features (a full list of features and configuration is documented below):Zoom in/out via mouse wheel interaction.X-Trace display showing data at the hovered time position.Multiple chart display types (Area, Bar, Line, and Scatter).Multiple Y axes with the ability to align to the left or right side of the chart.Multiple plots as well as multiple trends per plot.Baselines and markers.Custom axes.Time range showing the overall range of the data being displayed in the chartSimple display customization for the axes, different trend display types, baselines, and markers.The Chart Range Selector Component is meant to complement the Time Series Component. As such, it has a smaller feature list:Zoom in/out via mouse wheel interaction.Click-and-drag brush range selection and panning.“Start” and “End” property values that are updated as the brush range changes. These properties can govern the start/end points of data queries to return a DataSet.Time range showing the overall range of the data being displayed by the brush (range updates as the brush is updated).Simple display customization for the axes, baselines, markers, and the main chart data display.These components are most powerful when paired together. When a query against the series data of the Time Series Component is made using the “start” and “end” values of the brush from the Chart Range Selector, a display like this is possible:Chart Range Selector driving a Time Series Component Time Series ComponentThis component provides a performant way to visualize data from a variety of different data sources as chart data. You can get up and running with this component in a minimal way by providing a name and data entry (see the series.data property for data formats) for the first series item in the component properties. This will create a data display in the chart and auto-generate the axis by using the series name and min/max values from the series data.To create a richer data display, you can build up a full plot entry (or multiple entries). This allows for the creation of trends, custom axes, and different markers that can be applied to the plot. The best part about trends? Different display types. In this first release, you’ll have the ability to visualize your data as a Line, Area, Bar, or Scatter chart. …or as a mix of those. The following is a description of the configuration used by this component:series (Array, required) - A list of series entries used as the base data source for the chart display. At a minimum, the Time Series component requires at least one complete series entry to display data. With no other configuration provided, an initial display will be created from the series data. Each series entry requires the following properties:name (String, required) - The name of the series. This will also be used as the label of the auto-generated Y axis in the chart.data (Array | Object | DataSet, required) - Data can be an Object containing a time entry and value entries (all must be Numbers). Each value entry must be labeled with the column name to which it corresponds. Data can also be an Array containing value entries (all must be Numbers). Each value entry consists of a timestamp (which must be the first value) and one or more values that were captured at that time. Finally, data can also be in the form of a DataSet. As an example of the DataSet format, the data property can be bound to a Tag History binding to display either realtime data, or historical data (via start and end dates). To allow the Chart Range Selector component to drive the display of this component, a historical Tag History binding can be made where the “Start Date” and “End Date” fields are references (respectively) to the selectedRange.start and selectedRange.end values of the Chart Range Selector component:“Realtime” Databinding Example“Historical” Databinding Exampleplots (Array, required) - A list of plot entries for the chart, and at least one entry is required. Plot entries contain properties that allow much finer control over the way that the series data can be displayed. Each plot will be represented by its own row in the component. A plot contains the following properties:trends (Array, optional) - If specified, a trend will become the display mechanism for the plot in which it resides. It describes the way that the data should look, and provides different display types as opposed to the line display type that is provided when building from series data. Multiple trends will be built on top of each other in the same plot. An axis will be generated for each trend, unless they share a common axis (either custom created, or generated from series data). A trend contains the following properties:type (String, required) - This describes the type of chart to create. Options are area, bar, line, and scatter.series (String, required) - This will point the trend to a series that should be used as the data source.axis (String, optional) - If specified, the name of an axis that is described in the axes property of the plot to which this trend belongs. This axis will be used as the Y axis for the trend.visible (Boolean, optional) - If specified, this is the visible state of the trend. If not visible, the trend data will be hidden, but the time range of the trend will still be represented in the overall time range of the plot.breakLine (Boolean, optional and applicable to the line trend type) - This property will be available when a trend of type line is being used. If true, the line will be broken on either side of bad/missing data values. If false, bad/missing data values are removed and the adjoining points are connected.stack (Boolean, optional and applicable to the area and bar trend types) - This property will be available when a trend of type area or bar is being used. If true, the multiple columns of the chart will stack on top of each other.radius (Number, optional and applicable to the scatter trend type) - This property will be available when a trend of type scatter is being used. A number specifying the radius (in pixels) of the displaying points.columns (Array, optional) - If provided, only the columns in this list will be shown. Any style properties provided here will also override any existing style currently in place. A column contains the following properties:key (String, required) - This needs to match a column name from the series to which this trend is bound. Once in place, this will allow the style configuration provided here to override the styles provided in the defaultStyles property.color (String, optional) - If provided, this value will override any previous color values for the column (both stroke and fill).styles (Object, optional) - If provided, the styles for the state values listed here will override any previous state values. The state value options are:normal (Object, optional) - Takes the same configuration options as the same named state value under the defaultStyles property.highlighted (Object, optional) - Takes the same configuration options as the same named state value under the defaultStyles property.selected (Object, optional) - Takes the same configuration options as the same named state value under the defaultStyles property.muted (Object, optional) - Takes the same configuration options as the same named state value under the defaultStyles property.baselines (Array, optional) - If specified, a line will be drawn on the trend based upon a given type of functionality. The options for a baseline are:function (String, required) - The type of baseline that will be drawn. Options are min, max, avg, ucl (upper control limit), and lcl (lower control limit).column (String, optional) - The column against which the baseline should be calculated. If not specified, the first column in the series to which the trend is bound will be used.axis (String, optional) - The axis against which the baseline should be calculated. The trend must be bound to an axis for this to work correctly.visible (Boolean, optional) - The visible state of the baseline.color (String, optional) - The color of the line.width (Number, optional) - The width of the line.opacity (Number, optional) - The opacity of the line.dashArray (Number, optional) - The dashed appearance of the line.label (Object, optional) - The config used for the label drawn on the baseline.text (String, optional) - The label text.position (String, optional) - The position of the label relative to the baseline.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the baseline label. Any style that applies to an SVG text element can be used.style (Object, optional) - Custom CSS styles to apply to the line portion of the baseline. Any style that applies to an SVG line element can be used.axes (Array, optional) - A list of axis entries for that can be used for the plot. These can be used to override the Y Axis that is generated based on data in the series to which each trend is bound. An axis entry has the following properties:name (String, required) - The name of the axis. Also used as the display label of the axis.min (Number, required) - The minimum value of the axis.max (Number, required) - The maximum value of the axis.alignment (String, required) - The side of the trend upon which the axis should be presented.width (Number, required) - The pixel width of the axis.label (Object, optional) - The config used for the label drawn on the Y Axis.visible (Boolean, optional) - The visible state of the label.text (String, optional) - The label text.offset (Nuymber, optional) - Offset the Y axis label from its default position. This allows you to fine tune the label location, which may be necessary depending on the scale and how much room the tick labels take up. This may be positive or negative.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the Y axis label. Any style that applies to an SVG text element can be used.tick (Object, optional) - The config used for the ticks drawn on the axis.color (String, optional) - The color of the ticks.label (Object, optional) - The config used for the label drawn on the tick.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the tick labels. Any style that applies to an SVG text element can be used.style (Object, optional) - Custom CSS styles to apply to the ticks. Any style that applies to an SVG line element can be used.markers (Array, optional) - A list of visual indicators that can be added to the plot. These are meant to draw emphasis to the data. In this first release, the line marker will be the only available option. A marker entry has the following properties:visible (Boolean, optional) - The visible state of the marker.value (Number, required) - The numeric value that the marker represents.type (String, required) - The type of marker to be used. Currently, the only option is line.axis (String, required) - The axis against which the marker should be drawn.line (Object, required) - The configuration for the line portion of the marker.width (Number, required) - The width of the line.color (String, optional) - The color of the line.opacity (Number, optional) - The opacity of the line.dashArray (Number, optional) - The dashed appearance of the line.label (Object, optional) - The configuration for the label portion of the marker.text (String, optional) - The text of the label for the marker.position (String, optional) - The position of the label relative to the line.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the marker label. Any style that applies to an SVG text element can be used.style (Object, optional) - Custom CSS styles to apply to the marker line. Any style that applies to an SVG line element can be used.title (Object, required) - An object describing the title of the component. The following properties are available for the title:visible (Boolean, optional) - The visible state of the the title.text (String, optional) - The visual title of the chart.height (Number, optional) - The vertical space taken up by the title.font (Object, optional) - The config used for the style of the title.color (String, optional) - The color of the title text.size (Number, optional) - The font size, in pixels, of the title text.style (Object, optional) - A style object that is used to add visual style to the title. Style that can be applied to an SVG text element can be used here.timeAxis (Object, required) - This property provides settings for the X Axis. Note that multiple plots share the same axis. The following properties are available for timeAxis:visible (Boolean, optional) - The visible state of the the axis.tickCount (Number, optional) - The number of ticks on the axis (as a multiple of 2, 5, or 10).height (Number, optional) - The height of the axis.color (String, optional) - The color of the axis.tick (Object, optional) - The config used for the ticks drawn on the axis.color (String, optional) - The color of the ticks.label (Object, optional) - The config used for the label drawn on the tick.angled (Boolean, optional) - If set to true, the tick labels will be angled rather than horizontal.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the tick labels. Any style that applies to an SVG text element can be used.style (Object, optional) - Custom CSS styles to apply to the ticks. Any style that applies to an SVG line element can be used.style (Object, optional) - A style object containing properties which are applied to the horizontal line of the axis. Any property that would apply to an SVG line element can be used here.timeRange (Object, optional) - An object describing the presentation of the time range display below the chart. The following properties are available:visible (Boolean, optional) - The visible state of the time range display as a whole.dateFormat (String, required) - The date format of the range using a MomentJS date string.timeFormat (String, required) - The time format of the range using a MomentJS date string.xTrace (Object, optional) - An object describing the presentation of the X Trace display. This display is shown when a chart is being hovered over with the mouse. Note that multiple plots will share the same X Trace display. The following properties are available:visible (Boolean, optional) - The visible state of the X Trace display as a whole.infoBox (Object, optional) - An object describing the presentation of the the box portion if the X Trace display. The following properties are available:visible (Boolean, optional) - The visible state of the info box.showTime (Boolean, optional) - If set to true, the timestamp of the current X Trace value will be shown above the info box.width (Number, optional) - The width of the info box.dataFormat (String, optional) - A NumeralJS value used to format the data found at the current timestamp of the X Trace display. See numeral.js for a list of available data formats.stroke (Object, optional) - A configuration object describing the properties that will be applied to the stroke of the box display. The following properties are available:color (String, optional) - The color of the box stroke.width (Number, optional) - The width of the box stroke.opacity (Number, optional) - The opacity of the box stroke.dashArray (Number, optional) - The dashed appearance of the box stroke.fill (Object, optional) - A configuration object describing the properties that will be applied to the fill of the box display. The following properties are available:color (String, optional) - The color of the box fill.opacity (Number, optional) - The opacity of the box fill.style (Object, optional) - A style object containing properties which are applied to the info box. Any property that would apply to an SVG rect element can be used here.line (Object, optional) - An object describing the presentation of the the line portion if the X Trace display. The following properties are available:visible (Boolean, optional) - The visible state of the X trace line.color (String, optional) - The color of the X trace line.width (Number, optional) - The width of the X trace line.opacity (Number, optional) - The opacity of the X trace line.dashArray (Number, optional) - The dashed appearance of the X trace line.style (Object, optional) - A style object containing properties which are applied to the line part of the xtrace display. Any property that would apply to an SVG line element can be used here.defaultStyles (Object, optional) - An object providing default style to the chart trends as a whole. The following properties are available:colorScheme (String, optional) - A Color Brewer color scheme to use on the series. See ColorBrewer2.org for available color schemes.colors (Array, optional) - A list of colors to apply to the columns (in order) for each trend. If these values are provided, they will override the value provided for the colorScheme.normal (Object, optional) - An object providing style configuration for the “normal” state (no user interaction) of a column, or data entry, in a trend. Any color values specified here will override values set in the colorScheme or colors properties. The following properties are available:stroke (Object, optional) - A configuration object describing the properties that will be applied to the stroke of the trend type being displayed (if applicable). line, and area trend types will have these styles applied to them. The following properties are available:color (String, optional) - The color of the trend stroke.width (Number, optional) - The width of the trend stroke.opacity (Number, optional) - The opacity of the trend stroke.dashArray (Number, optional) - The dashed appearance of the trend stroke.fill (Object, optional) - A configuration object describing the properties that will be applied to the fill of the trend type being displayed (if applicable). area, and box, and scatter trend types will have these styles applied to them. The following properties are available:color (String, optional) - The color of the trend fill.opacity (Number, optional) - The opacity of the trend fill.highlighted (Object, optional) - An object providing style configuration for the “highlighted” state (mouse hover) of a column, or data entry, in a trend. Any color values specified here will override values set in the colorScheme or colors properties. The highlighted property uses the same configuration properties as the normal property.selected (Object, optional) - An object providing style configuration for the “selected” state (mouse click) of a column, or data entry, in a trend. Any color values specified here will override values set in the colorScheme or colors properties. The selected property uses the same configuration properties as the normal property.muted (Object, optional) - An object providing style configuration for the “muted” state (non selected) of a column, or data entry, in a trend. Any color values specified here will override values set in the colorScheme or colors properties. The muted property uses the same configuration properties as the normal property.Chart Range Selector ComponentWhen this component is configured, start and end sub properties of the selectedRange property can be used as the respective start/end points in a historical Tag History binding providing data to the series property of the Time Series component. As you interact with the time brush on this chart, those start and end properties will be updated with the millisecond timestamp that corresponds to their values. With that in place, you have a Chart Range Selector Component driving the display of a Time Series Component. The following is a description of the configuration used by this component:data (Array | Object | DataSet, required) - This property uses the same configuration as the series.data property of the Time Series Component.selectedRange (Object, required) - This property is updated as you interact with the brush. These are the values that can drive the display of other components. The following properties are available:start (Number, required) - The millisecond timestamp representing the value of the head of the brush.end (Number, required) - The millisecond timestamp representing the value of the tail of the brush.brushRange (Object, optional) - An object used to control the display of the date/time range values at the bottom of the component. The following properties are available:visible (Boolean, optional) - The visible state of the brush range.dateFormat (String, optional) - The date format of the range using a MomentJS date string .timeFormat (String, optional) - The time format of the range using a MomentJS time string .timeAxis (Object, required) - This property uses the same configuration as the timeAxis property of the Time Series Component.yAxis (Object, optional) - An object used to control the display of the Y Axis. This component was built with the assumption that this axis may be secondary information, so it can be deemphasized, if desired. The following properties are available:visible (Boolean, optional) - The visible state of the axis.width (Number, required) - The pixel width of the axis.label (Object, optional) - The config used for the label drawn on the Y Axis.visible (Boolean, optional) - The visible state of the label.text (String, optional) - The label text.offset (Nuymber, optional) - Offset the Y axis label from its default position. This allows you to fine tune the label location, which may be necessary depending on the scale and how much room the tick labels take up. This may be positive or negative.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the Y axis label. Any style that applies to an SVG text element can be used.tick (Object, optional) - The config used for the ticks drawn on the axis.color (String, optional) - The color of the ticks.label (Object, optional) - The config used for the label drawn on the tick.font (Object, optional) - The config used for the font style of the label.color (String, optional) - The color of the label text.size (Number, optional) - The font size, in pixels, of the label text.style (Object, optional) - Custom CSS styles to apply to the tick labels. Any style that applies to an SVG text element can be used.style (Object, optional) - Custom CSS styles to apply to the ticks. Any style that applies to an SVG line element can be used.style (Object, optional) - Custom CSS styles to apply to the axis. Any style that applies to an SVG line element can be used.areaStyles (Object, optional) - An object providing default style to the chart trends as a whole. This property uses the same configuration as the defaultStyles property of the Time Series Component.
Components
Feature
Added a new Horizontal Menu component. The component provides menu based navigation over a horizontal space.
Components
Fixed
Prevented object property keys that are entirely numeric from being created.
Components
Fixed
Fixed an issue where some of the Perspective Table component's style properties were ignoring Style Classes. Notably: headergroups, footergroups, rows, columns, and cells
Components
Feature
The Perspective Sparkline component can now have its range properties set beyond the min and max values of the underlying data on the chart.
Components
Fixed
Fixed an issue where a session would return nothing in render while running on the master node.
Components
Feature
Several improvements were made to the Perspective Sparkline component. Notably, added support for datasets, marker properties, and desired range properties.
Components
Feature
The focus() method will now work on all types of Perspective components.Containers and non-interactable components will have the root focused. Interactable components will have the appropriate HTML element (button, input, etc) focused.
Components
Feature
Added a getString(encoding="UTF-8") method to the file object accessible in the onFileReceived component event.
Components
Fixed
Fixed an issue where Perspective Text Field and Text Area component's "focus", "blur", and "keydown" events were not working.
Components
Feature
Added the following custom component events to the Table component:- onSelectionChange- onCellEditStart- onCellEditCancel- onRowClick- onRowDoubleClick- onSubviewExpand- onSubviewCollapse
Components
Feature
Added a reload() function to the PDF Viewer component.
Components
Fixed
Fixed an issue where the Alarm Status Table would maintain prior alarm selections after acknowledgement.
Components
Fixed
Fixed an issue where alarms that did not require notes could be forced into requiring notes.
Components
Fixed
Resolved an issue where the footer on the Alarm Status Table component remained displayed while none of the rows were selected.
Components
Fixed
Resolved an issue on the Alarm Status Table's header where calling the context menu would result in an error when a dock or popup was present.
Components
Fixed
Table component columns should again handle formatting of timestamps when render mode is set to date
Components
Feature
Added new properties to both the TextField and TextArea componentsdeferUpdates: While true, updates to props.text will be deferred until focus is lost or the enter key is pressed.rejectUpdatesWhileFocused : While true, props.text will not accept updates from external sources while focused.
Components
Fixed
The editable cell of the Table component no longer renders a boolean if the render mode is auto, and the value is either a 1 or 0.
Components
Fixed
Perspective Map component markers are now compatible with older releases of Safari. Additionally, improved the shadow on markers.
Components
Fixed
Resolved an issue where boolean values in datasets on the Table component were being evaluated as a string, causing the rendering on the table to make the value appear as always true.
Components
Fixed
Regarding Perspective's XY-Chart component, bindings on the 'dataSources' properties that return a dataset should no longer (erroneously) show a validation error in the property editor.
Designer
Fixed
Added multiple properties to the Flex Repeater- Added wrap, justify, alignItems, and alignContent (providing parity with the Flex Container)- Added an elementPosition property that provides flex position properties to instances inside of the Flex Repeater- Added an elementStyle property that provides styling properties for each instance in the Flex Repeater.
Designer
Fixed
Fixed an issue where null/empty Style Classes were preventing the Perspective module from loading in the Designer.
Designer
Fixed
Fixed an issue where Vision component bindings would get stuck with a stale quality overlay after reconnecting from a network outage.
Designer
Fixed
Properly support hyphens in property keys.
Designer
Fixed
Caught the error thrown when attempting to browse the structure of an object with invalid JSON, such as ..
Designer
Fixed
Updated the formatting used when duplicating property keys to use an underscore rather than a hyphen for consistency.
Designer
Changed
Deprecated spaces in property keys and improved general editor experience around key validation.
Designer
Fixed
Added a dialog when dropping an image onto a view, allowing users to specify if the image should be uploaded to Image Management, or embed directly in the view.
Designer
Feature
Added a tooltip for the Reverse button on the Flex Container/Repeater UI that's available when the component is deeply selected.
Designer
Fixed
Fixed an issue causing NullPointerExceptions on alarm events that were sent from remote gateways.
Designer
Fixed
Docked panels in the designer set to auto-hide now adjust the Perspective Workspace when they are resized so the workspace doesn't render in front of the docked panel (see Component Palette)
Designer
Feature
Added new UI for the flex container and flex repeater component.The flex repeater now exposes the alignItems, alignContent, justify, and wrap props. In addition, the elementStyle and elementPosition props have been added to provide styling and positioning on all instances. The prop elementPosition supports grow, shrink and basis.Each instance in a flex repeater will now have the reserved props instanceStyle and instancePosition. They are used for fine grain styling/positioning of each instance in a flex repeater.The props elementStyle/elementPosition are applied first before instanceStyle/instancePosition.
Designer
Fixed
Component properties that were fed bad/inappropriate data in the Designer would cause rendering issues on the component. This change will prevent the rendering issue in these cases. The Property Editor will still display errors and warning messages in these cases.
Designer
Fixed
Refactored perspective client session lifecycle so that startup scripts are not invoked when the user is not authorized to run the project. When the user is no longer authorized to run the project for any reason, the session will be shut down, destroyed and removed from its collection immediately.
Designer
Feature
Added support for folders in style classes.
Designer
Fixed
Map Transforms can now select Style Classes as an output type.
Designer
Fixed
Resolved an issue where the Perspective Property Editor would incorrectly calculate its width, causing some properties to constantly transition between displaying their full value and a truncated version.
Designer
Fixed
Fixed an issue where script editors could misinterpret the font size, causing the editor to cut off code from the right edge of the window.
Designer
Fixed
The deprecated "collections" python library is now removed on backup restore for zip installers to prevent collisions with the new collections library.
Designer
Fixed
In some cases, renaming a parameter on the Navigation Action would throw an error, potentially locking up the designer. This fix should prevent the error and subsequent fallout.
Gateway
Fixed
Fixed an issue that could cause datasets with date columns to appear mis-ordered in Perspective when there are at least two sessions viewing the dataset.
Gateway
Fixed
Fixed a ClassCastException that could be thrown by a session refactor in some cases.
Gateway
Feature
Added ability to close a session immediately through scripting with system.perspective.closeSession
Gateway
Fixed
Fix SSO on devices running iOS 11
Gateway
Fixed
Tag Bindings in Perspective now feature a Fallback Delay property. Should a write from a tag binding fail or otherwise take too long, this setting will revert the value on the bound property to match the current value on the tag, as opposed to the value the user last applied to the component.
Misc
Fixed
Fixed a JSON deserialization issue that was caused by array properties.
Misc
Fixed
Dock Views properly honor inherit visibility properties when navigating between pages.
Misc
Feature
In scripting, a perspective container's children can now be accessed via .getChildren() or .children
Misc
Changed
Perspective now uses browser caching to store runtime assets for faster project startups.
Reporting
Components
Fixed
Resolved an issue where saving a report as a file through the Report View component without a file extension in the name caused the resulting file to also not have an extension.
Components
Feature
Added Fit Panel prop to the Report Viewer to allow access via bindings.
Misc
Fixed
Fixed an issue where the Reporting module could possibly cause an NPE on gateway startup.
Misc
Fixed
Removed some hard coded font references, and replaced them with the Dialog logical font.
Misc
Fixed
When upgrading from v7.# to v8.0, some serialized alarm data would cause a SerializationException during the upgrade process. The upgrade process should now be able to handle this error in a more graceful manner.
SFC
Engine
Fixed
A persisted SFC instance no longer throws an error on gateway startup if it is waiting between two transitions when the chart was persisted on gateway shutdown.
Misc
Fixed
Fixed an issue where attempting to run an SFCs configured in an inheritable project would throw an error. This change only affects callable SFCs; Run Always SFCs will not run on inheritable projects.
SQL Bridge
Designer
Fixed
Fixed an issue in the Designer where an IllegalStateException was being thrown while renaming a tag item within a transaction group.
Gateway
Fixed
Resolved an issue where alarms created in transaction groups would not become active.
Misc
Fixed
Fixed an issue where Block Groups were unable to start after upgrading to the 8.0 branch. Additionally fixed a related issue where Block Groups where unable to start after being imported from XML.
Symbol Factory
Misc
Fixed
Using Basic Symbols from Symbol Factory in Vision windows no longer throws an IOException.
Vision
Client
Fixed
Fixed an issue where bi-directional UDT bindings in Vision are incorrectly attempting to write values upon initialization.
Client
Fixed
Fixed an issue where Vision Clients would assume the gateway’s address was 127.0.0.1 while initially connecting to the gateway if “autodetect” was enabled, causing a long delay until the login screen will appear.
Client
Feature
(SDK) Perspective components can now expose methods that are callable from scripts.
Client
Fixed
Fixed an issue where text in dialog boxes was being truncated in the designer and Vision client launchers.
Client
Fixed
Vision Welcome Images that aren't square will now be cropped and centered.
Components
Fixed
Fixed an issue with the Progress Bar component where opening a window while the Value property is out of bounds would cause a NullPointerException.
Components
Fixed
Resolved an issue where Field Borders were not being rendered correctly on input field components.
Components
Fixed
Fixed a discrepancy on the Button component’s initial foreground color; the color being rendered on the component was a lighter color (112,117,112) than the value on the Foreground Color property (46,46,46). Now the foreground color is properly rendering with the darker color.
Components
Feature
Vision alarm status table now has a "durationFormat" setting to control how the "active duration" and "unacked duration" columns display their duration.
Components
Fixed
Removed a legacy optimization class that sometimes caused charts in Vision to fail to render all supplied datapoints.
Components
Fixed
Fixed an issue with the X-trace reporting inaccurate data for pens not visible while charts were zoomed in.
Components
Fixed
Fixed an issue where buttons created in previous versions could be missing a background color in their serialization, causing them to assume container background color upon deserialization in 8.0.
Components
Fixed
The alarm name property set to use parameter values will now initialized with the correct value.