From dd50b8348245ec65669a40e37c0acf63f41171ca Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 21 Mar 2018 18:46:13 +0100
Subject: [PATCH] tabs in add project are available when data is ready to
 upload

---
 .../src/main/js/gui/admin/AddProjectDialog.js | 68 ++++++++++++++++---
 1 file changed, 58 insertions(+), 10 deletions(-)

diff --git a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
index bb29ff5b38..2214c45535 100644
--- a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
+++ b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
@@ -101,13 +101,27 @@ AddProjectDialog.prototype.addTab = function (params) {
   });
   contentDiv.style.overflow = "auto";
 
+
   if (params.content !== undefined) {
     contentDiv.appendChild(params.content);
   }
 
   params.tabContentDiv.appendChild(contentDiv);
+
+  if (params.disabled) {
+    this.disableTab(params);
+  }
+};
+
+AddProjectDialog.prototype.disableTab = function (params) {
+  $("a[href='#" + params.id + "']", this.getElement()).hide();
 };
 
+AddProjectDialog.prototype.enableTab = function (params) {
+  $("a[href='#" + params.id + "']", this.getElement()).show();
+};
+
+
 AddProjectDialog.prototype.showAnnotatorsDialog = function () {
   var self = this;
   var promise;
@@ -319,7 +333,8 @@ AddProjectDialog.prototype.createOverlaysTab = function (tabMenuDiv, tabContentD
     tabContentDiv: tabContentDiv,
     name: "OVERLAYS",
     id: "project_overlays_tab",
-    content: self.createOverlaysTabContent()
+    content: self.createOverlaysTabContent(),
+    disabled: true
   });
 };
 
@@ -396,7 +411,8 @@ AddProjectDialog.prototype.createSubmapsTab = function (tabMenuDiv, tabContentDi
     tabContentDiv: tabContentDiv,
     name: "SUBMAPS",
     id: "project_submaps_tab",
-    content: self.createSubmapsTabContent()
+    content: self.createSubmapsTabContent(),
+    disabled: true
   });
 };
 
@@ -540,7 +556,8 @@ AddProjectDialog.prototype.createOverviewImagesTab = function (tabMenuDiv, tabCo
     tabContentDiv: tabContentDiv,
     name: "IMAGES",
     id: "project_overview_images_tab",
-    content: self.createOverviewImagesTabContent()
+    content: self.createOverviewImagesTabContent(),
+    disabled: true
   });
 };
 
@@ -890,22 +907,53 @@ AddProjectDialog.prototype.setZipFileContent = function (file) {
     return jsZip.loadAsync(file).then(function (zip) {
       var files = zip.files;
       var promises = [];
-      var entries = [];
       for (var key in files) {
         if (files.hasOwnProperty(key)) {
           promises.push(self.createZipEntry(files[key], zip));
         }
       }
-      return Promise.all(promises).then(function (result) {
-        for (var i = 0; i < result.length; i++) {
-          if (result[i] !== null) {
-            entries.push(result[i]);
+      return Promise.all(promises);
+    }).then(function (result) {
+      var entries = [];
+      var overlays = 0;
+      var maps = 0;
+      var images = 0;
+
+      for (var i = 0; i < result.length; i++) {
+        var entry = result[i];
+        if (entry !== null) {
+          entries.push(entry);
+          if (entry.getType() === 'MAP') {
+            maps++;
+          } else if (entry.getType() === 'IMAGE') {
+            images++;
+          } else if (entry.getType() === 'OVERLAY') {
+            overlays++;
           }
         }
-        return self.setZipEntries(entries);
-      });
+      }
+      if (overlays > 0) {
+        self.enableTab({id: "project_overlays_tab"});
+      } else {
+        self.disableTab({id: "project_overlays_tab"});
+      }
+      if (maps > 1) {
+        self.enableTab({id: "project_submaps_tab"});
+      } else {
+        self.disableTab({id: "project_submaps_tab"});
+      }
+      if (images > 1) {
+        self.enableTab({id: "project_overview_images_tab"});
+      } else {
+        self.disableTab({id: "project_overview_images_tab"});
+      }
+
+      return self.setZipEntries(entries);
     });
   } else {
+    self.disableTab({id: "project_overlays_tab"});
+    self.disableTab({id: "project_submaps_tab"});
+    self.disableTab({id: "project_overview_images_tab"});
     return self.setZipEntries([]);
   }
 };
-- 
GitLab