From dcfffdaea1482c536b5417011db96b9b04c5b723 Mon Sep 17 00:00:00 2001 From: Ronak Buch Date: Wed, 14 Jul 2021 13:32:04 -0400 Subject: [PATCH] Allow custom time intervals in Time Profile with sumDetail --- .../Tools/TimeProfile/TimeProfileWindow.java | 41 +++++++++++-------- src/projections/analysis/IntervalData.java | 4 +- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/projections/Tools/TimeProfile/TimeProfileWindow.java b/src/projections/Tools/TimeProfile/TimeProfileWindow.java index 1c08d270..7b070862 100644 --- a/src/projections/Tools/TimeProfile/TimeProfileWindow.java +++ b/src/projections/Tools/TimeProfile/TimeProfileWindow.java @@ -270,26 +270,31 @@ private void generateLegend(boolean useShortenedNames){ public void showDialog() { if (dialog == null) { - intervalPanel = new IntervalChooserPanel(); - if(MainWindow.runObject[myRun].hasLogFiles()) - dialog = new RangeDialog(this, "Select Range", intervalPanel, false); - else //only has summary files - dialog = new RangeDialog(this, "Select Range", intervalPanel, true); - } + if (MainWindow.runObject[myRun].hasLogFiles()) + intervalPanel = new IntervalChooserPanel(); + else // Intervals are fixed for the summary modes, so don't display choosable interval panel + intervalPanel = null; + dialog = new RangeDialog(this, "Select Range", intervalPanel, false); + } + dialog.displayDialog(); if (!dialog.isCancelled()){ - startInterval = (int)intervalPanel.getStartInterval(); - endInterval = (int)intervalPanel.getEndInterval(); processorList = dialog.getSelectedProcessors(); startTime = dialog.getStartTime(); - if(MainWindow.runObject[myRun].hasLogFiles()){ - intervalSize = intervalPanel.getIntervalSize(); - } - else{//sum detail mode - startInterval = 0; - endInterval = (int) MainWindow.runObject[myRun].getSumDetailNumIntervals() - 1; - intervalSize = (long) MainWindow.runObject[myRun].getSumDetailIntervalSize(); - } + + if (MainWindow.runObject[myRun].hasLogFiles()) { + intervalSize = intervalPanel.getIntervalSize(); + startInterval = (int)intervalPanel.getStartInterval(); + endInterval = (int)intervalPanel.getEndInterval(); + + } else { // sum detail mode + intervalSize = (long) MainWindow.runObject[myRun].getSumDetailIntervalSize(); + startInterval = (int) (startTime / intervalSize); + final long endTime = dialog.getEndTime(); + // For intervalSize of 1, endTime of 2 should give endInterval of 1 ([1,2)), endTime of 2.5 should give + // endInterval of 2 ([2, 3)), so take ceil and subtract one + endInterval = (int) Math.ceil(((double)endTime) / intervalSize) - 1; + } System.out.println("Props: intervalSize:"+intervalSize+"- startInterval:"+startInterval+"- endInterval:"+endInterval+"- startTime:" + startTime); @@ -352,7 +357,9 @@ else if( MainWindow.runObject[myRun].hasSumDetailFiles()) //Bilge { // Do serial file reading because all we have is the sum files //System.out.println("hasSumDetailFiles - LOAD DATA. numIntervals: " + numIntervals); - MainWindow.runObject[myRun].LoadGraphData(intervalSize, 0, numIntervals-1, false, processorList); + MainWindow.runObject[myRun].LoadGraphData(intervalSize, startInterval, endInterval, false, + processorList); + int[][] sumDetailData = MainWindow.runObject[myRun].getSumDetailData(); for(int i=0;i