February 18, 2022
Requires iPadOS 14 or later
Requires CatchFlow™ IDE version 1.0.5 or higher
- FIXED: Components would not always store and retrieve their values properly, especially within nested structures like expandable cells. The new form storage model solves this in all cases except some legacy components like MPI landings.
- FIXED: Expressions of the format
$session.trip.anyValue
would not work. This was a bug specific to the$session.trip
referencing itself. - FIXED:
dateTimeEntry
withcountDownTimer
types did not allow proper editing of the value. The pop-up always reset to zero. - FIXED: The
dateString()
function worked only with numeric dates. It did not accept proper date objects. - FIXED: Expressions no longer have odd limitations on function and array references. For example, up until now, you could not execute an expression like
first($session.events).setclip.somevar('somevalue')
because of this bug. You’d have to use the unfortunate syntax(first($session.events).setclip.somevar)('somevalue')
. This has now been fixed. - CHANGED: For expandable, arrays, or any composite component, changing the
.value()
no matter how complicated will completely rebuild the component to reflect the provided data. - CHANGED: While, by default, expandable components still look and behave the same, the new
onClickExpand=
attribute allows any component (not just expandable components) to display the expansion disclosure triangle to allow simulations of expansion to be implemented using expressions. If present, this property will override any default behaviour for expansion. - CHANGED: The label component now stores its value, just like any other component.
- ADDED: The
arrayPanel
component was added, which is a powerful container providing a great deal of flexibility for embedding multiple sub-components including expandable and otherarrayPanel
components. This component has a hidden “cell header” similar to other cell headers which can be revealed using the component’s.headerVisible()
method. There is an.addItem()
method as well as a.removeItem()
method so that array cells can be managed. - ADDED: The
panel
component was added, which is a simple container for other components. - ADDED: The
timeZone=
attribute is now supported on thedateTime
component ofgpsEntry
as well as thedateTimeEntry
component. This attribute controls only the display of information. Dates and times are always stored in UTC. - ADDED: A new variable,
$system.timeZone
now returns a timezone identifier suitable for use in places like thedateString()
function as well as the newly addedtimeZone=
attribute. - ADDED:
topComponents
andbottomComponents
can be added to anarrayPanel
(and in the future other components) to specify the components which occupy top and bottom positions within the cell while the array contents remain at the centre. - ADDED:
arrayPanel
now supportsexpandable="true"
and it will automatically manage expansion and contraction. IfshowHeader
is true, then the expansion will be controlled in the header, otherwise if there is atopComponents
item, the first top component will become the expansion controller. This allows any type of cell to be used as an array header. - ADDED: The
button
component (different than the toolbar button declarations) allow the creation of action buttons directly on forms to allow the construction of new and complex form interactions. - ADDED: The
retain
property has been added to all components. It’s default value isvisible
meaning that data will be retained only for components which are visible. It can also be set toalways
ornever
. - ADDED: The current session ID is now available as
$session.id
. - ADDED: Every component now has a
style=
attribute which allows the cell visual style to be specified. In addition, each component has a.style()
property which allows querying or changing of the style of active forms objects. - ADDED: A complete new Forms API was added, including the
$form
variable to access the root components, along with reliable access to thecomponent
context variable to access the current component properties, parents, and siblings. - ADDED: The
sleep(seconds)
function was added as a way to create momentary delays. This method only has an effect in an action context, and is useful primarily for debugging and automated testing. - ADDED:
rememberValue
can be set totrue
orfalse
on any component to control whether or not the component’s value is remembered as the form default. If omitted, it defaults to the setting ofrememberValues
set on the view. - ADDED: The view
rememberValues
can be set totrue
orfalse
to specify the default for each component. - ADDED:
$action.getUserChoice()
can be used to pop up a data-selection dialog similar to the species selection which occurs in the hard-codedcatchEntryView
species addition button. - ADDED:
rememberValueAs
can be set to a string identifier (not an expression, similar to a variable name) and the system will save the default value for this component so that any component that uses the same name will share the default. This can be useful for license numbers and other information which is globally applicable to more than one view. - ADDED: The forms API for
catchEntryView
now allows navigation of each catch item. The function.catchValue(species)
allows querying of the current catch value and the propertiesminValue
,maxValue
,blackListDisposals
,whiteListDisposals
andcontainerCount
are also supported. - DEPRECATED: While still supported, the
$view.change()
method is no longer the preferred way to access and change component values. The.value()
method for each component should be used instead. - DEPRECATED:
alwaysRequiresEntry
has been deprecated in favour ofrememberValue="false"
, above. - DEPRECATED:
saveValues
on views have been deprecated in favour ofrememberValues
on views, above. It continues to operate and is roughly equivalent torememberValues="true"
on the view. - REMOVED:
loadFrom
andcomparisonJoin
on components. Neither weren’t used in workflows. - REMOVED: The
catchType
lookup type has been removed from thenumberEntry
lookup
condition type.
For additional information on the above added items for CatchFlow™ developers and to download the latest CatchFlow™ IDE please click here.