This version includes a large number of improvements and fixes in the multi-user client/server code, plus a few fixes and improvements to regular single user operation as well. Here’s the complete list of changes in this release:
- Panorama now displays a “conversation” icon in the toolbar to indicate that this client has locked the current record. When the record is unlocked, the icon goes back to a “radio wave” icon. The Record Locking and Editing Shared Data help page has been extensively revised to reflect this as well as the changes to the Record menu listed below.
- New preference option in the Client panel that specifies what records should be selected after a synchronization, either All Records (the default) or Updated Records (records that have been modified by other users since the last time this client was synchronized). In previous versions, all records were selected.
- When a shared database is open, the Record menu now includes commands for locking/unlocking the current record (when the record is unlocked there is a Lock Record command, when locked there is an Unlock Record command). There is also a Download Record from Server command that updates the local copy of the record with the latest version from the server.
- When uploading a file or data to the server (for example for new generation or sharing a database), Panorama now displays the upload progress in a separate status window if the toolbar is not visible (if the toolbar is visible, the status is displayed there).
- When a shared database is open, hold down the Option key and click the Record menu to reveal an Upload to Server command. This can upload the current record to the server without locking it – for emergency use only (which is why it is only revealed when the Option key is pressed).
- The new selectrecordsrelatedto statement selects records in the current database that are related to any record in another database, and it does it super quickly.
- The new editfield statement begins editing of the specified field, as if the user had clicked on that field.
- Text List Objects now respond to the open action (see objectaction) by acquiring focus, so that they are responsive to keyboard activity (up/down, etc.).
- New statements for use with shared databases: downloadrecord, downloadrecordwithwarning, and uploadrecord.
- New function for use with shared databases: dbinfo(“recordlockid”,database), returns record id if this client has locked a record, or zero if no record locked.
- Upgraded server logging so that it records comprehensive detail for all possible server operations, including the requesting user/computer. The internal operation of some actions had to be modified to generate this comprehensive log information.
- New server log options for Server Management, Database Management, Upload, Journal Replay, Save and Synchronize.
- Errors are now logged to both the error log and the regular share/web publish log.
- Client now checks for connection problems EVERY time it connects to the server, and problems are trapped and reported properly (before some obscure errors were just ignored).
- When using a shared database, all fill commands now check the server connection before starting the fill, and abort if there is an error.
- If a user attempts to delete a record from a shared database, the server now unlocks the record before deleting (if possible).
- Auto unlock now always correctly marks the record as unlocked on the server.
- Fixed an error that could occur when deleting a database from the server.
- New option in Server Preferences panel to save all databases on the server immediately, and to disable server auto-save (for debugging).
- New pop-up menus for convenience in Server Preferences panel, for auto-save, close delay, and auto-lock.
- Terminate session now correctly closes any databases used by the terminated session.
- Server transaction journal now works properly with records that are longer than a single base64 line, and works with import, fill, and serverformulafill.
- The server no longer ever attempts to close a database that is already closed.
- When synchronizing, the notification now displays the correct number of deleted records, even if that number is zero, and even if the database contained summary records.
- The save statement now correctly unlocks the current record if it is being edited, and commits any changes to the server before performing the save.
- If a procedure modifying a shared database encounters a network error, Panorama now aborts the procedure immediately rather than trying to continue with the program.
- Fixed unpropagate statements (up and down) to work with shared databases.
- New emptylineitemnumber( function, returns the item number of the first matching line item field that is empty.
- Remove extra items from the try/catch stack if there is a return statement in the middle of a try/catch code block, possibly clearing up multiple mysterious intermittent problems.
- Fixed formatting of negative numbers when editing, no longer leaves in thousand separators.
- Fixed arrayrelocate( function to allow use of -1 to specify old or new item position.
- Panorama now disables auto-save whenever a procedure is running.
- Fixed View Search window, sometimes it would not open the correct view when you clicked on the matrix.
- Added error trapping to Help window when clicking on topic list, eliminating the possibility of errors if you click on this when another window is on top.
- Fixed Server Administration code error that occurred after terminating a server session.
- The ConstructField statement no longer fails with an error if a line has tags but no field name. Instead, it just ignores the line.
- The Instrumentation Note dialog now works with formulas even if the Instrumentation panel isn’t open.
- Updated line item documentation page with information about how to create line items with a template, and how to hide line item fields and find an empty line item field.
- Over 300 documentation changes submitted by Robert Ameeti, David Thompson, Peter Newble, Thomas Cooper, William Conable, James Cook, Craig MacPherson, Allen Moore and Eric Werner. As of today over 2600 user changes have been submitted during the life of the project.