public async void GetHaulageVolume(string date) { data.Clear(); var volume_content = await CommonFunction.GetRequestAsync(Ultis.Settings.SessionBaseURI, ControllerUtil.getHaulageVolumeURL(date)); clsResponse volume_response = JsonConvert.DeserializeObject <clsResponse>(volume_content); if (volume_response.IsGood) { firstLoad = false; CurrentPage = Children[1]; Title = dataTime.ToString("MMMM yyyy"); volumes = JObject.Parse(volume_content)["Result"].ToObject <List <clsVolume> >(); foreach (clsVolume volume in volumes) { double revenue = Convert.ToDouble(volume.Revenue) / 1000; HaulageVolume dataValue = new HaulageVolume { Entity = volume.Entity, Job = volume.Job.ToString("N0"), Revenue = revenue.ToString("N0") + " K" }; data.Add(dataValue); } gridHeight = 0; if (volumes.Count == 1) { gridHeight = 100; } else { gridHeight = data.Count * 60; } PageContent(); } else { await DisplayAlert("JsonError", volume_response.Message, "OK"); } }
public void PageContent() { StackLayout mainLayout = new StackLayout { Padding = new Thickness(10, 10, 10, 10) }; mainLayout.Children.Clear(); Image noData = new Image { HorizontalOptions = LayoutOptions.FillAndExpand, Source = "nodatafound.png", IsVisible = false }; ActivityIndicator activityIndicator = new ActivityIndicator { IsRunning = true, IsVisible = true }; SfDataGrid dataGrid = new SfDataGrid { HorizontalOptions = LayoutOptions.Center, HeightRequest = gridHeight, MinimumHeightRequest = gridHeight + 30, BackgroundColor = Color.Transparent }; GridTextColumn entityColumn = new GridTextColumn { MappingName = "Entity", Width = 100 }; entityColumn.HeaderTemplate = new DataTemplate(() => { var entityLabel = CreateLabel("Entity", true, ""); return(entityLabel); }); GridTextColumn jobColumn = new GridTextColumn { MappingName = "Job", Width = 100 }; jobColumn.HeaderTemplate = new DataTemplate(() => { var jobLabel = CreateLabel("Box", true, ""); return(jobLabel); }); GridTextColumn revenueColumn = new GridTextColumn { MappingName = "Revenue", Width = 100, }; revenueColumn.HeaderTemplate = new DataTemplate(() => { var revenueLabel = CreateLabel("Revenue", true, ""); return(revenueLabel); }); dataGrid.Columns.Add(entityColumn); dataGrid.Columns.Add(jobColumn); dataGrid.Columns.Add(revenueColumn); StackLayout category = new StackLayout { Orientation = StackOrientation.Horizontal, Spacing = 20, HorizontalOptions = LayoutOptions.Center }; category.Children.Add(CreateLabel("Box", false, "#FFCC00")); category.Children.Add(CreateLabel("Revenue", false, "")); SfChart chart = new SfChart { VerticalOptions = LayoutOptions.FillAndExpand, HeightRequest = data.Count * 85, IsEnabled = false, }; //Initializing Primary Axis CategoryAxis primaryAxis = new CategoryAxis(); chart.PrimaryAxis = primaryAxis; //Initializing Secondary Axis NumericalAxis secondaryAxis = new NumericalAxis(); chart.SecondaryAxis = secondaryAxis; BarSeries job = new BarSeries() { EnableAnimation = true, Color = Color.FromHex("#FFCC00") }; BarSeries revenue = new BarSeries() { EnableAnimation = true, Color = Color.Green }; if (data.Count == 0) { noData.IsVisible = true; dataGrid.IsVisible = false; chart.IsVisible = false; category.IsVisible = false; } else if (data.Count == 1) { job.Width = 0.3; revenue.Width = 0.3; } else if (data.Count == 2) { job.Width = 0.35; revenue.Width = 0.35; } else if (data.Count == 3) { job.Width = 0.45; revenue.Width = 0.45; } else { job.Width = 0.7; revenue.Width = 0.7; } chart.Series.Add(job); chart.Series.Add(revenue); mainLayout.Children.Add(noData); mainLayout.Children.Add(activityIndicator); mainLayout.Children.Add(dataGrid); mainLayout.Children.Add(category); mainLayout.Children.Add(chart); dataGrid.ItemsSource = data; List <HaulageVolume> chartData = new List <HaulageVolume>(); foreach (HaulageVolume haulageVolume in data) { string[] number = haulageVolume.Revenue.Split(' '); HaulageVolume volume = new HaulageVolume { Entity = haulageVolume.Entity, Job = haulageVolume.Job, Revenue = number[0] }; chartData.Add(volume); } chartData.Reverse(); job.ItemsSource = chartData; job.XBindingPath = "Entity"; job.YBindingPath = "Job"; revenue.ItemsSource = chartData; revenue.XBindingPath = "Entity"; revenue.YBindingPath = "Revenue"; activityIndicator.IsRunning = false; activityIndicator.IsVisible = false; activityIndicator.IsEnabled = false; CurrentPage.Content = new ScrollView { Content = mainLayout }; }