From d9a9100b650188ea0d144674e7629a10af058199 Mon Sep 17 00:00:00 2001
From: Roberto Callari <robertocallari89@gmail.com>
Date: Wed, 5 May 2021 11:27:34 +0200
Subject: [PATCH] up

---
 package-lock.json                             |  13 +--
 package.json                                  |   1 +
 .../datalet-iframe.component.html             |   4 +-
 .../datalet-iframe.component.scss             |  18 ++++
 .../dataset/dataset.component.ts              | 101 +++++++++++-------
 5 files changed, 88 insertions(+), 49 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 44915bd4..47e543bc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16838,8 +16838,7 @@
     "querystringify": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
     },
     "quick-lru": {
       "version": "1.1.0",
@@ -17392,8 +17391,7 @@
     "requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
     },
     "resolve": {
       "version": "1.5.0",
@@ -21140,10 +21138,9 @@
       }
     },
     "url-parse": {
-      "version": "1.4.7",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
-      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
-      "dev": true,
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz",
+      "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==",
       "requires": {
         "querystringify": "^2.1.1",
         "requires-port": "^1.0.0"
diff --git a/package.json b/package.json
index 77b8d601..5b82c3ad 100644
--- a/package.json
+++ b/package.json
@@ -85,6 +85,7 @@
     "tinymce": "4.5.7",
     "tslib": "^2.0.0",
     "typeface-exo": "0.0.22",
+    "url-parse": "^1.5.1",
     "uuid": "^8.3.1",
     "web-animations-js": "^2.3.2",
     "zone.js": "^0.10.3"
diff --git a/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.html b/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.html
index 923cc1c6..2309c568 100644
--- a/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.html
+++ b/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.html
@@ -1,5 +1,5 @@
 <nb-card>
-    <nb-card-body width="100%" height="100%">
-        <iframe width="100%" height="850px" frameBorder="0" [src]="iframeUrl | safe"></iframe>
+    <nb-card-body>
+            <iframe class="responsive-iframe" frameBorder="0" [src]="iframeUrl | safe"></iframe>
     </nb-card-body>
 </nb-card>
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.scss b/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.scss
index 0d5e84eb..889d2529 100644
--- a/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.scss
+++ b/src/app/pages/data-catalogue/datalet-iframe/datalet-iframe.component.scss
@@ -12,4 +12,22 @@ nb-card {
      */
     max-height: 100vh;
     min-height: 95vh;
+  }
+
+  .container-iframe {
+    position: relative;
+    overflow: hidden;
+    width: 100%;
+    padding-top: 56.25%; /* 16:9 Aspect Ratio (divide 9 by 16 = 0.5625) */
+  }
+  
+  /* Then style the iframe to fit in the container div with full height and width */
+  .responsive-iframe {
+    position: absolute;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    width: 100%;
+    height: 100%;
   }
\ No newline at end of file
diff --git a/src/app/pages/data-catalogue/dataset/dataset.component.ts b/src/app/pages/data-catalogue/dataset/dataset.component.ts
index c7c26a97..f0c0e86a 100644
--- a/src/app/pages/data-catalogue/dataset/dataset.component.ts
+++ b/src/app/pages/data-catalogue/dataset/dataset.component.ts
@@ -9,6 +9,7 @@ import { DCATDistribution } from '../model/dcatdistribution';
 import { SKOSConcept } from '../model/skosconcept';
 import { DataCataglogueAPIService } from '../services/data-cataglogue-api.service';
 import { ShowDataletsComponent } from '../show-datalets/show-datalets.component';
+import * as URLParse from 'url-parse';
 
 @Component({
   selector: 'ngx-dataset',
@@ -29,6 +30,8 @@ export class DatasetComponent implements OnInit {
   dataletBaseUrl=undefined;
   enableDatalet=false;
 
+  samedomain=false;
+
   constructor(
     private router: Router,
     private route: ActivatedRoute,
@@ -44,6 +47,13 @@ export class DatasetComponent implements OnInit {
 
 
   ngOnInit(): void {
+
+    let dataletOrigin = new URLParse(this.dataletBaseUrl);
+    //console.log(dataletOrigin.origin)
+    if(location.origin==dataletOrigin.origin){
+      this.samedomain=true;
+    }
+
     this.route.paramMap.subscribe(params => {
       this.id = params.get('id'); 
       if (this.id) {
@@ -131,48 +141,61 @@ export class DatasetComponent implements OnInit {
     }
   }
 
-  dataletCreate(distribution:DCATDistribution){
-    
-    var parameter=undefined;
-		
-		if(distribution.format!=undefined && distribution.format!=""){
-			parameter=distribution.format;
-			if(parameter=='fiware-ngsi') parameter ='json';
-		}else if(distribution.mediaType!=undefined && distribution.mediaType!=""){
-			if(distribution.mediaType.indexOf("/")>0)
-				parameter=distribution.mediaType.split("/")[1];
-			else
-				parameter=distribution.mediaType;
-		}
+  dataletCreate(distribution: DCATDistribution) {
 
-    this.loading=true;
+    var parameter = undefined;
 
-    this.restApi.downloadFromUri(distribution).subscribe(
-      res => {
-        this.loading=false;
-        
-        this.dialogService.open(DataletIframeComponent, {
-          context: {
-            distributionID: distribution.id,
-            datasetID:this.dataset.id,
-            nodeID:this.dataset.nodeID,
-            format:parameter,
-            url: distribution.downloadURL
-          }
-        })
-        .onClose.subscribe(
-          closeCallback => {
-            this.getDataset()
-          }
-        );
+    if (distribution.format != undefined && distribution.format != "") {
+      parameter = distribution.format;
+      if (parameter == 'fiware-ngsi') parameter = 'json';
+    } else if (distribution.mediaType != undefined && distribution.mediaType != "") {
+      if (distribution.mediaType.indexOf("/") > 0)
+        parameter = distribution.mediaType.split("/")[1];
+      else
+        parameter = distribution.mediaType;
+    }
 
-      },
-      err=>{ 
-        console.log(err) 
-        this.loading=false;
-        this.toastrService.danger("File with url "+distribution.downloadURL+" returned "+err.status+"!","Unable to create Datalet");
-      }
-    )
+    this.loading = true;
+    if (this.samedomain) {
+      this.restApi.downloadFromUri(distribution).subscribe(
+        res => {
+          this.loading = false;
+
+          this.dialogService.open(DataletIframeComponent, {
+            context: {
+              distributionID: distribution.id,
+              datasetID: this.dataset.id,
+              nodeID: this.dataset.nodeID,
+              format: parameter,
+              url: distribution.downloadURL
+            }
+          })
+            .onClose.subscribe(
+              closeCallback => {
+                this.getDataset()
+              }
+            );
+
+        },
+        err => {
+          console.log(err)
+          this.loading = false;
+          this.toastrService.danger("File with url " + distribution.downloadURL + " returned " + err.status + "!", "Unable to create Datalet");
+        }
+      )
+    } else {
+      this.restApi.downloadFromUri(distribution).subscribe(
+        res => {
+          this.loading = false;
+          window.open(`${this.dataletBaseUrl}?ln=en&format=${parameter}&nodeID=${this.dataset.nodeID}&distributionID=${distribution.id}&datasetID=${this.dataset.id}&url=${encodeURIComponent(distribution.downloadURL)}`)
+        },
+        err => {
+          console.log(err)
+          this.loading = false;
+          this.toastrService.danger("File with url " + distribution.downloadURL + " returned " + err.status + "!", "Unable to create Datalet");
+        }
+      )
+    }
   }
 
   openExistingDatalet(distribution:DCATDistribution){
-- 
GitLab