Index: /trunk/tools/czartool/Plotter.pm
===================================================================
--- /trunk/tools/czartool/Plotter.pm	(revision 29739)
+++ /trunk/tools/czartool/Plotter.pm	(revision 29740)
@@ -55,4 +55,36 @@
 }
 
+
+###########################################################################
+#
+# Figures out a suitable interval for rate plots
+# Could use some kind of function here, but instead we want to choose meaningful intervals
+#
+###########################################################################
+sub getSuitableInterval {
+    my ($self, $begin, $end, $interval) = @_;
+
+    $begin = $self->{_czarDb}->getFullDate($begin);
+    $end = $self->{_czarDb}->getFullDate($end);
+
+    my $timeDiff = $self->{_czarDb}->diffTimes($end, $begin);
+
+    if ($self->{_czarDb}->isBefore($timeDiff, "00:00:01")) {return 0;}
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "03:00:00")) {${$interval} = "15 MINUTE";}
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "10:00:00")) {${$interval} = "30 MINUTE";}
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "24:00:00")) {${$interval} = "1 HOUR";} # under 1 day
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "36:00:00")) {${$interval} = "2 HOUR";} # under 1.5 days
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "48:00:00")) {${$interval} = "3 HOUR";} # under 2 days
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "72:00:00")) {${$interval} = "4 HOUR";} # under 3 days
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "96:00:00")) {${$interval} = "5 HOUR";} # under 4 days
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "144:00:00")) {${$interval} = "6 HOUR";} # under 6 days
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "168:00:00")) {${$interval} = "12 HOUR";} # under week
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "672:00:00")) {${$interval} = "1 DAY";} # under 2 week
+    elsif ($self->{_czarDb}->isBefore($timeDiff, "2016:00:00")) {${$interval} = "1 WEEK";} # under 3 month
+    else {${$interval} = "1 MONTH";}
+
+    return 1;
+}
+
 ###########################################################################
 #
@@ -63,22 +95,16 @@
     my ($self, $label, $selectedStage, $beginTime, $endTime, $interval, $isLog) = @_;
 
-    my $minX = 999999999;      
-    my $maxX = -9999999999;
-    my $timeDiff = -1;
-
+    # stages
     my $stages = undef;                 
-
     if (!$selectedStage) {
         $stages = \@allStages;
         $selectedStage = 'all_stages';
     }
-    else {$stages = ["$selectedStage"]};        
-
-    $self->{_czarDb}->getTimeMinMaxDiff($label, "chip", $beginTime, $endTime, \$minX, \$maxX, \$timeDiff);
-
-    my $divX;
-    my $timeFormat;
-    $self->getTimeSpacing($timeDiff, \$divX, \$timeFormat);
-
+    else {$stages = ["$selectedStage"]};
+
+    # interval
+    if (!$interval && !$self->getSuitableInterval($beginTime, $endTime, \$interval)) {return 0;}
+
+    # set up files
     my %gnuplotFiles;
     my $stage = undef;
@@ -94,9 +120,4 @@
         "set term $self->{_outputFormat};" .
         "set title \"'$label', '$selectedStage' during '$beginTime' to '$endTime'\";" .
-        #"set xdata time;" .
-        "set timefmt \"$self->{_dateFormat}\";" .
-       "set format x \"$timeFormat\";" .
-        "set xtics \"$minX\", $divX, \"$maxX\";" .
-#        "set xrange [\"$minX\":\"$maxX\"];" .
         "set boxwidth;" .
         "set xtic rotate by -90 scale 0;" .
@@ -133,4 +154,6 @@
     # now delete temp dat files
     foreach my $stage (keys %gnuplotFiles) {unlink($gnuplotFiles{$stage});}
+
+    return 1;
 }
 
