Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@r3-gabriel
Copy link
Member

No description provided.

r3-gabriel and others added 30 commits October 17, 2021 15:35
Change log summaries are now downloaded from repositories and displayed in admin UI.
* Dynamic step count depending on field width.
* Style updates.
* Group label display option.
* Added field options that are stored in local cache
  * Last selected filter choice ID (list, calendar, gantt)
  * Last zoom factor, show group labels yes/no (gantt)
* Added shared field option manipulation functions for consistent access
* Updated gantt/calendar CSS - fixes to broken styles from last commit and changes to make calendar more consistent to gantt
Besides simple read/write/delete access to entire relations or attributes, as we have now, some use cases require per-record access control.

This is the first part of a full implementation for controlling record access via PG functions. DB is ready as well as the first version of the UI. Currently only data deletion works, updating and selecting data comes next.
Continuation of last commit. Relation access policies are now also applied when getting data.
Continuation of last two commits. Relation access policies are now also applied when updating data.
* Updated captions.
* Added policy help text.
* Filtered available PG functions to ones with integer/bigint array returns.
Embedded static files inside the main executable:
* Web files
* Package archives
* Captions

This reduces possible issues when updating, as in most cases only the executable would need to be replaced.
As 2.5 will use embedded web files (s. last commit), working on the R3 frontend can be cumbersome; every change to a web file requires a new build.

New command line flag '-wwwpath' can be used to define local file path for web files instead.
While possible in theory for a while, circular module dependency was not enabled as some questions needed to be sorted out. These have been addressed in this commit:
* With circular dependency, some applications cannot be deleted in isolation. Solution: Build function to delete dependencies automatically. With warning of course.
* Does circular dependency work with complex import scenarios? Answer: Yes, with the resilient transfer mechanics added in 2.x releases (and by not causing stack overflows with a bad import order).
Since switch to pgx, invalid SQL queries do not always cause an error to occur during the query but sometimes only when processing result rows. We could (maybe should?) check for these after all row processing - most important one is data GET however (most dynamic SQLs).
* Refactored the websocket handler.
* Removed unnecessary mutex for the websocket client hub.
* Removed unused hub broadcast.
* Added missing websocket close command on client side.
The Builder mode was previously controlled via the configuration file. This was done to make it harder for people to break their production instances.

Having it in the configuration file is cumbersome however and required a server restart to apply. We also couldn´t easily add warnings inside the configuration file regarding the Builder mode.

Moving it into the admin panel makes it easier to enable, but also gives us the ability to warn the admin user. It can also show more clearly the dependency between maintenance mode and the Builder (one requires the other).
Old system only allowed a single start form for each module. Now multiple, ordered forms can be assigned depending on a login role. Inherited roles are also considered.

The old module start form stays as fallback option.
If log function is called multiple times within a transaction, the timestamp would always be the same, because NOW() is transaction-dependent not statement-dependent. This is not desired for complex functions that need to log events in order of execution.

CLOCK_TIMESTAMP() works with the actual current clock time.
…gation

Identical to list fields, calendar fields (incl. Gantt) can now use the record ID of the parent form to pre-fill an attribute when opening a new form.

Used when calendar field is placed as sub field and needs to create child-entities, which reference back to the parent.

Also enabled middle-click navigation for calendar day events and button fields.
* Added details about embedded resources.
* Added info about installation & the Builder.
Old system only allowed a single start form for each module. Now multiple, ordered forms can be assigned depending on a login role. Inherited roles are also considered.

The old module start form stays as fallback option.
Added it_it as language for platform captions
* Added 'it_it' as hard-coded platform language.
* Added frontend function to get platform language codes from server.
Before we had to filter to (hopefully) fixed preset names; with this change, we can filter to presets directly.

To safely use preset filters, they should only ever refer to protected presets; otherwise we filter to potentially non-existing record IDs. The Builder only shows protected presets in corresponding inputs, but presets can be set to 'unprotected' afterwards. There is a fallback in place but the filter will not work as intended if the referenced preset record does not exist anymore.
Function works the same as for list fields. Calendar fields however add time-based filters in addition to existing query filters, which are not shown in SQL preview as they are context-dependent.
To enable 'top 5 of X' queries, results can now be limited to a fixed value. This works for lists, charts and column sub queries.

If used on lists, the list default limit and regular paging is disabled; the list will then only show the defined amount of results.
By default there is a number of list limit options (10, 25, 50, etc.). The default limit from the list field does not have to conform with these options however.

When a list default limit was set that was not a valid option, the limit input would appear empty. With this change the default list limit is added to the list of allowed limit options, if it is not already on it.
Translated "fixedLimit" string
Updated it_it language file
* Added valid array syntax, as in 'INTEGER ARRAY', in regex to filter usable functions.
* Added 'unfiltered' label if no function is set.
* Removed unnecessary position value.
If form attempts to load a record but gets no return, previously we just forwarded to an empty form. This is not desirable if we work on a record, save and then loose access directly because of the changed values (due to relation or form filters).

Now when a record is loaded (or reloaded after save) the form will keep its state but switch all input fields to readonly. This means that when saving a record and loosing access because of it, the record values stay visible with the whole form switching to readonly. The user sees the updated values but cannot continue working on the record.
@r3-gabriel r3-gabriel self-assigned this Nov 8, 2021
@r3-gabriel r3-gabriel merged commit 3e7100c into main Nov 8, 2021
@r3-gabriel r3-gabriel deleted the 2.5 branch November 8, 2021 09:51
iamaer4fa pushed a commit to iamaer4fa/r3 that referenced this pull request Feb 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants