Opened 6 years ago

Closed 6 years ago

#1623 closed defect (done)

DataTable- and DataRowVisualProperties are not fully backwards compatible

Reported by: cneumuel Owned by: abeham
Priority: highest Milestone: HeuristicLab 3.3.6
Component: Analysis Version: 3.3.6
Keywords: Cc:

Description

The quality charts of older runs cannot be viewed anymore. HL crashes with an exception:

System.InvalidOperationException: Achsenobjekt - Das automatische Intervall weist nicht den richtigen Wert auf.
   bei System.Windows.Forms.DataVisualization.Charting.Axis.EstimateAxis(Double& minimumValue, Double& maximumValue, Boolean autoMaximum, Boolean autoMinimum)
   bei System.Windows.Forms.DataVisualization.Charting.Axis.EstimateAxis()
   bei System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultAxesValues()
   bei System.Windows.Forms.DataVisualization.Charting.ChartArea.SetData(Boolean initializeAxes, Boolean checkIndexedAligned)
   bei System.Windows.Forms.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly)
   bei System.Windows.Forms.DataVisualization.Charting.Chart.OnPaint(PaintEventArgs e)
   bei System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
   bei System.Windows.Forms.Control.WmPaint(Message& m)
   bei System.Windows.Forms.Control.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

The file in question (attached) is dated 04.02.2011.

Attachments (1)

QualityChartBug.hl (507.2 KB) - added by cneumuel 6 years ago.

Download all attachments as: .zip

Change History (7)

Changed 6 years ago by cneumuel

comment:1 Changed 6 years ago by mkommend

  • Owner changed from swagner to abeham
  • Status changed from new to assigned

I've also encountered this problem when working with older GP algorithm runs. It occurs when displaying all data tables and not only with the quality chart and that's why I think it is related to the changes in the EnhancedChart or the DataTableView.

comment:2 Changed 6 years ago by abeham

  • Status changed from assigned to accepted

comment:3 Changed 6 years ago by abeham

Thanks for reporting this issue. I looked into the problem and think I've found the cause. Actually the defect was introduced with changes made back in May. In the problematic change which is related to ticket #1465 I've added several visual properties to the DataTable, set to specific default values. I've missed adding these initializations to the storable constructor as well, as the deserializer does not use the default constructor for object initialization. All the new visual properties are set to their .Net defaults which creates an illegal configuration (axis interval set to 0-0). The storable constructor would need to also assign the default values. However another problem is that if you resaved such a DataTable these values are now stored within the file. So, I would fix this in an AfterDeserialization hook and check if the respective properties are all set to their defaults in which case I can then reset them to the default values that they should have.

I'll try to test and commit this tomorrow.

comment:4 Changed 6 years ago by abeham

  • Component changed from Analysis.Views to Analysis
  • Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.6
  • Owner changed from abeham to mkommend
  • Priority changed from high to highest
  • Status changed from accepted to reviewing
  • Summary changed from Quality chart throws an exception for older runs to DataTable- and DataRowVisualProperties are not fully backwards compatible

r6676

  • Added some range checks in the DataRowVisualPropertiesControl
  • Added a check to prevent axis minimum and maximum equality to avoid a crash
  • Added AfterDeserialization hooks to the visual properties to detect the illegal .Net default configuration

comment:5 Changed 6 years ago by mkommend

  • Owner changed from mkommend to abeham
  • Status changed from reviewing to readytorelease

Thx for correcting this bug; everything works as expected.

comment:6 Changed 6 years ago by swagner

  • Resolution set to done
  • Status changed from readytorelease to closed
  • Version changed from 3.3.5 to 3.3.6
Note: See TracTickets for help on using tickets.