From 6a5053eeda9fa673c130a63b006d74ddf17d4c97 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 29 Sep 2022 21:36:13 +0000 Subject: [PATCH] case 4200 --- devdocs/pricing.md | 2 +- dist/install/windows/x64/lan.iss | 2 +- dist/install/windows/x64/standalone.iss | 2 +- docs/8.0/ayanova/docs/changelog.md | 6 + docs/8.0/ayanova/docs/home-dashboard.md | 180 +++++++++--------- docs/8.0/ayanova/mkdocs.yml | 2 +- server/AyaNova/AyaNova.csproj | 4 +- server/AyaNova/kpi/CSROpenList.cs | 2 +- server/AyaNova/kpi/KPIFetcher.cs | 6 +- server/AyaNova/kpi/WorkOrderByStatusList.cs | 2 +- server/AyaNova/kpi/WorkOrderOverdueAllList.cs | 2 +- .../kpi/WorkOrderOverduePersonalList.cs | 2 +- .../kpi/WorkOrderUnscheduledOpenList.cs | 2 +- server/AyaNova/util/AySchema.cs | 2 +- server/AyaNova/util/AyaNovaVersion.cs | 2 +- 15 files changed, 118 insertions(+), 100 deletions(-) diff --git a/devdocs/pricing.md b/devdocs/pricing.md index bd52e53f..a896ec8d 100644 --- a/devdocs/pricing.md +++ b/devdocs/pricing.md @@ -194,7 +194,7 @@ TWO types makes the most sense after considering options: - One time fee, user can use indefinitely - self installed, hosted and maintained by customer - least profitable for us long term if they don't buy a maint. subscription -- Without maintenance subscription, eligable for Minor updates only to fix bugs no new features so in other words they buy 8.0.13 they can upgrade to any 8.0.X version release, but not 8.1 as it will be new features added that don't break backward compatibility +- Without maintenance subscription, eligable for Minor updates only to fix bugs no new features so in other words they buy 8.0.14 they can upgrade to any 8.0.X version release, but not 8.1 as it will be new features added that don't break backward compatibility - one-time payment, along with the option of a yearly maintenance fee. - This is basically our current model but we allow upgrades for subscribers - **HAS CODE IMPLICATIONS** upgrades need to check if allowed based on version number if no maintenance subscription _not_ on date of build. diff --git a/dist/install/windows/x64/lan.iss b/dist/install/windows/x64/lan.iss index 846a8307..e17677d7 100644 --- a/dist/install/windows/x64/lan.iss +++ b/dist/install/windows/x64/lan.iss @@ -1,7 +1,7 @@ ; LAN install for internal network use only #define MyAppName "AyaNova server" -#define MyAppVersion "8.0.13" +#define MyAppVersion "8.0.14" #define MyAppPublisher "Ground Zero Tech-Works, Inc." #define MyAppURL "https://ayanova.com/" #define MyAppLauncherExeName "ayanova-launcher.exe" diff --git a/dist/install/windows/x64/standalone.iss b/dist/install/windows/x64/standalone.iss index 497ed488..e764dea6 100644 --- a/dist/install/windows/x64/standalone.iss +++ b/dist/install/windows/x64/standalone.iss @@ -3,7 +3,7 @@ ; external to lan requires different config #define MyAppName "AyaNova" -#define MyAppVersion "8.0.13" +#define MyAppVersion "8.0.14" #define MyAppPublisher "Ground Zero Tech-Works, Inc." #define MyAppURL "https://ayanova.com/" #define MyAppLauncherExeName "ayanova-launcher.exe" diff --git a/docs/8.0/ayanova/docs/changelog.md b/docs/8.0/ayanova/docs/changelog.md index b0016fbd..d2326c58 100644 --- a/docs/8.0/ayanova/docs/changelog.md +++ b/docs/8.0/ayanova/docs/changelog.md @@ -6,6 +6,12 @@ The most recent changes are written in the AyaNova manual [hosted on our website ## 2022 +### AyaNova 8.0.14 (2022-09-29) + +#### Changed + +- UI, Server, Documentation: Dashboard list widgets limited to maximum 100 items to prevent overwhelming and potentially freezing the browser with large quantities of data better viewed through filtered data tables + ### AyaNova 8.0.13 (2022-09-28) #### Changed diff --git a/docs/8.0/ayanova/docs/home-dashboard.md b/docs/8.0/ayanova/docs/home-dashboard.md index eeaaaaf0..aeee4573 100644 --- a/docs/8.0/ayanova/docs/home-dashboard.md +++ b/docs/8.0/ayanova/docs/home-dashboard.md @@ -16,7 +16,7 @@ Dashboard widgets are available to specific roles so the widgets available vary ## How to access the Dashboard -- From the `Home` [navigation drawer](ay-start-form-overview.md#navigation-drawer) `Dashboard` item +- From the `Home` [navigation drawer](ay-start-form-overview.md#navigation-drawer) `Dashboard` item ## How the Dashboard works @@ -28,6 +28,14 @@ Most widgets depend upon data retrieved from the server. Widgets will refresh th When the view is changed to another form, the widgets are destroyed and no longer refresh. When the view moves back to the dashboard the widgets are re-instantiated and refreshed immediately and then on a cycle afterwards. +### List widgets count + +All List type widgets will display a count of items in the list at the top. If a list item has reached it's maximum amount of items allowed in the list it will display a `+` symbol next to the count indicating there are more records that were not fetched as the maximum limit has been reached. + +Widgets are intended to be used for quick access to targeted information; if you need to view more than the maximum number of items a dashboard widget permits, the equivalent data table list can be used instead as there are no limits to data tables. + +For example if you have thousands of overdue work orders because they were not set to a completed status, the overdue work orders widget will only show a maximum of 100 of the oldest work orders. To view them all, open the main Service Work orders data table and filter by any status not set to Completed. + ### Adding widgets When a User first opens the Dashboard it will be an empty form with an _Add_ button. Click on the Add button (or the Add menu item option) and a list of Dashboard widgets available to _that_ user will be presented. Clicking on a widget in the list will add it to the display. @@ -132,16 +140,16 @@ Columns displayed are priority, requested date, customer name and a second line Available to the following roles: -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted -- Service technician -- Service technician - restricted +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted +- Service technician +- Service technician - restricted Available filter criteria: -- Customer tags +- Customer tags #### Not Scheduled @@ -155,19 +163,19 @@ Work orders are listed from oldest at top to most recent at bottom. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted -- Service technician -- Service technician - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted +- Service technician +- Service technician - restricted Available filter criteria: -- Work order tags -- Work order item tags -- Work order Status +- Work order tags +- Work order item tags +- Work order Status #### Overdue - personal @@ -181,13 +189,13 @@ Work orders are listed from oldest at top to most recent at bottom. Available to the following roles: -- Service technician -- Service technician - restricted +- Service technician +- Service technician - restricted Available filter criteria: -- Work order tags -- Work order item tags +- Work order tags +- Work order item tags #### Overdue - All @@ -201,16 +209,16 @@ Work orders are listed from oldest at top to most recent at bottom. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted Available filter criteria: -- Work order tags -- Work order item tags +- Work order tags +- Work order item tags #### Reminders @@ -244,10 +252,10 @@ They will automatically update every 15 minutes approximately. Available filter criteria: -- Time span -- Interval -- Work order tags -- Work order item tags +- Time span +- Interval +- Work order tags +- Work order item tags #### Service quantity - All @@ -267,20 +275,20 @@ They will automatically update every 15 minutes approximately. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted Available filter criteria: -- Time span -- Interval -- User tags -- User (specific single user only) -- Work order tags -- Work order item tags +- Time span +- Interval +- User tags +- User (specific single user only) +- Work order tags +- Work order item tags #### Count of work orders created @@ -296,18 +304,18 @@ They will automatically update every 15 minutes approximately. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted Available filter criteria: -- Time span -- Interval -- Work order tags -- Work order item tags +- Time span +- Interval +- Work order tags +- Work order item tags #### Percentage of Work orders completed on time @@ -323,17 +331,17 @@ This widget will automatically update every 15 minutes approximately. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted Available filter criteria: -- Time span -- Interval -- Work order tags +- Time span +- Interval +- Work order tags #### Count of Work orders by status @@ -347,17 +355,17 @@ This widget will automatically update every 15 minutes approximately. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted Available filter criteria: -- Time span -- Interval -- Work order tags +- Time span +- Interval +- Work order tags #### Percentage of Work orders by status @@ -371,17 +379,17 @@ This widget will automatically update every 15 minutes approximately. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted Available filter criteria: -- Time span -- Interval -- Work order tags +- Time span +- Interval +- Work order tags #### Work orders by status list @@ -395,15 +403,15 @@ Work orders are listed from most recent at top to oldest at bottom. Available to the following roles: -- Accounting -- Business administration -- Business administration - restricted -- Service manager -- Service manager - restricted -- Service technician -- Service technician - restricted +- Accounting +- Business administration +- Business administration - restricted +- Service manager +- Service manager - restricted +- Service technician +- Service technician - restricted Available filter criteria: -- Work order tags -- Work order item tags +- Work order tags +- Work order item tags diff --git a/docs/8.0/ayanova/mkdocs.yml b/docs/8.0/ayanova/mkdocs.yml index 421de704..51e76e13 100644 --- a/docs/8.0/ayanova/mkdocs.yml +++ b/docs/8.0/ayanova/mkdocs.yml @@ -7,7 +7,7 @@ theme: site_name: AyaNova manual site_dir: '../../../server/AyaNova/wwwroot/docs' strict: true -copyright: Copyright © 2022 Ground Zero Tech-Works Inc. REV-2022-09-28 +copyright: Copyright © 2022 Ground Zero Tech-Works Inc. REV-2022-09-29 extra: generator: false # Extensions diff --git a/server/AyaNova/AyaNova.csproj b/server/AyaNova/AyaNova.csproj index 5ce2b6c7..a6d1081c 100644 --- a/server/AyaNova/AyaNova.csproj +++ b/server/AyaNova/AyaNova.csproj @@ -4,8 +4,8 @@ true - 8.0.13 - 8.0.13.0 + 8.0.14 + 8.0.14.0 ayanova.ico bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml 1591 diff --git a/server/AyaNova/kpi/CSROpenList.cs b/server/AyaNova/kpi/CSROpenList.cs index 82da9a20..3059be5d 100644 --- a/server/AyaNova/kpi/CSROpenList.cs +++ b/server/AyaNova/kpi/CSROpenList.cs @@ -41,7 +41,7 @@ AuthorizationRoles.TechRestricted; LEFT JOIN ACUSTOMER ON (ACUSTOMERSERVICEREQUEST.CUSTOMERID = ACUSTOMER.ID) WHERE (ACUSTOMERSERVICEREQUEST.STATUS = 0) {custTagsWhere} ORDER BY ACUSTOMERSERVICEREQUEST.DATEREQUESTED ASC - ) t"; + ) t LIMIT {KPIFetcher.KPI_LIST_MAX_ITEMS_TO_RETURN}"; _metaQuery = string.Empty; // @"SELECT row_to_json(t) as res from ( // select name from auser where id = 10 diff --git a/server/AyaNova/kpi/KPIFetcher.cs b/server/AyaNova/kpi/KPIFetcher.cs index d00aabd9..a61410ba 100644 --- a/server/AyaNova/kpi/KPIFetcher.cs +++ b/server/AyaNova/kpi/KPIFetcher.cs @@ -15,11 +15,15 @@ namespace AyaNova.KPI #if (AYSHOWKPIQUERYINFO) #if (DEBUG) #warning FYI AYSHOWKPIQUERYINFO is defined -#else +#else #error ### HOLDUP: AYSHOWKPIQUERYINFO is defined in a RELEASE BUILD!!!! #endif #endif + //case 4200 + //### WARNING: IF CHANGE HERE **must** update CLIENT dash-base.js same named constant as it relies on it's own copy of this CONSTANT value to indicate if there are possibly more + internal const int KPI_LIST_MAX_ITEMS_TO_RETURN = 100;//Maximum number of items to return from a KPI dashboard query so as not to overwhelm the client with too much data + //////////////////////////////////////////////// // Get the kpi data requested // diff --git a/server/AyaNova/kpi/WorkOrderByStatusList.cs b/server/AyaNova/kpi/WorkOrderByStatusList.cs index 168cdb44..7618ed73 100644 --- a/server/AyaNova/kpi/WorkOrderByStatusList.cs +++ b/server/AyaNova/kpi/WorkOrderByStatusList.cs @@ -78,7 +78,7 @@ namespace AyaNova.KPI LEFT JOIN ACUSTOMER ON (AWORKORDER.CUSTOMERID = ACUSTOMER.ID) WHERE {dateWhere} {statusWhere} {woTagsWhere} {woItemTagsWhere} ORDER BY AWORKORDER.ID DESC - ) t"; + ) t LIMIT {KPIFetcher.KPI_LIST_MAX_ITEMS_TO_RETURN}"; _metaQuery = string.Empty; // @"SELECT row_to_json(t) as res from ( // select name from auser where id = 10 diff --git a/server/AyaNova/kpi/WorkOrderOverdueAllList.cs b/server/AyaNova/kpi/WorkOrderOverdueAllList.cs index 73a55953..43e2ca10 100644 --- a/server/AyaNova/kpi/WorkOrderOverdueAllList.cs +++ b/server/AyaNova/kpi/WorkOrderOverdueAllList.cs @@ -48,7 +48,7 @@ namespace AyaNova.KPI WHERE (LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) and aworkorder.completebydate < now() {woTagsWhere} {woItemTagsWhere} ORDER BY AWORKORDER.ID ASC - ) t"; + ) t LIMIT {KPIFetcher.KPI_LIST_MAX_ITEMS_TO_RETURN}"; _metaQuery = string.Empty; // @"SELECT row_to_json(t) as res from ( // select name from auser where id = 10 diff --git a/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs b/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs index c748f5ad..ea3d171c 100644 --- a/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs +++ b/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs @@ -43,7 +43,7 @@ namespace AyaNova.KPI WHERE (LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) and aworkorder.completebydate < now() AND AWORKORDERITEMSCHEDULEDUSER.userID = {userId} {woTagsWhere} {woItemTagsWhere} ORDER BY AWORKORDER.ID ASC - ) t"; + ) t LIMIT {KPIFetcher.KPI_LIST_MAX_ITEMS_TO_RETURN}"; _metaQuery = string.Empty; // @"SELECT row_to_json(t) as res from ( // select name from auser where id = 10 diff --git a/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs b/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs index 6d168db4..dbf7db3c 100644 --- a/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs +++ b/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs @@ -66,7 +66,7 @@ AuthorizationRoles.TechRestricted; {woTagsWhere} {woItemTagsWhere} {statusWhere} ORDER BY AWORKORDER.ID ASC - ) t"; + ) t LIMIT {KPIFetcher.KPI_LIST_MAX_ITEMS_TO_RETURN}"; _metaQuery = string.Empty; // @"SELECT row_to_json(t) as res from ( // select name from auser where id = 10 diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index cf4a6e23..6c092eea 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -1573,7 +1573,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); ////////////////////////////////////////////////// // - // 8.0.13 additions for job feedback + // 8.0.14 additions for job feedback // if (currentSchema < 8) { diff --git a/server/AyaNova/util/AyaNovaVersion.cs b/server/AyaNova/util/AyaNovaVersion.cs index a8ee2851..68aaca65 100644 --- a/server/AyaNova/util/AyaNovaVersion.cs +++ b/server/AyaNova/util/AyaNovaVersion.cs @@ -5,7 +5,7 @@ namespace AyaNova.Util /// internal static class AyaNovaVersion { - public const string VersionString = "8.0.13"; + public const string VersionString = "8.0.14"; public const string FullNameAndVersion = "AyaNova server " + VersionString; public const string CurrentApiVersion="v8"; }//eoc