Index: /ether_megapoli/trunk/domain/interface/com/ether/AxeTypeForFixedPlateform.java
===================================================================
--- /ether_megapoli/trunk/domain/interface/com/ether/AxeTypeForFixedPlateform.java	(revision 170)
+++ /ether_megapoli/trunk/domain/interface/com/ether/AxeTypeForFixedPlateform.java	(revision 171)
@@ -3,4 +3,5 @@
 public enum AxeTypeForFixedPlateform
 {
-    TIME,
+    TIME_LINE,
+    TIME_POINTS,
 }
Index: /ether_megapoli/trunk/domain/interface/com/ether/AxeTypeForMobilePlateform.java
===================================================================
--- /ether_megapoli/trunk/domain/interface/com/ether/AxeTypeForMobilePlateform.java	(revision 170)
+++ /ether_megapoli/trunk/domain/interface/com/ether/AxeTypeForMobilePlateform.java	(revision 171)
@@ -3,4 +3,5 @@
 public enum AxeTypeForMobilePlateform
 {
-    LATITUDE,
+    D2_POINTS,
+    D2_CONTOUR,
 }
Index: /ether_megapoli/trunk/domain/interface/com/ether/Data.java
===================================================================
--- /ether_megapoli/trunk/domain/interface/com/ether/Data.java	(revision 171)
+++ /ether_megapoli/trunk/domain/interface/com/ether/Data.java	(revision 171)
@@ -0,0 +1,69 @@
+package com.ether;
+
+
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author vmipsl
+ * @date 29 august 2011
+ */
+public class Data<T1, T2, T3>
+{
+    public Data()
+    {
+        this( null, null, null );
+    }
+
+    public Data( @Nullable final T1 firstValues, @Nullable final T2 secondValues )
+    {
+        _firstArray = firstValues;
+        _secondArray = secondValues;
+    }
+
+    public Data( @Nullable final T1 firstValues, @Nullable final T2 secondValues, @Nullable final T3 thirdValues )
+    {
+        _firstArray = firstValues;
+        _secondArray = secondValues;
+        _thirdArray = thirdValues;
+    }
+
+    @Nullable
+    public T1 getFirstArray()
+    {
+        return _firstArray;
+    }
+
+    public void setFirstArray( @Nullable final T1 firstArray )
+    {
+        _firstArray = firstArray;
+    }
+
+    @Nullable
+    public T2 getSecondArray()
+    {
+        return _secondArray;
+    }
+
+    public void setSecondArray( @Nullable final T2 secondArray )
+    {
+        _secondArray = secondArray;
+    }
+
+    @Nullable
+    public T3 getThirdArray()
+    {
+        return _thirdArray;
+    }
+
+    public void setThirdArray( @Nullable final T3 thirdArray )
+    {
+        _thirdArray = thirdArray;
+    }
+
+    @Nullable
+    private T1 _firstArray;
+    @Nullable
+    private T2 _secondArray;
+    @Nullable
+    private T3 _thirdArray;
+}
Index: /ether_megapoli/trunk/persistence/implementation/com/ether/dao/ValueDAOImpl.java
===================================================================
--- /ether_megapoli/trunk/persistence/implementation/com/ether/dao/ValueDAOImpl.java	(revision 170)
+++ /ether_megapoli/trunk/persistence/implementation/com/ether/dao/ValueDAOImpl.java	(revision 171)
@@ -1,5 +1,5 @@
 package com.ether.dao;
 
-import com.ether.Pair;
+import com.ether.Data;
 import com.ether.PersistenceException;
 import com.medias.database.objects.Valeur;
@@ -11,5 +11,4 @@
 import org.jetbrains.annotations.Nullable;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -29,54 +28,6 @@
 
     @NotNull
-    public List<Pair<Double, Date>> getValuesByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+    public <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodForTimeSerie( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
             throws PersistenceException
-    {
-        final DetachedCriteria criteria = createCriteriaForValuesByPlateformByParameterByPeriod( plateformId, parameterId, dateBegin, dateEnd );
-        final List<Object[]> objects = selectAllByCriteria( Object[].class, criteria );
-
-        final List<Pair<Double, Date>> result = new ArrayList<Pair<Double, Date>>();
-        for( final Object[] value : objects )
-        {
-            final Pair<Double, Date> item = new Pair<Double, Date>();
-            item.setFirstValue( (Double) value[0] );
-            item.setSecondValue( (Date) value[1] );
-            result.add( item );
-        }
-
-        return result;
-    }
-
-    @NotNull
-    public <T1, T2> Pair<T1[], T2[]> getValuesListsByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
-            throws PersistenceException
-    {
-        final DetachedCriteria criteria = createCriteriaForValuesByPlateformByParameterByPeriod( plateformId, parameterId, dateBegin, dateEnd );
-//        final List<Object[]> objects = selectAllByCriteria( Object[].class, criteria );
-        // TODO : remove maxResults to 10
-        final List<Object[]> objects = selectPage( null, 10, criteria );
-
-        final Object[] object1 = objects.get( 0 );
-
-        if( object1[0] instanceof Double && object1[1] instanceof Date )
-        {
-            final double[] firstValues = new double[objects.size()];
-            final Date[] secondValues = new Date[objects.size()];
-
-            int i = 0;
-            for( final Object[] value : objects )
-            {
-                firstValues[i] = (Double) value[0];
-                secondValues[i] = ( (Date) value[1] );
-                i++;
-            }
-
-            return new Pair( firstValues, secondValues );
-        }
-        else
-            return new Pair();
-    }
-
-    @NotNull
-    private DetachedCriteria createCriteriaForValuesByPlateformByParameterByPeriod( final Integer plateformId, final Integer parameterId, final Date dateBegin, final Date dateEnd )
     {
         final DetachedCriteria criteria = DetachedCriteria.forClass( Valeur.class, "value" )
@@ -93,7 +44,65 @@
                 .add( Projections.property( "value.valeurVal" ) )
                 .add( Projections.property( "measure.mesureDate" ) ) ) );
+        criteria.addOrder( Order.asc( "measure.mesureDate" ) );
 
-        criteria.addOrder( Order.asc( "measure.mesureDate" ) );
-        return criteria;
+//        final List<Object[]> objects = selectAllByCriteria( Object[].class, criteria );
+        // TODO : remove maxResults to 10
+        final List<Object[]> objects = selectPage( null, 10, criteria );
+
+        final double[] values = new double[objects.size()];
+        final Date[] dates = new Date[objects.size()];
+
+        int i = 0;
+        for( final Object[] value : objects )
+        {
+            values[i] = (Double) value[0];
+            dates[i] = (Date) value[1];
+            i++;
+        }
+
+        return new Data( values, dates );
+    }
+
+    @NotNull
+    public <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodFor2D( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+            throws PersistenceException
+    {
+        final DetachedCriteria criteria = DetachedCriteria.forClass( Valeur.class, "value" )
+                .add( Restrictions.eq( "value.parametre.id", parameterId ) )
+                .createCriteria( "mesure", "measure" )
+                .add( Restrictions.eq( "measure.plateforme.id", plateformId ) );
+
+        if( null != dateBegin )
+            criteria.add( Restrictions.ge( "measure.mesureDate", dateBegin ) );
+        if( null != dateEnd )
+            criteria.add( Restrictions.le( "measure.mesureDate", dateEnd ) );
+
+        criteria.createCriteria( "localisation", "localisation" );
+
+        criteria.setProjection( Projections.distinct( Projections.projectionList()
+                .add( Projections.property( "value.valeurVal" ) )
+                .add( Projections.property( "localisation.localisationLat" ) )
+                .add( Projections.property( "localisation.localisationLon" ) ) ) );
+
+        criteria.addOrder( Order.asc( "localisation.localisationLon" ) );
+
+//        final List<Object[]> objects = selectAllByCriteria( Object[].class, criteria );
+        // TODO : remove maxResults to 10
+        final List<Object[]> objects = selectPage( null, 10, criteria );
+
+        final double[] latitudeValues = new double[objects.size()];
+        final double[] longitudeValues = new double[objects.size()];
+        final double[] parameterValues = new double[objects.size()];
+
+        int i = 0;
+        for( final Object[] value : objects )
+        {
+            parameterValues[i] = (Double) value[0];
+            latitudeValues[i] = Double.valueOf( (Integer) value[1] );
+            longitudeValues[i] = Double.valueOf( (Integer) value[2] );
+            i++;
+        }
+
+        return new Data( parameterValues, latitudeValues, longitudeValues );
     }
 }
Index: /ether_megapoli/trunk/persistence/implementation/hibernate.properties
===================================================================
--- /ether_megapoli/trunk/persistence/implementation/hibernate.properties	(revision 170)
+++ /ether_megapoli/trunk/persistence/implementation/hibernate.properties	(revision 171)
@@ -1,5 +1,5 @@
-#hibernate.connection.driver_class = org.postgresql.Driver
-#hibernate.connection.url=jdbc:postgresql://darkstar.ipslnet:5432/MEGAPOLI_VM3
-#hibernate.connection.username=postgres
+hibernate.connection.driver_class = org.postgresql.Driver
+hibernate.connection.url=jdbc:postgresql://darkstar.ipslnet:5432/MEGAPOLI_VM3
+hibernate.connection.username=postgres
 #hibernate.c3p0.min_size=5
 #hibernate.c3p0.max_size=10
Index: /ether_megapoli/trunk/persistence/interface/com/ether/dao/ValueDAO.java
===================================================================
--- /ether_megapoli/trunk/persistence/interface/com/ether/dao/ValueDAO.java	(revision 170)
+++ /ether_megapoli/trunk/persistence/interface/com/ether/dao/ValueDAO.java	(revision 171)
@@ -1,4 +1,5 @@
 package com.ether.dao;
 
+import com.ether.Data;
 import com.ether.Pair;
 import com.ether.PersistenceException;
@@ -8,5 +9,4 @@
 
 import java.util.Date;
-import java.util.List;
 
 /**
@@ -18,9 +18,9 @@
 {
     @NotNull
-    List<Pair<Double, Date>> getValuesByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+    <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodForTimeSerie( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
             throws PersistenceException;
 
     @NotNull
-    <T1, T2> Pair<T1[], T2[]> getValuesListsByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+    <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodFor2D( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
             throws PersistenceException;
 }
Index: /ether_megapoli/trunk/service/implementation/com/ether/EtherPlotServiceImpl.java
===================================================================
--- /ether_megapoli/trunk/service/implementation/com/ether/EtherPlotServiceImpl.java	(revision 170)
+++ /ether_megapoli/trunk/service/implementation/com/ether/EtherPlotServiceImpl.java	(revision 171)
@@ -1,12 +1,23 @@
 package com.ether;
 
+import com.medias.megapoli.utils.MegapoliInitialisation;
+import gov.noaa.pmel.sgt.ColorMap;
+import gov.noaa.pmel.sgt.ContourLevels;
+import gov.noaa.pmel.sgt.GridAttribute;
+import gov.noaa.pmel.sgt.IndexedColorMap;
 import gov.noaa.pmel.sgt.JPane;
-import gov.noaa.pmel.util.Dimension2D;
-import gov.noaa.pmel.util.Point2D;
+import gov.noaa.pmel.sgt.LinearTransform;
+import gov.noaa.pmel.sgt.demo.TestData;
+import gov.noaa.pmel.sgt.dm.SGTData;
+import gov.noaa.pmel.sgt.dm.SGTMetaData;
+import gov.noaa.pmel.sgt.dm.SimpleGrid;
+import gov.noaa.pmel.sgt.dm.SimpleLine;
+import gov.noaa.pmel.sgt.swing.JPlotLayout;
+import gov.noaa.pmel.util.GeoDateArray;
+import gov.noaa.pmel.util.Range2D;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
-import com.medias.megapoli.utils.MegapoliInitialisation;
 
 import javax.swing.*;
@@ -14,4 +25,5 @@
 import java.awt.image.BufferedImage;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.Locale;
 import java.util.ResourceBundle;
@@ -58,5 +70,5 @@
         jPane.add( jPaneTop, BorderLayout.NORTH );
 
-        final Integer valuesNumber = megapoliPlot.getData().getYArray().length;
+        final Integer valuesNumber = megapoliPlot.getValuesNumber();
 
         // Bottom Pane
@@ -68,5 +80,5 @@
         final JPane jPaneCenter;
         if( valuesNumber > 0 )
-            jPaneCenter = createCenterPane( megapoliPlot, maxWidth, centerHeight );
+            jPaneCenter = createCenterPane( megapoliPlot, maxWidth, centerHeight, locale );
         else
             jPaneCenter = createEmptyCenterPane( locale );
@@ -124,33 +136,27 @@
      */
     @NotNull
-    public JPane createCenterPane( @NotNull final MegapoliPlot megapoliPlot, @NotNull final Integer maxWidth, @NotNull final Integer maxHeight )
+    public JPane createCenterPane( @NotNull final MegapoliPlot megapoliPlot, @NotNull final Integer maxWidth, @NotNull final Integer maxHeight, @Nullable final Locale locale )
     {
         final Integer plotWidth = Math.min( maxWidth - MARGIN_LEFT_RIGHT, maxWidth );
         final Integer plotHeight = Math.min( maxHeight - MARGIN_LEFT_RIGHT, maxHeight );
 
-        // Graph
-        final JPlotLayoutEther jPlotLayout = new JPlotLayoutEther( false, megapoliPlot.isXTime(), false, "Trajectory data", null, megapoliPlot.isLegendToHide() );
-        jPlotLayout.setTitles( "", "", "" );
-
-        // Replace legend
-        final String legend = megapoliPlot.getData().getTitle();
-        final Dimension2D layerSizeP = jPlotLayout.getLayerSizeP();
-        final double factorForPlotWidthInPhysicalUnits = layerSizeP.getWidth() / Double.valueOf( plotWidth );
-        final double legendSizeInPhysicalUnits = legend.length() * factorForPlotWidthInPhysicalUnits * 7;
-        jPlotLayout.setKeyLocationP( new Point2D.Double( layerSizeP.getWidth() - legendSizeInPhysicalUnits, layerSizeP.getHeight() - 0.1 ) );
-
-        // Add data and legend
-        jPlotLayout.addData( megapoliPlot.getData(), legend );
-        jPlotLayout.setSize( plotWidth, plotHeight );
-        jPlotLayout.setVisible( true );
-
-        jPlotLayout.addNotify();
-        jPlotLayout.validate();
-        jPlotLayout.setOpaque( true );
-
-        // TODO : remove this change to bufferedImage to insert directly the jPlotLayout !!!!
-        final BufferedImage bufferedImage = new BufferedImage( jPlotLayout.getWidth(), jPlotLayout.getHeight(), BufferedImage.TYPE_INT_RGB );
-        final Graphics2D graphics2D = bufferedImage.createGraphics();
-        jPlotLayout.draw( graphics2D );
+        final JPlotLayout jPlotLayout;
+        final BufferedImage bufferedImage;
+        if( megapoliPlot.isTimeSerie() )
+        {
+            jPlotLayout = createJPlotLayoutForTimeSerie( megapoliPlot, plotWidth, plotHeight );
+
+            // TODO : remove this change to bufferedImage to insert directly the jPlotLayout !!!!
+            bufferedImage = new BufferedImage( jPlotLayout.getWidth(), jPlotLayout.getHeight(), BufferedImage.TYPE_INT_RGB );
+            final Graphics2D graphics2D = bufferedImage.createGraphics();
+            jPlotLayout.draw( graphics2D );
+        }
+        else
+        {
+            jPlotLayout = createJPlotLayoutFor2D( megapoliPlot, plotWidth, plotHeight, locale );
+
+            final JPanelToImageManager jPanelToImageManager = new JPanelToImageManager( jPlotLayout );
+            bufferedImage = jPanelToImageManager.saveAsImage();
+        }
 
         final ImageIcon imageIcon = new ImageIcon( bufferedImage );
@@ -170,26 +176,4 @@
 
     /**
-     * Create the center JPane with no graph (if no value)
-     *
-     * @param locale
-     * @return
-     */
-    public JPane createEmptyCenterPane( @Nullable final Locale locale )
-    {
-        final ResourceBundle bundle = WebHelper.getBundle( locale );
-        final String messageData = bundle.getString( "plot.noData" );
-
-        final JPane jPaneCenter = new JPane();
-        jPaneCenter.setLayout( new BorderLayout() );
-
-        final JLabel jLabelData = new JLabel( messageData, JLabel.CENTER );
-        final Font police = new Font( "Arial", Font.BOLD, FONT_SIZE );
-        jLabelData.setFont( police );
-
-        jPaneCenter.add( jLabelData, BorderLayout.CENTER );
-        return jPaneCenter;
-    }
-
-    /**
      * Create the bottom JPane with the text "published .. (date)"
      *
@@ -265,4 +249,183 @@
     }
 
+    /**
+     * Create the center JPane with no graph (if no value)
+     *
+     * @param locale
+     * @return
+     */
+    public JPane createEmptyCenterPane( @Nullable final Locale locale )
+    {
+        final ResourceBundle bundle = WebHelper.getBundle( locale );
+        final String messageData = bundle.getString( "plot.noData" );
+
+        final JPane jPaneCenter = new JPane();
+        jPaneCenter.setLayout( new BorderLayout() );
+
+        final JLabel jLabelData = new JLabel( messageData, JLabel.CENTER );
+        final Font police = new Font( "Arial", Font.BOLD, FONT_SIZE );
+        jLabelData.setFont( police );
+
+        jPaneCenter.add( jLabelData, BorderLayout.CENTER );
+        return jPaneCenter;
+    }
+
+    @NotNull
+    private JPlotLayout createJPlotLayoutForTimeSerie( final MegapoliPlot megapoliPlot, final Integer plotWidth, final Integer plotHeight )
+    {
+        final double[] dataArray = (double[]) megapoliPlot.getData().getFirstArray();
+        final Date[] dateValues = (Date[]) megapoliPlot.getData().getSecondArray();
+
+        final SimpleLine data = new SimpleLine( new GeoDateArray( dateValues ), dataArray, "legend" );
+        SGTMetaData meta = new SGTMetaData( null, null, false, false );
+        data.setXMetaData( meta );
+
+        meta = new SGTMetaData( megapoliPlot.getParameterName(), megapoliPlot.getParameterUnitCode(), false, false );
+        data.setYMetaData( meta );
+
+        // Graph
+//        final JPlotLayoutEther jPlotLayout = new JPlotLayoutEther( false, true, false, "Trajectory data", null, megapoliPlot.isLegendToHide() );
+        final JPlotLayout jPlotLayout = new JPlotLayout( data, "Profile Demo", null, false );
+        jPlotLayout.setTitles( "", "", "" );
+
+        // Replace legend
+//        final String legend = megapoliPlot.getData().getTitle();
+//        final Dimension2D layerSizeP = jPlotLayout.getLayerSizeP();
+//        final double factorForPlotWidthInPhysicalUnits = layerSizeP.getWidth() / Double.valueOf( plotWidth );
+//        final double legendSizeInPhysicalUnits = legend.length() * factorForPlotWidthInPhysicalUnits * 7;
+//        jPlotLayout.setKeyLocationP( new Point2D.Double( layerSizeP.getWidth() - legendSizeInPhysicalUnits, layerSizeP.getHeight() - 0.1 ) );
+
+        // Add data and legend
+        jPlotLayout.addData( data, "" );
+        jPlotLayout.setSize( plotWidth, plotHeight );
+        jPlotLayout.setVisible( true );
+
+        jPlotLayout.addNotify();
+        jPlotLayout.validate();
+        jPlotLayout.setOpaque( true );
+        return jPlotLayout;
+    }
+
+    @NotNull
+    private JPlotLayout createJPlotLayoutFor2D( final MegapoliPlot megapoliPlot, final Integer plotWidth, final Integer plotHeight, @Nullable final Locale locale )
+    {
+        SGTData newData;
+        TestData td;
+        JPlotLayout rpl;
+        ContourLevels clevels;
+        /*
+       * Create a test grid with sinasoidal-ramp data.
+        */
+        Range2D xr = new Range2D( 190.0f, 250.0f, 1.0f );
+        Range2D yr = new Range2D( 0.0f, 45.0f, 1.0f );
+        td = new TestData( TestData.XY_GRID, xr, yr,
+                TestData.SINE_RAMP, 12.0f, 30.f, 5.0f );
+        newData = td.getSGTData();
+        /*
+       * Create the layout without a Logo image and with the
+       * ColorKey on a separate Pane object.
+        */
+        rpl = new JPlotLayout( true, false, false, "JGridDemo Pane", null, true );
+        rpl.setEditClasses( false );
+        /*
+       * Create a GridAttribute for CONTOUR style.
+        */
+        Range2D datar = new Range2D( -20.0f, 45.0f, 5.0f );
+        clevels = ContourLevels.getDefault( datar );
+        final GridAttribute gridAttr_ = new GridAttribute( clevels );
+        /*
+       * Create a ColorMap and change the style to RASTER_CONTOUR.
+        */
+        ColorMap cmap = createColorMap( datar );
+        gridAttr_.setColorMap( cmap );
+        gridAttr_.setStyle( GridAttribute.RASTER_CONTOUR );
+        /*
+       * Add the grid to the layout and give a label for
+       * the ColorKey.
+        */
+        rpl.addData( newData, gridAttr_, "First Data" );
+        /*
+       * Change the layout's three title lines.
+        */
+        rpl.setTitles( "Raster Plot Demo", "using a JPlotLayout", "" );
+        /*
+       * Resize the graph  and place in the "Center" of the frame.
+        */
+        rpl.setSize( new Dimension( 600, 400 ) );
+        /*
+       * Resize the key Pane, both the device size and the physical
+       * size. Set the size of the key in physical units and place
+       * the key pane at the "South" of the frame.
+        */
+//    rpl.setKeyLayerSizeP(new Dimension2D(6.0, 1.02));
+//    rpl.setKeyBoundsP(new Rectangle2D.Double(0.01, 1.01, 5.98, 1.0));
+
+        return rpl;
+    }
+
+
+    @NotNull
+    private JPlotLayout createJPlotLayoutFor2DOrig( final MegapoliPlot megapoliPlot, final Integer plotWidth, final Integer plotHeight, @Nullable final Locale locale )
+    {
+        final ResourceBundle bundle = WebHelper.getBundle( locale );
+
+        final double[] parameterArray = (double[]) megapoliPlot.getData().getFirstArray();
+        final double[] latitudeArray = (double[]) megapoliPlot.getData().getSecondArray();
+        final double[] longitudeValues = (double[]) megapoliPlot.getData().getThirdArray();
+
+//        final SimpleLine data = new SimpleLine( longitudeValues, latitudeArray, "legend" );
+        final SimpleGrid data = new SimpleGrid( parameterArray, longitudeValues, latitudeArray, "Test Series" );
+        SGTMetaData meta = new SGTMetaData( bundle.getString( "plot.longitude" ), bundle.getString( "plot.degres" ), false, true );
+        // TODO : vÃ©rifier modulo = 360
+//        meta.setModuloValue( 360 );
+        data.setXMetaData( meta );
+
+        meta = new SGTMetaData( bundle.getString( "plot.latitude" ), bundle.getString( "plot.degres" ), false, true );
+        // TODO : vÃ©rifier modulo = 360
+//        meta.setModuloValue( 360 );
+        data.setYMetaData( meta );
+
+        // Graph
+        final JPlotLayout jPlotLayout = new JPlotLayout( true, false, false, "JGridDemo Pane", null, true );
+        jPlotLayout.setEditClasses( false );
+        /*
+       * Create a GridAttribute for CONTOUR style.
+        */
+        final Range2D datar = new Range2D( -20.0f, 45.0f, 5.0f );
+        final ContourLevels clevels = ContourLevels.getDefault( datar );
+        final GridAttribute gridAttr = new GridAttribute( clevels );
+        /*
+       * Create a ColorMap and change the style to RASTER_CONTOUR.
+        */
+        final ColorMap cmap = createColorMap( datar );
+        gridAttr.setColorMap( cmap );
+        gridAttr.setStyle( GridAttribute.RASTER_CONTOUR );
+        /*
+       * Add the grid to the layout and give a label for
+       * the ColorKey.
+        */
+        jPlotLayout.addData( data, gridAttr, "First Data" );
+
+//        final JPlotLayoutEther jPlotLayout = new JPlotLayoutEther( false, megapoliPlot.isXTime(), false, "Trajectory data", null, megapoliPlot.isLegendToHide() );
+//        jPlotLayout.setTitles( "", "", "" );
+
+        // Replace legend
+//        final String legend = megapoliPlot.getData().getTitle();
+//        final Dimension2D layerSizeP = jPlotLayout.getLayerSizeP();
+//        final double factorForPlotWidthInPhysicalUnits = layerSizeP.getWidth() / Double.valueOf( plotWidth );
+//        final double legendSizeInPhysicalUnits = legend.length() * factorForPlotWidthInPhysicalUnits * 7;
+//        jPlotLayout.setKeyLocationP( new Point2D.Double( layerSizeP.getWidth() - legendSizeInPhysicalUnits, layerSizeP.getHeight() - 0.1 ) );
+
+        // Add data and legend
+//        jPlotLayout.addData( megapoliPlot.getData(), legend );
+        jPlotLayout.setSize( plotWidth, plotHeight );
+        jPlotLayout.setVisible( true );
+
+        jPlotLayout.addNotify();
+        jPlotLayout.validate();
+        jPlotLayout.setOpaque( true );
+        return jPlotLayout;
+    }
+
     @NotNull
     private String formatTitle( @Nullable final String title )
@@ -277,4 +440,40 @@
     }
 
+    @NotNull
+    private ColorMap createColorMap( final Range2D datar )
+    {
+        final int[] red =
+                {0, 0, 0, 0, 0, 0, 0, 0,
+                        0, 0, 0, 0, 0, 0, 0, 0,
+                        0, 0, 0, 0, 0, 0, 0, 0,
+                        0, 7, 23, 39, 55, 71, 87, 103,
+                        119, 135, 151, 167, 183, 199, 215, 231,
+                        247, 255, 255, 255, 255, 255, 255, 255,
+                        255, 255, 255, 255, 255, 255, 255, 255,
+                        255, 246, 228, 211, 193, 175, 158, 140};
+        final int[] green =
+                {0, 0, 0, 0, 0, 0, 0, 0,
+                        0, 11, 27, 43, 59, 75, 91, 107,
+                        123, 139, 155, 171, 187, 203, 219, 235,
+                        251, 255, 255, 255, 255, 255, 255, 255,
+                        255, 255, 255, 255, 255, 255, 255, 255,
+                        255, 247, 231, 215, 199, 183, 167, 151,
+                        135, 119, 103, 87, 71, 55, 39, 23,
+                        7, 0, 0, 0, 0, 0, 0, 0};
+        final int[] blue =
+                {0, 143, 159, 175, 191, 207, 223, 239,
+                        255, 255, 255, 255, 255, 255, 255, 255,
+                        255, 255, 255, 255, 255, 255, 255, 255,
+                        255, 247, 231, 215, 199, 183, 167, 151,
+                        135, 119, 103, 87, 71, 55, 39, 23,
+                        7, 0, 0, 0, 0, 0, 0, 0,
+                        0, 0, 0, 0, 0, 0, 0, 0,
+                        0, 0, 0, 0, 0, 0, 0, 0};
+
+        final IndexedColorMap cmap = new IndexedColorMap( red, green, blue );
+        cmap.setTransform( new LinearTransform( 0.0, (double) red.length, datar.start, datar.end ) );
+        return cmap;
+    }
+
     private static final Log LOGGER = LogFactory.getLog( EtherPlotServiceImpl.class );
 
Index: /ether_megapoli/trunk/service/implementation/com/ether/EtherServiceImpl.java
===================================================================
--- /ether_megapoli/trunk/service/implementation/com/ether/EtherServiceImpl.java	(revision 170)
+++ /ether_megapoli/trunk/service/implementation/com/ether/EtherServiceImpl.java	(revision 171)
@@ -25,19 +25,4 @@
     @Nullable
     @Transactional(readOnly = true)
-    public List<Parametre> getParametersByPlateformId( @NotNull final Integer plateformId )
-            throws ServiceException
-    {
-        try
-        {
-            return _parameterDAO.getParametersByPlateformId( plateformId );
-        }
-        catch( PersistenceException e )
-        {
-            throw new ServiceException( ServiceException.ServiceCode.PARAMETER_NOT_FOUND, e );
-        }
-    }
-
-    @Nullable
-    @Transactional(readOnly = true)
     public List<Plateforme> getAllPlateforms()
             throws ServiceException
@@ -50,34 +35,4 @@
         {
             throw new ServiceException( ServiceException.ServiceCode.PLATEFORM_NOT_FOUND, e );
-        }
-    }
-
-    @NotNull
-    @Transactional(readOnly = true)
-    public List<Pair<Double, Date>> getValuesByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
-            throws ServiceException
-    {
-        try
-        {
-            return _valueDAO.getValuesByPlateformByParameterByPeriod( plateformId, parameterId, dateBegin, dateEnd );
-        }
-        catch( PersistenceException e )
-        {
-            throw new ServiceException( ServiceException.ServiceCode.VALUE_NOT_FOUND, e );
-        }
-    }
-
-    @NotNull
-    @Transactional(readOnly = true)
-    public <T1, T2> Pair<T1[], T2[]> getValuesListsByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
-            throws ServiceException
-    {
-        try
-        {
-            return _valueDAO.getValuesListsByPlateformByParameterByPeriod( plateformId, parameterId, dateBegin, dateEnd );
-        }
-        catch( PersistenceException e )
-        {
-            throw new ServiceException( ServiceException.ServiceCode.VALUE_NOT_FOUND, e );
         }
     }
@@ -117,4 +72,49 @@
     }
 
+    @Nullable
+    @Transactional(readOnly = true)
+    public List<Parametre> getParametersByPlateformId( @NotNull final Integer plateformId )
+            throws ServiceException
+    {
+        try
+        {
+            return _parameterDAO.getParametersByPlateformId( plateformId );
+        }
+        catch( PersistenceException e )
+        {
+            throw new ServiceException( ServiceException.ServiceCode.PARAMETER_NOT_FOUND, e );
+        }
+    }
+
+    @NotNull
+    @Transactional(readOnly = true)
+    public <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodForTimeSerie( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+            throws ServiceException
+    {
+        try
+        {
+            return _valueDAO.getListsByPlateformByParameterByPeriodForTimeSerie( plateformId, parameterId, dateBegin, dateEnd );
+        }
+        catch( PersistenceException e )
+        {
+            throw new ServiceException( ServiceException.ServiceCode.VALUE_NOT_FOUND, e );
+        }
+    }
+
+    @NotNull
+    @Transactional(readOnly = true)
+    public <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodFor2D( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+            throws ServiceException
+    {
+        try
+        {
+            return _valueDAO.getListsByPlateformByParameterByPeriodFor2D( plateformId, parameterId, dateBegin, dateEnd );
+        }
+        catch( PersistenceException e )
+        {
+            throw new ServiceException( ServiceException.ServiceCode.VALUE_NOT_FOUND, e );
+        }
+    }
+
     @Required
     public void setPlateformDAO( final PlateformDAO plateformDAO )
Index: /ether_megapoli/trunk/service/implementation/com/ether/JPanelToImageManager.java
===================================================================
--- /ether_megapoli/trunk/service/implementation/com/ether/JPanelToImageManager.java	(revision 170)
+++ /ether_megapoli/trunk/service/implementation/com/ether/JPanelToImageManager.java	(revision 171)
@@ -2,5 +2,4 @@
 
 import gov.noaa.pmel.sgt.JPane;
-import gov.noaa.pmel.sgt.swing.JPlotLayout;
 import org.jetbrains.annotations.NotNull;
 
@@ -43,16 +42,16 @@
         final BufferedImage bufferedImage = new BufferedImage( component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB );
 
-        if( component instanceof JPlotLayout )
-        {
-            final Graphics2D graphics2D = bufferedImage.createGraphics();
-            graphics2D.setBackground( Color.red );
-            ( (JPlotLayout) component ).draw( graphics2D );
-        }
-        else
-        {
-            final CellRendererPane crp = new CellRendererPane();
-            crp.add( component );
-            crp.paintComponent( bufferedImage.createGraphics(), component, crp, component.getBounds() );
-        }
+//        if( component instanceof JPlotLayout )
+//        {
+//            final Graphics2D graphics2D = bufferedImage.createGraphics();
+//            graphics2D.setBackground( Color.red );
+//            ( (JPlotLayout) component ).draw( graphics2D );
+//        }
+//        else
+//        {
+        final CellRendererPane crp = new CellRendererPane();
+        crp.add( component );
+        crp.paintComponent( bufferedImage.createGraphics(), component, crp, component.getBounds() );
+//        }
         return bufferedImage;
     }
Index: /ether_megapoli/trunk/service/implementation/com/ether/MegapoliPlot.java
===================================================================
--- /ether_megapoli/trunk/service/implementation/com/ether/MegapoliPlot.java	(revision 170)
+++ /ether_megapoli/trunk/service/implementation/com/ether/MegapoliPlot.java	(revision 171)
@@ -1,8 +1,7 @@
 package com.ether;
 
-import gov.noaa.pmel.sgt.dm.SimpleLine;
+import com.medias.megapoli.utils.MegapoliInitialisation;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
-import com.medias.megapoli.utils.MegapoliInitialisation;
 
 /**
@@ -46,10 +45,10 @@
 
     @NotNull
-    public SimpleLine getData()
+    public Data getData()
     {
         return _data;
     }
 
-    public void setData( @NotNull final SimpleLine data )
+    public void setData( @NotNull final Data data )
     {
         _data = data;
@@ -66,12 +65,56 @@
     }
 
-    public boolean isXTime()
+    public boolean isTimeSerie()
     {
-        return _isXTime;
+        return _isTimeSerie;
     }
 
-    public void setXTime( final boolean xTime )
+    public void setTimeSerie( final boolean timeSerie )
     {
-        _isXTime = xTime;
+        _isTimeSerie = timeSerie;
+    }
+
+    @Nullable
+    public String getParameterName()
+    {
+        return _parameterName;
+    }
+
+    public void setParameterName( @Nullable final String parameterName )
+    {
+        _parameterName = parameterName;
+    }
+
+    @Nullable
+    public String getParameterUnitCode()
+    {
+        return _parameterUnitCode;
+    }
+
+    public void setParameterUnitCode( @Nullable final String parameterUnitCode )
+    {
+        _parameterUnitCode = parameterUnitCode;
+    }
+
+    @NotNull
+    public Integer getValuesNumber()
+    {
+        return _valuesNumber;
+    }
+
+    public void setValuesNumber( @NotNull final Integer valuesNumber )
+    {
+        _valuesNumber = valuesNumber;
+    }
+
+    @NotNull
+    public String getAxeType()
+    {
+        return _axeType;
+    }
+
+    public void setAxeType( @NotNull final String axeType )
+    {
+        _axeType = axeType;
     }
 
@@ -79,5 +122,5 @@
     private String _title;
     @NotNull
-    private SimpleLine _data;
+    private Data _data;
     @NotNull
     private String _logoMegapoli = MegapoliInitialisation.pathImages + "/logo_Megapoli.png";
@@ -85,4 +128,12 @@
     private String _logoEther = MegapoliInitialisation.pathImages + "/logo_Ether.jpg";
     private boolean _legendToHide = true;
-    private boolean _isXTime = true;
+    private boolean _isTimeSerie = true;
+    @Nullable
+    private String _parameterName;
+    @Nullable
+    private String _parameterUnitCode;
+    @NotNull
+    private Integer _valuesNumber;
+    @NotNull
+    private String _axeType;
 }
Index: /ether_megapoli/trunk/service/interface/com/ether/EtherPlotService.java
===================================================================
--- /ether_megapoli/trunk/service/interface/com/ether/EtherPlotService.java	(revision 170)
+++ /ether_megapoli/trunk/service/interface/com/ether/EtherPlotService.java	(revision 171)
@@ -23,5 +23,5 @@
 
     @NotNull
-    public JPane createCenterPane( @NotNull final MegapoliPlot megapoliPlot, @NotNull final Integer maxWidth, @NotNull final Integer maxHeight );
+    public JPane createCenterPane( @NotNull final MegapoliPlot megapoliPlot, @NotNull final Integer maxWidth, @NotNull final Integer maxHeight, @Nullable final Locale locale );
 
     @NotNull
Index: /ether_megapoli/trunk/service/interface/com/ether/EtherService.java
===================================================================
--- /ether_megapoli/trunk/service/interface/com/ether/EtherService.java	(revision 170)
+++ /ether_megapoli/trunk/service/interface/com/ether/EtherService.java	(revision 171)
@@ -1,6 +1,3 @@
 package com.ether;
-
-import java.util.Date;
-import java.util.List;
 
 import com.medias.database.objects.Parametre;
@@ -9,26 +6,36 @@
 import org.jetbrains.annotations.Nullable;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * @author vmipsl
- * @date 07 mar 2011 
+ * @date 07 mar 2011
  */
-public interface EtherService extends Service
+public interface EtherService
+        extends Service
 {
-	@Nullable
-	List<Parametre> getParametersByPlateformId(@NotNull final Integer plateformId) throws ServiceException;
-	
-	@Nullable
-	List<Plateforme> getAllPlateforms() throws ServiceException;
+    @Nullable
+    List<Plateforme> getAllPlateforms()
+            throws ServiceException;
 
-	@NotNull
-    List<Pair<Double, Date>> getValuesByPlateformByParameterByPeriod(@NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd) throws ServiceException;
+    @Nullable
+    Plateforme getPlateformById( @Nullable final Integer plateformId )
+            throws ServiceException;
+
+    @Nullable
+    Parametre getParameterById( @Nullable final Integer parameterId )
+            throws ServiceException;
+
+    @Nullable
+    List<Parametre> getParametersByPlateformId( @NotNull final Integer plateformId )
+            throws ServiceException;
 
     @NotNull
-    <T1, T2> Pair<T1[], T2[]> getValuesListsByPlateformByParameterByPeriod(@NotNull final Integer plateformId, @NotNull final Integer parameterId,@Nullable final Date dateBegin, @Nullable final Date dateEnd ) throws ServiceException;
+    <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodForTimeSerie( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+            throws ServiceException;
 
-    @Nullable
-    Plateforme getPlateformById( @Nullable final Integer plateformId ) throws ServiceException;
-
-    @Nullable
-    Parametre getParameterById( @Nullable final Integer parameterId ) throws ServiceException;
+    @NotNull
+    <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodFor2D( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd )
+            throws ServiceException;
 }
Index: /ether_megapoli/trunk/service/test/com/ether/OtherTest.java
===================================================================
--- /ether_megapoli/trunk/service/test/com/ether/OtherTest.java	(revision 170)
+++ /ether_megapoli/trunk/service/test/com/ether/OtherTest.java	(revision 171)
@@ -57,5 +57,5 @@
     /**
      * Test transform List<Pair> en Pair<List, List>
-     * Method used in getValuesListsByPlateformByParameterByPeriod
+     * Method used in getListsByPlateformByParameterByPeriodForTimeSerie
      */
     @Test
Index: /ether_megapoli/trunk/service/test/com/ether/SGTTest.java
===================================================================
--- /ether_megapoli/trunk/service/test/com/ether/SGTTest.java	(revision 170)
+++ /ether_megapoli/trunk/service/test/com/ether/SGTTest.java	(revision 171)
@@ -195,5 +195,5 @@
         timeSeriesPlot.setTitle( "Keroppi title" );
         timeSeriesPlot.setLogoMegapoli( "keroppi1.jpg" );
-        timeSeriesPlot.setData( data );
+//        timeSeriesPlot.setData( data );
 //        timeSeriesPlot.setLineAttribute( lineAttribute );
 
@@ -421,5 +421,5 @@
         timeSeriesPlot.setTitle( "Keroppi title" );
         timeSeriesPlot.setLogoMegapoli( "keroppi1.jpg" );
-        timeSeriesPlot.setData( data );
+//        timeSeriesPlot.setData( data );
 //        timeSeriesPlot.setLineAttribute( lineAttribute );
 
Index: /ether_megapoli/trunk/web/resources/css/visu_parameter_by_pf.css
===================================================================
--- /ether_megapoli/trunk/web/resources/css/visu_parameter_by_pf.css	(revision 170)
+++ /ether_megapoli/trunk/web/resources/css/visu_parameter_by_pf.css	(revision 171)
@@ -53,5 +53,5 @@
 
 .errorAndButtons {
-    /*margin: 0px 22px;*/
+/*margin: 0px 22px;*/
     margin-left: auto;
     margin-right: auto;
Index: /ether_megapoli/trunk/web/resources/templates/templateEther.jsp
===================================================================
--- /ether_megapoli/trunk/web/resources/templates/templateEther.jsp	(revision 170)
+++ /ether_megapoli/trunk/web/resources/templates/templateEther.jsp	(revision 171)
@@ -49,11 +49,9 @@
 
 <%-- VARIABLES A NE PAS TOUCHER !!! --%>
-<bean:define type="java.lang.String" id="today" value="<%=Context.getSimpleDate()%>"/>
 <bean:define type="java.lang.String" id="lastModified" value="<%=Context.getLastModified(request, application)%>"/>
-<bean:define type="java.lang.String" id="racine" value="<%=Context.getWebroot(request)%>"/>
-<bean:define type="java.lang.String" id="relativePageUri" value="<%=Context.getRelativePageURI(request)%>"/>
 <bean:define type="java.lang.String" id="lang" value="<%=Context.getLangue(request)%>"/>
 <bean:define type="java.lang.String" id="webmaster" value="<%=Context.getWebmaster(request)%>"/>
 <bean:define type="java.lang.String" id="chemin" value="<%=request.getContextPath()%>"/>
+<bean:define type="java.lang.String" id="relativePageUri"><%=Context.getRelativePath( request )%>?<%=request.getQueryString()%></bean:define>
 
 <div id="container">
@@ -81,7 +79,4 @@
                 </html:link>
 
-                <%--html:link page="/sitemap/sitemap.jsp">
-                    <html:img page="/resources/images/utils/sitemap.png" titleKey="app.sitemap" altKey="app.sitemap"/>
-                </html:link--%>
                 <%-- Internationalisation --%>
                 <logic:notEqual name="lang" value="en">
@@ -245,5 +240,7 @@
         <table width="100%" style="color:white;font-size: 12px">
             <tr>
-                <td align="left">&copy; 2010-2011 <html:link href="http://www.sedoo.fr" target="help" titleKey="app.linksedoo">Sedoo</html:link> / CNRS </td>
+                <td align="left">&copy; 2010-2011 <html:link href="http://www.sedoo.fr" target="help"
+                                                             titleKey="app.linksedoo">Sedoo</html:link> / CNRS
+                </td>
                 <td align="center"><bean:message key="app.infonavig"/></td>
                 <td align="right"><i><bean:message key="app.lastModified"/> : <bean:write name="lastModified"/></i></td>
Index: /ether_megapoli/trunk/web/src/ApplicationResources.properties
===================================================================
--- /ether_megapoli/trunk/web/src/ApplicationResources.properties	(revision 170)
+++ /ether_megapoli/trunk/web/src/ApplicationResources.properties	(revision 171)
@@ -431,9 +431,5 @@
 data.visualization=Des donn\u00E9es
 data.visualization.2D=2D
-data.visualization.title=Visualisation corr\u00E9latives des observations
-data.visualization.parameter_pf.title=Visualisation corr\u00E9latives des observations d'un type de mesure \u00E0 une plateforme
-data.visualization.parameter_pfs.title=Visualisation corr\u00E9latives des observations d'un type de mesure \u00E0 plusieurs plateformes
-data.visualization.parameters_pf.title=Visualisation corr\u00E9latives des observations de diff\u00E9rents types de mesure \u00E0 une plateforme
-data.visualization.2D.title=Visualisation corr\u00E9latives des observations en 2D des mesures \u00E0 partir des plateformes mobiles
+data.visualization.title=Visualisation des observations
 data.visualization.noPf=Pas de plateforme
 data.visualization.selectPf=Plateformes
@@ -460,6 +456,8 @@
 data.visualization.quicklook=Quicklook
 
-data.visualization.axeType.Time=S\u00E9rie temporelle
-data.visualization.axeType.Latitude=Latitude / Longitude
+data.visualization.axeType.TimeLine=S\u00E9rie temporelle (ligne)
+data.visualization.axeType.TimePoints=S\u00E9rie temporelle (points)
+data.visualization.axeType.2DContour=2D (contour)
+data.visualization.axeType.2DPoints=2D (points)
 
 simulation.visualization=Des simulations
Index: /ether_megapoli/trunk/web/src/ApplicationResources_en.properties
===================================================================
--- /ether_megapoli/trunk/web/src/ApplicationResources_en.properties	(revision 170)
+++ /ether_megapoli/trunk/web/src/ApplicationResources_en.properties	(revision 171)
@@ -431,8 +431,4 @@
 data.visualization.2D=2D
 data.visualization.title=Observations visualisation
-data.visualization.parameter_pf.title=Observations visualisation for a parameter by a plateform
-data.visualization.parameter_pfs.title=Observations visualisation for a parameter by plateforms
-data.visualization.parameters_pf.title=Observations visualisation for parameters by a plateform
-data.visualization.2D.title=2D observations visualisation from mobile plateforms
 data.visualization.noPf=No plateform
 data.visualization.selectPf=Plateforms
@@ -459,6 +455,8 @@
 data.visualization.quicklook=Quicklook
 
-data.visualization.axeType.Time=Time serie
-data.visualization.axeType.Latitude=Latitude / Longitude
+data.visualization.axeType.TimeLine=Time serie (ligne)
+data.visualization.axeType.TimePoints=Time serie (dots)
+data.visualization.axeType.2DContour=2D (contour)
+data.visualization.axeType.2DPoints=2D (dots)
 
 simulation.visualization=Simulations
Index: /ether_megapoli/trunk/web/src/com/ether/ControllerPlot.java
===================================================================
--- /ether_megapoli/trunk/web/src/com/ether/ControllerPlot.java	(revision 170)
+++ /ether_megapoli/trunk/web/src/com/ether/ControllerPlot.java	(revision 171)
@@ -3,8 +3,4 @@
 import com.medias.Context;
 import com.medias.database.objects.Parametre;
-import com.medias.database.objects.Unite;
-import gov.noaa.pmel.sgt.dm.SGTMetaData;
-import gov.noaa.pmel.sgt.dm.SimpleLine;
-import gov.noaa.pmel.util.GeoDateArray;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -24,6 +20,4 @@
 import java.util.Calendar;
 import java.util.Date;
-import java.util.Locale;
-import java.util.ResourceBundle;
 
 /**
@@ -91,10 +85,10 @@
 
             // Parameter
-//            final Parametre parametre = _etherService.getParameterById( parameterId );
-            final Parametre parametre = new Parametre();
-            parametre.setParametreNom( "Ozone" );
-            final Unite unit = new Unite();
-            unit.setUniteCode( "ppb" );
-            parametre.setUnite( unit );
+            final Parametre parametre = _etherService.getParameterById( parameterId );
+//            final Parametre parametre = new Parametre();
+//            parametre.setParametreNom( "Ozone" );
+//            final Unite unit = new Unite();
+//            unit.setUniteCode( "ppb" );
+//            parametre.setUnite( unit );
             if( null == parametre )
             {
@@ -105,32 +99,32 @@
 
             // Create plot
-            final SimpleLine data;
-            if( AxeTypeForFixedPlateform.TIME.name().equals( axeType ) )
+            final MegapoliPlot megapoliPlot = new MegapoliPlot();
+            megapoliPlot.setTitle( title );
+            megapoliPlot.setAxeType( axeType );
+            megapoliPlot.setParameterName( parametre.getParametreNom() );
+            if( null != parametre.getUnite() && null != parametre.getUnite().getUniteCode() )
+                megapoliPlot.setParameterUnitCode( parametre.getUnite().getUniteCode() );
+
+
+            if( AxeTypeForFixedPlateform.TIME_LINE.name().equals( axeType ) || AxeTypeForFixedPlateform.TIME_POINTS.name().equals( axeType ) )
             {
-                final Pair valuesLists = _etherService.getValuesListsByPlateformByParameterByPeriod( plateformId, parameterId, formatedDateBegin, formatedDateEnd );
+                final Data valuesLists = _etherService.getListsByPlateformByParameterByPeriodForTimeSerie( plateformId, parameterId, formatedDateBegin, formatedDateEnd );
+                megapoliPlot.setData( valuesLists );
 
-                final double[] dataArray = (double[]) valuesLists.getFirstValue();
-                final Date[] dateValues = (Date[]) valuesLists.getSecondValue();
-
-                data = createTimeSerie( new GeoDateArray( dateValues ), dataArray, parametre.getParametreNom(), parametre.getUnite() );
+                megapoliPlot.setTimeSerie( true );
+                megapoliPlot.setLegendToHide( true );
+                megapoliPlot.setValuesNumber( ( (double[]) valuesLists.getFirstArray() ).length );
             }
             else
             {
-//                final Pair valuesLists = _etherService.getValuesListsByPlateformByParameterByPeriod( plateformId, parameterId, formatedDateBegin, formatedDateEnd );
-                final double[] latitudeArray = {2.1, 2.2, 2.3};
-                final double[] longitudeValues = {112.1, 12.2, 22.3};
-//                final double[] latitudeArray = (double[]) valuesLists.getFirstValue();
-//                final double[] longitudeValues = (double[]) valuesLists.getFirstValue();
+                final Data valuesLists = _etherService.getListsByPlateformByParameterByPeriodFor2D( plateformId, parameterId, formatedDateBegin, formatedDateEnd );
+                megapoliPlot.setData( valuesLists );
+//                final double[] latitudeArray = {2.1, 2.2, 2.3};
+//                final double[] longitudeValues = {112.1, 12.2, 22.3};
 
-                data = createLatitudeSerie( longitudeValues, latitudeArray, parametre.getParametreNom(), Context.getLocale( request ) );
+                megapoliPlot.setTimeSerie( false );
+                megapoliPlot.setLegendToHide( false );
+                megapoliPlot.setValuesNumber( ( (double[]) valuesLists.getFirstArray() ).length );
             }
-
-
-            // MegapoliPlot
-            final MegapoliPlot megapoliPlot = new MegapoliPlot();
-            megapoliPlot.setTitle( title );
-            megapoliPlot.setData( data );
-            megapoliPlot.setLegendToHide( null == data.getTitle() );
-            megapoliPlot.setXTime( AxeTypeForFixedPlateform.TIME.name().equals( axeType ) );
 
             final BufferedImage bufferedImage = _etherPlotService.createMainPane( megapoliPlot, Context.getLocale( request ) );
@@ -149,34 +143,4 @@
             }
         }
-    }
-
-    @NotNull
-    private SimpleLine createTimeSerie( @NotNull final GeoDateArray dateArray, @NotNull final double[] dataArray, @Nullable final String parameterName, @Nullable final Unite unit )
-    {
-        final SimpleLine data = new SimpleLine( dateArray, dataArray, null );
-        SGTMetaData meta = new SGTMetaData( null, null, false, false );
-        data.setXMetaData( meta );
-
-        meta = new SGTMetaData( parameterName, unit.getUniteCode(), false, false );
-        data.setYMetaData( meta );
-        return data;
-    }
-
-    @NotNull
-    private SimpleLine createLatitudeSerie( @NotNull final double[] dateArray, @NotNull final double[] dataArray, @Nullable final String legend, @Nullable final Locale locale )
-    {
-        final ResourceBundle bundle = WebHelper.getBundle( locale );
-
-        final SimpleLine data = new SimpleLine( dateArray, dataArray, legend );
-        SGTMetaData meta = new SGTMetaData( bundle.getString( "plot.longitude" ), bundle.getString( "plot.degres" ), false, true );
-        // TODO : vÃ©rifier modulo = 360
-//        meta.setModuloValue( 360 );
-        data.setXMetaData( meta );
-
-        meta = new SGTMetaData( bundle.getString( "plot.latitude" ), bundle.getString( "plot.degres" ), false, true );
-        // TODO : vÃ©rifier modulo = 360
-//        meta.setModuloValue( 360 );
-        data.setYMetaData( meta );
-        return data;
     }
 
Index: /ether_megapoli/trunk/web/src/json/serializers/ParameterJsonSerializer.java
===================================================================
--- /ether_megapoli/trunk/web/src/json/serializers/ParameterJsonSerializer.java	(revision 170)
+++ /ether_megapoli/trunk/web/src/json/serializers/ParameterJsonSerializer.java	(revision 171)
@@ -13,4 +13,5 @@
         serialize( result, "id", parameter.getParametreId(), jsonConfig );
         serialize( result, "name", parameter.getParametreNom(), jsonConfig );
+        serialize( result, "code", parameter.getParametreCode(), jsonConfig );
 
         return result;
Index: /ether_megapoli/trunk/web/visualization/visu.jsp
===================================================================
--- /ether_megapoli/trunk/web/visualization/visu.jsp	(revision 170)
+++ /ether_megapoli/trunk/web/visualization/visu.jsp	(revision 171)
@@ -22,5 +22,5 @@
 
     <tiles:put name="bodytitle" type="string">
-        <bean:message key="data.visualization.title"/>
+        <bean:message key="all.visualization"/>
     </tiles:put>
 
Index: /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-classes.jsp
===================================================================
--- /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-classes.jsp	(revision 170)
+++ /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-classes.jsp	(revision 171)
@@ -1,67 +1,80 @@
 <script type="text/javascript">
-/* ************************************************** */
-/* ****************** LISTS ************************* */
-/* ************************************************** */
+    /* ************************************************** */
+    /* ****************** LISTS ************************* */
+    /* ************************************************** */
 
-var ListPlatforms = Class.create(ListItem, {
+    var ListPlatforms = Class.create( ListItem, {
 
-    createItemDiv: function( itemHash, objectParameter )
-    {
-        return new Plateform(itemHash, objectParameter);
-    }
-});
+        createItemDiv: function( itemHash, objectParameter )
+        {
+            return new Plateform( itemHash, objectParameter );
+        }
+    } );
 
-var ListParameters = Class.create(ListItem, {
+    var ListParameters = Class.create( ListItem, {
 
-    createItemDiv: function( itemHash, objectParameter )
-    {
-        return new Parameter(itemHash, objectParameter);
-    }
-});
+        createItemDiv: function( itemHash, objectParameter )
+        {
+            return new Parameter( itemHash, objectParameter );
+        }
+    } );
 
 
-/* ***************************************************** */
-/* ****************** ELEMENTS ************************* */
-/* ***************************************************** */
-var Plateform = Class.create(Item, {
+    /* ***************************************************** */
+    /* ****************** ELEMENTS ************************* */
+    /* ***************************************************** */
+    var Plateform = Class.create( Item, {
 
-    display : function( parentNode, className )
-    {
-        this.createContainer("containerPlateform","containerPlateform "+className);
-        this.addName("plateform_name");
-        this.appendContainer(parentNode);
-        this.addObservers();
-    },
+        display : function( parentNode, className )
+        {
+            this.createContainer( "containerPlateform", "containerPlateform " + className );
+            this.addName( "plateform_name" );
+            this.appendContainer( parentNode );
+            this.addObservers();
+        },
 
-    select: function()
-    {
-        this.selectWithParameter("plateform_selected");
-    },
+        select: function()
+        {
+            this.selectWithParameter( "plateform_selected" );
+        },
 
-    unselect: function()
-    {
-        this.unselectWithParameter("plateform_selected");
-    }
-});
+        unselect: function()
+        {
+            this.unselectWithParameter( "plateform_selected" );
+        }
+    } );
 
-var Parameter = Class.create(Item, {
+    var Parameter = Class.create( Item, {
 
-    display : function( parentNode, className )
-    {
-        this.createContainer("containerParameter","containerParameter "+className);
-        this.addName("parameter_name");
-        this.appendContainer(parentNode);
-        this.addObservers();
-    },
+        display : function( parentNode, className )
+        {
+            this.createContainer( "containerParameter", "containerParameter " + className );
+            this.addName( "parameter_name" );
+//            this.addCode( "parameter_code" );
+            this.appendContainer( parentNode );
+            this.addObservers();
+        },
 
-    select: function()
-    {
-        this.selectWithParameter("parameter_selected");
-    },
+        select: function()
+        {
+            this.selectWithParameter( "parameter_selected" );
+        },
 
-    unselect: function()
-    {
-        this.unselectWithParameter("parameter_selected");
-    }
-});
+        unselect: function()
+        {
+            this.unselectWithParameter( "parameter_selected" );
+        }
+
+//        addCode: function ( classNameValue )
+//        {
+//            if( !this.divContainer )
+//                return;
+//
+//            this.divName = $( document.createElement( "div" ) );
+//            this.divName.className = classNameValue;
+//            this.divName.innerHTML = " (" + this.jsonElement.code + ")";
+//
+//            this.divContainer.appendChild( this.divName );
+//        }
+    } );
 </script>
Index: /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-script.jsp
===================================================================
--- /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-script.jsp	(revision 170)
+++ /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-script.jsp	(revision 171)
@@ -210,17 +210,17 @@
 //        this.plotWindow.getContent().innerHTML = '<div class="loadingPlot"><img src="/Megapoli/resources/icons/loading_datas.gif"/></div>';
 
-//        var url = "visualization/plotEther?plateformId=" + this.selectedPlateform.getId()
-//                + "&parameterId=" + this.selectedParameter.getId()
+        var url = "visualization/plotEther?plateformId=" + this.selectedPlateform.getId()
+                + "&parameterId=" + this.selectedParameter.getId()
+                + "&dateBegin=" + this.beginDate
+                + "&dateEnd=" + this.endDate
+                + "&title=" + encodeURIComponent( $( "textareaTitle" ).value )
+                + "&axeType=" + this.selectAxes.getValue();
+
+//        var url = "visualization/plotEther?plateformId=14"
+//                + "&parameterId=90"
 //                + "&dateBegin=" + this.beginDate
 //                + "&dateEnd=" + this.endDate
 //                + "&title=" + encodeURIComponent( $( "textareaTitle" ).value )
 //                + "&axeType=" + this.selectAxes.getValue();
-
-        var url = "visualization/plotEther?plateformId=14"
-                + "&parameterId=125"
-                + "&dateBegin=" + this.beginDate
-                + "&dateEnd=" + this.endDate
-                + "&title=" + encodeURIComponent( $( "textareaTitle" ).value )
-                + "&axeType=" + this.selectAxes.getValue();
 
         this.plotWindow.getContent().innerHTML = '<img src=' + url + ' />';
Index: /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf.jsp
===================================================================
--- /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf.jsp	(revision 170)
+++ /ether_megapoli/trunk/web/visualization/visu_parameter_by_pf.jsp	(revision 171)
@@ -55,5 +55,5 @@
 
     <tiles:put name="bodytitle" type="string">
-        <bean:message key="data.visualization.parameter_pf.title"/>
+        <bean:message key="data.visualization.title"/>
     </tiles:put>
 
@@ -120,6 +120,8 @@
             interfaceTexts["data.visualization.selectMinute"] = "<bean:message key="data.visualization.selectMinute"/>";
 
-            interfaceTexts["<%=AxeTypeForFixedPlateform.TIME%>"] = "<bean:message key="data.visualization.axeType.Time"/>";
-            interfaceTexts["<%=AxeTypeForMobilePlateform.LATITUDE%>"] = "<bean:message key="data.visualization.axeType.Latitude"/>";
+            interfaceTexts["<%=AxeTypeForFixedPlateform.TIME_LINE%>"] = "<bean:message key="data.visualization.axeType.TimeLine"/>";
+            interfaceTexts["<%=AxeTypeForFixedPlateform.TIME_POINTS%>"] = "<bean:message key="data.visualization.axeType.TimePoints"/>";
+            interfaceTexts["<%=AxeTypeForMobilePlateform.D2_POINTS%>"] = "<bean:message key="data.visualization.axeType.2DPoints"/>";
+            interfaceTexts["<%=AxeTypeForMobilePlateform.D2_CONTOUR%>"] = "<bean:message key="data.visualization.axeType.2DContour"/>";
 
             var interfaceVisualization = new InterfaceVisualization( ${plateforms}, ${axeTypesForFixedPlateforms}, ${axeTypesForMobilePlateforms} );
