Lianja App Builder Changelog

What's new in Lianja App Builder 1.0.0 RC 7

Jul 20, 2013
  • Made all properties and methods available for gadgets when referencing them in the LOM with Lianja.getElementByID().
  • Added support for keyboard shortcuts in section header and footer menus e.g. &Add,&Delete,&Refresh. Press Alt+A, Alt+D, Alt+R respectively. &F4 Edit, &F2 Search, etc allows binding menuitems to function keys.
  • Various improvements to VFP scripting compatibility.
  • Added section default attributes in App Settings.
  • Added choice of icon sets for section headers in App Settings.
  • Added CheckListView gadget and OptionGroup advanced control.
  • Enabled themes.
  • More example Apps.
  • Section menus now operate as dropdown menus automatically without having to click on the menuitem. Just hover the nouse over the menuitem and the menu will drop down.
  • Added the following new methods to the grid class. RefreshRow(row), RefreshRecord(recno), RefreshCell(row,col). The row/cell are refreshed but the grid stays on the active cell being edited. You would typically use these in the "InteractiveChange" delegate.
  • Various improvements to the VFP pjx/scx/vcx importers; handle multiple property declarations and creation of objects in subclasses that have incomplete parent class definitions in the VFP scx/vcx file.
  • Fixed a SQL issue which caused SQL SELECT not to query from an existing local cursor which has an alias name with the same name as the table being queried in the FROM clause. This provides additional functionality and performance by allowing mutiple SQL queries to be performed against a local cursor which was loaded from a remote VirtualTable data source without having to make any round trips to the server.
  • Added a new Field attribute that allows hiding the "Search Field Indicator" from the field which can be useful when CSS styling the UI.
  • Added a new delegate in pages -- "Instant search". This allows you to handle the standard instant search in custom code or an inline delegate. The delegate is called with the text input as a parameter. So if you want to perform a new query of data for a section and refresh() the section this is the delegate to use.
  • Added a new delegate for App,Page,Section and Formitems (Fields and Gadgets). The "Ready" delegate is called after the "Load" delegate when the LOM (Lianja Object Model) is ready.
  • Fixed an issue with SQL SELECT INNER JOIN.
  • Fixed various reported bugs.

New in Lianja App Builder 1.0.0 RC 5.8 (Jun 24, 2013)

  • Fixed an issue with InteractiveChange and Change event dispatching.
  • Fixed an issue with getURL() and postURL() when multi-part responses were received from IIS.
  • Fixed an issue with VFP classes not adding sub-objects when INIT was missing. This was broken in RC5.7.
  • Fixed some issues with delegate dispatching when sections were inside a TabView.
  • Added a "Debug" tab to the App Inspector. Use DEBUGOUT in conjunction with this.
  • Fixed an issue where logical fields were not being saved correctly when the checkbox was clicked in "Edit" mode.
  • Fixed an issue where the systimelines table was not being created properly if it did not exist.
  • Fixed an issue where the temporary file created by the execscript() function was not being deleted.
  • Fixed an issue where editing CSS files was not applying the changed CSS correctly due to caching.
  • Added a "Fixed height" attribute for gadgets. This is particularly useful for displaying image gadgets so they stay a fixed size irrespective of the autosizing of the form section.
  • Added more customizability (caption#icon#sectionid,...) to the Navigation Panel items including the ability to raise stacked accordion sections at runtime to provide a more Tablet-oriented UI for Web/Mobile Apps. These can all be set as attributes in the page attributes dialog. There is a sample app called example_tabletui that demonstrates how to use this.
  • Gadgets in "Form" sections can now be optionally reendered "Inline" to assist in building more tablet-friendly Apps from the standard sections. They can also auto-stretch into the remaining width of the section as it is resized.
  • App Settings now provide the ability to theme the Data Navigation Bar for Desktop, Web, Mobile or Custom (with CSS). All themes other than Desktop now have "flat" buttons similar to those you see on iOS, Android and Win8.
  • WebView section gadgets can now be editable when a "Data source" is specified.
  • Added a "Grid" gadget to form sections. Specify the table name or SQL select statement as the "Data source". To be able to edit the contents, check the "Editable" attribute. To dynamically change the records displayed in the grid as you navigate data using the Data Navigation Bar use { } macro substitution n the SQL where condition.
  • The Navigation Panel for a page can now be shared across all pages in an App. Just specify a file with a .txt extension e.g. navpanel_menu.txt where each line in the file is a # separated list of caption#icon#pageid.sectionid. The pageid is optional. This provides the ability to design a custom navigation panel for an App.
  • Added a new "Component" gadget type. This can be used to embed UI Pages from the UI Pages library into a gadget of a Form section.
  • Added Lianja.hideDialog() which closes the current modal dialog created with Lianja.showDialog().
  • Added some new example apps to the App Center Home workspace.
  • Added a "Manage Data" tile to the Home workspace for switching to the "Data" workspace.
  • Fixed an issue where CSS files where not being added to the "Deploy" workspace tree.
  • Fixed an issue where "include" directives in .rsp pages were not correctly looking in the library directory when lib:/filename was specified.
  • Added a new "Row height" attribute for Grid/attachment sections.
  • Added "Sub caption", "Read more" and "Sort by" attributes to the CatalogView section.
  • Added some new section attributes for setting the caption and data font sizes as well as the caption position for all form items contained within the form or canvas section.
  • Fixed up several bugs in "local" Virtual Tables.
  • Improved highlighting of text when using "Find" in the editor making it easier to see. Find also now wraps around the file.
  • Various code editing improvements including "Find All" across all files in an App.
  • Various reported bug fixes

New in Lianja App Builder 1.0.0 RC 5.7 (May 31, 2013)

  • VirtualTable properties can now specify updateFieldList=*,-name,-name2 to exclude specific columns e.g computed columns are not included in the update or insert operations.
  • Fixed an issue where SET CLASSLIB libraries were being opened after DEFINE CLASS which was causing issues with imported VFP forms.
  • Fixed an issue with the last return statement in a script file that did not have a newline character at the end of the line.
  • Fixed an issue clicking "Save" when adding a new record which had mandatory and validation set on some of the fields. The navigation buttons were also not being enabled properly.
  • Fixed an issue referencing sub-objects from the INIT method in custom code.
  • DataMappingGet and DataMappingSet attributes can now be referenced in custom code.
  • The "Activate()" and "Deactivate()" delegates are now called for sections as they are selected/deselected when in runtime mode.
  • Fixed an issue where TabView sections were not being shown in the App Inspector.
  • Fixed some event dispatching issues in the "Grid" class in custom code.
  • Fixed an issue where the Load and Activate delegates were not called for fields within Canvas Sections contained in a Tabview.
  • Fixed an issue which caused the LostFocus() event not to be called on subclassed Controls in custom code.
  • Fixed an issue using the MSSQL ODBC driver for Linux on Linux x64.
  • Fixed an issue where a ListBox with a static (comma separated) list of items was causing them to be duplicated.
  • Added Redraw() as a core method. This forces a UI control that is CSS themed to be redrawn. It should be called after you change the value of a property that is used as a CSS property selector to change the UI appearance of a control or other UI element.
  • Fixed an issue which caused the init() on a sub-classed custom class not to be called correctly.
  • Enhanced the GETFILE() function for improved VFP compatibility.
  • Fixed various reported bugs.

New in Lianja App Builder 1.0.0 RC 5.5 (May 2, 2013)

  • Added "Show memo/object panel" attribute which will display related memos or images in the split grid mode in "Grid" sections.
  • Fixed an issue with mandatory fields being checked when canceling a section edit.
  • NewObject('classname', 'classlib') now functions in the same way as VFP. The classlib is loaded if it is not already loaded. Class libraries are also reference counted.
  • Perform a VirtualTable requery when the parentdatachanged event fires if the "Automatically relate" attribute is unchecked in the section attributes dialog. The VirtualTable is re-queried selecting only those records that match the parent->child relationship.
  • Fixed an issue in the "Data" workspace which did not display "Memos" or "Object/images" correctly.
  • Added "Collapse" as a section property so it can be used when changing UI states.
  • Added requery(expC) as a method in the CursorAdaptor class. If this CursorAdaptor is bound to a VirtualTable then expC is the *new* SQL WHERE clause which is used to requery the remote ODBC data. The local cursor data is then replaced with the result of the query. This can be used very effectively in the section parentdatachanged event. It is worth remembering that changes to the underlying local cursor are automatically reflected on the remote data source; there is no special coding required.
  • Object names are now applied App wide based on ID as pageid_sectionid_formitemid. These can then be used as CSS selectors using #pageid_sectionid_formitemid.
  • All UI controls can be themed App wide now using lianja_ui_xxx CSS selectors. e.g. lianja_ui_textbox, lianja_ui_tree, lianja_ui_grid etc.
  • Improved CSS file editing by applying the CSS stylesheet when editing is complete so that it adjusts the App UI without having to reload the App (there was a CSS caching issue).
  • Added support for PEMSTATUS(object,property,5) for improved VFP compatibility.
  • Added support for TTOC(datetime, 3) for improved VFP compatibility. When 3 is specified the date time string returned is suitable for MSSQL VirtualTable queries.
  • Added the "lianja_uistate_mandatory" and "lianja_uistate_valid" CSS selectors to handle highlighting invalid data without having to write code to do it. e.g. *[lianja_uistate_valid="0"] { background:pink;}*[lianja_uistate_valid="1"}] { background:white; }.
  • Editor performance improvements when editing very large files.
  • Added "VFP forms" and "VFP classes"to the "Pages" in the FormToolsBar. This allows you to select an imported VFP .scx or .vcx file and a page will be created that embeds it.
  • Added an (optional) last parameter to KEYLOOKUP() which is the expression result to return if the lookup fails.
  • Added support for custom/user-defined attributes which can be used as CSS selectors for theming. User defined attributes are prefixed with user_ e.g. Lianja.getElementByID("field17").user_mandatory = "1".
  • Fixed an issue embedding imported VFP SCX and VCX files in a custom section.
  • Improved importers to properly handle continuation lines and procedures with no corresponding endproc.
  • Added a second parameter to Lianja.showMessage() so that the message stays visible until Lianja.hideMessage() is called. This second parameter should be a numeric which is the minimum width of the displayed message panel if > 1 and the message position if

New in Lianja App Builder 1.0.0 RC 5.4 (Apr 20, 2013)

  • Removed the sample apps which will be made available on the Lianja App Store.
  • App store added to the Home workspace menubar for downloading/installing certified Lianja packages.
  • Fixed an issue focussing on the first non-readonly field in form edit mode.
  • Fixed an issue displaying form fields which had expressions specified as the "Data source".
  • Added user "guest" as a known username&password. Provides readonly access to Apps in the "public" tenancy. Disable with the command line switch --noguests
  • Added --runtimecaption "text" command line switch for runtime app center customization
  • Added --kiosk command line switch for runtime app center customization
  • App Packager (deploy an App as a .lpk file). These can be built through the "Deploy" workspace in the Lianja App Builder. The .lpk file contains the Apps, Libraries, Page Libraries, Extensions and Databases that are selected in the "Deploy" workspace. You can also email a .lpk file to members of your team and "Install package" from the App Builder "Apps" workspace to share apps between each other. This is the preferred way to share open source Apps from LianjaX. Just download the .lpk file from LianjaX and click the "Install package" icon in the Apps workspace, select the .lpk file and the App will be installed. The Lianja App Store uses .lpk files for deployment also.
  • Virtual Tables now honor the UpdatableFieldList and the KeyFieldList in the CursorAdaptor that they are attached to.
  • Fixed an issue where hiding the Add/Delete buttons in a Form section header still made them visible.
  • Fixed an issue with field validation incorrectly focussing on the next field when Tab is pressed and validation fails.
  • The VisibleWhen and EnabledWhen delegates were only being called when an App was running from the App Center (A runtime app). I have changed this behavior so that they are called when you switch into runtime mode and then made visible and enabled again when you switch back into development mode. This makes it easier to see how the App looks at runtime without having to deploy it.
  • Added a ValidWhen page delegate. This is evaluated before all section ValidWhen delegates and can be used to validate data across more than one section using Lianja.getElementByID(). If validation fails you can change the UI state which can highlight the fields in error by changing their background color.
  • Added ShowInfoTip(expC) as a core method on all UI controls.
  • Added backbone.js and JQueryMobile into the distribution (in the libraries) for building custom WebViews.
  • Fixed up an issue with grid events not been dispatched in custom code which sub-classed the grid framework class. (not delegates these were ok).
  • Fixed various reported bugs.

New in Lianja App Builder 1.0.0 RC 5.3 (Apr 11, 2013)

  • sqlConnect("local") and VirtualTable connstr "local" can now be specified to work on local Lianja SQL cursors. The connstr can also contain {macro} so that the connection can be switched without making any code changes.
  • Added "dual" as a synonym for the sysresultset system table for improved Oracle, MySQL and PostgreSQL SQL compatibility.
  • Added support for specifying fixed caption widths for fields in canvas sections.
  • Added Create/Modify VirtualTable dialog in Data Workspace.
  • Added Page margins attribute.
  • Lianja/SDK C API included in RC5.3 with an example Visual Studio solution and a Linux makefile.
  • Various VirtualTable bugs fixes.
  • Performance improvements loading VirtualTables.
  • VirtualTable enhancements: AutoSync property and sync() method.
  • The PRIMARYKEY clause on CREATE VIRTUALTABLE now takes a comma separated list of columns e.g. "id,name" which are used to generate the WHERE clause for UPDATE and DELETE commands. It has been renamed to KEYFIELDLIST (corresponding to the cursoradaptor property) but PRIMARYKEY is still a synonym for this so as not to break existing VirtualTables.
  • Fixed an issue with Oracle NULL dates in VirtualTables.
  • Various performance improvements.
  • Fixed various reported bugs.

New in Lianja App Builder 1.0.0 RC 5.2 (Apr 5, 2013)

  • Enhanced Virtual Tables with new extensions and native error messages.
  • Fixed an issue with auto detecting ODBC data sources.
  • Fixed an issue navigating data in canvas sections.
  • In the console workspace when a database is open, the 'dir' command now displays the type; Table, View, VirtualTable. For Views and VirtualTables all information is now displayed under the table name.
  • Fixed various reported bugs.

New in Lianja App Builder 1.0.0 RC3 (Jan 31, 2013)

  • Enhanced functionality and fixes

New in Lianja App Builder 1.0.0 RC2 (Dec 21, 2012)

  • enhanced functionality and fixes

New in Lianja App Builder 1.0.0 RC1 (Dec 10, 2012)

  • Enhanced functionality and a huge number of improvements