public Axis Find(string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } var res = _innerCollection.FirstOrDefault(x => x.Name == name); if (res != null) { return(res); } foreach (XElement xaxis in XAxes) { if (xaxis.Attribute(XName.Get("name"))?.Value == name) { res = new Axis(xaxis, _cube); int axisIndex = XAxes.IndexOf(xaxis); _innerCollection[axisIndex] = res; break; } } return(res); }
private async void ExcecuteLoadDataCommand() { RequestIsWorking = true; HttpResponseMessage resp = await Client.GetAsync(GlobalVariables.BackendServer_URL + $"/api/auswertung/steuern/Summiert/Steuerart?jahrVon={jahrvon}&jahrBis={jahrbis}"); if (resp.IsSuccessStatusCode) { ItemList = await resp.Content.ReadAsAsync <List <SteuerartGesamtentwicklungSummiertModel> >(); Labels = new string[ItemList.Count]; IList <Betrag> werte = new List <Betrag>(); int index = 0; ItemList.ToList().ForEach(item => { item.Steuerarten.ToList().ForEach(steuer => { var wert = werte.ToList().Find(wert => wert.Steuerart.Equals(steuer.Steuerart)); if (wert == null) { wert = new Betrag { Betraege = new List <double>(), Steuerart = steuer.Steuerart }; werte.Add(wert); } wert.Betraege.Add(steuer.Betrag); }); Labels[index] = item.Datum.ToString("MM.yyyy", CultureInfo.CurrentCulture); index++; }); LineSeries <double>[] series = new LineSeries <double> [werte.Count]; index = 0; werte.ToList().ForEach(wert => { var StackedColoumn = new LineSeries <double> { Values = wert.Betraege, Name = wert.Steuerart, TooltipLabelFormatter = (point) => wert.Steuerart + " " + point.PrimaryValue.ToString("N2") + "€" }; series.SetValue(StackedColoumn, index); index++; }); XAxes.First().Labels = Labels; XAxes.First().Name = "Monat"; YAxes.First().Name = "Betrag"; Series = series; RaisePropertyChanged(nameof(Series)); RaisePropertyChanged(nameof(XAxes)); RaisePropertyChanged(nameof(YAxes)); } RequestIsWorking = false; }
/// <inheritdoc /> public override int GetHashCode() { unchecked // Overflow is fine, just wrap { var hashCode = 41; if (Rows != null) { hashCode = hashCode * 59 + Rows.GetHashCode(); } if (RowOrder != null) { hashCode = hashCode * 59 + RowOrder.GetHashCode(); } if (Columns != null) { hashCode = hashCode * 59 + Columns.GetHashCode(); } if (Subplots != null) { hashCode = hashCode * 59 + Subplots.GetHashCode(); } if (XAxes != null) { hashCode = hashCode * 59 + XAxes.GetHashCode(); } if (YAxes != null) { hashCode = hashCode * 59 + YAxes.GetHashCode(); } if (Pattern != null) { hashCode = hashCode * 59 + Pattern.GetHashCode(); } if (XGap != null) { hashCode = hashCode * 59 + XGap.GetHashCode(); } if (YGap != null) { hashCode = hashCode * 59 + YGap.GetHashCode(); } if (Domain != null) { hashCode = hashCode * 59 + Domain.GetHashCode(); } if (XSide != null) { hashCode = hashCode * 59 + XSide.GetHashCode(); } if (YSide != null) { hashCode = hashCode * 59 + YSide.GetHashCode(); } return(hashCode); } }
public AxisLimits2D GetLimits(int xAxisIndex, int yAxisIndex) { return(new AxisLimits2D() { X1 = XAxes.Count() > xAxisIndex ? XAxes[xAxisIndex].Min : double.NaN, X2 = XAxes.Count() > xAxisIndex ? XAxes[xAxisIndex].Max : double.NaN, Y1 = YAxes.Count() > yAxisIndex ? YAxes[yAxisIndex].Min : double.NaN, Y2 = YAxes.Count() > yAxisIndex ? YAxes[yAxisIndex].Max : double.NaN, }); }
public void CreateAxes(int totalX, int totalY) { while (XAxes.Count < totalX) { XAxes.Add(new LinearAxis(inverted: false)); } while (YAxes.Count < totalY) { YAxes.Add(new LinearAxis(inverted: true)); } }
private async void LoadData() { RequestIsWorking = true; HttpResponseMessage resp = await Client.GetAsync(GlobalVariables.BackendServer_URL + $"/api/auswertung/dividendenErhalten/Gesamt/Wertpapiere/{wertpapierID}/Entwicklung?jahrVon={jahrvon}&jahrBis={jahrbis}"); if (resp.IsSuccessStatusCode) { Data = await resp.Content.ReadAsAsync <DividendeWertpapierEntwicklungMonatlichModel>(); IList <double> NettoChart = new List <double>(); IList <double> BruttoChart = new List <double>(); Labels = new string[Data.Betraege.Count]; int index = 0; Data.Betraege.ToList().ForEach(a => { NettoChart.Add(a.Netto); BruttoChart.Add(a.Brutto); Labels[index] = a.Datum.ToString("MMMM yyyy", CultureInfo.CurrentCulture); index++; }); nettoSeries = new LineSeries <double> { Values = NettoChart, Name = "Netto", TooltipLabelFormatter = (point) => "Netto " + point.PrimaryValue.ToString("N2") + "€" }; bruttoSeries = new LineSeries <double> { Values = BruttoChart, Name = "Brutto", TooltipLabelFormatter = (point) => "Brutto " + point.PrimaryValue.ToString("N2") + "€" }; XAxes.First().Labels = Labels; XAxes.First().Name = "Monat"; YAxes.First().Name = "Betrag"; Series = new LineSeries <double>[2] { bruttoSeries, nettoSeries }; RaisePropertyChanged(nameof(Series)); RaisePropertyChanged(nameof(XAxes)); RaisePropertyChanged(nameof(YAxes)); RaisePropertyChanged(nameof(Data)); } RequestIsWorking = false; }
private async void ExcecuteLoadDataCommand() { RequestIsWorking = true; HttpResponseMessage resp = await Client.GetAsync(GlobalVariables.BackendServer_URL + $"/api/auswertung/steuern/Monate/Jahresvergleich?jahrVon={jahrvon}&jahrBis={jahrbis}"); if (resp.IsSuccessStatusCode) { ItemList = await resp.Content.ReadAsAsync <List <SteuerMonatJahresVergleichAuswertungModel> >(); Labels = new string[12]; ColumnSeries <double>[] series = new ColumnSeries <double> [ItemList.Count]; int index = 0; ItemList.ToList().ForEach(item => { ColumnSeries <double> coloumn = new ColumnSeries <double> { Name = item.Jahr.ToString(), Values = new List <double>(), TooltipLabelFormatter = (point) => item.Jahr + " " + point.PrimaryValue.ToString("N2") + "€" }; var betraege = new List <double>(); item.Monatswerte.ToList().ForEach(mw => { betraege.Add(mw.Betrag); }); coloumn.Values = betraege; series.SetValue(coloumn, index); index++; }); for (int monat = 1; monat <= 12; monat++) { Labels[monat - 1] = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monat); } XAxes.First().Labels = Labels; XAxes.First().Name = "Monat"; YAxes.First().Name = "Betrag"; Series = series; RaisePropertyChanged(nameof(Series)); RaisePropertyChanged(nameof(XAxes)); RaisePropertyChanged(nameof(YAxes)); } RequestIsWorking = false; }
private async void ExcecuteLoadDataCommand() { RequestIsWorking = true; HttpResponseMessage resp = await Client.GetAsync(GlobalVariables.BackendServer_URL + $"/api/auswertung/dividendenErhalten/Summiert/Monat?monat={monat}&jahrVon={jahrvon}&jahrBis={jahrbis}"); if (resp.IsSuccessStatusCode) { ItemList = await resp.Content.ReadAsAsync <List <DividendeMonatentwicklungSummiertModel> >(); IList <double> NettoChart = new List <double>(); IList <double> BruttoChart = new List <double>(); Labels = new string[ItemList.Count]; int index = 0; ItemList.ToList().ForEach(a => { NettoChart.Add(a.Netto); BruttoChart.Add(a.Brutto); Labels[index] = a.Jahr.ToString(); index++; }); nettoSeries = new LineSeries <double> { Values = NettoChart, Name = "Netto", TooltipLabelFormatter = (point) => "Netto " + point.PrimaryValue.ToString("N2") + "€" }; bruttoSeries = new LineSeries <double> { Values = BruttoChart, Name = "Brutto", TooltipLabelFormatter = (point) => "Brutto " + point.PrimaryValue.ToString("N2") + "€" }; XAxes.First().Labels = Labels; XAxes.First().Name = "Monat"; YAxes.First().Name = "Betrag"; Series = new LineSeries <double>[2] { bruttoSeries, nettoSeries }; RaisePropertyChanged(nameof(Series)); RaisePropertyChanged(nameof(XAxes)); RaisePropertyChanged(nameof(YAxes)); } RequestIsWorking = false; }
private void InitializeAxes() { var xNumAxis = new NumericAxisViewModel { AxisAlignment = AxisAlignment.Bottom, AxisTitle = "XAxis", DrawMajorBands = false, TextFormatting = "0.00#", VisibleRange = new DoubleRange(0, 10), BorderThickness = new Thickness(3), BorderBrush = new SolidColorBrush(Colors.CadetBlue) }; XAxes.Add(xNumAxis); var xDateTimeAxis = new DateTimeAxisViewModel { AxisAlignment = AxisAlignment.Top, Id = "DateTimeAxis", VisibleRange = new DateRange(new DateTime(2017, 1, 1), new DateTime(2017, 1, 31)), StyleKey = "DateTimeAxisStyle" }; XAxes.Add(xDateTimeAxis); var yNumAxis = new NumericAxisViewModel { AxisTitle = "YAxis", DrawMajorBands = false, TextFormatting = "0.0#", VisibleRange = new DoubleRange(-10, 10) }; YAxes.Add(yNumAxis); var yTimeSpanAxis = new TimeSpanAxisViewModel { Id = "TimeSpanAxis", DrawMajorBands = false, VisibleRange = new TimeSpanRange(TimeSpan.FromHours(1), TimeSpan.FromHours(24)), AxisAlignment = AxisAlignment.Left }; YAxes.Add(yTimeSpanAxis); }
public override void OnModifierMouseMove(ModifierMouseArgs e) { base.OnModifierMouseMove(e); var pt = GetPointRelativeTo(e.MousePoint, ModifierSurface); var xAxis = XAxes.FirstOrDefault(); var yAxis = YAxes.FirstOrDefault(); var xAxisBandInfo = GetAxisBandInfo(xAxis, pt, out var xAxisInfo); var yAxisBandInfo = GetAxisBandInfo(yAxis, pt, out var yAxisInfo); ChartBandsInfo.XAxisBandInfo.BandInfo = xAxisBandInfo; ChartBandsInfo.XAxisBandInfo.HitTestInfo = xAxisInfo; ChartBandsInfo.YAxisBandInfo.BandInfo = yAxisBandInfo; ChartBandsInfo.YAxisBandInfo.HitTestInfo = yAxisInfo; }
private void SetDataIntoChart() { Labels = new string[12]; ColumnSeries <double>[] series = new ColumnSeries <double> [ItemList.Count]; int index = 0; ItemList.ToList().ForEach(item => { ColumnSeries <double> coloumn = new ColumnSeries <double> { Name = item.Jahr.ToString(), Values = new List <double>(), TooltipLabelFormatter = (point) => point.Label + point.PrimaryValue.ToString("N2") + "€", }; coloumn.TooltipLabelFormatter = (point) => item.Jahr + " " + point.PrimaryValue.ToString("N2") + "€"; List <double> betraege = new List <double>(); item.Monatswerte.ToList().ForEach(mw => { double Betrag = typ.Equals(DividendenBetragTyp.Brutto) ? mw.Brutto : mw.Netto; betraege.Add(Betrag); }); coloumn.Values = betraege; series.SetValue(coloumn, index); index++; }); for (int monat = 1; monat <= 12; monat++) { Labels[monat - 1] = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monat); } XAxes.First().Labels = Labels; XAxes.First().Name = "Monat"; YAxes.First().Name = "Betrag"; Series = series; RaisePropertyChanged(nameof(Series)); RaisePropertyChanged(nameof(Labels)); RaisePropertyChanged(nameof(XAxes)); RaisePropertyChanged(nameof(YAxes)); }
private async void ExcecuteLoadDataCommand() { RequestIsWorking = true; HttpResponseMessage resp = await Client.GetAsync(GlobalVariables.BackendServer_URL + $"/api/auswertung/steuern/Summiert/Steuer?jahrVon={jahrvon}&jahrBis={jahrbis}"); if (resp.IsSuccessStatusCode) { ItemList = await resp.Content.ReadAsAsync <List <SteuerGesamtentwicklungSummiertModel> >(); IList <double> Values = new List <double>(); Labels = new string[ItemList.Count]; int index = 0; ItemList.ToList().ForEach(a => { Values.Add(a.Betrag); Labels[index] = a.Datum.ToString("MM.yyyy", CultureInfo.CurrentCulture); index++; }); LineSeries <double> series = new LineSeries <double> { Values = Values, Name = "Betrag", TooltipLabelFormatter = (point) => point.PrimaryValue.ToString("N2") + "€" }; XAxes.First().Labels = Labels; XAxes.First().Name = "Monat"; YAxes.First().Name = "Betrag"; Series = new LineSeries <double>[1] { series }; RaisePropertyChanged(nameof(Series)); RaisePropertyChanged(nameof(XAxes)); RaisePropertyChanged(nameof(YAxes)); } RequestIsWorking = false; }
private void CreateChartAxis() { YAxes.Add(new NumericAxisViewModel() { AutoRange = AutoRange.Always, AxisTitle = "Left YAxis", Id = "LeftYAxis", AxisAlignment = AxisAlignment.Left, }); YAxes.Add(new NumericAxisViewModel() { AutoRange = AutoRange.Always, AxisTitle = "Right YAxis", AxisAlignment = AxisAlignment.Right, }); XAxes.Add(new NumericAxisViewModel() { AutoRange = AutoRange.Always, AxisTitle = "XAxis", AxisAlignment = AxisAlignment.Bottom, }); }
/// <inheritdoc /> public override int GetHashCode() { unchecked // Overflow is fine, just wrap { var hashCode = 41; if (Type != null) { hashCode = hashCode * 59 + Type.GetHashCode(); } if (Visible != null) { hashCode = hashCode * 59 + Visible.GetHashCode(); } if (ShowLegend != null) { hashCode = hashCode * 59 + ShowLegend.GetHashCode(); } if (LegendGroup != null) { hashCode = hashCode * 59 + LegendGroup.GetHashCode(); } if (Name != null) { hashCode = hashCode * 59 + Name.GetHashCode(); } if (UId != null) { hashCode = hashCode * 59 + UId.GetHashCode(); } if (Ids != null) { hashCode = hashCode * 59 + Ids.GetHashCode(); } if (CustomData != null) { hashCode = hashCode * 59 + CustomData.GetHashCode(); } if (Meta != null) { hashCode = hashCode * 59 + Meta.GetHashCode(); } if (MetaArray != null) { hashCode = hashCode * 59 + MetaArray.GetHashCode(); } if (SelectedPoints != null) { hashCode = hashCode * 59 + SelectedPoints.GetHashCode(); } if (HoverInfo != null) { hashCode = hashCode * 59 + HoverInfo.GetHashCode(); } if (HoverInfoArray != null) { hashCode = hashCode * 59 + HoverInfoArray.GetHashCode(); } if (HoverLabel != null) { hashCode = hashCode * 59 + HoverLabel.GetHashCode(); } if (Stream != null) { hashCode = hashCode * 59 + Stream.GetHashCode(); } if (Transforms != null) { hashCode = hashCode * 59 + Transforms.GetHashCode(); } if (UiRevision != null) { hashCode = hashCode * 59 + UiRevision.GetHashCode(); } if (Dimensions != null) { hashCode = hashCode * 59 + Dimensions.GetHashCode(); } if (Text != null) { hashCode = hashCode * 59 + Text.GetHashCode(); } if (TextArray != null) { hashCode = hashCode * 59 + TextArray.GetHashCode(); } if (HoverText != null) { hashCode = hashCode * 59 + HoverText.GetHashCode(); } if (HoverTextArray != null) { hashCode = hashCode * 59 + HoverTextArray.GetHashCode(); } if (HoverTemplate != null) { hashCode = hashCode * 59 + HoverTemplate.GetHashCode(); } if (HoverTemplateArray != null) { hashCode = hashCode * 59 + HoverTemplateArray.GetHashCode(); } if (Marker != null) { hashCode = hashCode * 59 + Marker.GetHashCode(); } if (XAxes != null) { hashCode = hashCode * 59 + XAxes.GetHashCode(); } if (YAxes != null) { hashCode = hashCode * 59 + YAxes.GetHashCode(); } if (Diagonal != null) { hashCode = hashCode * 59 + Diagonal.GetHashCode(); } if (ShowUpperHalf != null) { hashCode = hashCode * 59 + ShowUpperHalf.GetHashCode(); } if (ShowLowerHalf != null) { hashCode = hashCode * 59 + ShowLowerHalf.GetHashCode(); } if (Selected != null) { hashCode = hashCode * 59 + Selected.GetHashCode(); } if (Unselected != null) { hashCode = hashCode * 59 + Unselected.GetHashCode(); } if (Opacity != null) { hashCode = hashCode * 59 + Opacity.GetHashCode(); } if (IdsSrc != null) { hashCode = hashCode * 59 + IdsSrc.GetHashCode(); } if (CustomDataSrc != null) { hashCode = hashCode * 59 + CustomDataSrc.GetHashCode(); } if (MetaSrc != null) { hashCode = hashCode * 59 + MetaSrc.GetHashCode(); } if (HoverInfoSrc != null) { hashCode = hashCode * 59 + HoverInfoSrc.GetHashCode(); } if (TextSrc != null) { hashCode = hashCode * 59 + TextSrc.GetHashCode(); } if (HoverTextSrc != null) { hashCode = hashCode * 59 + HoverTextSrc.GetHashCode(); } if (HoverTemplateSrc != null) { hashCode = hashCode * 59 + HoverTemplateSrc.GetHashCode(); } return(hashCode); } }
/// <inheritdoc /> public bool Equals([AllowNull] Splom other) { if (other == null) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return (( Type == other.Type || Type != null && Type.Equals(other.Type) ) && ( Visible == other.Visible || Visible != null && Visible.Equals(other.Visible) ) && ( ShowLegend == other.ShowLegend || ShowLegend != null && ShowLegend.Equals(other.ShowLegend) ) && ( LegendGroup == other.LegendGroup || LegendGroup != null && LegendGroup.Equals(other.LegendGroup) ) && ( Name == other.Name || Name != null && Name.Equals(other.Name) ) && ( UId == other.UId || UId != null && UId.Equals(other.UId) ) && ( Equals(Ids, other.Ids) || Ids != null && other.Ids != null && Ids.SequenceEqual(other.Ids) ) && ( Equals(CustomData, other.CustomData) || CustomData != null && other.CustomData != null && CustomData.SequenceEqual(other.CustomData) ) && ( Meta == other.Meta || Meta != null && Meta.Equals(other.Meta) ) && ( Equals(MetaArray, other.MetaArray) || MetaArray != null && other.MetaArray != null && MetaArray.SequenceEqual(other.MetaArray) ) && ( SelectedPoints == other.SelectedPoints || SelectedPoints != null && SelectedPoints.Equals(other.SelectedPoints) ) && ( HoverInfo == other.HoverInfo || HoverInfo != null && HoverInfo.Equals(other.HoverInfo) ) && ( Equals(HoverInfoArray, other.HoverInfoArray) || HoverInfoArray != null && other.HoverInfoArray != null && HoverInfoArray.SequenceEqual(other.HoverInfoArray) ) && ( HoverLabel == other.HoverLabel || HoverLabel != null && HoverLabel.Equals(other.HoverLabel) ) && ( Stream == other.Stream || Stream != null && Stream.Equals(other.Stream) ) && ( Equals(Transforms, other.Transforms) || Transforms != null && other.Transforms != null && Transforms.SequenceEqual(other.Transforms) ) && ( UiRevision == other.UiRevision || UiRevision != null && UiRevision.Equals(other.UiRevision) ) && ( Equals(Dimensions, other.Dimensions) || Dimensions != null && other.Dimensions != null && Dimensions.SequenceEqual(other.Dimensions) ) && ( Text == other.Text || Text != null && Text.Equals(other.Text) ) && ( Equals(TextArray, other.TextArray) || TextArray != null && other.TextArray != null && TextArray.SequenceEqual(other.TextArray) ) && ( HoverText == other.HoverText || HoverText != null && HoverText.Equals(other.HoverText) ) && ( Equals(HoverTextArray, other.HoverTextArray) || HoverTextArray != null && other.HoverTextArray != null && HoverTextArray.SequenceEqual(other.HoverTextArray) ) && ( HoverTemplate == other.HoverTemplate || HoverTemplate != null && HoverTemplate.Equals(other.HoverTemplate) ) && ( Equals(HoverTemplateArray, other.HoverTemplateArray) || HoverTemplateArray != null && other.HoverTemplateArray != null && HoverTemplateArray.SequenceEqual(other.HoverTemplateArray) ) && ( Marker == other.Marker || Marker != null && Marker.Equals(other.Marker) ) && ( Equals(XAxes, other.XAxes) || XAxes != null && other.XAxes != null && XAxes.SequenceEqual(other.XAxes) ) && ( Equals(YAxes, other.YAxes) || YAxes != null && other.YAxes != null && YAxes.SequenceEqual(other.YAxes) ) && ( Diagonal == other.Diagonal || Diagonal != null && Diagonal.Equals(other.Diagonal) ) && ( ShowUpperHalf == other.ShowUpperHalf || ShowUpperHalf != null && ShowUpperHalf.Equals(other.ShowUpperHalf) ) && ( ShowLowerHalf == other.ShowLowerHalf || ShowLowerHalf != null && ShowLowerHalf.Equals(other.ShowLowerHalf) ) && ( Selected == other.Selected || Selected != null && Selected.Equals(other.Selected) ) && ( Unselected == other.Unselected || Unselected != null && Unselected.Equals(other.Unselected) ) && ( Opacity == other.Opacity || Opacity != null && Opacity.Equals(other.Opacity) ) && ( IdsSrc == other.IdsSrc || IdsSrc != null && IdsSrc.Equals(other.IdsSrc) ) && ( CustomDataSrc == other.CustomDataSrc || CustomDataSrc != null && CustomDataSrc.Equals(other.CustomDataSrc) ) && ( MetaSrc == other.MetaSrc || MetaSrc != null && MetaSrc.Equals(other.MetaSrc) ) && ( HoverInfoSrc == other.HoverInfoSrc || HoverInfoSrc != null && HoverInfoSrc.Equals(other.HoverInfoSrc) ) && ( TextSrc == other.TextSrc || TextSrc != null && TextSrc.Equals(other.TextSrc) ) && ( HoverTextSrc == other.HoverTextSrc || HoverTextSrc != null && HoverTextSrc.Equals(other.HoverTextSrc) ) && ( HoverTemplateSrc == other.HoverTemplateSrc || HoverTemplateSrc != null && HoverTemplateSrc.Equals(other.HoverTemplateSrc) )); }
public bool Equals([AllowNull] Grid other) { if (other == null) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return((Rows == other.Rows && Rows != null && other.Rows != null && Rows.Equals(other.Rows)) && (RowOrder == other.RowOrder && RowOrder != null && other.RowOrder != null && RowOrder.Equals(other.RowOrder)) && (Columns == other.Columns && Columns != null && other.Columns != null && Columns.Equals(other.Columns)) && (Equals(Subplots, other.Subplots) || Subplots != null && other.Subplots != null && Subplots.SequenceEqual(other.Subplots)) && (Equals(XAxes, other.XAxes) || XAxes != null && other.XAxes != null && XAxes.SequenceEqual(other.XAxes)) && (Equals(YAxes, other.YAxes) || YAxes != null && other.YAxes != null && YAxes.SequenceEqual(other.YAxes)) && (Pattern == other.Pattern && Pattern != null && other.Pattern != null && Pattern.Equals(other.Pattern)) && (XGap == other.XGap && XGap != null && other.XGap != null && XGap.Equals(other.XGap)) && (YGap == other.YGap && YGap != null && other.YGap != null && YGap.Equals(other.YGap)) && (Domain == other.Domain && Domain != null && other.Domain != null && Domain.Equals(other.Domain)) && (XSide == other.XSide && XSide != null && other.XSide != null && XSide.Equals(other.XSide)) && (YSide == other.YSide && YSide != null && other.YSide != null && YSide.Equals(other.YSide))); }