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