Opened 13 years ago
Closed 13 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)
Change History (7)
Changed 13 years ago by cneumuel
comment:1 Changed 13 years ago by mkommend
- Owner changed from swagner to abeham
- Status changed from new to assigned
comment:2 Changed 13 years ago by abeham
- Status changed from assigned to accepted
comment:3 Changed 13 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 13 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
- 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 13 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 13 years ago by swagner
- Resolution set to done
- Status changed from readytorelease to closed
- Version changed from 3.3.5 to 3.3.6
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.