This commit is contained in:
2020-10-09 14:35:14 +00:00
parent cbf0ee6516
commit b6ec4078c5
4 changed files with 30 additions and 40 deletions

View File

@@ -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

View File

@@ -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.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>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.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>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

View File

@@ -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"
);
}
}
}
}

View File

@@ -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",