Beispiel #1
0
        internal void Update(object sender, CeUpdateEvent e)
        {
            App.Current.Dispatcher.Invoke((System.Action) delegate
            {
                UpdateTime = DateTime.Now.ToString();
                ClearAll();
                Times      = new ObservableCollection <string>();
                Income     = new ObservableCollection <double>();
                FluidLevel = new ObservableCollection <float>();
                Flows      = new ObservableCollection <PumpsFlows>();
                Hours      = new ObservableCollection <PumpsHours>();

                foreach (var item in e.Times)
                {
                    Times.Add(item);
                    Data.Times.Add(item);
                }

                foreach (var item in e.Income)
                {
                    Income.Add(item);
                    Data.Income.Add(item);
                }

                foreach (var item in e.FluidLevel)
                {
                    FluidLevel.Add(item);
                    Data.FluidLevel.Add(item);
                }

                foreach (var item in e.Flows)
                {
                    Flows.Add(Mapper.Map <PumpsFlows>(item));
                    Data.Flows.Add(Mapper.Map <PumpsFlows>(item));
                }

                foreach (var item in e.Hours)
                {
                    Hours.Add(Mapper.Map <PumpsHours>(item));
                    Data.Hours.Add(Mapper.Map <PumpsHours>(item));
                }

                AddGraphicValuesToIncome();
                DrawCharts();
            });
        }
Beispiel #2
0
 public Task Handle(CeUpdateEvent message, IMessageHandlerContext context)
 {
     ceUpdate.Invoke(this, message);
     return(Task.CompletedTask);
 }
Beispiel #3
0
        private void Update(CeForecast forecastResult, List <double> weather)
        {
            CeUpdateEvent update = new CeUpdateEvent();

            update.Income = new List <double>();
            for (int i = 0; i < weather.Count; i++)
            {
                double integralIncome = 0;
                for (int j = 0; j < 4; j++)
                {
                    integralIncome += weather[i] / 4;
                    update.Income.Add(integralIncome);
                }
            }
            update.Times      = GetTimes();
            update.FluidLevel = new List <float>();
            foreach (var item in forecastResult.Results)
            {
                update.FluidLevel.Add(item.StartFluidLevel);
                update.FluidLevel.Add(item.EndFluidLevel);
            }
            update.Hours = new List <PumpsHours>();
            update.Flows = new List <PumpsFlows>();

            graph             = new CeGraphicalEvent();
            graph.PumpsValues = new Core.Common.ServiceBus.Events.CeGraph();
            List <List <long> > list = new List <List <long> >();

            for (int i = 0; i < points; i++)
            {
                var  macList = new List <long>();
                long cumm    = 0;
                var  hours   = new PumpsHours();
                var  flows   = new PumpsFlows();
                foreach (var item in forecastResult.Results)
                {
                    if (item.Pumps[i] == 1)
                    {
                        hours.Hours.Add(item.Times[i]);
                        flows.Flows.Add(item.Flows[i]);
                        cumm += (long)(item.Times[i]);
                    }
                    else
                    {
                        hours.Hours.Add(0);
                        flows.Flows.Add(0);
                    }
                    macList.Add(cumm);
                }
                update.Hours.Add(hours);
                update.Flows.Add(flows);
                list.Add(macList);
            }
            pubsub.SendMessage(new Core.Common.PubSub.PubSubMessage()
            {
                ContentType = Core.Common.PubSub.ContentType.CE_UPDATE,
                Content     = JsonTool.Serialize <CeUpdateEvent>(update),
                Sender      = Core.Common.PubSub.Sender.CE
            }).GetAwaiter().GetResult();

            if (points == 1)
            {
                graph.PumpsValues.Pump1.XAxes = update.Times.ConvertAll(x => DateTime.Parse(x));
                graph.PumpsValues.Pump1.YAxes = list[0];
            }
            if (points == 2)
            {
                graph.PumpsValues.Pump1.XAxes = update.Times.ConvertAll(x => DateTime.Parse(x));
                graph.PumpsValues.Pump1.YAxes = list[0];
                graph.PumpsValues.Pump2.XAxes = update.Times.ConvertAll(x => DateTime.Parse(x));
                graph.PumpsValues.Pump2.YAxes = list[1];
            }
            if (points == 3)
            {
                graph.PumpsValues.Pump1.XAxes = update.Times.ConvertAll(x => DateTime.Parse(x));
                graph.PumpsValues.Pump1.YAxes = list[0];
                graph.PumpsValues.Pump2.XAxes = update.Times.ConvertAll(x => DateTime.Parse(x));
                graph.PumpsValues.Pump2.YAxes = list[1];
                graph.PumpsValues.Pump3.XAxes = update.Times.ConvertAll(x => DateTime.Parse(x));
                graph.PumpsValues.Pump3.YAxes = list[2];
            }
        }