Teaching:TUW - UE InfoVis WS 2006/07 - Gruppe 02 - Aufgabe 3 - Prototype

From InfoVis:Wiki
Jump to navigation Jump to search


Tile Map Prototype

authors

Gruppe 02 (Diesenreiter, Weixelbaumer, Felkel, Maier)

architecture

description

images

code

TileMap class

package tilemap;
//@author: simon diesenreiter (sd), stefan weixelbaumer (sw), wolfgang felkel (wf), alexander maier (am)
//@year: 2006
//@class TileMap: main class


//PREFUSE
import prefuse.data.parser.DateTimeParser;
import prefuse.data.parser.DoubleParser;
import prefuse.data.parser.DataParser;
import prefuse.data.parser.ParserFactory;
import prefuse.data.Table;
import prefuse.data.io.DataIOException;
import prefuse.data.io.DelimitedTextTableReader;
import prefuse.data.expression.Predicate;
import prefuse.data.expression.parser.ExpressionParser;
import prefuse.Visualization;
import prefuse.render.RendererFactory;
import prefuse.render.AxisRenderer;
import prefuse.render.Renderer;
import prefuse.render.ShapeRenderer;
  //mouseover
import prefuse.controls.ToolTipControl; 


//UTIL 
import java.util.Vector;
import java.util.Calendar;
import java.util.Date;


//TEXT
import java.text.SimpleDateFormat;

//ACTIONS
import prefuse.action.layout.AxisLayout;
import prefuse.Constants;
import prefuse.visual.VisualItem;
import prefuse.action.ActionList;
import prefuse.action.RepaintAction;
import prefuse.action.assignment.DataColorAction;
import java.awt.Color;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;

//DISPLAY
import prefuse.Display;
import prefuse.controls.ZoomControl;
import prefuse.controls.PanControl;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.GraphicsEnvironment;
import java.awt.BorderLayout;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JToolBar;

//APPLICATION LAUNCHER
import javax.swing.*;




public class TileMap {
	
	//display-constants 
	private static final String group = "data";
	private static final String day = "Day";
	private static final String week = "Week";
	private static final String year = "Year";
	private static final String dayLabel = "DayLabel";
	private static final String monthLabel = "MonthLabel";
	private static final String yearLabel = "YearLabel";
	
	//action-constants
	private static final String xAction = "xAction";
	private static final String yAction = "yAction";
	private static final String colorAction = "colorAction";
	private static final String drawAction = "drawAction";
	
	//size(px) of each tile
	private static int tilesize = 10; 
	private static Visualization vis;
	private static ActionList draw;

	//data-source
    private static final String filePath = "http://stud3.tuwien.ac.at/~e9926534/abfluss.csv";


	public static void main(String[] args){

		//-- 1. read the data from a file-----------------------------------------
		//set up data parser(s) - one for Date & Time - one for double value ()
		DateTimeParser dateTimeParser = new DateTimeParser();
		DoubleParser doubleParser = new DoubleParser();
        
		//instantiate DataParser Object & ParserFactory-Object [prefuse]
		DataParser[] dP2 = new DataParser[]{dateTimeParser, doubleParser};
		ParserFactory pF2 = new ParserFactory(dP2);
		
		//set data-delimiter
		DelimitedTextTableReader reader = new DelimitedTextTableReader("[;]", pF2);

		Table table = new Table();

		try{
			table = reader.readTable(filePath);
			System.out.println("InfoVisMain.main(): reading file: " + filePath);
		}
		catch(DataIOException ex){
			System.out.println("InfoVisMain.main(): error reading file: " + ex.getMessage());
		}

		//add additional columns to the table
		table.addColumn(day, int.class);
		table.addColumn(week, int.class);
		table.addColumn(year, int.class);
		table.addColumn(dayLabel, String.class);
		table.addColumn(monthLabel, String.class);
		table.addColumn(yearLabel, String.class);

		SimpleDateFormat sdfDay = new SimpleDateFormat("EEE"); 
		SimpleDateFormat sdfMonth = new SimpleDateFormat("MMM");
		SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
		
		//@param yearVector: a vector that stores the single years for later creating a display for each single year
		Vector<Integer> yearVector = new Vector<Integer>();
		int yearTracker = Integer.MIN_VALUE;
		
		//walk through data-table
		for (int i=0; i<table.getRowCount(); i++){
			if(table.canGetDate(table.getColumnName(0))){
				Date tmpDate = table.getDate(i, 0);
				Calendar myCalendar = Calendar.getInstance();
				myCalendar.setTime(tmpDate);
				
				table.setInt(i, day, myCalendar.get(Calendar.DAY_OF_WEEK));
				
				//introduce an extra week "0" for the case of the beginning of a year where days belong
				//to the old-year's week
				int tmpWeek = myCalendar.get(Calendar.WEEK_OF_YEAR);
				int tmpMonth = myCalendar.get(Calendar.MONTH);
				if(tmpMonth==0 & tmpWeek==53 ||tmpMonth==0 & tmpWeek==52){
					table.setInt(i, week, 0); //if (month==JAN AND week==53 -> week=0)
				}
				else{
					table.setInt(i, week, tmpWeek);
				}
				
				//get the year and also write the years to the yearVector
				int tmpYear = myCalendar.get(Calendar.YEAR);
				if(yearTracker != tmpYear){
					yearTracker = tmpYear;
					yearVector.add(new Integer(yearTracker));
				}
				table.setInt(i, year, tmpYear);
								
				//get the days, months... as Strings for the Labels
				table.setString(i, dayLabel, sdfDay.format(tmpDate));
				table.setString(i, monthLabel, sdfMonth.format(tmpDate));
				table.setString(i, yearLabel, sdfYear.format(tmpDate));
			}
		}
		
        //output table data on system console [or not]
		Boolean doTableOutput = true;
		if(doTableOutput){
			//OUTPUT: table properties
			System.out.println("Table_properties: " + table.toString());
			//OUTPUT: table names
			for (int j=0; j<table.getColumnCount(); j++){
				System.out.print(table.getColumnName(j).toString() + "\t");
				if(j==0)System.out.print("\t");//this is only for nicer output because that string is so long ;)
			}
			//OUTPUT: table values
			System.out.print("\n");
			for(int i=0; i<table.getRowCount(); i++){
				for (int j=0; j<table.getColumnCount(); j++){
					System.out.print(table.get(i, j).toString() + "\t");
					if(j==5 || j==6)System.out.print("\t"); //this is only for nicer output too
				}
				System.out.print("\n");
			}
		}


		//-- 2. create a Visualisation instance ------------------------------------
		vis = new Visualization();
		vis.add(group, table);

		//-- 3. the renderers and renderer factory ---------------------------
		vis.setRendererFactory(new RendererFactory() {
			//renderer for drawing simple shapes - in this case 
			ShapeRenderer shapeR = new ShapeRenderer(tilesize);
			
			Renderer yaxisR = new AxisRenderer(Constants.CENTER, Constants.CENTER);
			
			Renderer xaxisR = new AxisRenderer(Constants.CENTER, Constants.CENTER);

			public Renderer getRenderer(VisualItem item) {
				return item.isInGroup(TileMap.dayLabel) ? yaxisR :
					item.isInGroup(TileMap.monthLabel) ? xaxisR : shapeR;
			}
		});


		// -- 4. the processing actions --------------------------------------
		
		//the boundingBoxes for the labels and display
		int topLeftX	= 0;
		int topLeftY	= 0;
		int labelHeight = 30;
		int labelWidth  = 0;
		Rectangle2D yearLabelB = new Rectangle2D.Double(topLeftX, topLeftY, labelWidth, labelHeight);
		Rectangle2D dayLabelB = new Rectangle2D.Double(topLeftX, topLeftY+labelHeight, labelWidth, tilesize*7);
		Rectangle2D monthLabelB = new Rectangle2D.Double(topLeftX+labelWidth, topLeftY, tilesize*53, labelHeight);
		Rectangle2D tileMapB = new Rectangle2D.Double(topLeftX+labelWidth, topLeftY+labelHeight, tilesize*53, tilesize*7);
		
		//set up which values over which axis to be displayed
		AxisLayout x_axis = new AxisLayout(group, week, Constants.X_AXIS);
		x_axis.setLayoutBounds(tileMapB);
		vis.putAction(xAction, x_axis);

		AxisLayout y_axis = new AxisLayout(group, day, Constants.Y_AXIS);
		y_axis.setLayoutBounds(tileMapB);
		vis.putAction(yAction, y_axis);
		
		
		DataColorAction dataColor = new DataColorAction(group, "Abfluss", Constants.NUMERICAL, 
				VisualItem.FILLCOLOR);
		dataColor.setBinCount(4);
		vis.putAction(colorAction, dataColor);
		
		//crate an actionList and add all actions to it. finally add the actionList to the Visualization
		draw = new ActionList();
		draw.add(x_axis);
		draw.add(y_axis);
		draw.add(dataColor);
		//		draw.add(dayLabels);
		//		draw.add(monthLabels);
		draw.add(new RepaintAction());
		vis.putAction(drawAction, draw);

		//		-- 5. the display and interactive controls -------------------------
		//		+
		//		-- 6. launch the visualization -------------------------------------

		// create a new window to hold the visualization
		JFrame frame = new JFrame("T I L E M A P");
		// ensure application exits when window is closed
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel pane = new JPanel(new GridLayout(yearVector.size(), 1));
		
		int borderSize = 0;
		int displayHeight = (int)tileMapB.getHeight()+(int)monthLabelB.getHeight();
		int displayWidth = (int)tileMapB.getWidth()+(int)dayLabelB.getWidth();	
		
		ZoomControl zoomControl = new ZoomControl();
		
		for(int i=0; i<yearVector.size(); i++){
			Predicate thatYear = (Predicate)ExpressionParser.parse(year + "==" + yearVector.get(i).toString());
			Display d = new Display(vis);
			d.setPredicate(thatYear);
			d.setBorder(BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize));
			d.setSize(displayWidth+borderSize, displayHeight+borderSize);

			d.panAbs(0, -7); //this is for fine-tuning of the layout
			ToolTipControl ttc = new ToolTipControl(new String[] {"Datum", "Abfluss"});
			d.addControlListener(ttc);
			d.addControlListener(zoomControl);
			d.addControlListener(new PanControl());
			
			JPanel innerPane = new JPanel(new BorderLayout());
			JLabel label = new JLabel(yearVector.get(i).toString());
			label.setHorizontalAlignment(SwingConstants.RIGHT);
			label.setVerticalAlignment(SwingConstants.TOP);
			label.setBackground(Color.RED);
			label.setSize(20, 20);
			innerPane.add(label, BorderLayout.WEST);
			innerPane.add(d, BorderLayout.CENTER);
			innerPane.setBackground(Color.WHITE);
			
			pane.add(innerPane);
//			pane.add(d);
		}
			
		JScrollPane scroller = new JScrollPane(pane);
		JToolBar toolBar = makeToolbar();
		frame.getContentPane().add(toolBar, BorderLayout.NORTH);
		frame.getContentPane().add(scroller, BorderLayout.CENTER);
		
//		get local graphics environment
		GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();		
//		get maximum window bounds
		Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds();
	
		frame.setSize(maximumWindowBounds.width/2, maximumWindowBounds.height);

		frame.setVisible(true); // show the window
		vis.run(drawAction);
	}
	
	
	
    private static JToolBar makeToolbar()
    {
        JToolBar toolbar = new JToolBar();
        toolbar.setLayout(new BoxLayout(toolbar, BoxLayout.X_AXIS));
        
        //add a combobox for switching scales
        final String[] scaleNames = {"LINEAR", "SQRT", "LOG"};
        final JComboBox scaleChooser = new JComboBox(scaleNames);
//        scb.setSelectedItem(sfield);
        scaleChooser.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
        		DataColorAction dataColorA = (DataColorAction)vis.getAction(colorAction);
        		String chosen = scaleChooser.getSelectedItem().toString();
        		if(chosen.equals("LOG")){
        			dataColorA.setScale(Constants.LOG_SCALE);
        		}
        		else if(chosen.equals("SQRT")){
        			dataColorA.setScale(Constants.SQRT_SCALE);
        		}
        		else{
        			dataColorA.setScale(Constants.LINEAR_SCALE);
        		}
        		vis.run(drawAction);
            }
        });
        toolbar.add(new JLabel("SCALE: "));
        toolbar.add(scaleChooser);
        
        //add a slider for setting the binsize
        int slideStart = ((DataColorAction)vis.getAction(colorAction)).getBinCount();
        final JSlider slider = new JSlider(2, 20, slideStart);
        slider.setMajorTickSpacing(4);
        slider.setMinorTickSpacing(1);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setSnapToTicks(true);
        slider.addChangeListener(new ChangeListener(){
        	public void stateChanged(ChangeEvent ce){
        		if(!slider.getValueIsAdjusting()){
        			int val = slider.getValue();
        			DataColorAction dataColorA = (DataColorAction)vis.getAction(colorAction);
        			dataColorA.setBinCount(val);
        			vis.run(drawAction);
        		}
        	}
        });
        toolbar.add(new JLabel("BINSIZE: "));
        toolbar.add(slider);
        
        toolbar.setFloatable(false);       
        return toolbar;
    }

}

==example data==

===example data (InfoVisMain.java)===
Copy that data and store it as ''.csv''. For using it you have to change the path to the file in the sourcecode.
<pre>
Datum;Abfluss
01.01.1977 11:00;5.721
02.01.1977 10:30;5.697
03.01.1977 10:00;5.767
04.01.1977 17:00;5.861
05.01.1977 16:30;5.697
06.01.1977 11:30;5.791
07.01.1977 18:30;5.697
08.01.1977 12:30;5.908
09.01.1977 12:00;5.861
10.01.1977 12:00;5.861
11.01.1977 18:00;5.837
12.01.1977 11:30;6.026
13.01.1977 19:30;5.955
14.01.1977 11:00;5.978
15.01.1977 20:30;5.837
16.01.1977 12:00;6.895
17.01.1977 11:30;6.073
18.01.1977 12:30;5.767
19.01.1977 19:30;6.263
20.01.1977 19:00;5.884
21.01.1977 09:00;6.359
22.01.1977 11:30;6.699
23.01.1977 14:30;5.837
24.01.1977 11:30;5.628
25.01.1977 19:30;5.791
26.01.1977 11:30;5.744
27.01.1977 09:30;5.651
28.01.1977 19:30;5.651
29.01.1977 20:00;6.192
30.01.1977 11:30;5.536
31.01.1977 20:30;5.767
01.02.1977 19:30;5.651
02.02.1977 11:30;6.073
03.02.1977 10:30;6.002
04.02.1977 09:30;6.994
05.02.1977 20:00;6.723
06.02.1977 11:30;7.168
07.02.1977 20:30;6.528
08.02.1977 18:00;6.192
09.02.1977 11:30;7.776
10.02.1977 19:30;7.118
11.02.1977 19:30;7.827
12.02.1977 09:30;7.47
13.02.1977 09:30;7.168
14.02.1977 20:00;6.383
15.02.1977 20:00;6.12
16.02.1977 20:00;6.263
17.02.1977 20:00;6.168
18.02.1977 20:00;5.861
19.02.1977 19:30;5.978
20.02.1977 19:30;6.383
21.02.1977 19:30;9.524
22.02.1977 12:30;7.956
23.02.1977 20:00;7.648
24.02.1977 23:59;8.257
25.02.1977 15:30;10.271
26.02.1977 00:00;9.21
27.02.1977 05:00;8.241
28.02.1977 00:00;6.26
01.03.1977 18:00;5.931
02.03.1977 19:30;5.791
03.03.1977 23:59;8.14
04.03.1977 23:59;17.646
05.03.1977 00:00;17.646
06.03.1977 00:00;11.894
07.03.1977 00:00;10.665
08.03.1977 21:00;10.327
09.03.1977 23:00;10.665
10.03.1977 23:59;10.892
11.03.1977 18:30;11.121
12.03.1977 13:00;10.58
13.03.1977 00:00;10.051
14.03.1977 00:00;9.343
15.03.1977 00:00;8.834
16.03.1977 23:59;8.537
17.03.1977 23:59;10.103
18.03.1977 21:30;12.287
19.03.1977 00:00;12.261
20.03.1977 00:00;10.515
21.03.1977 08:00;10.075
22.03.1977 20:30;10.215
23.03.1977 23:30;11.875
24.03.1977 23:59;13.962
25.03.1977 22:00;14.509
26.03.1977 22:30;15.615
27.03.1977 00:00;15.415
28.03.1977 07:00;18.082
29.03.1977 00:00;16.046
30.03.1977 00:00;13.017
31.03.1977 00:00;10.835
01.04.1977 19:00;10.355
02.04.1977 23:59;12.18
03.04.1977 23:59;13.403
04.04.1977 00:30;13.46
05.04.1977 08:30;12.495
06.04.1977 18:00;12.199
07.04.1977 19:00;11.525
08.04.1977 08:30;11.904
09.04.1977 18:00;11.322
10.04.1977 17:30;10.355
11.04.1977 17:30;10.131
12.04.1977 12:00;9.551
13.04.1977 19:30;10.636
14.04.1977 19:30;11.265
15.04.1977 08:30;10.187
16.04.1977 19:30;8.795
17.04.1977 18:30;10.75
18.04.1977 20:30;12.199
19.04.1977 20:00;12.764
20.04.1977 17:30;11.729
21.04.1977 19:00;12.555
22.04.1977 19:00;13.095
23.04.1977 23:59;16.529
24.04.1977 23:59;20.195
25.04.1977 00:30;20.203
26.04.1977 23:30;23.096
27.04.1977 23:00;28.672
28.04.1977 23:59;36.956
29.04.1977 23:59;56.898
30.04.1977 18:00;81.98
01.05.1977 19:30;77.065
02.05.1977 00:00;70.391
03.05.1977 00:00;51.984
04.05.1977 18:00;93.83
05.05.1977 00:00;86.578
06.05.1977 00:00;57.75
07.05.1977 00:00;37.338
08.05.1977 00:00;29.828
09.05.1977 00:00;28.286
10.05.1977 00:00;22.335
11.05.1977 23:59;23.215
12.05.1977 23:00;42.651
13.05.1977 00:00;41.681
14.05.1977 00:00;37.893
15.05.1977 00:00;30.726
16.05.1977 23:00;29.321
17.05.1977 21:30;32.223
18.05.1977 23:59;33.122
19.05.1977 23:59;99.935
20.05.1977 15:30;137.65
21.05.1977 00:00;110.665
22.05.1977 00:00;75.919
23.05.1977 22:00;59.25
24.05.1977 22:30;63.573
25.05.1977 21:00;76.096
26.05.1977 00:00;73.753
27.05.1977 00:00;67.312
28.05.1977 00:00;53.171
29.05.1977 23:59;52.495
30.05.1977 00:30;52.754
31.05.1977 02:00;50.759
01.06.1977 00:00;38.131
02.06.1977 23:59;36.169
03.06.1977 00:30;36.316
04.06.1977 00:00;30.803
05.06.1977 00:00;26.294
06.06.1977 23:59;29.861
07.06.1977 23:00;51.207
08.06.1977 22:00;63.087
09.06.1977 23:30;82.823
10.06.1977 22:00;109.493
11.06.1977 00:00;104.427
12.06.1977 00:00;90.078
13.06.1977 22:00;103.169
14.06.1977 23:59;120.391
15.06.1977 02:00;125.505
16.06.1977 10:00;85.915
17.06.1977 00:00;58.973
18.06.1977 23:59;74.687
19.06.1977 23:59;86.142
20.06.1977 01:30;86.383
21.06.1977 23:59;73.066
22.06.1977 01:00;73.583
23.06.1977 00:00;62.195
24.06.1977 20:00;54.91
25.06.1977 19:30;75.354
26.06.1977 23:59;94.717
27.06.1977 01:30;94.959
28.06.1977 00:00;64.193
29.06.1977 00:00;51.4
30.06.1977 11:30;62.741
01.07.1977 00:00;49.039
02.07.1977 23:59;48.14
03.07.1977 23:59;65.391
04.07.1977 23:59;72.606
05.07.1977 01:00;72.777
06.07.1977 01:30;62.05
07.07.1977 03:00;55.174
08.07.1977 23:59;54.91
09.07.1977 02:30;55.042
10.07.1977 15:00;65.953
11.07.1977 02:00;61.844
12.07.1977 01:00;55.57
13.07.1977 23:59;100.575
14.07.1977 01:00;115.434
15.07.1977 11:00;93.509
16.07.1977 23:59;70.042
17.07.1977 06:30;101.755
18.07.1977 00:00;65.251
19.07.1977 00:30;60.133
20.07.1977 23:59;73.238
21.07.1977 07:00;207.793
22.07.1977 00:00;76.599
23.07.1977 00:00;44.949
24.07.1977 22:00;47.228
25.07.1977 23:59;66.47
26.07.1977 04:30;85.993
27.07.1977 00:00;56.811
28.07.1977 00:00;40.869
29.07.1977 20:00;34.316
30.07.1977 23:59;40.194
31.07.1977 23:30;253.056
01.08.1977 05:30;271.508
02.08.1977 00:00;119.963
03.08.1977 00:00;54.623
04.08.1977 00:00;39.101
05.08.1977 20:30;82.898
06.08.1977 00:00;71.46
07.08.1977 06:00;68.654
08.08.1977 00:00;53.663
09.08.1977 00:00;49.738
10.08.1977 11:00;59.712
11.08.1977 00:00;46.09
12.08.1977 00:00;33.279
13.08.1977 23:59;38.364
14.08.1977 07:00;54.828
15.08.1977 00:00;34.25
16.08.1977 00:00;27.856
17.08.1977 23:59;35.97
18.08.1977 23:59;39.485
19.08.1977 10:30;45.281
20.08.1977 00:00;42.13
21.08.1977 23:59;41.287
22.08.1977 07:00;64.402
23.08.1977 00:00;43.641
24.08.1977 00:00;32.957
25.08.1977 00:00;27.529
26.08.1977 07:30;26.534
27.08.1977 00:00;25.876
28.08.1977 23:59;30.351
29.08.1977 23:59;42.718
30.08.1977 18:30;47.544
31.08.1977 00:00;47.182
01.09.1977 00:00;40.953
02.09.1977 00:00;31.879
03.09.1977 00:00;31.226
04.09.1977 23:00;47.976
05.09.1977 00:00;46.886
06.09.1977 00:00;30.996
07.09.1977 00:00;21.428
08.09.1977 23:59;25.908
09.09.1977 10:00;104.255
10.09.1977 00:00;44.71
11.09.1977 00:00;26.393
12.09.1977 07:00;25.501
13.09.1977 22:00;24.5
14.09.1977 00:00;24.053
15.09.1977 23:59;21.439
16.09.1977 00:00;21.439
17.09.1977 00:00;17.751
18.09.1977 20:30;16.759
19.09.1977 00:00;16.545
20.09.1977 00:00;16.018
21.09.1977 00:00;14.903
22.09.1977 00:00;14.601
23.09.1977 00:00;14.145
24.09.1977 22:30;14.043
25.09.1977 00:00;14.014
26.09.1977 00:00;13.582
27.09.1977 00:00;12.734
28.09.1977 00:00;12.527
29.09.1977 00:00;11.77
30.09.1977 21:00;11.496
01.10.1977 23:59;11.468
02.10.1977 23:59;12.19
03.10.1977 08:00;12.376
04.10.1977 00:00;12.092
05.10.1977 00:00;11.196
06.10.1977 23:59;10.693
07.10.1977 23:59;10.782
08.10.1977 23:59;13.122
09.10.1977 04:00;13.796
10.10.1977 23:59;13.217
11.10.1977 02:30;14.509
12.10.1977 00:00;12.641
13.10.1977 00:00;12.146
14.10.1977 23:59;11.612
15.10.1977 00:00;11.612
16.10.1977 00:00;10.018
17.10.1977 07:30;9.798
18.10.1977 00:00;9.615
19.10.1977 15:00;9.333
20.10.1977 00:00;9.067
21.10.1977 00:00;8.838
22.10.1977 00:00;8.531
23.10.1977 23:59;8.48
24.10.1977 23:59;8.937
25.10.1977 19:30;9.333
26.10.1977 00:00;9.238
27.10.1977 00:00;8.792
28.10.1977 09:00;9.524
29.10.1977 00:00;9.22
30.10.1977 00:00;8.862
31.10.1977 23:59;8.933
01.11.1977 06:30;9.198
02.11.1977 23:59;10.241
03.11.1977 05:30;11.758
04.11.1977 00:00;10.872
05.11.1977 00:00;8.886
06.11.1977 00:00;8.583
07.11.1977 00:00;8.075
08.11.1977 00:00;7.574
09.11.1977 21:00;6.945
10.11.1977 00:00;6.851
11.11.1977 00:00;6.527
12.11.1977 00:00;6.356
13.11.1977 18:00;7.044
14.11.1977 00:00;6.651
15.11.1977 10:30;6.48
16.11.1977 00:00;6.401
17.11.1977 00:00;6.311
18.11.1977 18:00;6.12
19.11.1977 00:00;6.026
20.11.1977 00:00;4.894
21.11.1977 23:59;4.754
22.11.1977 23:30;4.992
23.11.1977 00:00;4.989
24.11.1977 23:59;5.015
25.11.1977 23:59;5.767
26.11.1977 16:30;5.861
27.11.1977 00:00;5.843
28.11.1977 23:59;6.008
29.11.1977 01:00;6.026
30.11.1977 08:30;5.978
01.12.1977 08:30;5.978
02.12.1977 17:00;5.837
03.12.1977 00:00;5.397
04.12.1977 07:00;5.284
05.12.1977 23:59;5.444
06.12.1977 16:00;5.536
07.12.1977 00:00;4.849
08.12.1977 00:00;4.812
09.12.1977 20:30;5.744
10.12.1977 00:00;5.661
11.12.1977 00:00;5.318
12.12.1977 23:59;5.408
13.12.1977 11:00;6.504
14.12.1977 00:00;6.119
15.12.1977 20:00;5.861
16.12.1977 11:30;5.582
17.12.1977 16:00;5.559
18.12.1977 00:00;5.434
19.12.1977 13:30;5.536
20.12.1977 15:00;5.353
21.12.1977 13:00;5.721
22.12.1977 15:30;5.791
23.12.1977 00:00;5.692
24.12.1977 00:00;5.308
25.12.1977 23:59;5.914
26.12.1977 18:30;6.026
27.12.1977 00:00;5.696
28.12.1977 18:00;5.744
29.12.1977 00:00;5.537
30.12.1977 18:00;5.536
31.12.1977 00:00;4.925
01.01.1978 00:00;4.76
02.01.1978 23:59;4.545
03.01.1978 01:30;4.596
04.01.1978 18:30;4.381
05.01.1978 18:00;4.232
06.01.1978 00:00;3.96
07.01.1978 23:59;3.96
08.01.1978 23:59;3.96
09.01.1978 23:59;3.96
10.01.1978 23:59;3.96
11.01.1978 23:59;3.96
12.01.1978 23:59;3.96
13.01.1978 23:59;3.96
14.01.1978 15:30;4.106
15.01.1978 00:00;3.878
16.01.1978 11:30;4.127
17.01.1978 00:00;4.043
18.01.1978 00:00;3.585
19.01.1978 23:59;3.545
20.01.1978 06:30;3.553
21.01.1978 00:00;3.176

Links