A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/signumsoftware/framework/commit/552079543443bff685e0a5b2fbe48dbefaaf149b below:

more on Dashboard Pinned Filters · signumsoftware/framework@5520795 · GitHub

@@ -64,10 +64,10 @@ public static void Start(SchemaBuilder sb, IFileTypeAlgorithm cachedQueryAlgorit

64 64 65 65

SchedulerLogic.ExecuteTask.Register((DashboardEntity db, ScheduledTaskContext ctx) => { db.Execute(DashboardOperation.RegenerateCachedQueries); return null; });

66 66 67 -

OnGetCachedQueryDefinition.Register((UserChartPartEntity ucp, PanelPartEmbedded pp) => new[] { new CachedQueryDefinition(ucp.UserChart.ToChartRequest().ToQueryRequest(), ucp.UserChart.Filters.GetPinnedFilterTokens(), pp, ucp.UserChart, ucp.IsQueryCached, canWriteFilters: true) });

68 -

OnGetCachedQueryDefinition.Register((CombinedUserChartPartEntity cucp, PanelPartEmbedded pp) => cucp.UserCharts.Select(uc => new CachedQueryDefinition(uc.UserChart.ToChartRequest().ToQueryRequest(), uc.UserChart.Filters.GetPinnedFilterTokens(), pp, uc.UserChart, uc.IsQueryCached, canWriteFilters: false)));

69 -

OnGetCachedQueryDefinition.Register((UserQueryPartEntity uqp, PanelPartEmbedded pp) => new[] { new CachedQueryDefinition(uqp.RenderMode == UserQueryPartRenderMode.BigValue ? uqp.UserQuery.ToQueryRequestValue() : uqp.UserQuery.ToQueryRequest(), uqp.UserQuery.Filters.GetPinnedFilterTokens(), pp, uqp.UserQuery, uqp.IsQueryCached, canWriteFilters: false) });

70 -

OnGetCachedQueryDefinition.Register((ValueUserQueryListPartEntity vuql, PanelPartEmbedded pp) => vuql.UserQueries.Select(uqe => new CachedQueryDefinition(uqe.UserQuery.ToQueryRequestValue(), uqe.UserQuery.Filters.GetPinnedFilterTokens(), pp, uqe.UserQuery, uqe.IsQueryCached, canWriteFilters: false)));

67 +

OnGetCachedQueryDefinition.Register((UserChartPartEntity ucp, PanelPartEmbedded pp) => new[] { new CachedQueryDefinition(ucp.UserChart.ToChartRequest().ToQueryRequest(), ucp.UserChart.Filters.GetDashboardPinnedFilterTokens(), pp, ucp.UserChart, ucp.IsQueryCached, canWriteFilters: true) });

68 +

OnGetCachedQueryDefinition.Register((CombinedUserChartPartEntity cucp, PanelPartEmbedded pp) => cucp.UserCharts.Select(uc => new CachedQueryDefinition(uc.UserChart.ToChartRequest().ToQueryRequest(), uc.UserChart.Filters.GetDashboardPinnedFilterTokens(), pp, uc.UserChart, uc.IsQueryCached, canWriteFilters: false)));

69 +

OnGetCachedQueryDefinition.Register((UserQueryPartEntity uqp, PanelPartEmbedded pp) => new[] { new CachedQueryDefinition(uqp.RenderMode == UserQueryPartRenderMode.BigValue ? uqp.UserQuery.ToQueryRequestValue() : uqp.UserQuery.ToQueryRequest(), uqp.UserQuery.Filters.GetDashboardPinnedFilterTokens(), pp, uqp.UserQuery, uqp.IsQueryCached, canWriteFilters: false) });

70 +

OnGetCachedQueryDefinition.Register((ValueUserQueryListPartEntity vuql, PanelPartEmbedded pp) => vuql.UserQueries.Select(uqe => new CachedQueryDefinition(uqe.UserQuery.ToQueryRequestValue(), uqe.UserQuery.Filters.GetDashboardPinnedFilterTokens(), pp, uqe.UserQuery, uqe.IsQueryCached, canWriteFilters: false)));

71 71

OnGetCachedQueryDefinition.Register((UserTreePartEntity ute, PanelPartEmbedded pp) => Array.Empty<CachedQueryDefinition>());

72 72

OnGetCachedQueryDefinition.Register((LinkListPartEntity uqp, PanelPartEmbedded pp) => Array.Empty<CachedQueryDefinition>());

73 73

@@ -447,57 +447,103 @@ public static List<CachedQueryDefinition> GetCachedQueryDefinitions(DashboardEnt

447 447

if (!writers.Any())

448 448

continue;

449 449 450 -

var equivalences = db.TokenEquivalencesGroups.Where(a => a.InteractionGroup == key || a.InteractionGroup == null);

450 +

var equivalenceGroups = db.TokenEquivalencesGroups.Where(a => a.InteractionGroup == key || a.InteractionGroup == null);

451 451 452 452

foreach (var wr in writers)

453 453

{

454 -

var keyColumns = wr.QueryRequest.GroupResults ?

455 -

wr.QueryRequest.Columns.Where(c => c.Token is not AggregateToken) :

456 -

wr.QueryRequest.Columns;

457 - 458 -

var equivalencesDictionary = (from gr in equivalences

459 -

from t in gr.TokenEquivalences.Where(a => a.Query.ToQueryName() == wr.QueryRequest.QueryName)

460 -

select KeyValuePair.Create(t.Token.Token, gr.TokenEquivalences.GroupToDictionary(a => a.Query.ToQueryName(), a => a.Token.Token)))

461 -

.ToDictionaryEx();

454 +

var keyColumns = wr.QueryRequest.GroupResults ?

455 +

wr.QueryRequest.Columns.Where(c => c.Token is not AggregateToken).Select(c => c.Token).Distinct().ToList() :

456 +

wr.QueryRequest.Columns.Select(c => c.Token).Distinct().ToList();

457 + 458 +

Dictionary<QueryToken, Dictionary<object, List<QueryToken>>> equivalencesDictionary = GetEquivalenceDictionary(equivalenceGroups, fromQuery: wr.QueryRequest.QueryName);

462 459 463 460

foreach (var cqd in cqdefs.Where(e => e != wr))

464 461

{

465 -

var extraColumns = keyColumns.Select(k =>

466 -

{

467 -

var translatedToken = TranslatedToken(k.Token, cqd.QueryRequest.QueryName, equivalencesDictionary);

468 - 469 -

if (translatedToken == null)

470 -

return null;

471 - 472 -

if (!cqd.QueryRequest.Columns.Any(c => translatedToken.Contains(c.Token)))

473 -

return translatedToken.FirstEx(); //Doesn't really matter if we add "Product" or "Entity.Product";

474 - 475 -

return null;

476 -

}).NotNull().ToList();

462 +

List<QueryToken> extraColumns = ExtraColumns(keyColumns, cqd, equivalencesDictionary);

477 463 478 464

if (extraColumns.Any())

479 465

{

480 -

ExpandColumns(cqd, extraColumns);

466 +

ExpandColumns(cqd, extraColumns, "Dashboard Filters from " + key);

481 467

}

482 468 483 469

cqd.QueryRequest.Pagination = new Pagination.All();

484 470

}

485 471

}

486 472

}

487 473 488 -

foreach (var cqd in definitions)

474 +

foreach (var writer in definitions)

489 475

{

490 -

if (cqd.PinnedFiltersTokens.Any())

491 -

ExpandColumns(cqd, cqd.PinnedFiltersTokens);

476 +

if (writer.PinnedFiltersTokens.Any())

477 +

{

478 +

var pft = writer.PinnedFiltersTokens.Where(a => a.prototedToDashboard == false).Select(a=>a.token).ToList();

479 +

if (pft.Any())

480 +

ExpandColumns(writer, pft, "Pinned Filters");

481 + 482 +

var dpft = writer.PinnedFiltersTokens.Where(a => a.prototedToDashboard == true).Select(a => a.token).ToList();

483 +

if (dpft.Any())

484 +

{

485 +

var equivalenceGroups = db.TokenEquivalencesGroups.Where(a => /*a.InteractionGroup == writer.PanelPart.InteractionGroup Needed? ||*/ a.InteractionGroup == null);

486 + 487 +

Dictionary<QueryToken, Dictionary<object, List<QueryToken>>> equivalencesDictionary = GetEquivalenceDictionary(equivalenceGroups, fromQuery: writer.QueryRequest.QueryName);

488 + 489 +

foreach (var cqd in definitions.Where(e => e != writer))

490 +

{

491 +

List<QueryToken> extraColumns = ExtraColumns(dpft, cqd, equivalencesDictionary);

492 +

if (extraColumns.Any())

493 +

{

494 +

ExpandColumns(cqd, extraColumns, "Dashboard Pinned Filters");

495 +

}

496 +

}

497 +

}

498 + 499 +

}

492 500

}

493 501 494 502

var cached = definitions.Where(a => a.IsQueryCached).ToList();

495 503 496 504

return cached;

497 505

}

498 506 499 -

private static void ExpandColumns(CachedQueryDefinition cqd, List<QueryToken> extraColumns)

507 +

private static List<QueryToken> ExtraColumns(List<QueryToken> requiredTokens, CachedQueryDefinition cqd, Dictionary<QueryToken, Dictionary<object, List<QueryToken>>> equivalencesDictionary)

508 +

{

509 +

var extraColumns = requiredTokens.Select(t =>

510 +

{

511 +

var translatedToken = TranslatedToken(t, cqd.QueryRequest.QueryName, equivalencesDictionary);

512 + 513 +

if (translatedToken == null)

514 +

return null;

515 + 516 +

if (!cqd.QueryRequest.Columns.Any(c => translatedToken.Contains(c.Token)))

517 +

return translatedToken.FirstEx(); //Doesn't really matter if we add "Product" or "Entity.Product";

518 + 519 +

return null;

520 +

}).NotNull().ToList();

521 +

return extraColumns;

522 +

}

523 + 524 +

private static Dictionary<QueryToken, Dictionary<object, List<QueryToken>>> GetEquivalenceDictionary(IEnumerable<TokenEquivalenceGroupEntity> equivalences, object fromQuery)

525 +

{

526 +

return (from gr in equivalences

527 +

from t in gr.TokenEquivalences.Where(a => a.Query.ToQueryName() == fromQuery)

528 +

select KeyValuePair.Create(t.Token.Token, gr.TokenEquivalences.GroupToDictionary(a => a.Query.ToQueryName(), a => a.Token.Token)))

529 +

.ToDictionaryEx();

530 +

}

531 + 532 +

private static void ExpandColumns(CachedQueryDefinition cqd, List<QueryToken> extraColumns, string errorContext)

500 533

{

534 +

if (cqd.QueryRequest.GroupResults)

535 +

{

536 +

var errors = extraColumns

537 +

.Select(a => new {

538 +

token = a,

539 +

error = QueryUtils.CanColumn(a) ?? (cqd.QueryRequest.GroupResults && !a.IsGroupable ? "Is not groupable" : null)

540 +

})

541 +

.Where(a => a.error != null);

542 + 543 +

if (errors.Any())

544 +

throw new InvalidOperationException($"Unable to expand columns in '{cqd.UserAsset.KeyLong()}' (query {QueryUtils.GetKey(cqd.QueryRequest.QueryName)}) requested by {errorContext} because: \r\n{errors.ToString(a => a.token.FullKey() + ": " + a.error, "\r\n")}");

545 +

}

546 + 501 547

cqd.QueryRequest.Columns.AddRange(extraColumns.Select(c => new Column(c, null)));

502 548

var avgs = cqd.QueryRequest.Columns.Extract(a => a.Token is AggregateToken at && at.AggregateFunction == AggregateFunction.Average);

503 549

foreach (var av in avgs)

@@ -578,7 +624,7 @@ public static List<CombinedCachedQueryDefinition> CombineCachedQueryDefinitions(

578 624 579 625

public class CachedQueryDefinition

580 626

{

581 -

public CachedQueryDefinition(QueryRequest queryRequest, List<QueryToken> pinnedFiltersTokens, PanelPartEmbedded panelPart, IUserAssetEntity userAsset, bool isQueryCached, bool canWriteFilters)

627 +

public CachedQueryDefinition(QueryRequest queryRequest, List<(QueryToken token, bool prototedToDashboard)> pinnedFiltersTokens, PanelPartEmbedded panelPart, IUserAssetEntity userAsset, bool isQueryCached, bool canWriteFilters)

582 628

{

583 629

QueryRequest = queryRequest;

584 630

PinnedFiltersTokens = pinnedFiltersTokens;

@@ -590,7 +636,7 @@ public CachedQueryDefinition(QueryRequest queryRequest, List<QueryToken> pinnedF

590 636

}

591 637 592 638

public QueryRequest QueryRequest { get; set; }

593 -

public List<QueryToken> PinnedFiltersTokens { get; set; }

639 +

public List<(QueryToken token, bool prototedToDashboard)> PinnedFiltersTokens { get; set; }

594 640

public PanelPartEmbedded PanelPart { get; set; }

595 641

public Guid Guid { get; set; }

596 642

public Lite<IUserAssetEntity> UserAsset { get; set; }


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4