This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -52,7 +52,7 @@
|
||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
||||
"AYANOVA_SERVER_TEST_MODE": "false",
|
||||
"AYANOVA_SERVER_TEST_MODE": "true",
|
||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||
|
||||
@@ -30,7 +30,7 @@ Remove widget route from release (or hide it) but keep in debug
|
||||
|
||||
DB INDEXES / PERFORMANCE
|
||||
- Absolutely have to fine tune the indexes before release.
|
||||
- Found a lot of useful info on examining index usage with postgres, there are some built in stats in Postgres that show how indexes are being used and or not used properly or usefully
|
||||
- Found a lot of useful info on examining index usage with postgres, there are some built in stats in PostgreSQL that show how indexes are being used and or not used properly or usefully
|
||||
- A quick search should show many ways to query for used tables etc
|
||||
- Monitor unussed indexes: https://jmorano.moretrix.com/2014/02/postgresql-monitor-unused-indexes/
|
||||
- Many queries to do with tuning: https://gist.github.com/ruckus/5718112
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
Select lists are used to select and / or search for a value on forms. For example a Part on a Workorder form.
|
||||
Select lists are used to select and / or filter for a value on forms. For example a Part on a Workorder form.
|
||||
Select lists can be [customized](adm-global-select-templates.md) for each object type so that they will display one or multiple fields from that object type.
|
||||
|
||||
By default the Name of an object will *always* be present in that object type's select list template in addition to any other fields selected for that object type's select list template.
|
||||
@@ -10,50 +10,52 @@ By default the Name of an object will *always* be present in that object type's
|
||||
They are also used to open the record selected in them or a new record if no selection has been made.
|
||||
|
||||
## Selecting
|
||||
A maximum of 100 items are returned by the server for any select list and clicking on a select list will cause it to drop down and by default fetch the first 100 records found for that type of object in the AyaNova database. For objects that there are less than 100 of this is often all that is required to select the item you need. However for larger lists a search will be necessary.
|
||||
A maximum of 100 items are returned by the server for any select list and clicking on a select list will cause it to drop down and by default fetch the first 100 records found for that type of object in the AyaNova database. For objects that there are less than 100 of this is often all that is required to select the item you need. However for larger lists a filter will be necessary.
|
||||
|
||||
### No selection item
|
||||
Select lists have a special item represented by a single dash character `-` which indicates that no selection has been made for that item.
|
||||
|
||||
## Searching
|
||||
## Filtering
|
||||
|
||||
The fastest way to select an item when there are a large number of choices is by searching.
|
||||
The fastest way to select an item when there are a large number of choices is by filtering.
|
||||
|
||||
The choices in the select list can be searched for by entering text into the control.
|
||||
A valid search consists of a single text search a single [Tag](ay-start-form-tags.md) search or both separated by a space.
|
||||
The choices in the select list can be filtered by entering text into the control.
|
||||
A valid filter consists of a single text filter a single [Tag](ay-start-form-tags.md) filter or both separated by a space.
|
||||
|
||||
If a search is invalid the control will show an error message with a help link to this page of documentation.
|
||||
If a filter is invalid the control will show an error message with a help link to this page of documentation.
|
||||
|
||||
By default the Name field is always present and searchable but other fields can be added for selection and searching via template.
|
||||
Tags will only display if added to the template but you can always search for them.
|
||||
By default the Name field is always present and filterable but other fields can be added for selection and filtering via template.
|
||||
Tags will only display if added to the template but you can always filter for them.
|
||||
|
||||
### Search by text
|
||||
### Filter by text
|
||||
A single string of text with no spaces can be entered into the control to bring back results that *contain* anywhere in their name or templated fields that text entered.
|
||||
Multiple separate text queries are *not* supported, so for example this search `paul pero` is not valid.
|
||||
Multiple separate text queries are *not* supported, so for example this filter `paul pero` is not valid.
|
||||
|
||||
The server will search all the fields that are specified in the select list template for that type of object.
|
||||
By default searches are *not* case sensitive however that can be adjusted via [Global settings](adm-global-settings.md) if required.
|
||||
The server will filter all the fields that are specified in the select list template for that type of object.
|
||||
By default filters are *not* case sensitive however that can be adjusted via [Global settings](adm-global-settings.md) if required.
|
||||
|
||||
Filtering, sort order and case sensitivity are affected by your [Server locale setting](ops-server-locale.md)
|
||||
|
||||
For example if you want to quickly select a Customer named "Paul's Perogies" you could type `pau` and up to 100 of the Customers with "pau" anywhere in their select list template would be returned for selection. You could also type `per` which would also match to "Paul's Perogies" and any other Customers with "per" anywhere in their template.
|
||||
|
||||
### Search by tag
|
||||
A tag query is a string of text with no spaces that starts with two consecutive periods, i.e. `..north` will search for all objects tagged with tags that contain the text "north".
|
||||
### Filter by tag
|
||||
A tag query is a string of text with no spaces that starts with two consecutive periods, i.e. `..north` will filter for all objects tagged with tags that contain the text "north".
|
||||
|
||||
You can always search for an object by [Tag](ay-start-form-tags.md) even if it's not set to display in the select list template for that object type. If the select list template has had tags added to it they will display in the selection list as a comma separated list of all tags e.g. "Paul's Perogies zone1,north,etc" but even if they are not added to the template they will still be searched when a tag query is entered.
|
||||
You can always filter for an object by [Tag](ay-start-form-tags.md) even if it's not set to display in the select list template for that object type. If the select list template has had tags added to it they will display in the selection list as a comma separated list of all tags e.g. "Paul's Perogies zone1,north,etc" but even if they are not added to the template they will still be filtered when a tag query is entered.
|
||||
|
||||
Just like text searches, tag searches will match to any position in the tag name, so for example if you were searching for an object tagged with "outside-service" you could enter `..side` and it would match all tags that contain those letters.
|
||||
Just like text filters, tag filters will match to any position in the tag name, so for example if you were filtering for an object tagged with "outside-service" you could enter `..side` and it would match all tags that contain those letters.
|
||||
|
||||
### Combined searches
|
||||
You can also search by tag and by text combined, for example entering `aul ..side` indicates you want to search all text for the letters "aul" and all tags for the letters "side" which is useful to narrow down the search quickly to very specific records.
|
||||
### Combined filters
|
||||
You can also filter by tag and by text combined, for example entering `aul ..side` indicates you want to filter all text for the letters "aul" and all tags for the letters "side" which is useful to narrow down the filter quickly to very specific records.
|
||||
|
||||
### Item not appearing in search?
|
||||
Inactive records are not valid for selection in many forms so if you are searching for an item that is set to Active=false it likely will not appear in your search on most forms by default.
|
||||
### Item not appearing in results?
|
||||
Inactive records are not valid for selection in many forms so if you are filtering for an item that is set to Active=false it likely will not appear in your results on most forms by default.
|
||||
|
||||
### Opening selected record
|
||||
If the selection list is displaying objects that you are able to open for editing, an edit icon will appear beside the control and clicking on that icon will directly open the edit form for that record or a empty for for a new record if the special "-" no selection item has been selected. This is a quick way to get to the object from another object's edit form. You will be prompted to save changes first if you have any unsaved changes.
|
||||
|
||||
### Clear button
|
||||
The select list has a clear button that can be used to quickly erase the contents of the select list to save a step when you want to enter a new search.
|
||||
The select list has a clear button that can be used to quickly erase the contents of the select list to save a step when you want to enter a new filter.
|
||||
|
||||
## Customizing pick list template
|
||||
The choice of fields displayed and searched in the select list can be [customized](adm-global-select-templates.md).
|
||||
The choice of fields displayed and filterable in the select list can be [customized](adm-global-select-templates.md).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# BACKUP UTILITY "pg_dump" PATH SETTING
|
||||
|
||||
This setting controls where AyaNova will find the Postgres pg_dump utlity for automated backups.
|
||||
This setting controls where AyaNova will find the PostgreSQL pg_dump utlity for automated backups.
|
||||
|
||||
## Default
|
||||
|
||||
|
||||
29
docs/8.0/ayanova/docs/ops-server-locale.md
Normal file
29
docs/8.0/ayanova/docs/ops-server-locale.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Server locale setting
|
||||
|
||||
## Overview
|
||||
|
||||
AyaNova supports Unicode text and localization. The Locale setting of the host server operating system affects both directly and indirectly how sorting, searching and filtering (case insensitive) work in AyaNova.
|
||||
|
||||
When AyaNova creates it's database for the first time, PostgreSQL server will set various Locale settings by taking the operating system defaults. AyaNova only specifies the UTF8 text encoding (for Unicode support) property and leaves the rest up to Postgres which in turn relies on the operating system locale settings.
|
||||
For more information see the Postgres [Localization documentation](https://www.postgresql.org/docs/current/locale.html)
|
||||
|
||||
The current locale settings can be viewed in either the AyaNova server log by enabling the Debug version of the log or in the AyaNova user interface under Server Operations -> Server Information page in the "DB server parameters" section, specifically the `lc_collate` and `lc_ctype` runtime parameters.
|
||||
|
||||
## Sorting
|
||||
|
||||
AyaNova relies on the PostgreSQL database server to order data for display order to the user and this is controlled by the `lc_collate` [runtime parameter](https://www.postgresql.org/docs/current/locale.html) in PostgreSQL.
|
||||
By default when AyaNova creates it's database it will take this parameter from the underlying operating system's locale settings.
|
||||
|
||||
## Searching
|
||||
|
||||
The AyaNova Search feature (search form) *always* searches case **in**-sensitive by default. There is no setting to change this to case sensitive as that is not supported for searching. In practice this means that all text is treated as lower case for searching. Text entered is converted to lower case and searched for by relying on the server's host operating system locale setting in conjunction with the Postgre server's AyaNova database locale setting (see Overview above for how to view these settings in AyaNova).
|
||||
|
||||
## Filtering
|
||||
|
||||
Filtering a data table or pick list is case **in**-sensitive by default, however this can be changed in the Adminstration -> Global settings form `Filtering is case sensitive` checkbox. Setting this to checkmarked (true) means that all filters will be treated as case sensitive so for example filtering a list for "group" will NOT match to "Group".
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -190,8 +190,8 @@ namespace AyaNova.Api.Controllers
|
||||
AYANOVA_LOG_PATH = ServerBootConfig.AYANOVA_LOG_PATH,
|
||||
AYANOVA_LOG_LEVEL = ServerBootConfig.AYANOVA_LOG_LEVEL,
|
||||
AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG = ServerBootConfig.AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG,
|
||||
BOOT_DIAGNOSTIC_INFO = ServerBootConfig.BOOT_DIAGNOSTIC_INFO,
|
||||
DBSERVER_DIAGNOSTIC_INFO = ServerBootConfig.DBSERVER_DIAGNOSTIC_INFO
|
||||
serverinfo = ServerBootConfig.BOOT_DIAGNOSTIC_INFO,
|
||||
dbserverinfo = ServerBootConfig.DBSERVER_DIAGNOSTIC_INFO
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace AyaNova.DataList
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
/// <summary>
|
||||
/// Translate DataFilter to Postgres friendly SQL criteria
|
||||
/// Translate DataFilter to PostgreSQL friendly SQL criteria
|
||||
/// </summary>
|
||||
private static string DataFilterToColumnCriteria(string SqlColumnNameToFilter, UiFieldDataType DataType, string sOperator, string sValue, DateTimeOffset clientTimeStamp)
|
||||
{
|
||||
@@ -908,7 +908,7 @@ namespace AyaNova.DataList
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
/// <summary>
|
||||
/// Translate TAG DataFilter to Postgres friendly SQL criteria
|
||||
/// Translate TAG DataFilter to PostgreSQL friendly SQL criteria
|
||||
/// </summary>
|
||||
private static string TagDataFilterToColumnCriteria(string SqlColumnNameToFilter, string sOperator, string sValue)
|
||||
{
|
||||
@@ -1029,7 +1029,7 @@ namespace AyaNova.DataList
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Postgres compatible date format
|
||||
/// PostgreSQL compatible date format
|
||||
/// https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-DATE-TABLE
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
|
||||
@@ -570,7 +570,7 @@ namespace AyaNova
|
||||
_newLog.LogInformation("Database server version - {0}", dbServerVersionInfo);
|
||||
|
||||
//db server extended parameters
|
||||
_newLog.LogInformation("Database server runtime parameters - {0}", string.Join(Environment.NewLine, dbServerRunTimeParameters));
|
||||
_newLog.LogDebug($"Database server runtime parameters{Environment.NewLine}{string.Join(Environment.NewLine, dbServerRunTimeParameters)}");
|
||||
|
||||
ServerBootConfig.DBSERVER_DIAGNOSTIC_INFO.Add("DB SERVER", dbServerVersionInfo);
|
||||
foreach (var p in dbServerRunTimeParameters)
|
||||
|
||||
@@ -2078,7 +2078,7 @@
|
||||
"LargeLogo": "Großes Logo",
|
||||
"ShutDownServer": "Server herunterfahren",
|
||||
"AreYouSureShutDown": "Sind Sie sicher, dass Sie den Server herunterfahren möchten?",
|
||||
"ViewServerConfiguration": "Konfiguration anzeigen",
|
||||
"ViewServerConfiguration": "Serverinformation",
|
||||
"UpdateAvailable": "Update ist verfügbar. Jetzt installieren?",
|
||||
"DropFilesHere": "Dateien hier ablegen",
|
||||
"First": "Zuerst",
|
||||
|
||||
@@ -2078,7 +2078,7 @@
|
||||
"LargeLogo": "Large sized logo",
|
||||
"ShutDownServer": "Shut down server",
|
||||
"AreYouSureShutDown": "Are you certain you want to shut down the server?",
|
||||
"ViewServerConfiguration": "View server configuration",
|
||||
"ViewServerConfiguration": "Server information",
|
||||
"UpdateAvailable": "Update is available. Install it now?",
|
||||
"DropFilesHere": "Drop files here",
|
||||
"First": "First",
|
||||
|
||||
@@ -2078,7 +2078,7 @@
|
||||
"LargeLogo": "Logotipo de gran tamaño",
|
||||
"ShutDownServer": "Apagar el servidor",
|
||||
"AreYouSureShutDown": "¿Estás segura de que quieres cerrar el servidor?",
|
||||
"ViewServerConfiguration": "Ver configuración",
|
||||
"ViewServerConfiguration": "Información del servidor",
|
||||
"UpdateAvailable": "Actualización disponible. ¿Instalarlo ahora?",
|
||||
"DropFilesHere": "Suelta los archivos aquí",
|
||||
"First": "Primero",
|
||||
|
||||
@@ -2078,7 +2078,7 @@
|
||||
"LargeLogo": "Logo de grande taille",
|
||||
"ShutDownServer": "Arrêter le serveur",
|
||||
"AreYouSureShutDown": "Êtes-vous certain de vouloir arrêter le serveur?",
|
||||
"ViewServerConfiguration": "Afficher la configuration",
|
||||
"ViewServerConfiguration": "Informations sur le serveur",
|
||||
"UpdateAvailable": "La mise à jour est disponible. Installez-le maintenant?",
|
||||
"DropFilesHere": "Déposez les fichiers ici",
|
||||
"First": "Première",
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace AyaNova.Util
|
||||
{
|
||||
return new DateTime(5555, 1, 1);
|
||||
//Was going to use MaxValue but apparently that varies depending on culture
|
||||
// and Postgres has issues with year 1 as it interprets as year 2001
|
||||
// and PostgreSQL has issues with year 1 as it interprets as year 2001
|
||||
// so to be on safe side just defining one for all usage
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ namespace AyaNova.Util
|
||||
{
|
||||
return DateTime.Now.ToString("s");
|
||||
//Was going to use MaxValue but apparently that varies depending on culture
|
||||
// and Postgres has issues with year 1 as it interprets as year 2001
|
||||
// and PostgreSQL has issues with year 1 as it interprets as year 2001
|
||||
// so to be on safe side just defining one for all usage
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user