From b6ec4078c5e40acb823aef0d378d84fe25ad6e16 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 9 Oct 2020 14:35:14 +0000 Subject: [PATCH] --- ayanova/devdocs/changelog.txt | 5 +++++ ayanova/devdocs/todo.txt | 34 ---------------------------------- ayanova/src/api/gzapi.js | 15 ++++++++++----- ayanova/src/router.js | 16 +++++++++++++++- 4 files changed, 30 insertions(+), 40 deletions(-) create mode 100644 ayanova/devdocs/changelog.txt diff --git a/ayanova/devdocs/changelog.txt b/ayanova/devdocs/changelog.txt new file mode 100644 index 00000000..681803d8 --- /dev/null +++ b/ayanova/devdocs/changelog.txt @@ -0,0 +1,5 @@ +a.72 + removed lodash dependency + maybe fixed report double deletion error joyce found + report direct view via url now correctly opens even if user it already logged into AyaNova + http://localhost:8080/viewreport?oid=20&rid=1 \ No newline at end of file diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index ac67f05b..da6a4bff 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -3,41 +3,7 @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -todo: Joyce issue report: - can't delete second report template - FYI - still getting same server log error when try to delete report templates - CAN NOT DELETE more than one report template per loaded instance of servers - 1. via Administration -> Report Templates -> open a report template, select menu delete. - 2. First instance of selecting to delete since server was loaded - DOES delete. - 3. BUT if servers have been up since last deleted, when attempting to delete a second report template () will get the error message and rpot is not deleted. - 3.b only way to delete rpt template is to shut down servers, reload, then perform the above steps to delete. THEN have to shut down servers again, load again, then can delete third rpt. And so on. - CAN NOT DELETE more than one report template per loaded instance of servers - - xo - - 2020-09-28 11:15:48.9309|ERROR|NotifyEventProcessor|Ops problem notification: "Server API internal error, see log for more details"=>System.InvalidOperationException: A second operation started on this context before a previous operation completed. This is usually caused by different threads using the same instance of DbContext. For more information on how to avoid threading issues with DbContext, see https://go.microsoft.com/fwlink/?linkid=2097913. - at Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection() - at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken) - at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(DbContext _, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) - at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken) - at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) - at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) - at AyaNova.Biz.ReportBiz.DeleteAsync(Int64 id) in C:\data\code\raven\server\AyaNova\biz\ReportBiz.cs:line 213 - at AyaNova.Api.Controllers.ReportController.DeleteReport(Int64 id) in C:\data\code\raven\server\AyaNova\Controllers\ReportController.cs:line 153 - at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) - at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Logged|12_1(ControllerActionInvoker invoker) - at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) - at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) - at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) - at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) - at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) - - -todo: duplicate renaming code just keeps adding -1 to the end in consecutive duplicates so you get name-1-1-1-1 Is this kosher? - -todo: Direct report view URL doesn't work if already logged in due to code only being in login form - need to hijack the router before navigation to intercept special urls - https://test.helloayanova.com/widgets/499 - localhost:8080/viewreport?oid=20000&rid=9 todo: attachment control drag and drop should work on both file list and also attach side of things todo: wiki drag and drop image should automatically attach the image and do the linkup etc diff --git a/ayanova/src/api/gzapi.js b/ayanova/src/api/gzapi.js index 4e773274..19429754 100644 --- a/ayanova/src/api/gzapi.js +++ b/ayanova/src/api/gzapi.js @@ -656,7 +656,7 @@ export default { // RENDER REPORT DIRECTLY // // - async renderReport(objectid, reportid) { + async renderReport(objectid, reportid, redirectNotPopup) { let reportDataOptions = { ReportId: reportid, SelectedRowIds: [objectid], @@ -668,10 +668,15 @@ export default { throw new Error(res.error); } else { let reportUrl = window.$gz.api.reportDownloadUrl(res.data); - if (window.open(reportUrl, "Report") == null) { - throw new Error( - "Problem displaying report in new window. Browser must allow pop-ups to view reports; check your browser setting" - ); + if (redirectNotPopup) { + //used for direct report open from direct report view url + window.location.replace(reportUrl); + } else { + if (window.open(reportUrl, "Report") == null) { + throw new Error( + "Problem displaying report in new window. Browser must allow pop-ups to view reports; check your browser setting" + ); + } } } } diff --git a/ayanova/src/router.js b/ayanova/src/router.js index 5fbf96ca..bfc6b7de 100644 --- a/ayanova/src/router.js +++ b/ayanova/src/router.js @@ -522,9 +522,23 @@ export default new Router({ component: () => import(/* webpackChunkName: "ay-common" */ "./views/ay-history.vue") }, + //SPECIAL ROUTES + { + //REPORT VIEW FROM URL + path: "/viewreport", + beforeEnter: (to, from, next) => { + (async function() { + //open report links have a query string /viewreport?oid=[objectid]&rid=[reportid] + let objectId = parseInt(to.query.oid); + let reportId = parseInt(to.query.rid); + await window.$gz.api.renderReport(objectId, reportId, true); + })(); + + next(false); + } + }, //TEST TEST TEST TEST TEST - { //NEW TEST GZ DATA TABLE path: "/widgets",