/// <summary> /// 热定排行榜 /// </summary> /// <param name="app"></param> /// <param name="title"></param> /// <returns></returns> private async Task <ChartViewConfig> HotOrderRankingPage_Chart(Module app, string title) { ChartViewConfig chartData = null; try { var result = await _reportingService.GetHotOrderRankingAsync(0, Settings.UserId, 0, 0, DateTime.Now.AddDays(-15), DateTime.Now, this.ForceRefresh, new System.Threading.CancellationToken()); if (result != null && result.Any()) { var series = result.ToList(); if (series.Count > 50) { series = result.Take(50).ToList(); } chartData = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetHotOrderRanking(series) } }; } return(chartData); } catch (Exception ex) { Crashes.TrackError(ex); return(chartData); } }
public void Refresh(List <BrandRanking> analysis) { if (analysis == null || analysis.Count == 0) { return; } analysis.ForEach(b => { b.Percentage *= 100; }); RankSeries = new ObservableCollection <BrandRanking>(analysis.OrderByDescending(b => b.Percentage)); TotalAmount = analysis.Select(s => s.NetAmount ?? 0).Sum(); TotalPercentage = analysis.Select(s => s.Percentage ?? 0).Sum(); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetBrandRanking(ranks) } }; ChartConfig = data; }
/// <summary> /// 销量走势图 /// </summary> /// <param name="app"></param> /// <param name="title"></param> /// <returns></returns> private async Task <ChartViewConfig> SaleTrendChatPage_Chart(Module app, string title) { ChartViewConfig chartData = null; try { var result = await _reportingService.GetSaleTrendingAsync("day", this.ForceRefresh, new System.Threading.CancellationToken()); if (result != null && result.Any()) { var series = result.ToList(); if (series.Count > 50) { series = result.Take(50).ToList(); } chartData = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = DCMS.ChartJS.ChartTypes.Line, data = ChartDataProvider.GetSaleTrendChat(series), } }; } return(chartData); } catch (Exception ex) { Crashes.TrackError(ex); return(chartData); } }
private static string BuildChartJavascript(ChartViewConfig config) { var jsonConfig = GetChartConfigJSON(config.ChartConfig); return($@" <script> var chartConfig = { jsonConfig }; var loadChartCalled = false; var chart; function loadChart(config) {{ if (loadChartCalled) {{ chart.destroy(); }} loadChartCalled = true; chart = new Chart( document.getElementById('chartCanvas'), config ); }}; function changeChartBackgroundColor(color) {{ document.body.style.backgroundColor = color; }}; window.onload = function() {{ if (!loadChartCalled) {{ loadChart(chartConfig); }} }}; </script> "); }
public void Refresh(List <UnSaleRanking> series) { RankSeries = new ObservableCollection <UnSaleRanking>(series); TotalSumReturnAmount = series.Select(s => s.TotalSumReturnAmount).Sum(); TotalSumNetAmount = series.Select(s => s.TotalSumNetAmount).Sum(); var ranks = series.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Line, data = ChartDataProvider.GetUnsalable(ranks), } }; ChartConfig = data; }
private void RefreshData(List <BusinessVisitRank> analysis) { if (analysis == null) { return; } RankSeries = new ObservableCollection <BusinessVisitRank>(analysis); SubTotal = analysis.Select(s => s.VisitedCount).Sum(); Total = analysis.Select(s => s.CustomerCount).Sum(); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetCustomerVisitRank(ranks) } }; ChartConfig = data; }
public void Refresh(List <BusinessRanking> analysis) { RankSeries = new ObservableCollection <BusinessRanking>(analysis); SaleAmount = analysis.Select(s => s.SaleAmount).Sum(); SaleReturnAmount = analysis.Select(s => s.SaleReturnAmount).Sum(); NetAmount = analysis.Select(s => s.NetAmount).Sum(); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetSalesRanking(ranks) } }; ChartConfig = data; }
/// <summary> /// 新增客户分析 /// </summary> /// <param name="app"></param> /// <param name="title"></param> /// <returns></returns> private async Task <ChartViewConfig> NewCustomersPage_Chart(Module app, string title) { ChartViewConfig chartData = null; try { var result = await _reportingService.GetNewCustomerAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken()); if (result != null && result.ChartDatas != null) { var series = result.ChartDatas.ToList(); if (series.Count == 0) { return(null); } chartData = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Line, data = ChartDataProvider.GetNewCustomers(result) } }; } return(chartData); } catch (Exception ex) { Crashes.TrackError(ex); return(chartData); } }
/// <summary> /// 客户活跃度 /// </summary> /// <param name="app"></param> /// <param name="title"></param> /// <returns></returns> private async Task <ChartViewConfig> CustomerActivityPage_Chart(Module app, string title) { ChartViewConfig chartData = null; try { var result = await _terminalService.GetCustomerActivityRankingAsync(Settings.UserId, 0, this.ForceRefresh, new System.Threading.CancellationToken()); if (result != null && result.Any()) { var series = result.ToList(); if (series.Count > 50) { series = result.Take(50).ToList(); } chartData = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Line, data = ChartDataProvider.GetCustomerActivity(series), } }; } return(chartData); } catch (Exception ex) { Crashes.TrackError(ex); return(chartData); } }
/// <summary> /// 客户拜访分析 /// </summary> /// <param name="app"></param> /// <param name="title"></param> /// <returns></returns> private async Task <ChartViewConfig> VisitingRatePage_Chart(Module app, string title) { ChartViewConfig chartData = null; try { var result = await _reportingService.GetCustomerVistAnalysisAsync(Settings.UserId, this.ForceRefresh, new System.Threading.CancellationToken()); if (result != null) { chartData = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Pie, data = ChartDataProvider.GetVisitingRate(result) } }; } return(chartData); } catch (Exception ex) { Crashes.TrackError(ex); return(chartData); } }
private void RefreshData(List <CostProfitRanking> analysis) { RankSeries = new ObservableCollection <CostProfitRanking>(analysis); TotalSumNetQuantity = analysis.Select(s => s.TotalSumNetQuantity).Sum(); TotalSumNetAmount = analysis.Select(s => s.TotalSumNetAmount).Sum(); TotalSumProfit = analysis.Select(s => s.TotalSumProfit).Sum(); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetSalesProfitRanking(ranks) } }; ChartConfig = data; }
private void RefreshData(List <HotSaleRanking> analysis) { RankSeries = new ObservableCollection <HotSaleRanking>(analysis); TotalSumReturnAmount = analysis.Select(s => s.TotalSumReturnAmount ?? 0).Sum(); TotalSumNetAmount = analysis.Select(s => s.TotalSumNetAmount ?? 0).Sum(); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = DCMS.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetHotSalesRanking(ranks) } }; ChartConfig = data; }
public void Refresh(List <CustomerRanking> analysis) { RankSeries = new ObservableCollection <CustomerRanking>(analysis); SubTotal = analysis.Select(s => s.VisitSum).Sum(); Total = analysis.Select(s => s.NetAmount).Sum(); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = ChartDataProvider.GetCustomerRanking(ranks) } }; ChartConfig = data; }
private void RefreshData(List <SaleTrending> series) { int i = 0; Random random = new Random(); if (series == null || series.Count == 0) { for (i = 1; i <= DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); i++) { series.Add(new SaleTrending() { DateType = "DAY", NetAmount = random.Next(200), SaleAmount = random.Next(200), SaleDateName = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd"), SaleReturnAmount = random.Next(200), SaleDate = DateTime.Now.AddDays(i) }); } } string[] weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; series.ForEach(d => { if ("DAY" == d.DateType.ToUpper()) { d.SaleDateName = d.SaleDate.ToString("yyyy/MM/dd"); } else if ("WEEK" == d.DateType.ToUpper()) { d.SaleDateName = weekdays[Convert.ToInt32(d.SaleDate.DayOfWeek)]; } else if ("MONTH" == d.DateType.ToUpper()) { d.SaleDateName = d.SaleDate.ToString("yyyy-MM"); } }); RankSeries = new ObservableCollection <SaleTrending>(series); TotalAmount = RankSeries.Select(s => s.NetAmount).Sum(); var ranks = series.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = DCMS.ChartJS.ChartTypes.Line, data = ChartDataProvider.GetSaleTrendChat(ranks), } }; ChartConfig = data; }
public MixedChartsPage() { LineBarConfig = RandomChartBuilder.GetChartConfig(new List <string> { ChartTypes.Line, ChartTypes.Bar }, Color.White); LinePieConfig = RandomChartBuilder.GetChartConfig(new List <string> { ChartTypes.Line, ChartTypes.Pie }, Color.White); InitializeComponent(); BindingContext = this; }
public ChartTypesViewModel() { LineConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Line, Color.White); BarConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Bar, Color.White); RadarConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Radar, Color.White); DoughnutConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Doughnut, Color.White); PieConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Pie, Color.White); PolarAreaConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.PolarArea, Color.White); BubbleConfig = RandomChartBuilder.GetBubbleChartConfig(Color.White); ScatterConfig = RandomChartBuilder.GetScatterChartConfig(Color.White); }
private void BuildChartInWebView(ChartViewConfig config) { var htmlSource = new HtmlWebViewSource(); htmlSource.Html = ChartBuilder.BuildHTML(config); if (Device.RuntimePlatform == Device.Android) { htmlSource.BaseUrl = string.Empty; } Source = htmlSource; }
public static string BuildHTML(ChartViewConfig config) { var parentHtmlStyles = new Dictionary <string, string> { { "width", "100%" }, { "height", "100%" }, { "overflow", "hidden" }, }; var bodyStyles = new Dictionary <string, string> { { "overflow", "hidden" }, { "background-color", GetRGBColor(config.BackgroundColor) } }; var contentDivStyles = new Dictionary <string, string> { { "height", "100%" }, { "width", "100%" } }; var chartJsScript = $"<script type=\"text/javascript\" src=\"{ GetChartJSLocalPath() }\"></script>"; var viewportMeta = "<meta name='viewport' content='width=device-width,initial-scale=1,maximum-scale=1'/>"; var canvasStyles = new Dictionary <string, string> { { "width", "100" }, { "height", "100" } }; return($@" <html style=""{ GetStyleString(parentHtmlStyles) }""> <head> {chartJsScript} {viewportMeta} </head> <body style=""{ GetStyleString(bodyStyles) }""> <div style=""{ GetStyleString(contentDivStyles) }""> <canvas id=""chartCanvas"" style=""{ GetStyleString(canvasStyles) }""> </canvas> </div> { BuildChartJavascript(config) } </body> </html>"); }
/// <summary> /// 销售额分析 /// </summary> /// <param name="app"></param> /// <param name="title"></param> /// <returns></returns> private async Task <ChartViewConfig> SalesRatePage_Chart(Module app, string title) { ChartViewConfig chartData = null; try { var result = await _reportingService.GetSaleAnalysisAsync(0, 0, 0, 0, this.ForceRefresh, new System.Threading.CancellationToken()); if (result != null) { var cdata = result; } return(chartData); } catch (Exception ex) { Crashes.TrackError(ex); return(chartData); } }
public void Refresh(List <CustomerActivityRanking> analysis) { RankSeries = new ObservableCollection <CustomerActivityRanking>(analysis); var ranks = analysis.ToList(); if (ranks.Count > 10) { ranks = ranks.Take(10).ToList(); } var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Line, data = ChartDataProvider.GetCustomerActivity(ranks), } }; ChartConfig = data; }
public NewOrderPageViewModel(INavigationService navigationService, IProductService productService, IUserService userService, ITerminalService terminalService, IWareHousesService wareHousesService, IAccountingService accountingService, IReportingService reportingService, IDialogService dialogService ) : base(navigationService, productService, terminalService, userService, wareHousesService, accountingService, dialogService) { Title = "今日新增订单"; _reportingService = reportingService; this.WhenAnyValue(x => x.Data) .Subscribe(x => { this.IsNull = (x == null); }).DisposeWith(DeactivateWith); this.WhenAnyValue(x => x.Filter.BusinessUserId) .Where(x => x > 0) .Subscribe(x => { ((ICommand)Load)?.Execute(null); }).DisposeWith(DeactivateWith); this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() => { var analysis = await _reportingService.GetNewOrderAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken()); if (analysis != null) { this.Data = analysis; var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Line, data = GetChartData(analysis) } }; LineConfig = data; } })); //历史记录选择 this.ViewDetailCommand = ReactiveCommand.Create <object>(async e => { if (e != null) { int.TryParse(e.ToString(), out int type); switch (type) { //今日订单 case 1: Filter.StartTime = DateTime.Now; Filter.EndTime = DateTime.Now; break; //昨天订单 case 2: Filter.StartTime = DateTime.Now.AddDays(-1); Filter.EndTime = DateTime.Now; break; //前天订单 case 3: Filter.StartTime = DateTime.Now.AddDays(-2); Filter.EndTime = DateTime.Now; break; //上周订单 case 4: Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); break; //本周订单 case 5: Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); break; //上月订单 case 6: Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1); Filter.EndTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1); break; //本月订单 case 7: Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")); Filter.EndTime = DateTime.Now; break; //本年订单 case 8: Filter.StartTime = new DateTime(DateTime.Now.Year, 1, 1); Filter.EndTime = DateTime.Now; break; } await this.NavigateAsync("SaleOrderSummeryPage", ("Filter", Filter), ("Reference", this.PageName)); } }); this.BindBusyCommand(Load); }
public LayoutExamplesViewModel() { LineConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Line, Color.White); BarConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Bar, Color.White); PieConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Pie, Color.White); }
public VisitingRatePageViewModel(INavigationService navigationService, IReportingService reportingService, IDialogService dialogService ) : base(navigationService, dialogService) { Title = "客户拜访分析"; _reportingService = reportingService; this.WhenAnyValue(x => x.Filter.BusinessUserId) .Where(x => x > 0) .Subscribe(x => { ((ICommand)Load)?.Execute(null); }).DisposeWith(DeactivateWith); this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() => { var analysis = await _reportingService.GetCustomerVistAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken()); if (analysis != null) { Data = analysis; var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = GetChartData(analysis) } }; BarConfig = data; } return(this.Data); })); //历史记录选择 this.HistoryCommand = ReactiveCommand.Create <object>(async e => { int tag = 0; int.TryParse(e.ToString(), out int type); switch (type) { //今日拜访 case 1: //Filter.StartTime = DateTime.Now; //Filter.EndTime = DateTime.Now; tag = 1; break; //昨天拜访 case 3: //Filter.StartTime = DateTime.Now.AddDays(-1); //Filter.EndTime = DateTime.Now; tag = 3; break; //前天拜访 case 4: //Filter.StartTime = DateTime.Now.AddDays(-2); //Filter.EndTime = DateTime.Now; tag = 4; break; //上周拜访 case 5: //Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); //Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); tag = 5; break; //本周拜访 case 6: //Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); //Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); tag = 6; break; //上月拜访 case 7: //Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1); //Filter.EndTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1); tag = 7; break; //本月拜访 case 8: //Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")); //Filter.EndTime = DateTime.Now; tag = 8; break; //本年拜访 case 9: //Filter.StartTime = new DateTime(DateTime.Now.Year, 1, 1); //Filter.EndTime = DateTime.Now; tag = 9; break; } //VisitReportPage //await this.NavigateAsync($"{nameof(VisitRecordsPage)}", ("Filter", Filter)); await this.NavigateAsync("VisitReportPage", ("Tag", tag)); }); this.BindBusyCommand(Load); }
public VisitReportPageViewModel(INavigationService navigationService, IProductService productService, IReportingService reportingService, IDialogService dialogService ) : base(navigationService, productService, reportingService, dialogService) { Title = "业务拜访统计"; this.Load = ReactiveCommand.CreateFromTask <int>((t) => Task.Run(() => { try { //今日 1 昨天 3 前天 4 本月 8 var tag = t; if (tag == 0) { tag = 8; } _reportingService.Rx_GetBusinessAnalysis(tag, new System.Threading.CancellationToken()) .Subscribe((results) => { if (results != null && results?.Code >= 0) { var analysis = results?.Data; var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Bar, data = GetChartData(analysis), options = new ChartOptions { indexAxis = "y", scales = new Scales { xAxes = new XAxes[] { new XAxes { ticks = new Ticks { beginAtZero = true }, position = "top" } } } } } }; ChartConfig = data; } }); } catch (Exception ex) { Crashes.TrackError(ex); } })); //绑定页面菜单 //BindFilterDateMenus(true); _popupMenu = new PopupMenu(this, new Dictionary <MenuEnum, Action <SubMenu, ViewModelBase> > { { MenuEnum.TODAY, (m, vm) => { ((ICommand)Load)?.Execute(1); } }, { MenuEnum.YESTDAY, (m, vm) => { ((ICommand)Load)?.Execute(3); } }, { MenuEnum.THISWEEBK, (m, vm) => { ((ICommand)Load)?.Execute(6); } }, { MenuEnum.LASTMONTH, (m, vm) => { ((ICommand)Load)?.Execute(7); } }, { MenuEnum.MONTH, (m, vm) => { ((ICommand)Load)?.Execute(8); } }, { MenuEnum.YEAR, (m, vm) => { ((ICommand)Load)?.Execute(9); } } }); this.BindBusyCommand(Load); }
public SalesRatePageViewModel(INavigationService navigationService, IProductService productService, IUserService userService, ITerminalService terminalService, IWareHousesService wareHousesService, IAccountingService accountingService, IReportingService reportingService, IDialogService dialogService) : base(navigationService, productService, terminalService, userService, wareHousesService, accountingService, dialogService) { Title = "今日销售净额"; _reportingService = reportingService; this.WhenAnyValue(x => x.Data) .Subscribe(x => { this.IsNull = (x == null); }) .DisposeWith(DeactivateWith); this.WhenAnyValue( x => x.Filter.BusinessUserId, x => x.Filter.BrandId, x => x.Filter.ProductId, x => x.Filter.CatagoryId) .Where(a => a.Item1 > 0 || a.Item2 > 0 || a.Item3 > 0 || a.Item4 > 0) .Subscribe(x => { ((ICommand)Load)?.Execute(null); }).DisposeWith(DeactivateWith); this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() => { var businessUserId = Filter.BusinessUserId == 0 ? Settings.UserId : Filter.BusinessUserId; var analysis = await _reportingService.GetSaleAnalysisAsync(businessUserId, Filter.BrandId, Filter.ProductId, Filter.CatagoryId, true, new System.Threading.CancellationToken()); if (analysis != null) { Data = analysis; var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = Wesley.ChartJS.ChartTypes.Doughnut, data = GetChartData(analysis) } }; DoughnutConfig = data; } })); //历史记录选择 this.ViewDetailCommand = ReactiveCommand.Create <object>(async e => { if (e != null) { int.TryParse(e.ToString(), out int type); switch (type) { //今日 case 1: Filter.StartTime = DateTime.Now; Filter.EndTime = DateTime.Now; break; //昨天 case 2: Filter.StartTime = DateTime.Now.AddDays(-1); Filter.EndTime = DateTime.Now; break; //前天 case 3: Filter.StartTime = DateTime.Now.AddDays(-2); Filter.EndTime = DateTime.Now; break; //上周 case 4: Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); break; //本周 case 5: Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); break; //上月 case 6: Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1); Filter.EndTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1); break; //本月 case 7: Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")); Filter.EndTime = DateTime.Now; break; //本季 case 8: var s = DateTime.Now.AddMonths(0 - (DateTime.Now.Month - 1) % 3).AddDays(1 - DateTime.Now.Day); Filter.StartTime = s; //本季度初 Filter.EndTime = s.AddMonths(3).AddDays(-1); //本季度末 break; //本年 case 9: Filter.StartTime = new DateTime(DateTime.Now.Year, 1, 1); Filter.EndTime = DateTime.Now; break; } await this.NavigateAsync("SaleSummeryPage", ("Filter", Filter), ("Reference", this.PageName)); } }); this.BindBusyCommand(Load); }
public ChartView(ChartViewConfig config) : base() { this.Config = config; }
public NewCustomersPageViewModel(INavigationService navigationService, IProductService productService, IUserService userService, ITerminalService terminalService, IWareHousesService wareHousesService, IAccountingService accountingService, IReportingService reportingService, IDialogService dialogService ) : base(navigationService, productService, terminalService, userService, wareHousesService, accountingService, dialogService) { Title = "今日新增客户"; _reportingService = reportingService; this.WhenAnyValue(x => x.Data) .Subscribe(x => { this.IsNull = (x == null); }) .DisposeWith(DeactivateWith); this.WhenAnyValue(x => x.Filter.BusinessUserId) .Where(x => x > 0) .Subscribe(x => { ((ICommand)Load)?.Execute(null); }).DisposeWith(DeactivateWith); this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() => { var analysis = await _reportingService.GetNewCustomerAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken()); if (analysis != null) { this.Data = analysis; var data = new ChartViewConfig() { BackgroundColor = Color.White, ChartConfig = new ChartConfig { type = DCMS.ChartJS.ChartTypes.Line, data = GetChartData(analysis) } }; LineConfig = data; } })); //历史记录选择 this.HistoryCommand = ReactiveCommand.Create <object>(async e => await this.NavigateAsync($"{nameof(CustomerArchivesPage)}", null)); this.BindBusyCommand(Load); }
public ChartLoadStressTest() { Config = RandomChartBuilder.GetChartConfig(ChartTypes.Line, Color.White); InitializeComponent(); BindingContext = this; }