Exemple #1
0
        private async Task InitializeAsync(string language)
        {
            _menuCache ??= new ConcurrentCache <string, ValueTask <DemoMenuItem[]> >();
            await _menuCache.GetOrAdd(language, async (currentLanguage) =>
            {
                var menuItems = await _httpClient.GetFromJsonAsync <DemoMenuItem[]>(new Uri(_baseUrl, $"_content/AntDesign.Docs/meta/menu.{language}.json").ToString());

                return(menuItems);
            });

            _componentCache ??= new ConcurrentCache <string, ValueTask <IDictionary <string, DemoComponent> > >();
            await _componentCache.GetOrAdd(language, async (currentLanguage) =>
            {
                var components = await _httpClient.GetFromJsonAsync <DemoComponent[]>(new Uri(_baseUrl, $"_content/AntDesign.Docs/meta/components.{language}.json").ToString());

                return(components.ToDictionary(x => x.Title.ToLower(), x => x));
            });

            _demoMenuCache ??= new ConcurrentCache <string, ValueTask <DemoMenuItem[]> >();
            await _demoMenuCache.GetOrAdd(language, async (currentLanguage) =>
            {
                var menuItems = await _httpClient.GetFromJsonAsync <DemoMenuItem[]>(new Uri(_baseUrl, $"_content/AntDesign.Docs/meta/demos.{language}.json").ToString());

                return(menuItems);
            });

            _docMenuCache ??= new ConcurrentCache <string, ValueTask <DemoMenuItem[]> >();
            await _docMenuCache.GetOrAdd(language, async (currentLanguage) =>
            {
                var menuItems = await _httpClient.GetFromJsonAsync <DemoMenuItem[]>(new Uri(_baseUrl, $"_content/AntDesign.Docs/meta/docs.{language}.json").ToString());
                return(menuItems);
            });
        }
        public async Task InitializeDemos()
        {
            if (_showCaseCache == null)
            {
                _showCaseCache = new ConcurrentCache <string, RenderFragment>();

                var baseUrl   = _navigationManager.ToAbsoluteUri(_navigationManager.BaseUri);
                var demoTypes = await _httpClient.GetFromJsonAsync <string[]>(new Uri(baseUrl, $"_content/AntDesign.Docs/meta/demos.json").ToString());

                foreach (var type in demoTypes)
                {
                    _showCaseCache.GetOrAdd(type, t =>
                    {
                        void ShowCase(RenderTreeBuilder builder)
                        {
                            var showCase = Type.GetType($"{Assembly.GetExecutingAssembly().GetName().Name}.{type}");
                            builder.OpenComponent(0, showCase);
                            builder.CloseComponent();
                        }

                        return(ShowCase);
                    });
                }
            }
        }
        public RenderFragment GetShowCase(string type)
        {
            _showCaseCache ??= new ConcurrentCache <string, RenderFragment>();
            return(_showCaseCache.GetOrAdd(type, t =>
            {
                var showCase = Type.GetType($"{Assembly.GetExecutingAssembly().GetName().Name}.{type}");
                void ShowCase(RenderTreeBuilder builder)
                {
                    builder.OpenComponent(0, showCase);
                    builder.CloseComponent();
                }

                return ShowCase;
            }));
        }
        private async Task InitializeAsync()
        {
            _componentCache ??= new ConcurrentCache <string, ValueTask <IDictionary <string, DemoComponent> > >();
            await _componentCache.GetOrAdd(CurrentLanguage, async (currentLanguage) =>
            {
                var baseUrl    = _navigationManager.ToAbsoluteUri(_navigationManager.BaseUri);
                var components = await _httpClient.GetFromJsonAsync <DemoComponent[]>(
                    new Uri(baseUrl, $"_content/AntDesign.Docs/meta/demo.{CurrentLanguage}.json").ToString());

                return(components.ToDictionary(x => x.Title.ToLower(), x => x));
            });

            _menuCache ??= new ConcurrentCache <string, ValueTask <DemoMenuItem[]> >();
            await _menuCache.GetOrAdd(CurrentLanguage, async (currentLanguage) =>
            {
                var baseUrl   = _navigationManager.ToAbsoluteUri(_navigationManager.BaseUri);
                var menuItems = await _httpClient.GetFromJsonAsync <DemoMenuItem[]>(
                    new Uri(baseUrl, $"_content/AntDesign.Docs/meta/menu.{CurrentLanguage}.json").ToString());

                return(menuItems);
            });
        }