[NF] Erste funktionierende Version
This commit is contained in:
parent
07ab463ac1
commit
d92fc88795
@ -2,15 +2,16 @@
|
||||
using System.Globalization;
|
||||
using LitJson;
|
||||
|
||||
namespace Mqtt_SWB_Dashboard {
|
||||
class DevicePower {
|
||||
namespace Mqtt_SWB_Dashboard.Helper {
|
||||
class Device {
|
||||
|
||||
public enum DevType {
|
||||
State,
|
||||
Consumption,
|
||||
Production
|
||||
}
|
||||
|
||||
public DevicePower(JsonData data, DevType type) {
|
||||
public Device(JsonData data, DevType type) {
|
||||
this.TimeStamp = new DateTime();
|
||||
this.Power = 0;
|
||||
this.Comul = 0;
|
||||
@ -20,6 +21,15 @@ namespace Mqtt_SWB_Dashboard {
|
||||
this.Update(data, type);
|
||||
}
|
||||
|
||||
public Device(JsonData data) {
|
||||
this.TimeStamp = DateTime.Parse(data["TimeStamp"].ToString(), new CultureInfo("en-US"));
|
||||
this.Status = data["Status"].ToString() == "true" ? true : false;
|
||||
this.Production = Double.Parse(data["Production"].ToString());
|
||||
this.Type = (DevType)Int32.Parse(data["Type"].ToString());
|
||||
this.Power = Double.Parse(data["Power"].ToString());
|
||||
this.Comul = Double.Parse(data["Comul"].ToString());
|
||||
}
|
||||
|
||||
public DateTime TimeStamp { get; private set; }
|
||||
public Boolean Status { get; private set; }
|
||||
public Double Production { get; private set; }
|
||||
@ -32,15 +42,15 @@ namespace Mqtt_SWB_Dashboard {
|
||||
if (type == DevType.State) {
|
||||
this.Status = data["status"].ToString() == "active" ? true : false;
|
||||
}
|
||||
if(type == DevType.Consumption) {
|
||||
this.Power = Double.Parse(data["power"].ToString(), new CultureInfo("en-US"));
|
||||
this.Comul = Double.Parse(data["energyCumul"].ToString(), new CultureInfo("en-US"));
|
||||
if (type == DevType.Consumption) {
|
||||
this.Power = Double.Parse(data["power"].ToString());
|
||||
this.Comul = Double.Parse(data["energyCumul"].ToString());
|
||||
}
|
||||
if(type == DevType.Production) {
|
||||
this.Power = Double.Parse(data["power"].ToString(), new CultureInfo("en-US"));
|
||||
this.Comul = Double.Parse(data["energyCumulative"].ToString(), new CultureInfo("en-US"));
|
||||
this.Production = Double.Parse(data["productionCumulative"].ToString(), new CultureInfo("en-US"));
|
||||
if (type == DevType.Production) {
|
||||
this.Power = Double.Parse(data["power"].ToString());
|
||||
this.Comul = Double.Parse(data["energyCumulative"].ToString());
|
||||
this.Production = Double.Parse(data["productionCumulative"].ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
87
Mqtt-SWB-Dashboard/Helper/Household.cs
Normal file
87
Mqtt-SWB-Dashboard/Helper/Household.cs
Normal file
@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using LitJson;
|
||||
|
||||
namespace Mqtt_SWB_Dashboard.Helper {
|
||||
class Household {
|
||||
|
||||
public Dictionary<String, Device> Devices { get; private set; }
|
||||
public DateTime Active { get; private set; }
|
||||
|
||||
public Household(String did, Device device) {
|
||||
this.Active = DateTime.Now;
|
||||
this.Devices = new Dictionary<String, Device> {
|
||||
{ did, device }
|
||||
};
|
||||
}
|
||||
|
||||
public Household(JsonData data) {
|
||||
this.Devices = new Dictionary<String, Device>();
|
||||
foreach (KeyValuePair<String, JsonData> item in data["Devices"]) {
|
||||
this.Devices.Add(item.Key, new Device(item.Value));
|
||||
}
|
||||
this.Active = DateTime.Parse(data["Active"].ToString(), new CultureInfo("en-US"));
|
||||
}
|
||||
|
||||
public void PutDevice(String did, JsonData data, Device.DevType dtype) {
|
||||
this.Active = DateTime.Now;
|
||||
if (this.Devices.Keys.Contains(did)) {
|
||||
this.Devices[did].Update(data, dtype);
|
||||
} else {
|
||||
this.Devices.Add(did, new Device(data, dtype));
|
||||
}
|
||||
}
|
||||
|
||||
internal Int32 GetActive() {
|
||||
Int32 ret = 0;
|
||||
foreach (KeyValuePair<String, Device> item in this.Devices) {
|
||||
if (item.Value.TimeStamp > DateTime.Now.AddMinutes(-10)) {
|
||||
ret++;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
internal Double GetPower() {
|
||||
Double ret = 0;
|
||||
foreach (KeyValuePair<String, Device> item in this.Devices) {
|
||||
if (item.Value.TimeStamp > DateTime.Now.AddMinutes(-10) && item.Value.Type == (Device.DevType.Consumption & Device.DevType.State)) {
|
||||
ret += item.Value.Power;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
internal Double GetAllPower() {
|
||||
Double ret = 0;
|
||||
foreach (KeyValuePair<String, Device> item in this.Devices) {
|
||||
if (item.Value.Type == (Device.DevType.Consumption & Device.DevType.State)) {
|
||||
ret += item.Value.Power;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
internal Double GetColum() {
|
||||
Double ret = 0;
|
||||
foreach (KeyValuePair<String, Device> item in this.Devices) {
|
||||
if (item.Value.TimeStamp > DateTime.Now.AddMinutes(-10) && item.Value.Type == (Device.DevType.Consumption & Device.DevType.State)) {
|
||||
ret += item.Value.Comul;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
internal Double GetAllColum() {
|
||||
Double ret = 0;
|
||||
foreach (KeyValuePair<String, Device> item in this.Devices) {
|
||||
if (item.Value.Type == (Device.DevType.Consumption & Device.DevType.State)) {
|
||||
ret += item.Value.Comul;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,13 +3,24 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:oxy="clr-namespace:OxyPlot.Wpf;assembly=OxyPlot.Wpf"
|
||||
xmlns:models="clr-namespace:Mqtt_SWB_Dashboard.Models"
|
||||
xmlns:local="clr-namespace:Mqtt_SWB_Dashboard"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="350" Width="525">
|
||||
Title="MainWindow" Height="350" Width="525" Closed="OnClosed">
|
||||
<Window.DataContext>
|
||||
<models:PowerChartModel />
|
||||
</Window.DataContext>
|
||||
<Grid>
|
||||
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Haushalte" VerticalAlignment="Top" Width="60"/>
|
||||
<TextBlock HorizontalAlignment="Left" Margin="75,10,0,0" TextWrapping="Wrap" Text="Geräte" VerticalAlignment="Top" Width="40"/>
|
||||
<TextBlock x:Name="countHouses" HorizontalAlignment="Left" Margin="10,31,0,0" TextWrapping="Wrap" Text="0" VerticalAlignment="Top" Width="60" TextAlignment="Center"/>
|
||||
<TextBlock x:Name="countDevices" HorizontalAlignment="Left" Margin="75,31,0,0" TextWrapping="Wrap" Text="0" VerticalAlignment="Top" Width="40" TextAlignment="Center"/>
|
||||
<TextBlock x:Name="countHouses" HorizontalAlignment="Left" Margin="10,31,0,0" TextWrapping="Wrap" Text="0 / 0" VerticalAlignment="Top" Width="60" TextAlignment="Center"/>
|
||||
<TextBlock x:Name="countDevices" HorizontalAlignment="Left" Margin="75,31,0,0" TextWrapping="Wrap" Text="0 / 0" VerticalAlignment="Top" Width="40" TextAlignment="Center"/>
|
||||
<TextBlock HorizontalAlignment="Left" Margin="10,94,0,0" TextWrapping="Wrap" Text="Power" VerticalAlignment="Top" Width="105"/>
|
||||
<TextBlock HorizontalAlignment="Left" Margin="10,52,0,0" TextWrapping="Wrap" Text="Verbrauch" VerticalAlignment="Top" Width="105"/>
|
||||
<TextBlock x:Name="countPower" HorizontalAlignment="Left" Margin="10,115,0,0" TextWrapping="Wrap" Text="0 / 0" VerticalAlignment="Top" Width="105" TextAlignment="Center"/>
|
||||
<TextBlock x:Name="countColum" HorizontalAlignment="Left" Margin="10,73,0,0" TextWrapping="Wrap" Text="0 / 0" VerticalAlignment="Top" Width="105" TextAlignment="Center"/>
|
||||
<TextBlock Margin="272,94,32,191" Text="{Binding TotalNumberOfPoints, StringFormat='Total number of data points: {0}'}"/>
|
||||
<oxy:PlotView Margin="10,136,10,10" Model="{Binding Model}" />
|
||||
</Grid>
|
||||
</Window>
|
||||
|
@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Windows;
|
||||
|
||||
namespace Mqtt_SWB_Dashboard {
|
||||
@ -6,17 +8,32 @@ namespace Mqtt_SWB_Dashboard {
|
||||
/// Interaktionslogik für MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window {
|
||||
private Stats s;
|
||||
|
||||
public MainWindow() {
|
||||
InitializeComponent();
|
||||
Stats s = new Stats(new Mosquitto());
|
||||
s.UpdatedConsumption += this.S_UpdatedConsumption;
|
||||
CultureInfo info = new CultureInfo("de-DE");
|
||||
info.NumberFormat.NumberDecimalSeparator = ".";
|
||||
Thread.CurrentThread.CurrentCulture = info;
|
||||
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
|
||||
this.s = new Stats(new Mosquitto());
|
||||
this.s.UpdatedConsumption += this.S_UpdatedConsumption;
|
||||
this.S_UpdatedConsumption(this.s, null);
|
||||
}
|
||||
|
||||
private void S_UpdatedConsumption(Stats sender, EventArgs e) {
|
||||
this.Dispatcher.BeginInvoke((Action)(() => {
|
||||
this.countHouses.Text = sender.GetNumberHouseholds().ToString();
|
||||
this.countDevices.Text = sender.GetNumberDevices().ToString();
|
||||
this.countHouses.Text = sender.GetNumberHouseholds();
|
||||
this.countDevices.Text = sender.GetNumberDevices();
|
||||
this.countColum.Text = sender.GetCurrentColum();
|
||||
Tuple<Double, Double> power = sender.GetCurrentPower();
|
||||
this.countPower.Text = power.Item1 + "W / "+power.Item2+"W";
|
||||
((Models.PowerChartModel)this.DataContext).AddPower(power);
|
||||
}));
|
||||
}
|
||||
|
||||
private void OnClosed(Object sender, EventArgs e) {
|
||||
this.s.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
59
Mqtt-SWB-Dashboard/Models/PowerChartModel.cs
Normal file
59
Mqtt-SWB-Dashboard/Models/PowerChartModel.cs
Normal file
@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using OxyPlot;
|
||||
using OxyPlot.Axes;
|
||||
using OxyPlot.Series;
|
||||
|
||||
namespace Mqtt_SWB_Dashboard.Models {
|
||||
public class PowerChartModel : INotifyPropertyChanged {
|
||||
private Double MaximumDrawn = 5;
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
public PowerChartModel() {
|
||||
Instance = this;
|
||||
this.Model = new PlotModel { Title = "Stromverbrauch" };
|
||||
this.Model.Axes.Add(new DateTimeAxis { Position = AxisPosition.Bottom, AbsoluteMinimum = DateTimeAxis.ToDouble(DateTime.Now), AbsoluteMaximum = DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(1)), IsZoomEnabled = false });
|
||||
this.Model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, AbsoluteMinimum = 0, AbsoluteMaximum = 1, IsZoomEnabled = false });
|
||||
|
||||
this.Model.Series.Add(new LineSeries { Title = "Active [W]", Color = OxyColor.FromRgb(0, 150, 0) });
|
||||
this.Model.Series.Add(new LineSeries { Title = "Seen [W]", Color = OxyColor.FromRgb(0, 255, 0) });
|
||||
this.RaisePropertyChanged("Model");
|
||||
}
|
||||
|
||||
internal void AddPower(Tuple<Double, Double> power) {
|
||||
((LineSeries)this.Model.Series[0]).Points.Add(new DataPoint(DateTimeAxis.ToDouble(DateTime.Now), power.Item1));
|
||||
((LineSeries)this.Model.Series[1]).Points.Add(new DataPoint(DateTimeAxis.ToDouble(DateTime.Now), power.Item2));
|
||||
|
||||
if(this.MaximumDrawn < power.Item1) {
|
||||
this.MaximumDrawn = power.Item1;
|
||||
}
|
||||
if (this.MaximumDrawn < power.Item2) {
|
||||
this.MaximumDrawn = power.Item2;
|
||||
}
|
||||
this.Model.Axes[1].Minimum = 0;
|
||||
this.Model.Axes[1].Maximum = this.MaximumDrawn*1.1;
|
||||
this.Model.Axes[1].AbsoluteMaximum = this.MaximumDrawn*1.1;
|
||||
this.Model.Axes[0].AbsoluteMaximum = DateTimeAxis.ToDouble(DateTime.Now);
|
||||
|
||||
this.TotalNumberOfPoints++;
|
||||
this.RaisePropertyChanged("TotalNumberOfPoints");
|
||||
|
||||
this.Model.InvalidatePlot(true);
|
||||
}
|
||||
protected void RaisePropertyChanged(String property) {
|
||||
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
|
||||
}
|
||||
|
||||
public PlotModel Model { get; private set; }
|
||||
public Int32 TotalNumberOfPoints { get; private set; }
|
||||
public static PowerChartModel Instance { get; private set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -1,13 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Mqtt_SWB_Dashboard {
|
||||
class Mosquitto {
|
||||
class Mosquitto : IDisposable {
|
||||
private Process p;
|
||||
private String message;
|
||||
|
||||
@ -30,7 +26,7 @@ namespace Mqtt_SWB_Dashboard {
|
||||
|
||||
private void P_OutputDataReceived(Object sender, DataReceivedEventArgs e) {
|
||||
if (e.Data != null) {
|
||||
if(e.Data.StartsWith("Client mosqsub")) {
|
||||
if (e.Data.StartsWith("Client mosqsub")) {
|
||||
if (this.message != "" && this.message.IndexOf(" received PUBLISH ") > 0) {
|
||||
MatchCollection matches = (new Regex("^Client mosqsub\\|.*received PUBLISH \\(.*,.*,.*,.*, '(.*)'.*\\)\\)\n[^ ]* (.*)$", RegexOptions.IgnoreCase | RegexOptions.Singleline)).Matches(this.message);
|
||||
String topic = matches[0].Groups[1].Value;
|
||||
@ -43,6 +39,31 @@ namespace Mqtt_SWB_Dashboard {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region IDisposable Support
|
||||
private bool disposedValue = false; // Dient zur Erkennung redundanter Aufrufe.
|
||||
|
||||
protected virtual void Dispose(Boolean disposing) {
|
||||
if (!this.disposedValue) {
|
||||
if (disposing) {
|
||||
this.p.CancelOutputRead();
|
||||
this.p.Kill();
|
||||
this.p.Close();
|
||||
}
|
||||
this.p = null;
|
||||
this.disposedValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
~Mosquitto() {
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
class MqttEventArgs : EventArgs {
|
||||
public MqttEventArgs() : base() { }
|
||||
|
@ -37,6 +37,12 @@
|
||||
<Reference Include="LitJson, Version=0.9.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\LitJson.0.9.0\lib\LitJson.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OxyPlot, Version=1.0.0.0, Culture=neutral, PublicKeyToken=638079a8f0bd61e9, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OxyPlot.Core.1.0.0\lib\net45\OxyPlot.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OxyPlot.Wpf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=75e952ba404cdbb0, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OxyPlot.Wpf.1.0.0\lib\net45\OxyPlot.Wpf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
@ -57,7 +63,9 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Helper.cs" />
|
||||
<Compile Include="Helper\Device.cs" />
|
||||
<Compile Include="Helper\Household.cs" />
|
||||
<Compile Include="Models\PowerChartModel.cs" />
|
||||
<Compile Include="Stats.cs" />
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -100,5 +108,8 @@
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\DataSources\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
@ -1,25 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using LitJson;
|
||||
using Mqtt_SWB_Dashboard.Helper;
|
||||
|
||||
namespace Mqtt_SWB_Dashboard {
|
||||
internal class Stats {
|
||||
private Dictionary<String, Dictionary<Int32, DevicePower>> household;
|
||||
internal class Stats : IDisposable {
|
||||
private Dictionary<String, Household> households = new Dictionary<String, Household>();
|
||||
private Mosquitto mosquitto;
|
||||
|
||||
public delegate void UpdateMessage(Stats sender, EventArgs e);
|
||||
public event UpdateMessage UpdatedConsumption;
|
||||
|
||||
public Stats(Mosquitto mosquitto) {
|
||||
this.household = new Dictionary<String, Dictionary<Int32, DevicePower>>();
|
||||
mosquitto.MessageIncomming += this.Mosquitto_MessageIncomming;
|
||||
LoadHouseholds();
|
||||
this.mosquitto = mosquitto;
|
||||
this.mosquitto.MessageIncomming += this.Mosquitto_MessageIncomming;
|
||||
}
|
||||
|
||||
private void LoadHouseholds() {
|
||||
if(File.Exists("household.json")) {
|
||||
try {
|
||||
String json = File.ReadAllText("household.json");
|
||||
JsonData data = JsonMapper.ToObject(json);
|
||||
foreach (KeyValuePair<String, JsonData> item in data) {
|
||||
this.households.Add(item.Key, new Household(item.Value));
|
||||
}
|
||||
} catch (Exception) { }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void Mosquitto_MessageIncomming(Object sender, MqttEventArgs e) {
|
||||
if (e.Topic == "/flex4grid/VersionControl/LocalGateway/groups/BONN_1") {
|
||||
|
||||
} else if (Regex.Match(e.Topic, "/flex4grid/VersionControl/LocalGateway/hosts/.*/status").Success ||
|
||||
} else if (Regex.Match(e.Topic, "/flex4grid/VersionControl/LocalGateway/hosts/.*/status").Success ||
|
||||
e.Topic == "/flex4grid/VersionControl/LocalGateway/status" ||
|
||||
Regex.Match(e.Topic, "/flex4grid/VersionControl/LocalGateway/hosts/.*/logs/gateway/plugs/gateway_plugs_1").Success) {
|
||||
this.GatewayPing(e);
|
||||
@ -29,49 +47,38 @@ namespace Mqtt_SWB_Dashboard {
|
||||
Regex.Match(e.Topic, "/flex4grid/v1/households/.*/device/consumption").Success ||
|
||||
Regex.Match(e.Topic, "/flex4grid/v1/households/.*/device/state").Success) {
|
||||
this.HouseholdConsumption(e);
|
||||
} else if (Regex.Match(e.Topic, "/flex4grid/v1/households/.*/devices/state/request").Success) {
|
||||
this.HouseholdRequest(e);
|
||||
} else {
|
||||
throw new NotImplementedException(e.Topic);
|
||||
}//
|
||||
}
|
||||
|
||||
internal Int32 GetNumberDevices() {
|
||||
Int32 ret = 0;
|
||||
foreach (KeyValuePair<String, Dictionary<Int32, DevicePower>> item in this.household) {
|
||||
ret += item.Value.Count;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
internal Int32 GetNumberHouseholds() {
|
||||
return this.household.Count;
|
||||
private void HouseholdRequest(MqttEventArgs e) {
|
||||
//throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void HouseholdConsumption(MqttEventArgs e) {
|
||||
Match m = Regex.Match(e.Topic, "/flex4grid/v1/households/([^/]*)/(consumption|device/(consumption|state))");
|
||||
String id = m.Groups[1].Value;
|
||||
DevicePower.DevType dtype = DevicePower.DevType.Consumption;
|
||||
Device.DevType dtype = Device.DevType.Consumption;
|
||||
if (m.Groups[2].Value == "consumption") {
|
||||
dtype = DevicePower.DevType.Production;
|
||||
} else if(m.Groups[3].Value == "consumption") {
|
||||
dtype = DevicePower.DevType.Consumption;
|
||||
} else if(m.Groups[3].Value == "state") {
|
||||
dtype = DevicePower.DevType.State;
|
||||
dtype = Device.DevType.Production;
|
||||
} else if (m.Groups[3].Value == "consumption") {
|
||||
dtype = Device.DevType.Consumption;
|
||||
} else if (m.Groups[3].Value == "state") {
|
||||
dtype = Device.DevType.State;
|
||||
}
|
||||
JsonData stuff = JsonMapper.ToObject(e.Message);
|
||||
Int32 did = Int32.Parse(stuff["id"].ToString());
|
||||
if (this.household.Keys.Contains(id)) {
|
||||
if (this.household[id].Keys.Contains(did)) {
|
||||
this.household[id][did].Update(stuff, dtype);
|
||||
try {
|
||||
JsonData data = JsonMapper.ToObject(e.Message);
|
||||
String did = data["id"].ToString();
|
||||
if (this.households.Keys.Contains(id)) {
|
||||
this.households[id].PutDevice(did, data, dtype);
|
||||
} else {
|
||||
this.household[id].Add(did, new DevicePower(stuff, dtype));
|
||||
this.households.Add(id, new Household(did, new Device(data, dtype)));
|
||||
}
|
||||
} else {
|
||||
Dictionary<Int32, DevicePower> d = new Dictionary<Int32, DevicePower> {
|
||||
{ did, new DevicePower(stuff, dtype) }
|
||||
};
|
||||
this.household.Add(id, d);
|
||||
}
|
||||
this.UpdatedConsumption?.Invoke(this, null);
|
||||
this.UpdatedConsumption?.Invoke(this, null);
|
||||
} catch (Exception) { }
|
||||
}
|
||||
|
||||
private void DeviceStatus(MqttEventArgs e) {
|
||||
@ -85,5 +92,72 @@ namespace Mqtt_SWB_Dashboard {
|
||||
private void GatewayPing(MqttEventArgs e) {
|
||||
//throw new NotImplementedException();
|
||||
}
|
||||
|
||||
internal String GetNumberDevices() {
|
||||
Int32 active = 0;
|
||||
Int32 all = 0;
|
||||
foreach (KeyValuePair<String, Household> item in this.households) {
|
||||
active += item.Value.GetActive();
|
||||
all += item.Value.Devices.Count;
|
||||
}
|
||||
return active.ToString() + " / " + all.ToString();
|
||||
}
|
||||
|
||||
internal String GetNumberHouseholds() {
|
||||
Int32 active = 0;
|
||||
Int32 all = this.households.Count;
|
||||
foreach (KeyValuePair<String, Household> item in this.households) {
|
||||
if (item.Value.Active > DateTime.Now.AddMinutes(-10)) {
|
||||
active++;
|
||||
}
|
||||
}
|
||||
return active.ToString() + " / " + all.ToString();
|
||||
}
|
||||
|
||||
internal Tuple<Double, Double> GetCurrentPower() {
|
||||
Double active = 0;
|
||||
Double all = 0;
|
||||
foreach (KeyValuePair<String, Household> item in this.households) {
|
||||
active += item.Value.GetPower();
|
||||
all += item.Value.GetAllPower();
|
||||
}
|
||||
return new Tuple<Double, Double>(active, all);
|
||||
}
|
||||
|
||||
internal String GetCurrentColum() {
|
||||
Double active = 0;
|
||||
Double all = 0;
|
||||
foreach (KeyValuePair<String, Household> item in this.households) {
|
||||
active += item.Value.GetColum();
|
||||
all += item.Value.GetAllColum();
|
||||
}
|
||||
return active.ToString("F1") + "kW / " + all.ToString("F1") + "kW";
|
||||
}
|
||||
|
||||
#region IDisposable Support
|
||||
private Boolean disposedValue = false; // Dient zur Erkennung redundanter Aufrufe.
|
||||
|
||||
protected virtual void Dispose(Boolean disposing) {
|
||||
if (!this.disposedValue) {
|
||||
if (disposing) {
|
||||
this.mosquitto.MessageIncomming -= this.Mosquitto_MessageIncomming;
|
||||
String json = JsonMapper.ToJson(this.households);
|
||||
File.WriteAllText("household.json", json);
|
||||
this.mosquitto.Dispose();
|
||||
}
|
||||
this.mosquitto = null;
|
||||
this.disposedValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
~Stats() {
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="LitJson" version="0.9.0" targetFramework="net461" />
|
||||
<package id="OxyPlot.Core" version="1.0.0" targetFramework="net461" />
|
||||
<package id="OxyPlot.Wpf" version="1.0.0" targetFramework="net461" />
|
||||
</packages>
|
14
packages/OxyPlot.Core.1.0.0/AUTHORS
vendored
Normal file
14
packages/OxyPlot.Core.1.0.0/AUTHORS
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
# This is the official list of OxyPlot authors for copyright purposes.
|
||||
# This file is distinct from the CONTRIBUTORS file.
|
||||
# See the latter for an explanation.
|
||||
|
||||
# Names should be added to this file as
|
||||
# Name or Organization <email address>
|
||||
# The email address is not required for organizations.
|
||||
|
||||
# Please keep the list sorted.
|
||||
# Please notify the first person on the list to be added here.
|
||||
|
||||
Oystein Bjorke <oystein.bjorke@gmail.com>
|
||||
DNV GL AS
|
||||
LECO® Corporation
|
217
packages/OxyPlot.Core.1.0.0/CHANGELOG.md
vendored
Normal file
217
packages/OxyPlot.Core.1.0.0/CHANGELOG.md
vendored
Normal file
@ -0,0 +1,217 @@
|
||||
# Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [1.0.0] - 2016-09-11
|
||||
### Added
|
||||
- Added OxyPlot.SharpDX.Wpf NuGet package
|
||||
- Added DirectX 9.1-10.1 feature level support for SharpDX renderer
|
||||
- Added SharpDX based renderer and WPF control with SharpDX render (#124)
|
||||
- Added MinimumMajorStep and MinimumMinorStep to Axes.Axis (#816)
|
||||
- Added support for vertical X axis to HeatMapSeries (#535)
|
||||
- Added fall-back rectangle rendering to HeatMapSeries (#801)
|
||||
- Added logarithmic HeatMapSeries support (#802) and example
|
||||
- Axis.MaximumRange to limit the zoom (#401)
|
||||
- Added OxyPlot.Mobile NuGet package to combine the mobile platforms into a single package (#362)
|
||||
- Support for XWT (#295)
|
||||
- TwoColorAreaSeries (#299)
|
||||
- Delta values in AxisChangedEventArgs (#276)
|
||||
- Git source server (added GitLink build step) (#267,#266)
|
||||
- iOS PlotView ZoomThreshold/AllowPinchPastZero for use with KeepAspectRatioWhenPinching=false (#359)
|
||||
- CandleStickAndVolumeSeries and VolumeSeries (#377)
|
||||
- Axis.DesiredSize property (#383)
|
||||
- WPF wrapper for BoxPlotSeries (#434)
|
||||
- Capability to display mean value to BoxPlotSeries (#440)
|
||||
- LinearBarSeries for WPF (#506)
|
||||
- TitleToolTip in PlotModel (#508)
|
||||
- TextColor property on WPF Axis (#452)
|
||||
- ThreeColorLineSeries (#378)
|
||||
- CI of the Xamarin.Android, Xamarin.iOS and Xamarin.Forms packages (#274)
|
||||
- PlotModel.LegendLineSpacing (#622)
|
||||
- Legend rendering for LinearBarSeries (#663)
|
||||
- LegendMaxHeight property in PlotModel and Wpf.Plot (#668)
|
||||
- Support for a Xamarin Forms UWP project with sample app (#697)
|
||||
- ListBuilder for building lists by reflection (#705)
|
||||
- F# example (#699)
|
||||
- Support for discontinuities in AreaSeries (#215)
|
||||
- Support for Windows Universal 10.0 apps (#615)
|
||||
- Support Unicode in OxyPlot.Pdf (#789)
|
||||
- TouchTrackerManipulator (#787)
|
||||
- Extracted visible window search code from CandleStickSeries and made a generic version in XYSeries. Used it to optimize AreaSeries performance. (#834)
|
||||
- Optimized rendering performance of RectangleBarSeries (#834).
|
||||
- PdfExporter implementing IExporter (#845)
|
||||
- Color minor and major ticks differently (#417)
|
||||
- Support for PieSeries in OxyPlot.Wpf (#878)
|
||||
- Filter in example browser (#118)
|
||||
- Support for tooltips on WPF annotations
|
||||
- Support for tracker in OxyPlot.GtkSharp
|
||||
- Improve tracker style (Windows Forms) (#106)
|
||||
- Font rendering in OxyPlot.GtkSharp improved by using Pango (#972)
|
||||
- Improved LineSeries performance (#834)
|
||||
|
||||
### Changed
|
||||
- Fixed closing file stream for PdfReportWriter when PdfReportWriter is closed or disposed of. (#892)
|
||||
- Renamed OxyPlot.WindowsUniversal to OxyPlot.Windows (#242)
|
||||
- Changed OxyPlot.Xamarin.Forms to require OxyPlot.Mobile dependency instead of each separate NuGet. (#362)
|
||||
- Renamed OxyPlot.XamarinIOS to OxyPlot.MonoTouch (#327)
|
||||
- Renamed OxyPlot.XamarinAndroid to OxyPlot.Xamarin.Android (#327)
|
||||
- Renamed OxyPlot.XamarinForms to OxyPlot.Xamarin.Forms (#327)
|
||||
- Renamed OxyPlot.XamarinForms.iOS to OxyPlot.Xamarin.Forms.Platform.iOS (#327)
|
||||
- Renamed OxyPlot.XamarinFormsIOS to OxyPlot.Xamarin.Forms.Platform.iOS.Classic (#327)
|
||||
- Renamed OxyPlot.XamarinFormsAndroid to OxyPlot.Xamarin.Forms.Platform.Android (#327)
|
||||
- Renamed OxyPlot.XamarinFormsWinPhone to OxyPlot.Xamarin.Forms.Platform.WP8 (#327)
|
||||
- Changed OxyPlot.Xamarin.Android target to Android level 10 (#223)
|
||||
- Separated WPF Plot and PlotView (#252, #239)
|
||||
- Current CandleStickSeries renamed to OldCandleStickSeries, replaced by a faster implementation (#369)
|
||||
- Invalidate plot when ItemsSource contents change (INotifyCollectionChanged) on WPF only (#406)
|
||||
- Xamarin.Forms references updated to 1.5.0.6447 (#293, #439)
|
||||
- Change OxyPlot.Xamarin.Forms.Platform.Android target to Android level 15 (#439)
|
||||
- Changed OxyPlot.Xamarin.Forms to portable Profile259 (#439)
|
||||
- PlotController should not intercept input per default (#446)
|
||||
- Changed DefaultTrackerFormatString for BoxPlotSeries (to include Mean) (#440)
|
||||
- Changed Constructor of BoxPlotItem (to include Mean) (#440)
|
||||
- Changed Axis, Annotation and Series Render() method (removed model parameter)
|
||||
- Changed PCL project to profile 259, SL5 is separate now (#115)
|
||||
- Extracted CreateReport() and CreateTextReport() from PlotModel (#517)
|
||||
- Renamed GetLastUpdateException to GetLastPlotException and added the ability to see render exceptions(#543)
|
||||
- Move TileMapAnnotation class to example library (#567)
|
||||
- Change to semantic versioning (#595)
|
||||
- Change GTKSharp3 project to x86 (#599)
|
||||
- Change OxyPlot.Xamarin.Android to API Level 15 (#614)
|
||||
- Add Xamarin.Forms renderer initialization to PlotViewRenderer (#632)
|
||||
- Marked OxyPlot.Xamarin.Forms.Platform.*.Forms.Init() obsolete (#632)
|
||||
- Throw exception if Xamarin.Forms renderer is not 'initialized' (#492)
|
||||
- Make numeric values of DateTimeAxis compatible with ToOADate (#660)
|
||||
- Make struct types immutable (#692)
|
||||
- Implement IEquatable<T> for struct types (#692)
|
||||
- BoxPlotItem changed to reference type (#692)
|
||||
- Move Xamarin projects to new repository (#777)
|
||||
- Remove CandleStickSeries.Append (#826)
|
||||
- Change MinorInterval calculation, add unit test (#133)
|
||||
- Rewrite LogarithmicAxis tick calculation (#820)
|
||||
- Change Axis methods to protected virtual (#837)
|
||||
- Move CalculateMinorInterval and CreateTickValues to AxisUtilities (#837)
|
||||
- Change default number format to "g6" in Axis base class (#841)
|
||||
- Push packages to myget.org (#847)
|
||||
- Change the default format string to `null` for TimeSpanAxis and DateTimeAxis (#951)
|
||||
|
||||
### Removed
|
||||
- StyleCop tasks (#556)
|
||||
- OxyPlot.Metro project (superseded by OxyPlot.WindowsUniversal) (#241)
|
||||
- PlotModel.ToSvg method. Use the SvgExporter instead. (#347)
|
||||
- Constructors with parameters, use default constructors instead. (#347)
|
||||
- Axis.ShowMinorTicks property, use MinorTickSize = 0 instead (#347)
|
||||
- ManipulatorBase.GetCursorType method (#447)
|
||||
- Model.GetElements() method
|
||||
- Remove SL4 support (#115)
|
||||
- Remove NET35 support (#115)
|
||||
- PlotElement.Format method, use StringHelper.Format instead
|
||||
- EnumerableExtensions.Reverse removed (#677)
|
||||
- ListFiller (#705)
|
||||
|
||||
### Fixed
|
||||
- SharpDX control not being rendered when loaded
|
||||
- SharpDX out of viewport scrolling.
|
||||
- Multiple mouse clicks not being reported in OxyPlot.GtkSharp (#854)
|
||||
- StemSeries Tracking to allow tracking on tiny stems (#809)
|
||||
- Fixed PDFRenderContext text alignment issues for rotated text (#723)
|
||||
- HeatMapSeries.GetValue returns NaN instead of calculating a wrong value in proximity to NaN (#256)
|
||||
- Tracker position is wrong when PlotView is offset from origin (#455)
|
||||
- CategoryAxis should use StringFormat (#415)
|
||||
- Fixed the dependency of OxyPlot.Xamarin.Forms NuGet (#370)
|
||||
- Add default ctor for Xamarin.Forms iOS renderer (#348)
|
||||
- Windows Phone cursor exception (#345)
|
||||
- Bar/ColumSeries tracker format string bug (#333)
|
||||
- Fix exception for default tracker format strings (#265)
|
||||
- Fix center-aligned legends (#79)
|
||||
- Fix Markdown links to tag comparison URL with footnote-style links
|
||||
- WPF dispatcher issue (#311, #309)
|
||||
- Custom colors for scatters (#307)
|
||||
- Rotated axis labels (#303,#301)
|
||||
- Floating point error on axis labels (#289, #227)
|
||||
- Performance of CandleStickSeries (#290)
|
||||
- Tracker text for StairStepSeries (#263)
|
||||
- XamarinForms/iOS view not updating when model is changed (#262)
|
||||
- Improved WPF rendering performance (#260, #259)
|
||||
- Null reference with MVVM binding (#255)
|
||||
- WPF PngExporter background (#234)
|
||||
- XamlExporter background (#233)
|
||||
- .NET 3.5 build (#229)
|
||||
- Support WinPhone 8.1 in core NuGet package (#161)
|
||||
- Draw legend line with custom pattern (#356)
|
||||
- iOS pan/zoom stability (#336)
|
||||
- Xamarin.Forms iOS PlotViewRenderer crash (#458)
|
||||
- Inaccurate tracker when using LogarithmicAxis (#443)
|
||||
- Fix reset of transforms in WinForms render context (#489)
|
||||
- Fix StringFormat for TimeSpanAxis not recognizing f, ff, fff, etc (#330)
|
||||
- Fix LineSeries SMOOTH=True will crash WinForms on right click (#499)
|
||||
- Fix PlotView leak on iOS (#503)
|
||||
- This PlotModel is already in use by some other PlotView control (#497)
|
||||
- LegendTextColor not synchronized between wpf.Plot and InternalModel (#548)
|
||||
- Legend in CandleStickSeries does not scale correctly (#554)
|
||||
- Fix CodeGenerator exception for types without parameterless ctor (#573)
|
||||
- Migrate automatic package restore (#557)
|
||||
- Fix rendering of rotated 'math' text (#569, #448)
|
||||
- WPF export demo (#568)
|
||||
- Fixing a double comparison issue causing infinite loop (#587)
|
||||
- Fix null reference exception when ActualPoints was null rendering a StairStepSeries (#582)
|
||||
- Background color in the Xamarin.Forms views (#546)
|
||||
- IsVisible change in Xamarin.Forms.Platform.iOS (#546)
|
||||
- Rendering math text with syntax error gets stuck in an endless loop (#624)
|
||||
- Fix issue with MinimumRange not taking Minimum and Maximum values into account (#550)
|
||||
- Do not set default Controller in PlotView ctor (#436)
|
||||
- Corrected owner type of Wpf.PathAnnotation dependency properties (#645)
|
||||
- Fixed partial plot rendering on Xamarin.Android (#649)
|
||||
- Default controller should not be shared in WPF PlotViews (#682)
|
||||
- PositionAtZeroCrossing adds zero crossing line at wrong position (#635)
|
||||
- Implement AreaSeries.ConstantY2 (#662)
|
||||
- Null reference exception in ScatterSeries{T} actual points (#636)
|
||||
- Code generation for HighLowItem (#634)
|
||||
- Axis.MinimumRange did not work correctly (#711)
|
||||
- FillColor in ErrorColumnSeries (#736)
|
||||
- XAxisKey and YAxisKey added to Wpf.Annotations (#743)
|
||||
- Fix HeatMapSeries cannot plot on Universal Windows (#745)
|
||||
- Set Resolution in WinForms PngExporter (#754)
|
||||
- Axis should never go into infinite loop (#758)
|
||||
- Exception in BarSeriesBase (#790)
|
||||
- Vertical Axes Title Font Bug (#474)
|
||||
- Support string[] as ItemsSource in CategoryAxis (#825)
|
||||
- Horizontal RangeColorAxis (#767)
|
||||
- LogarithmicAxis sometimes places major ticks outside of the axis range (#850)
|
||||
- LineSeries with smoothing raises exception (#72)
|
||||
- Exception when legend is outside and plot area is small (#880)
|
||||
- Axis alignment with MinimumRange (#794)
|
||||
- Fixed strange number formatting when using LogarithmicAxis with very large or very small Series (#589)
|
||||
- Fixed LogarithmicAxis to no longer freeze when the axis is reversed (#925)
|
||||
- Prevent endless loop in LogarithmicAxis (#957)
|
||||
- Fixed WPF series data not refreshed when not visible (included WPF LiveDemo)
|
||||
- Fixed bug in selection of plot to display in OxyPlot.GtkSharp ExampleBrowser (#979)
|
||||
- Fixed non-interpolation of HeatMapSeries in OxyPlot.GtkSharp (#980)
|
||||
- Fixed axis min/max calc and axis assignment for CandleStick + VolumeSeries (#389)
|
||||
|
||||
## [0.2014.1.546] - 2014-10-22
|
||||
### Added
|
||||
- Support data binding paths ("Point.X") (#210)
|
||||
- Support for Xamarin.Forms (#204)
|
||||
- Support for Windows Universal apps (#190)
|
||||
- Improve TrackerFormatString consistency (#214)
|
||||
- Support LineColor.BrokenLineColor
|
||||
- LabelFormatString for ScatterSeries (#12)
|
||||
|
||||
### Changed
|
||||
- Changed tracker format strings arguments (#214)
|
||||
- Rename OxyPenLineJoin to LineJoin
|
||||
- Rename LineStyle.Undefined to LineStyle.Automatic
|
||||
|
||||
### Fixed
|
||||
- Improved text rendering for Android and iOS (#209)
|
||||
- Custom shape outline for PointAnnotation (#174)
|
||||
- Synchronize Wpf.Axis.MinimumRange (#205)
|
||||
- TrackerHitResult bug (#198)
|
||||
- Position of axis when PositionAtZeroCrossing = true (#189)
|
||||
- Expose ScatterSeries.ActualPoints (#201)
|
||||
- Add overridable Axis.FormatValueOverride (#181)
|
||||
- PngExporter text formatting (#170)
|
||||
|
||||
[Unreleased]: https://github.com/oxyplot/oxyplot/compare/v1.0.0...HEAD
|
||||
[1.0.0]: https://github.com/oxyplot/oxyplot/compare/v0.2014.1.546...v1.0.0
|
||||
[0.2014.1.546]: https://github.com/oxyplot/oxyplot/compare/v0.0.1...v0.2014.1.546
|
103
packages/OxyPlot.Core.1.0.0/CONTRIBUTORS
vendored
Normal file
103
packages/OxyPlot.Core.1.0.0/CONTRIBUTORS
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
# This is the official list of people who have contributed
|
||||
# to the OxyPlot repository.
|
||||
# The AUTHORS file lists the copyright holders; this file
|
||||
# lists people.
|
||||
|
||||
# People submitting code should be listed in this file (by email address).
|
||||
|
||||
# Names should be added to this file like so:
|
||||
# Name <email address>
|
||||
|
||||
# Please keep the list sorted.
|
||||
|
||||
Auriou
|
||||
Bartłomiej Szypelow <bszypelow@users.noreply.github.com>
|
||||
benjaminrupp
|
||||
Benoit Blanchon <>
|
||||
br
|
||||
brantheman
|
||||
Brannon King
|
||||
Brian Lim <brian.lim.ca@gmail.com>
|
||||
Caleb Clarke <thealmightybob@users.noreply.github.com>
|
||||
Carlos Anderson <carlosjanderson@gmail.com>
|
||||
Carlos Teixeira <karlmtc@gmail.com>
|
||||
Choden Konigsmark <choden.konigsmark@gmail.com>
|
||||
classicboss302
|
||||
csabar <rumancsabi@gmail.com>
|
||||
Cyril Martin <cyril.martin.cm@gmail.com>
|
||||
darrelbrown
|
||||
David Laundav <davelaundav@gmail.com>
|
||||
David Wong <dvkwong0@gmail.com>
|
||||
DJDAS
|
||||
DNV GL AS
|
||||
Don Syme <donsyme@fastmail.fm>
|
||||
efontana2
|
||||
elliatab
|
||||
episage <tilosag@gmail.com>
|
||||
eric
|
||||
Federico Coppola <fede@silentman.it>
|
||||
Francois Botha <igitur@gmail.com>
|
||||
Garrett
|
||||
Geert van Horrik <geert@catenalogic.com>
|
||||
Gimly
|
||||
Iain Nicol <git@iainnicol.com>
|
||||
Ilja Nosik <ilja.nosik@outlook.com>
|
||||
Ilya Skriblovsky <IlyaSkriblovsky@gmail.com>
|
||||
Iurii Gazin <archeg@gmail.com>
|
||||
jaykul
|
||||
jezza323
|
||||
Johan
|
||||
Johan20D
|
||||
Jonathan Arweck
|
||||
Jonathan Shore <jonathan.shore@gmail.com>
|
||||
julien.bataille
|
||||
Just Slon <just.slon@gmail.com>
|
||||
Kaplas80 <kaplas80@gmail.com>
|
||||
kc1212 <kc04bc@gmx.com>
|
||||
kenny_evoleap
|
||||
Kenny Nygaard
|
||||
Kevin Crowell <crowell@proteinmetrics.com>
|
||||
Kyle Pulvermacher
|
||||
LECO® Corporation
|
||||
Levi Botelho <levi_botelho@hotmail.com>
|
||||
Linquize
|
||||
lsowen
|
||||
Luka B
|
||||
Matt Williams
|
||||
Matthew Leibowitz <mattleibow@live.com>
|
||||
Memphisch <memphis@machzwo.de>
|
||||
Mendel Monteiro-Beckerman
|
||||
methdotnet
|
||||
mirolev <miroslav.levicky@gmail.com>
|
||||
Mitch-Connor <acm@htri.net>
|
||||
moes_leco
|
||||
moljac
|
||||
mroth
|
||||
mrtncls
|
||||
Oleg Tarasov <oleg.v.tarasov@gmail.com>
|
||||
Oystein Bjorke <oystein.bjorke@gmail.com>
|
||||
Patrice Marin <patrice.marin@thomsonreuters.com>
|
||||
Philippe AURIOU <p.auriou@live.fr>
|
||||
Piotr Warzocha <pw@piootr.pl>
|
||||
Rik Borger <isolocis@gmail.com>
|
||||
ryang <decatf@gmail.com>
|
||||
Senen Fernandez <senenf@gmail.com>
|
||||
Shun-ichi Goto <shunichi.goto@gmail.com>
|
||||
Soarc <gor.rustamyan@gmail.com>
|
||||
Stefan Rado <oxyplot@sradonia.net>
|
||||
stefan-schweiger
|
||||
Steve Hoelzer <shoelzer@gmail.com>
|
||||
Sven Dummis
|
||||
Taldoras <taldoras@googlemail.com>
|
||||
Thorsten Claff <tclaff@gmail.com>
|
||||
thepretender
|
||||
tephyrnex
|
||||
Thomas Ibel <tibel@users.noreply.github.com>
|
||||
Tomasz Cielecki <tomasz@ostebaronen.dk>
|
||||
ToplandJ <jostein.topland@nov.com>
|
||||
Udo Liess
|
||||
VisualMelon
|
||||
vhoehn <veit.hoehn@hte-company.de>
|
||||
Vsevolod Kukol <sevo@sevo.org>
|
||||
Xavier <Xavier@xavier-PC.lsi>
|
||||
zur003 <Eric.Zurcher@csiro.au>
|
22
packages/OxyPlot.Core.1.0.0/LICENSE
vendored
Normal file
22
packages/OxyPlot.Core.1.0.0/LICENSE
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 OxyPlot contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
BIN
packages/OxyPlot.Core.1.0.0/OxyPlot.Core.1.0.0.nupkg
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/OxyPlot.Core.1.0.0.nupkg
vendored
Normal file
Binary file not shown.
64
packages/OxyPlot.Core.1.0.0/README.md
vendored
Normal file
64
packages/OxyPlot.Core.1.0.0/README.md
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
OxyPlot is a cross-platform plotting library for .NET
|
||||
|
||||
- [Web page](http://oxyplot.org)
|
||||
- [Documentation](http://docs.oxyplot.org/)
|
||||
- [Announcements](http://oxyplot.org/announcements) / [atom](http://oxyplot.org/atom.xml)
|
||||
- [Discussion forum](http://discussion.oxyplot.org)
|
||||
- [Source repository](http://github.com/oxyplot/oxyplot)
|
||||
- [Issue tracker](http://github.com/oxyplot/oxyplot/issues)
|
||||
- [NuGet packages](http://www.nuget.org/packages?q=oxyplot)
|
||||
- [Stack Overflow](http://stackoverflow.com/questions/tagged/oxyplot)
|
||||
- [Twitter](https://twitter.com/hashtag/oxyplot)
|
||||
- [Gitter](https://gitter.im/oxyplot/oxyplot) (chat)
|
||||
|
||||

|
||||
[](https://ci.appveyor.com/project/objorke/oxyplot)
|
||||
|
||||

|
||||
|
||||
#### Branches
|
||||
|
||||
`master` - the release branch (stable channel)
|
||||
`develop` - the main branch with the latest development changes (pre-release channel)
|
||||
|
||||
See '[A successful git branching model](http://nvie.com/posts/a-successful-git-branching-model/)' for more information about the branching model in use.
|
||||
|
||||
#### Getting started
|
||||
|
||||
1. Use the NuGet package manager to add a reference to OxyPlot (see details below if you want to use pre-release packages)
|
||||
2. Add a `PlotView` to your user interface
|
||||
3. Create a `PlotModel` in your code
|
||||
4. Bind the `PlotModel` to the `Model` property of your `PlotView`
|
||||
|
||||
#### Examples
|
||||
|
||||
You can find examples in the `/Source/Examples` folder in the code repository.
|
||||
|
||||
#### NuGet packages
|
||||
|
||||
The latest pre-release packages are pushed by AppVeyor CI to [myget.org](https://www.myget.org/)
|
||||
To install these packages, set the myget.org package source `https://www.myget.org/F/oxyplot` and remember the "-pre" flag.
|
||||
|
||||
The stable release packages will be pushed to [nuget.org](https://www.nuget.org/packages?q=oxyplot).
|
||||
Note that we have currently have a lot of old (v2015.*) and pre-release packages on this feed, this will be cleaned up as soon as we release [v1.0](https://github.com/oxyplot/oxyplot/milestones/v1.0).
|
||||
|
||||
Package | Targets
|
||||
--------|---------------
|
||||
OxyPlot.Core | Portable class library
|
||||
OxyPlot.Wpf | WPF (NET40, NET45)
|
||||
OxyPlot.WindowsForms | Windows Forms (NET40, NET45)
|
||||
OxyPlot.Windows | Windows 8.1 and Windows Phone 8.1
|
||||
OxyPlot.WP8 | Windows Phone Silverlight
|
||||
OxyPlot.Silverlight | Silverlight 5
|
||||
OxyPlot.GtkSharp | GTK# 2 and 3 (NET40, NET45)
|
||||
OxyPlot.Xamarin.Android | MonoAndroid
|
||||
OxyPlot.Xamarin.iOS | MonoTouch and iOS10
|
||||
OxyPlot.Xamarin.Mac | Mac20
|
||||
OxyPlot.Xamarin.Forms | MonoTouch, iOS10, MonoAndroid, WP8
|
||||
OxyPlot.Xwt | NET40, NET45
|
||||
OxyPlot.OpenXML | NET40, NET45
|
||||
OxyPlot.Pdf | PdfSharp (NET40, NET45, SL5)
|
||||
|
||||
#### Contribute
|
||||
|
||||
See [Contributing](.github/CONTRIBUTING.md) for information about how to contribute!
|
21365
packages/OxyPlot.Core.1.0.0/lib/net40-client/OxyPlot.XML
vendored
Normal file
21365
packages/OxyPlot.Core.1.0.0/lib/net40-client/OxyPlot.XML
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/OxyPlot.Core.1.0.0/lib/net40-client/OxyPlot.dll
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/net40-client/OxyPlot.dll
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Core.1.0.0/lib/net40-client/OxyPlot.pdb
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/net40-client/OxyPlot.pdb
vendored
Normal file
Binary file not shown.
21365
packages/OxyPlot.Core.1.0.0/lib/net40/OxyPlot.XML
vendored
Normal file
21365
packages/OxyPlot.Core.1.0.0/lib/net40/OxyPlot.XML
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/OxyPlot.Core.1.0.0/lib/net40/OxyPlot.dll
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/net40/OxyPlot.dll
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Core.1.0.0/lib/net40/OxyPlot.pdb
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/net40/OxyPlot.pdb
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Core.1.0.0/lib/net45/OxyPlot.dll
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/net45/OxyPlot.dll
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Core.1.0.0/lib/net45/OxyPlot.pdb
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/net45/OxyPlot.pdb
vendored
Normal file
Binary file not shown.
21352
packages/OxyPlot.Core.1.0.0/lib/net45/OxyPlot.xml
vendored
Normal file
21352
packages/OxyPlot.Core.1.0.0/lib/net45/OxyPlot.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
21365
packages/OxyPlot.Core.1.0.0/lib/sl5/OxyPlot.XML
vendored
Normal file
21365
packages/OxyPlot.Core.1.0.0/lib/sl5/OxyPlot.XML
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/OxyPlot.Core.1.0.0/lib/sl5/OxyPlot.dll
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/sl5/OxyPlot.dll
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Core.1.0.0/lib/sl5/OxyPlot.pdb
vendored
Normal file
BIN
packages/OxyPlot.Core.1.0.0/lib/sl5/OxyPlot.pdb
vendored
Normal file
Binary file not shown.
14
packages/OxyPlot.Wpf.1.0.0/AUTHORS
vendored
Normal file
14
packages/OxyPlot.Wpf.1.0.0/AUTHORS
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
# This is the official list of OxyPlot authors for copyright purposes.
|
||||
# This file is distinct from the CONTRIBUTORS file.
|
||||
# See the latter for an explanation.
|
||||
|
||||
# Names should be added to this file as
|
||||
# Name or Organization <email address>
|
||||
# The email address is not required for organizations.
|
||||
|
||||
# Please keep the list sorted.
|
||||
# Please notify the first person on the list to be added here.
|
||||
|
||||
Oystein Bjorke <oystein.bjorke@gmail.com>
|
||||
DNV GL AS
|
||||
LECO® Corporation
|
217
packages/OxyPlot.Wpf.1.0.0/CHANGELOG.md
vendored
Normal file
217
packages/OxyPlot.Wpf.1.0.0/CHANGELOG.md
vendored
Normal file
@ -0,0 +1,217 @@
|
||||
# Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [1.0.0] - 2016-09-11
|
||||
### Added
|
||||
- Added OxyPlot.SharpDX.Wpf NuGet package
|
||||
- Added DirectX 9.1-10.1 feature level support for SharpDX renderer
|
||||
- Added SharpDX based renderer and WPF control with SharpDX render (#124)
|
||||
- Added MinimumMajorStep and MinimumMinorStep to Axes.Axis (#816)
|
||||
- Added support for vertical X axis to HeatMapSeries (#535)
|
||||
- Added fall-back rectangle rendering to HeatMapSeries (#801)
|
||||
- Added logarithmic HeatMapSeries support (#802) and example
|
||||
- Axis.MaximumRange to limit the zoom (#401)
|
||||
- Added OxyPlot.Mobile NuGet package to combine the mobile platforms into a single package (#362)
|
||||
- Support for XWT (#295)
|
||||
- TwoColorAreaSeries (#299)
|
||||
- Delta values in AxisChangedEventArgs (#276)
|
||||
- Git source server (added GitLink build step) (#267,#266)
|
||||
- iOS PlotView ZoomThreshold/AllowPinchPastZero for use with KeepAspectRatioWhenPinching=false (#359)
|
||||
- CandleStickAndVolumeSeries and VolumeSeries (#377)
|
||||
- Axis.DesiredSize property (#383)
|
||||
- WPF wrapper for BoxPlotSeries (#434)
|
||||
- Capability to display mean value to BoxPlotSeries (#440)
|
||||
- LinearBarSeries for WPF (#506)
|
||||
- TitleToolTip in PlotModel (#508)
|
||||
- TextColor property on WPF Axis (#452)
|
||||
- ThreeColorLineSeries (#378)
|
||||
- CI of the Xamarin.Android, Xamarin.iOS and Xamarin.Forms packages (#274)
|
||||
- PlotModel.LegendLineSpacing (#622)
|
||||
- Legend rendering for LinearBarSeries (#663)
|
||||
- LegendMaxHeight property in PlotModel and Wpf.Plot (#668)
|
||||
- Support for a Xamarin Forms UWP project with sample app (#697)
|
||||
- ListBuilder for building lists by reflection (#705)
|
||||
- F# example (#699)
|
||||
- Support for discontinuities in AreaSeries (#215)
|
||||
- Support for Windows Universal 10.0 apps (#615)
|
||||
- Support Unicode in OxyPlot.Pdf (#789)
|
||||
- TouchTrackerManipulator (#787)
|
||||
- Extracted visible window search code from CandleStickSeries and made a generic version in XYSeries. Used it to optimize AreaSeries performance. (#834)
|
||||
- Optimized rendering performance of RectangleBarSeries (#834).
|
||||
- PdfExporter implementing IExporter (#845)
|
||||
- Color minor and major ticks differently (#417)
|
||||
- Support for PieSeries in OxyPlot.Wpf (#878)
|
||||
- Filter in example browser (#118)
|
||||
- Support for tooltips on WPF annotations
|
||||
- Support for tracker in OxyPlot.GtkSharp
|
||||
- Improve tracker style (Windows Forms) (#106)
|
||||
- Font rendering in OxyPlot.GtkSharp improved by using Pango (#972)
|
||||
- Improved LineSeries performance (#834)
|
||||
|
||||
### Changed
|
||||
- Fixed closing file stream for PdfReportWriter when PdfReportWriter is closed or disposed of. (#892)
|
||||
- Renamed OxyPlot.WindowsUniversal to OxyPlot.Windows (#242)
|
||||
- Changed OxyPlot.Xamarin.Forms to require OxyPlot.Mobile dependency instead of each separate NuGet. (#362)
|
||||
- Renamed OxyPlot.XamarinIOS to OxyPlot.MonoTouch (#327)
|
||||
- Renamed OxyPlot.XamarinAndroid to OxyPlot.Xamarin.Android (#327)
|
||||
- Renamed OxyPlot.XamarinForms to OxyPlot.Xamarin.Forms (#327)
|
||||
- Renamed OxyPlot.XamarinForms.iOS to OxyPlot.Xamarin.Forms.Platform.iOS (#327)
|
||||
- Renamed OxyPlot.XamarinFormsIOS to OxyPlot.Xamarin.Forms.Platform.iOS.Classic (#327)
|
||||
- Renamed OxyPlot.XamarinFormsAndroid to OxyPlot.Xamarin.Forms.Platform.Android (#327)
|
||||
- Renamed OxyPlot.XamarinFormsWinPhone to OxyPlot.Xamarin.Forms.Platform.WP8 (#327)
|
||||
- Changed OxyPlot.Xamarin.Android target to Android level 10 (#223)
|
||||
- Separated WPF Plot and PlotView (#252, #239)
|
||||
- Current CandleStickSeries renamed to OldCandleStickSeries, replaced by a faster implementation (#369)
|
||||
- Invalidate plot when ItemsSource contents change (INotifyCollectionChanged) on WPF only (#406)
|
||||
- Xamarin.Forms references updated to 1.5.0.6447 (#293, #439)
|
||||
- Change OxyPlot.Xamarin.Forms.Platform.Android target to Android level 15 (#439)
|
||||
- Changed OxyPlot.Xamarin.Forms to portable Profile259 (#439)
|
||||
- PlotController should not intercept input per default (#446)
|
||||
- Changed DefaultTrackerFormatString for BoxPlotSeries (to include Mean) (#440)
|
||||
- Changed Constructor of BoxPlotItem (to include Mean) (#440)
|
||||
- Changed Axis, Annotation and Series Render() method (removed model parameter)
|
||||
- Changed PCL project to profile 259, SL5 is separate now (#115)
|
||||
- Extracted CreateReport() and CreateTextReport() from PlotModel (#517)
|
||||
- Renamed GetLastUpdateException to GetLastPlotException and added the ability to see render exceptions(#543)
|
||||
- Move TileMapAnnotation class to example library (#567)
|
||||
- Change to semantic versioning (#595)
|
||||
- Change GTKSharp3 project to x86 (#599)
|
||||
- Change OxyPlot.Xamarin.Android to API Level 15 (#614)
|
||||
- Add Xamarin.Forms renderer initialization to PlotViewRenderer (#632)
|
||||
- Marked OxyPlot.Xamarin.Forms.Platform.*.Forms.Init() obsolete (#632)
|
||||
- Throw exception if Xamarin.Forms renderer is not 'initialized' (#492)
|
||||
- Make numeric values of DateTimeAxis compatible with ToOADate (#660)
|
||||
- Make struct types immutable (#692)
|
||||
- Implement IEquatable<T> for struct types (#692)
|
||||
- BoxPlotItem changed to reference type (#692)
|
||||
- Move Xamarin projects to new repository (#777)
|
||||
- Remove CandleStickSeries.Append (#826)
|
||||
- Change MinorInterval calculation, add unit test (#133)
|
||||
- Rewrite LogarithmicAxis tick calculation (#820)
|
||||
- Change Axis methods to protected virtual (#837)
|
||||
- Move CalculateMinorInterval and CreateTickValues to AxisUtilities (#837)
|
||||
- Change default number format to "g6" in Axis base class (#841)
|
||||
- Push packages to myget.org (#847)
|
||||
- Change the default format string to `null` for TimeSpanAxis and DateTimeAxis (#951)
|
||||
|
||||
### Removed
|
||||
- StyleCop tasks (#556)
|
||||
- OxyPlot.Metro project (superseded by OxyPlot.WindowsUniversal) (#241)
|
||||
- PlotModel.ToSvg method. Use the SvgExporter instead. (#347)
|
||||
- Constructors with parameters, use default constructors instead. (#347)
|
||||
- Axis.ShowMinorTicks property, use MinorTickSize = 0 instead (#347)
|
||||
- ManipulatorBase.GetCursorType method (#447)
|
||||
- Model.GetElements() method
|
||||
- Remove SL4 support (#115)
|
||||
- Remove NET35 support (#115)
|
||||
- PlotElement.Format method, use StringHelper.Format instead
|
||||
- EnumerableExtensions.Reverse removed (#677)
|
||||
- ListFiller (#705)
|
||||
|
||||
### Fixed
|
||||
- SharpDX control not being rendered when loaded
|
||||
- SharpDX out of viewport scrolling.
|
||||
- Multiple mouse clicks not being reported in OxyPlot.GtkSharp (#854)
|
||||
- StemSeries Tracking to allow tracking on tiny stems (#809)
|
||||
- Fixed PDFRenderContext text alignment issues for rotated text (#723)
|
||||
- HeatMapSeries.GetValue returns NaN instead of calculating a wrong value in proximity to NaN (#256)
|
||||
- Tracker position is wrong when PlotView is offset from origin (#455)
|
||||
- CategoryAxis should use StringFormat (#415)
|
||||
- Fixed the dependency of OxyPlot.Xamarin.Forms NuGet (#370)
|
||||
- Add default ctor for Xamarin.Forms iOS renderer (#348)
|
||||
- Windows Phone cursor exception (#345)
|
||||
- Bar/ColumSeries tracker format string bug (#333)
|
||||
- Fix exception for default tracker format strings (#265)
|
||||
- Fix center-aligned legends (#79)
|
||||
- Fix Markdown links to tag comparison URL with footnote-style links
|
||||
- WPF dispatcher issue (#311, #309)
|
||||
- Custom colors for scatters (#307)
|
||||
- Rotated axis labels (#303,#301)
|
||||
- Floating point error on axis labels (#289, #227)
|
||||
- Performance of CandleStickSeries (#290)
|
||||
- Tracker text for StairStepSeries (#263)
|
||||
- XamarinForms/iOS view not updating when model is changed (#262)
|
||||
- Improved WPF rendering performance (#260, #259)
|
||||
- Null reference with MVVM binding (#255)
|
||||
- WPF PngExporter background (#234)
|
||||
- XamlExporter background (#233)
|
||||
- .NET 3.5 build (#229)
|
||||
- Support WinPhone 8.1 in core NuGet package (#161)
|
||||
- Draw legend line with custom pattern (#356)
|
||||
- iOS pan/zoom stability (#336)
|
||||
- Xamarin.Forms iOS PlotViewRenderer crash (#458)
|
||||
- Inaccurate tracker when using LogarithmicAxis (#443)
|
||||
- Fix reset of transforms in WinForms render context (#489)
|
||||
- Fix StringFormat for TimeSpanAxis not recognizing f, ff, fff, etc (#330)
|
||||
- Fix LineSeries SMOOTH=True will crash WinForms on right click (#499)
|
||||
- Fix PlotView leak on iOS (#503)
|
||||
- This PlotModel is already in use by some other PlotView control (#497)
|
||||
- LegendTextColor not synchronized between wpf.Plot and InternalModel (#548)
|
||||
- Legend in CandleStickSeries does not scale correctly (#554)
|
||||
- Fix CodeGenerator exception for types without parameterless ctor (#573)
|
||||
- Migrate automatic package restore (#557)
|
||||
- Fix rendering of rotated 'math' text (#569, #448)
|
||||
- WPF export demo (#568)
|
||||
- Fixing a double comparison issue causing infinite loop (#587)
|
||||
- Fix null reference exception when ActualPoints was null rendering a StairStepSeries (#582)
|
||||
- Background color in the Xamarin.Forms views (#546)
|
||||
- IsVisible change in Xamarin.Forms.Platform.iOS (#546)
|
||||
- Rendering math text with syntax error gets stuck in an endless loop (#624)
|
||||
- Fix issue with MinimumRange not taking Minimum and Maximum values into account (#550)
|
||||
- Do not set default Controller in PlotView ctor (#436)
|
||||
- Corrected owner type of Wpf.PathAnnotation dependency properties (#645)
|
||||
- Fixed partial plot rendering on Xamarin.Android (#649)
|
||||
- Default controller should not be shared in WPF PlotViews (#682)
|
||||
- PositionAtZeroCrossing adds zero crossing line at wrong position (#635)
|
||||
- Implement AreaSeries.ConstantY2 (#662)
|
||||
- Null reference exception in ScatterSeries{T} actual points (#636)
|
||||
- Code generation for HighLowItem (#634)
|
||||
- Axis.MinimumRange did not work correctly (#711)
|
||||
- FillColor in ErrorColumnSeries (#736)
|
||||
- XAxisKey and YAxisKey added to Wpf.Annotations (#743)
|
||||
- Fix HeatMapSeries cannot plot on Universal Windows (#745)
|
||||
- Set Resolution in WinForms PngExporter (#754)
|
||||
- Axis should never go into infinite loop (#758)
|
||||
- Exception in BarSeriesBase (#790)
|
||||
- Vertical Axes Title Font Bug (#474)
|
||||
- Support string[] as ItemsSource in CategoryAxis (#825)
|
||||
- Horizontal RangeColorAxis (#767)
|
||||
- LogarithmicAxis sometimes places major ticks outside of the axis range (#850)
|
||||
- LineSeries with smoothing raises exception (#72)
|
||||
- Exception when legend is outside and plot area is small (#880)
|
||||
- Axis alignment with MinimumRange (#794)
|
||||
- Fixed strange number formatting when using LogarithmicAxis with very large or very small Series (#589)
|
||||
- Fixed LogarithmicAxis to no longer freeze when the axis is reversed (#925)
|
||||
- Prevent endless loop in LogarithmicAxis (#957)
|
||||
- Fixed WPF series data not refreshed when not visible (included WPF LiveDemo)
|
||||
- Fixed bug in selection of plot to display in OxyPlot.GtkSharp ExampleBrowser (#979)
|
||||
- Fixed non-interpolation of HeatMapSeries in OxyPlot.GtkSharp (#980)
|
||||
- Fixed axis min/max calc and axis assignment for CandleStick + VolumeSeries (#389)
|
||||
|
||||
## [0.2014.1.546] - 2014-10-22
|
||||
### Added
|
||||
- Support data binding paths ("Point.X") (#210)
|
||||
- Support for Xamarin.Forms (#204)
|
||||
- Support for Windows Universal apps (#190)
|
||||
- Improve TrackerFormatString consistency (#214)
|
||||
- Support LineColor.BrokenLineColor
|
||||
- LabelFormatString for ScatterSeries (#12)
|
||||
|
||||
### Changed
|
||||
- Changed tracker format strings arguments (#214)
|
||||
- Rename OxyPenLineJoin to LineJoin
|
||||
- Rename LineStyle.Undefined to LineStyle.Automatic
|
||||
|
||||
### Fixed
|
||||
- Improved text rendering for Android and iOS (#209)
|
||||
- Custom shape outline for PointAnnotation (#174)
|
||||
- Synchronize Wpf.Axis.MinimumRange (#205)
|
||||
- TrackerHitResult bug (#198)
|
||||
- Position of axis when PositionAtZeroCrossing = true (#189)
|
||||
- Expose ScatterSeries.ActualPoints (#201)
|
||||
- Add overridable Axis.FormatValueOverride (#181)
|
||||
- PngExporter text formatting (#170)
|
||||
|
||||
[Unreleased]: https://github.com/oxyplot/oxyplot/compare/v1.0.0...HEAD
|
||||
[1.0.0]: https://github.com/oxyplot/oxyplot/compare/v0.2014.1.546...v1.0.0
|
||||
[0.2014.1.546]: https://github.com/oxyplot/oxyplot/compare/v0.0.1...v0.2014.1.546
|
103
packages/OxyPlot.Wpf.1.0.0/CONTRIBUTORS
vendored
Normal file
103
packages/OxyPlot.Wpf.1.0.0/CONTRIBUTORS
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
# This is the official list of people who have contributed
|
||||
# to the OxyPlot repository.
|
||||
# The AUTHORS file lists the copyright holders; this file
|
||||
# lists people.
|
||||
|
||||
# People submitting code should be listed in this file (by email address).
|
||||
|
||||
# Names should be added to this file like so:
|
||||
# Name <email address>
|
||||
|
||||
# Please keep the list sorted.
|
||||
|
||||
Auriou
|
||||
Bartłomiej Szypelow <bszypelow@users.noreply.github.com>
|
||||
benjaminrupp
|
||||
Benoit Blanchon <>
|
||||
br
|
||||
brantheman
|
||||
Brannon King
|
||||
Brian Lim <brian.lim.ca@gmail.com>
|
||||
Caleb Clarke <thealmightybob@users.noreply.github.com>
|
||||
Carlos Anderson <carlosjanderson@gmail.com>
|
||||
Carlos Teixeira <karlmtc@gmail.com>
|
||||
Choden Konigsmark <choden.konigsmark@gmail.com>
|
||||
classicboss302
|
||||
csabar <rumancsabi@gmail.com>
|
||||
Cyril Martin <cyril.martin.cm@gmail.com>
|
||||
darrelbrown
|
||||
David Laundav <davelaundav@gmail.com>
|
||||
David Wong <dvkwong0@gmail.com>
|
||||
DJDAS
|
||||
DNV GL AS
|
||||
Don Syme <donsyme@fastmail.fm>
|
||||
efontana2
|
||||
elliatab
|
||||
episage <tilosag@gmail.com>
|
||||
eric
|
||||
Federico Coppola <fede@silentman.it>
|
||||
Francois Botha <igitur@gmail.com>
|
||||
Garrett
|
||||
Geert van Horrik <geert@catenalogic.com>
|
||||
Gimly
|
||||
Iain Nicol <git@iainnicol.com>
|
||||
Ilja Nosik <ilja.nosik@outlook.com>
|
||||
Ilya Skriblovsky <IlyaSkriblovsky@gmail.com>
|
||||
Iurii Gazin <archeg@gmail.com>
|
||||
jaykul
|
||||
jezza323
|
||||
Johan
|
||||
Johan20D
|
||||
Jonathan Arweck
|
||||
Jonathan Shore <jonathan.shore@gmail.com>
|
||||
julien.bataille
|
||||
Just Slon <just.slon@gmail.com>
|
||||
Kaplas80 <kaplas80@gmail.com>
|
||||
kc1212 <kc04bc@gmx.com>
|
||||
kenny_evoleap
|
||||
Kenny Nygaard
|
||||
Kevin Crowell <crowell@proteinmetrics.com>
|
||||
Kyle Pulvermacher
|
||||
LECO® Corporation
|
||||
Levi Botelho <levi_botelho@hotmail.com>
|
||||
Linquize
|
||||
lsowen
|
||||
Luka B
|
||||
Matt Williams
|
||||
Matthew Leibowitz <mattleibow@live.com>
|
||||
Memphisch <memphis@machzwo.de>
|
||||
Mendel Monteiro-Beckerman
|
||||
methdotnet
|
||||
mirolev <miroslav.levicky@gmail.com>
|
||||
Mitch-Connor <acm@htri.net>
|
||||
moes_leco
|
||||
moljac
|
||||
mroth
|
||||
mrtncls
|
||||
Oleg Tarasov <oleg.v.tarasov@gmail.com>
|
||||
Oystein Bjorke <oystein.bjorke@gmail.com>
|
||||
Patrice Marin <patrice.marin@thomsonreuters.com>
|
||||
Philippe AURIOU <p.auriou@live.fr>
|
||||
Piotr Warzocha <pw@piootr.pl>
|
||||
Rik Borger <isolocis@gmail.com>
|
||||
ryang <decatf@gmail.com>
|
||||
Senen Fernandez <senenf@gmail.com>
|
||||
Shun-ichi Goto <shunichi.goto@gmail.com>
|
||||
Soarc <gor.rustamyan@gmail.com>
|
||||
Stefan Rado <oxyplot@sradonia.net>
|
||||
stefan-schweiger
|
||||
Steve Hoelzer <shoelzer@gmail.com>
|
||||
Sven Dummis
|
||||
Taldoras <taldoras@googlemail.com>
|
||||
Thorsten Claff <tclaff@gmail.com>
|
||||
thepretender
|
||||
tephyrnex
|
||||
Thomas Ibel <tibel@users.noreply.github.com>
|
||||
Tomasz Cielecki <tomasz@ostebaronen.dk>
|
||||
ToplandJ <jostein.topland@nov.com>
|
||||
Udo Liess
|
||||
VisualMelon
|
||||
vhoehn <veit.hoehn@hte-company.de>
|
||||
Vsevolod Kukol <sevo@sevo.org>
|
||||
Xavier <Xavier@xavier-PC.lsi>
|
||||
zur003 <Eric.Zurcher@csiro.au>
|
22
packages/OxyPlot.Wpf.1.0.0/LICENSE
vendored
Normal file
22
packages/OxyPlot.Wpf.1.0.0/LICENSE
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 OxyPlot contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
BIN
packages/OxyPlot.Wpf.1.0.0/OxyPlot.Wpf.1.0.0.nupkg
vendored
Normal file
BIN
packages/OxyPlot.Wpf.1.0.0/OxyPlot.Wpf.1.0.0.nupkg
vendored
Normal file
Binary file not shown.
64
packages/OxyPlot.Wpf.1.0.0/README.md
vendored
Normal file
64
packages/OxyPlot.Wpf.1.0.0/README.md
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
OxyPlot is a cross-platform plotting library for .NET
|
||||
|
||||
- [Web page](http://oxyplot.org)
|
||||
- [Documentation](http://docs.oxyplot.org/)
|
||||
- [Announcements](http://oxyplot.org/announcements) / [atom](http://oxyplot.org/atom.xml)
|
||||
- [Discussion forum](http://discussion.oxyplot.org)
|
||||
- [Source repository](http://github.com/oxyplot/oxyplot)
|
||||
- [Issue tracker](http://github.com/oxyplot/oxyplot/issues)
|
||||
- [NuGet packages](http://www.nuget.org/packages?q=oxyplot)
|
||||
- [Stack Overflow](http://stackoverflow.com/questions/tagged/oxyplot)
|
||||
- [Twitter](https://twitter.com/hashtag/oxyplot)
|
||||
- [Gitter](https://gitter.im/oxyplot/oxyplot) (chat)
|
||||
|
||||

|
||||
[](https://ci.appveyor.com/project/objorke/oxyplot)
|
||||
|
||||

|
||||
|
||||
#### Branches
|
||||
|
||||
`master` - the release branch (stable channel)
|
||||
`develop` - the main branch with the latest development changes (pre-release channel)
|
||||
|
||||
See '[A successful git branching model](http://nvie.com/posts/a-successful-git-branching-model/)' for more information about the branching model in use.
|
||||
|
||||
#### Getting started
|
||||
|
||||
1. Use the NuGet package manager to add a reference to OxyPlot (see details below if you want to use pre-release packages)
|
||||
2. Add a `PlotView` to your user interface
|
||||
3. Create a `PlotModel` in your code
|
||||
4. Bind the `PlotModel` to the `Model` property of your `PlotView`
|
||||
|
||||
#### Examples
|
||||
|
||||
You can find examples in the `/Source/Examples` folder in the code repository.
|
||||
|
||||
#### NuGet packages
|
||||
|
||||
The latest pre-release packages are pushed by AppVeyor CI to [myget.org](https://www.myget.org/)
|
||||
To install these packages, set the myget.org package source `https://www.myget.org/F/oxyplot` and remember the "-pre" flag.
|
||||
|
||||
The stable release packages will be pushed to [nuget.org](https://www.nuget.org/packages?q=oxyplot).
|
||||
Note that we have currently have a lot of old (v2015.*) and pre-release packages on this feed, this will be cleaned up as soon as we release [v1.0](https://github.com/oxyplot/oxyplot/milestones/v1.0).
|
||||
|
||||
Package | Targets
|
||||
--------|---------------
|
||||
OxyPlot.Core | Portable class library
|
||||
OxyPlot.Wpf | WPF (NET40, NET45)
|
||||
OxyPlot.WindowsForms | Windows Forms (NET40, NET45)
|
||||
OxyPlot.Windows | Windows 8.1 and Windows Phone 8.1
|
||||
OxyPlot.WP8 | Windows Phone Silverlight
|
||||
OxyPlot.Silverlight | Silverlight 5
|
||||
OxyPlot.GtkSharp | GTK# 2 and 3 (NET40, NET45)
|
||||
OxyPlot.Xamarin.Android | MonoAndroid
|
||||
OxyPlot.Xamarin.iOS | MonoTouch and iOS10
|
||||
OxyPlot.Xamarin.Mac | Mac20
|
||||
OxyPlot.Xamarin.Forms | MonoTouch, iOS10, MonoAndroid, WP8
|
||||
OxyPlot.Xwt | NET40, NET45
|
||||
OxyPlot.OpenXML | NET40, NET45
|
||||
OxyPlot.Pdf | PdfSharp (NET40, NET45, SL5)
|
||||
|
||||
#### Contribute
|
||||
|
||||
See [Contributing](.github/CONTRIBUTING.md) for information about how to contribute!
|
6555
packages/OxyPlot.Wpf.1.0.0/lib/net40/OxyPlot.Wpf.XML
vendored
Normal file
6555
packages/OxyPlot.Wpf.1.0.0/lib/net40/OxyPlot.Wpf.XML
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net40/OxyPlot.Wpf.dll
vendored
Normal file
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net40/OxyPlot.Wpf.dll
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net40/OxyPlot.Wpf.pdb
vendored
Normal file
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net40/OxyPlot.Wpf.pdb
vendored
Normal file
Binary file not shown.
6555
packages/OxyPlot.Wpf.1.0.0/lib/net45/OxyPlot.Wpf.XML
vendored
Normal file
6555
packages/OxyPlot.Wpf.1.0.0/lib/net45/OxyPlot.Wpf.XML
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net45/OxyPlot.Wpf.dll
vendored
Normal file
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net45/OxyPlot.Wpf.dll
vendored
Normal file
Binary file not shown.
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net45/OxyPlot.Wpf.pdb
vendored
Normal file
BIN
packages/OxyPlot.Wpf.1.0.0/lib/net45/OxyPlot.Wpf.pdb
vendored
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user