diff --git a/timeseriesviewer/mapvisualization.py b/timeseriesviewer/mapvisualization.py
index 90b43664d04129508a5cfb0866ec9933eac0a3c3..972e65ef449e538877bbacac0457446e0dccb8c8 100644
--- a/timeseriesviewer/mapvisualization.py
+++ b/timeseriesviewer/mapvisualization.py
@@ -604,7 +604,7 @@ class DatumView(QObject):
         from timeseriesviewer.ui.widgets import TimeSeriesDatumViewUI
         self.ui = TimeSeriesDatumViewUI(parent=parent)
         self.ui.create()
-
+        self.showLoading(False)
         self.L = self.ui.layout()
         self.wOffset = self.L.count()-1
         self.minHeight = self.ui.height()
@@ -623,6 +623,7 @@ class DatumView(QObject):
         self.MVC = mapViewCollection
         self.DVC = timeSeriesDateViewCollection
         self.mapCanvases = dict()
+        self.mRenderState = dict()
 
     def setColumnInfo(self):
 
@@ -685,8 +686,34 @@ class DatumView(QObject):
         mapView.registerMapCanvas(self.Sensor, mapCanvas)
         # register MapCanvas on STV level
         self.STV.registerMapCanvas(mapCanvas)
+
         mapCanvas.blockSignals(False)
+        mapCanvas.renderComplete.connect(lambda : self.onRenderingChange(False))
+        mapCanvas.renderStarting.connect(lambda : self.onRenderingChange(True))
+
+    def showLoading(self, b):
+        if b:
+            self.ui.progressBar.setRange(0,0)
+            self.ui.progressBar.setValue(-1)
+        else:
+            self.ui.progressBar.setRange(0,1)
+            self.ui.progressBar.setValue(0)
+
+    def onRenderingChange(self, b):
+        mc = self.sender()
+        #assert isinstance(mc, QgsMapCanvas)
+        self.mRenderState[mc] = b
+        self.showLoading(any(self.mRenderState.values()))
 
+    def onRendering(self, *args):
+        renderFlags = [m.renderFlag() for m in self.mapCanvases.values()]
+        drawFlags = [m.isDrawing() for m in self.mapCanvases.values()]
+        print((renderFlags, drawFlags))
+        isLoading = any(renderFlags)
+
+        self.showLoading(isLoading)
+
+        s = ""
 
     def registerMapCanvas(self, mapView, mapCanvas):
         from timeseriesviewer.mapcanvas import MapCanvas
@@ -703,6 +730,7 @@ class DatumView(QObject):
         mapCanvas.sigShowProfiles.connect(mapView.sigShowProfiles.emit)
         mapCanvas.sigChangeDVRequest.connect(self.onMapCanvasRequest)
 
+
     def onMapCanvasRequest(self, mapCanvas, key):
 
         if key == 'hide_date':
diff --git a/timeseriesviewer/timeseries.py b/timeseriesviewer/timeseries.py
index b40664aeb7dafb82a5eda2f3a3ce755c830e81e9..f45d4b45201e7abb2418e29b392ca387322452a2 100644
--- a/timeseriesviewer/timeseries.py
+++ b/timeseriesviewer/timeseries.py
@@ -97,18 +97,17 @@ class SensorInstrument(QObject):
 
         #find wavelength
         wl, wlu = parseWavelengthFromDataSet(ds)
+        self.wavelengthUnits = wlu
         if wl is None:
             self.wavelengths = None
-            self.wavelengthUnits = None
         else:
             self.wavelengths = np.asarray(wl)
-            self.wavelengthUnits = wlu
+
+
         self._id = '{}b{}m'.format(self.nb, self.px_size_x)
         if wl is not None:
-            self._id += ';'.join([str(w) for w in self.wavelengths])+wlu
+            self._id += ';'.join([str(w) for w in self.wavelengths])+str(self.wavelengthUnits)
 
-        if wlu is None:
-            wlu = ''
 
         if sensor_name is None:
             sensor_name = '{}bands@{}m'.format(self.nb, self.px_size_x)
@@ -921,7 +920,12 @@ def parseWavelength(lyr):
     return wl, wlu
 
 if __name__ == '__main__':
+    q  = QApplication([])
+    p = QProgressBar()
+    p.setRange(0,0)
 
+    p.show()
+    q.exec_()
 
     print convertMetricUnit(100, 'cm', 'm')
     print convertMetricUnit(1, 'm', 'um')
\ No newline at end of file
diff --git a/timeseriesviewer/ui/timeseriesdatumview.ui b/timeseriesviewer/ui/timeseriesdatumview.ui
index c4b0f96e1dbc5d132e8189cdd08e91c1a992398f..cd22df6e734876a957519f279015acd393669426 100644
--- a/timeseriesviewer/ui/timeseriesdatumview.ui
+++ b/timeseriesviewer/ui/timeseriesdatumview.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>166</width>
+    <width>280</width>
     <height>377</height>
    </rect>
   </property>
@@ -50,9 +50,51 @@
     </widget>
    </item>
    <item>
-    <widget class="Line" name="line">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+    <widget class="QProgressBar" name="progressBar">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16777215</width>
+       <height>10</height>
+      </size>
+     </property>
+     <property name="font">
+      <font>
+       <stylestrategy>PreferDefault</stylestrategy>
+      </font>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">QProgressBar::border{
+margin:5px; 
+}
+QProgressBar::chunk:horizontal {
+background:green; 
+margin: 0.5px; /* space */
+width: 10px; 
+}</string>
+     </property>
+     <property name="maximum">
+      <number>0</number>
+     </property>
+     <property name="value">
+      <number>-1</number>
+     </property>
+     <property name="textVisible">
+      <bool>false</bool>
+     </property>
+     <property name="invertedAppearance">
+      <bool>false</bool>
+     </property>
+     <property name="textDirection">
+      <enum>QProgressBar::BottomToTop</enum>
+     </property>
+     <property name="format">
+      <string notr="true"/>
      </property>
     </widget>
    </item>
diff --git a/timeseriesviewer/ui/widgets.py b/timeseriesviewer/ui/widgets.py
index 54cf03b3d8010c5b17985ee0d009a9a670ecb957..5fe72de461a079bf9e7928acacf0ff8d93819857 100644
--- a/timeseriesviewer/ui/widgets.py
+++ b/timeseriesviewer/ui/widgets.py
@@ -241,10 +241,10 @@ class TimeSeriesDatumViewUI(QFrame, loadUi('timeseriesdatumview.ui')):
                 s = s + w.size()
 
         if isinstance(self.layout(), QVBoxLayout):
-            s = QSize(self.line.width() + m.left() + m.right(),
+            s = QSize(self.progressBar.width() + m.left() + m.right(),
                       s.height() + m.top() + m.bottom())
         else:
-            s = QSize(self.line.heigth() + m.top() + m.bottom(),
+            s = QSize(self.progressBar.heigth() + m.top() + m.bottom(),
                       s.width() + m.left() + m.right())
 
         return s
diff --git a/timeseriesviewer/utils.py b/timeseriesviewer/utils.py
index e5813802174698715418d1542718607605a3a073..3dc64b18ddb1c67521ca2d85639d836b2b342ece 100644
--- a/timeseriesviewer/utils.py
+++ b/timeseriesviewer/utils.py
@@ -503,7 +503,7 @@ def nicePredecessor(l):
 
 
 loadUi = lambda p : loadUIFormClass(jp(DIR_UI, p))
-
+loadIcon = lambda p: jp(DIR_UI, *['icons',p])
 #dictionary to store form classes and avoid multiple calls to read <myui>.ui
 FORM_CLASSES = dict()