Exemple #1
0
        protected async Task UpdateChart()
        {
            await Wait.Show();

            try
            {
                _stopWatch.Start();
                await BindRemote();

                //todo: reinstate new only
                if (NewOnly)
                {
                    throw new NotImplementedException();
                }
                else
                {
                    var settings = new EvalContextSettings();
                    settings.SerializableTypes.Add(typeof(PlotlyData[]));
                    using (dynamic context = new EvalContext(JSRuntime))
                    {
                        (context as EvalContext).Expression = () => context.PlotlyInterop.newPlot(Config);
                    }
                }
            }
            finally
            {
                await Wait.Hide();
            }
        }
        private void StoreConfig(Models.OptimizerConfiguration value)
        {
            var settings = new EvalContextSettings();

            settings.SerializableTypes.Add(typeof(Models.OptimizerConfiguration));
            using (dynamic context = new EvalContext(JSRuntime, settings))
            {
                var serialized = JsonSerializer.ToJsonString(value);
                (context as EvalContext).Expression = () => context.ClientStorage.storeConfig(serialized);
            }

            BlazorClientState.NotifyStateHasChanged(typeof(SidebarBase));
        }
        public void Given_a_dynamic_expression_And_settings_Then_should_execute_evaluation(string replacing, bool disabled, string expected)
        {
            var runtime  = new Mock <IJSRuntime>();
            var settings = new EvalContextSettings {
                SpaceCharacterPlaceholder = replacing, DisableSpaceCharacterPlaceholderReplacement = disabled
            };

            using (dynamic context = new EvalContext(runtime.Object, settings))
            {
                dynamic arg = new EvalContext(runtime.Object, settings);
                //alt+166
                (context as EvalContext).Expression = () => context.var___instance = arg.new__object();
            }
            Verify(runtime, expected);
        }
Exemple #4
0
        //private async Task BindRemoteOnServer()
        //{
        //    if (!NewOnly)
        //    {
        //        _pickedColours.Clear();
        //    }

        //    using (var file = new StreamReader((await HttpClient.GetStreamAsync($"http://localhost:5000/api/data/Sample/{(SampleRate == 0 ? 1 : SampleRate)}"))))
        //    {
        //        var data = JsonSerializer.Deserialize<Dictionary<string, PlotlyData>>(file.ReadToEnd());
        //        ShowChart(data);
        //    }
        //}

        private async Task ShowChart(Dictionary <string, PlotlyData> data)
        {
            Config = data.Values.ToArray();

            //only serializes first member
            //JsRuntime.InvokeVoidAsync("PlotlyInterop.newPlot", Config);

            foreach (var item in data)
            {
                item.Value.Marker = new Marker {
                    Color = PickColourName()
                };
            }

            data.Last().Value.Marker.Color = "red";

            var settings = new EvalContextSettings {
                EnableDebugLogging = true
            };

            settings.SerializableTypes.Add(Config.GetType());
            settings.JsonSerializerOptions = new JsonSerializerOptions {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase, IgnoreNullValues = true
            };
            using (dynamic context = new EvalContext(JSRuntime, settings))
            {
                (context as EvalContext).Expression = () => context.PlotlyInterop.newPlot(Config);
                await(context as EvalContext).InvokeAsync <dynamic>();
            }

            _pickedColours.Clear();

            NewestTimestamp = DateTime.Parse(Config.Last().X.Last());
            _activityLogger.Add($"Newest Timestamp: ", NewestTimestamp);
            _activityLogger.Add("Exection Time:", _stopWatch.Elapsed);
            _activityLogger.Add($"Updated Rows: ", Config.Last().X.Count);
            _stopWatch.Stop();
            _stopWatch.Reset();
        }
        protected override Task OnInitializedAsync()
        {
            using (dynamic context = new EvalContext(JsRuntime))
            {
                var arg = new { Property = "Value", Field = 123, child = new { Member = new DateTime(2001, 1, 1) } };
                (context as EvalContext).Expression = () => context.JsInterop.set(arg);
            }

            var settings = new EvalContextSettings();

            settings.SerializableTypes.Add(typeof(Specified));
            using (dynamic context = new EvalContext(JsRuntime, settings))
            {
                var arg = new Specified {
                    Member = "abc", Empty = null
                };
                (context as EvalContext).Expression = () => context.JsInterop.setSpecified(arg);
            }

            double value = 1;

            using (dynamic context = new EvalContext(JsRuntime))
            {
                (context as EvalContext).Expression = () => context.JsInterop.callMethod(value);
                value = (context as EvalContext).Invoke <double>();
            }

            using (dynamic context = new EvalContext(JsRuntime))
            {
                (context as EvalContext).Expression = () => context.JsInterop.returnValue = value;
            }

            new EvalContext(JsRuntime).Invoke <dynamic>($"JsInterop.returnValue = {value}");

            return(base.OnInitializedAsync());
        }
        public async override Task <OptimizerResult> Minimize(double[] parameters)
        {
            if (CancellationToken.IsCancellationRequested)
            {
                throw new TaskCanceledException();
            }

            //Console.WriteLine("before:" + _code);
            _allResults = new Dictionary <string, double?>();

            var regex   = new Regex(@".*function\s+([\d\w]+)\s*\(([\w\d,\s]+)\)");
            var matches = regex.Matches(Code)[0].Groups;

            var appending = new StringBuilder(Code);

            appending.Append("\r\n");
            appending.Append(matches[1].Value);
            appending.Append("(");

            //todo: validate number of params
            var split = matches[2].Value.Split(',').Select(s => s.Trim());

            for (int i = 0; i < parameters.Count(); i++)
            {
                var item = parameters[i];
                appending.Append(item.ToString("N15").TrimEnd('0'));
                if (i < parameters.Count() - 1)
                {
                    appending.Append(",");
                }
            }
            appending.Append(");");

            var formatted = appending.ToString();
            //Console.WriteLine("after:" + formatted);


            var settings = new EvalContextSettings();

            settings.SerializableTypes.Add(typeof(DotNetObjectReference <JavascriptOptimizer>));
            dynamic context = new EvalContext(_jSRuntime, settings);

            string key = null;

            if (_blazorClientConfiguration.EnableOptimizerWorker)
            {
                //todo: support dotnet callback
                //(context as EvalContext).Expression = () => context.WorkerInterop.setWorkerCallback(DotNetObjectReference.Create(this), nameof(this.SetResult));
                //await (context as EvalContext).InvokeAsync<dynamic>();
                //(context as EvalContext).Reset();
                //(context as EvalContext).Expression = () => context.WorkerInterop.runWorker(formatted);
                //await (context as EvalContext).InvokeAsync<dynamic>();


                if (_blazorClientConfiguration.EnableOptimizerMultithreading)
                {
                    key = string.Join(",", parameters);
                    if (_allResults.ContainsKey(key))
                    {
                        return(new OptimizerResult(parameters, _allResults[key].Value));
                    }

                    await _jSRuntime.InvokeVoidAsync("WorkerPoolInterop.runWorker", DotNetObjectReference.Create(this), nameof(this.AddResult), formatted, key);

                    while (!_allResults.ContainsKey(key))
                    {
                        await Task.Delay(10);
                    }
                    ;
                }
                else
                {
                    await _jSRuntime.InvokeVoidAsync("WorkerInterop.setWorkerCallback", DotNetObjectReference.Create(this), nameof(this.SetResult));

                    await _jSRuntime.InvokeVoidAsync("WorkerInterop.runWorker", formatted);

                    while (_cost == null)
                    {
                        await Task.Delay(10);
                    }
                    ;
                }
            }
            else
            {
                _cost = await(context as EvalContext).InvokeAsync <double>(formatted);
            }

            await Task.Run(() =>
            {
                ActivityLogger.Add(Guid.NewGuid().ToString(), Keys, parameters, _cost ?? _allResults[key].Value);
                //ActivityLogger.Add("Parameters:", parameters);
                //ActivityLogger.Add("Cost:", _cost.Value);
                //ActivityLogger.StateHasChanged();
            });

            return(new OptimizerResult(parameters, _cost ?? _allResults[key].Value));
        }