コード例 #1
0
        public DataTableOptions GetOptions(IDataTablePlacement placement)
        {
            var request    = httpContextAccessor.HttpContext.Request;
            Uri currentUri = new Uri(request.GetDisplayUrl());

            return(new DataTableOptions
            {
                Identifier = placement.Identifier,
                Table = placement.Table,
                UserId = placement.UserId,
                Columns = placement.Columns,
                Filters = placement.Filters,
                AllowTabs = placement.AllowTabs,
                DbConnection = placement.SourceConnection,
                Language = placement.Language,
                CurrentUrl = currentUri,
                MiddlewarePath = libConfig.MiddlewarePath,
                CurrentPage = request.TryGetPage(),
                Mode = request.TryGetMode() ?? DataTableMode.Table
            });
        }
コード例 #2
0
 public IServiceProvider GetServiceProvider(DataTableLibraryConfiguration libConfig, IDataTablePlacement placement)
 {
     return(new ServiceCollection()
            .AddSingleton(libConfig)
            .AddTransient(sp => httpContextAccessor)
            .AddTransient(sp => dataProtectionProvider)
            .AddTransient <IDataTableRepository>(sp => new DataTableDbContextRepository(libConfig.RepositoryType, libConfig.ConnectionString))
            .AddSingleton <IPlacementContext>(sp => new PlacementContext
     {
         Options = sp.GetRequiredService <IDataTableOptionsProvider>().GetOptions(placement),
         Config = sp.GetRequiredService <IDataTableRepository>()
                  .GetTableConfigAsync(placement.Identifier, placement.UserId)
                  .Result
     })
            .AddTransient <IDataTableOptionsProvider, UrlQueryOptionsProvider>()
            .AddTransient <IDataTableRenderer, HbsRenderer>()
            .AddTransient <IPostContextSerializer, PostContextSerializer>()
            .AddTransient <IDataTableRouter, DataTableRouter>()
            .AddTransient <TableController>()
            .AddTransient <TabListController>()
            .AddTransient <TabFormController>()
            .AddTransient <ControllerFactory>(sp => dataTableMode =>
     {
         return dataTableMode switch
         {
             DataTableMode.Table => sp.GetRequiredService <TableController>(),
             DataTableMode.TabList => sp.GetRequiredService <TabListController>(),
             DataTableMode.CreateTab => sp.GetRequiredService <TabFormController>(),
             _ => throw new NotImplementedException()
         };
     })
            .BuildServiceProvider());
 }