async Task Load(int id) { // Get a test from the API ABTestData aBTestData = await TJBarnesService.GetHttpClient() .GetFromJsonAsync <ABTestData>("api/abtests/" + id.ToString()); // Use the Deserializer method of the JsonSerializer class (in the System.Text.Json namespace) to create // a BlowSetCore object for each of A and B BlowSetCore blowSetCoreA = JsonSerializer.Deserialize <BlowSetCore>(aBTestData.ABTestSpecA); BlowSetCore blowSetCoreB = JsonSerializer.Deserialize <BlowSetCore>(aBTestData.ABTestSpecB); testSpec.AHasErrors = blowSetCoreA.HasErrors; // Create a BlowSet object from the BlowSetCore object for A blowSetA = new BlowSet(blowSetCoreA.Stage, blowSetCoreA.NumRows, blowSetCoreA.TenorWeight, blowSetCoreA.ErrorType, blowSetCoreA.HasErrors); // Use an audioIdSuffix of "b" for this blowset blowSetA.LoadBlows(blowSetCoreA, "a"); blowSetA.SetUnstruck(); // Create a BlowSet object from the BlowSetCore object for B blowSetB = new BlowSet(blowSetCoreB.Stage, blowSetCoreB.NumRows, blowSetCoreB.TenorWeight, blowSetCoreB.ErrorType, blowSetCoreB.HasErrors); // Use an audioIdSuffix of "b" for this blowset blowSetB.LoadBlows(blowSetCoreB, "b"); blowSetB.SetUnstruck(); // Update drop down boxes on screen // Use BlowSetA - by definition the following properties for BlowSetA and BlowSetB will be the same testSpec.Stage = blowSetA.Stage; testSpec.TenorWeight = blowSetA.TenorWeight; testSpec.ErrorType = blowSetA.ErrorType; // Set up test spec-dependent elements of the screen object int baseGap = BaseGaps.BaseGap(testSpec.Stage, testSpec.TenorWeight, 1); testSpec.BaseGap = baseGap; // Set the timing for the animation (when not showing the bells) screenA.AnimationDuration = blowSetA.Blows.Last().GapCumulative + 1000; screenB.AnimationDuration = blowSetB.Blows.Last().GapCumulative + 1000; testSpec.ResultEntered = false; testSpec.ShowGaps = false; StateHasChanged(); }
async Task Load(int id) { // Get a test from the API GapTestData gapTestData = await TJBarnesService.GetHttpClient(). GetFromJsonAsync <GapTestData>("api/gaptests/" + id.ToString()); // Use the Deserializer method of the JsonSerializer class (in the System.Text.Json namespace) to create // a BlowSetCore object BlowSetCore blowSetCore = JsonSerializer.Deserialize <BlowSetCore>(gapTestData.GapTestSpec); // Now create a BlowSet object from the BlowSetCore object blowSet = new BlowSet(blowSetCore.Stage, blowSetCore.NumRows, blowSetCore.TenorWeight, blowSetCore.ErrorType, true); // No need for an audio suffix in a Gap test (this is used to distinguish A and B in an A/B test) blowSet.LoadBlows(blowSetCore, string.Empty); blowSet.SetUnstruck(); // Update drop down boxes on screen testSpec.Stage = blowSet.Stage; testSpec.TenorWeight = blowSet.TenorWeight; testSpec.NumRows = blowSet.NumRows; // Set up test spec-dependent elements of the screen object int baseGap = BaseGaps.BaseGap(testSpec.Stage, testSpec.TenorWeight, 1); testSpec.BaseGap = baseGap; testSpec.GapMin = 20; // If test bell is 1st's place of a handstroke row, need to adjust GapMax to have a higher value // because of the handstroke gap if (blowSet.Blows.Last().IsHandstroke == true && blowSet.Blows.Last().Place == 1) { testSpec.GapMax = Convert.ToInt32(Math.Round(((double)testSpec.BaseGap * 3) / 50)) * 50; } else { testSpec.GapMax = Convert.ToInt32(Math.Round(((double)baseGap * 2) / 50)) * 50; } testSpec.ShowGaps = false; StateHasChanged(); }