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); }
//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)); }