Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/app/admin/organisation/organisation.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export interface OrganisationResponse {
createdByName: string;
updatedByName: string;
name: string;
openDataDkRegistered: boolean;

payloadDecoders: PayloadDecoder[];
applications: Application[];
Expand Down
3 changes: 2 additions & 1 deletion src/app/applications/datatarget/datatarget-types.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { HttppushDetailComponent } from './httppush/httppush-detail/httppush-det
import { HttppushEditComponent } from './httppush/httppush-edit/httppush-edit.component';
import { MqttDetailComponent } from './mqtt-detail/mqtt-detail.component';
import { MqttEditComponent } from './mqtt-edit/mqtt-edit.component';
import { OpendatadkEditComponent } from './opendatadk/opendatadk-edit/opendatadk-edit.component';

@Injectable({
providedIn: 'root',
Expand Down Expand Up @@ -77,7 +78,7 @@ export class DatatargetTypesService {
}

if (dataTargetType === DataTargetType.OPENDATADK) {
return HttppushEditComponent;
return OpendatadkEditComponent;
}

if (dataTargetType === DataTargetType.FIWARE) {
Expand Down
7 changes: 7 additions & 0 deletions src/app/applications/datatarget/datatarget.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,10 @@ export class DatatargetTypeDescriptor {
readMoreUrl: string;
provider: string;
}

export class OddkMailInfo {
organizationId?: number;
organizationOddkAlias: string;
comment?: string;
sharingUrl?: string
}
13 changes: 9 additions & 4 deletions src/app/applications/datatarget/datatarget.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import { DatatargetEditTypeSelectorDirective } from './datatarget-edit/datatarge
import { MqttEditComponent } from './mqtt-edit/mqtt-edit.component';
import { MqttDetailComponent } from './mqtt-detail/mqtt-detail.component';
import { DatatargetTabComponent } from './datatarget-tab/datatarget-tab.component';
import { OpenDataDkMailDialogComponent } from './opendatadk/opendatadk-edit/opendatadk-mail-dialog/opendatadk-mail-dialog';
import { OpenDataDkWarningDialogComponent } from './opendatadk/opendatadk-edit/opendatadk-warning-dialog/opendatadk-warning-dialog';

@NgModule({
declarations: [
Expand All @@ -38,11 +40,14 @@ import { DatatargetTabComponent } from './datatarget-tab/datatarget-tab.componen
OpendatadkComponent,
OpendatadkEditComponent,
OpendatadkDetailComponent,
OpenDataDkMailDialogComponent,
OpenDataDkWarningDialogComponent,
MqttDetailComponent,
MqttEditComponent,
DatatargetDetailTypeSelectorDirective,
DatatargetEditTypeSelectorDirective,
DatatargetTabComponent],
DatatargetTabComponent,
],
imports: [
CommonModule,
RouterModule,
Expand All @@ -64,7 +69,7 @@ import { DatatargetTabComponent } from './datatarget-tab/datatarget-tab.componen
FiwareEditComponent,
HttppushDetailComponent,
HttppushEditComponent,
NGMaterialModule
]
NGMaterialModule,
],
})
export class DatatargetModule { }
export class DatatargetModule {}
16 changes: 11 additions & 5 deletions src/app/applications/datatarget/datatarget.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { DatatargetResponse } from '@applications/datatarget/datatarget-response.model';
import { RestService } from '@shared/services/rest.service';
import { DatatargetData, Datatarget } from './datatarget.model';
import { DatatargetData, Datatarget, OddkMailInfo } from './datatarget.model';
import { map } from 'rxjs/operators';
import { OpenDataDkDataset } from './opendatadk/opendatadk-dataset.model';
import { SharedVariableService } from '@shared/shared-variable/shared-variable.service';
Expand Down Expand Up @@ -77,10 +77,6 @@ export class DatatargetService {
if (!datatarget.setToOpendataDk) {
datatarget.openDataDkDataset = null;
}
if (datatarget.setToOpendataDk) {
datatarget.openDataDkDataset.keywords = datatarget.openDataDkDataset?.keywordsInput?.split(',');
datatarget.openDataDkDataset.keywordsInput = undefined;
}
}

private mapToDatatarget(dataTargetResponse: DatatargetResponse): Datatarget {
Expand Down Expand Up @@ -120,4 +116,14 @@ export class DatatargetService {
return this.restService.createResourceUrl('open-data-dk-sharing', this.sharedVariableService.getSelectedOrganisationId());
}

getOpenDataDkRegistered(organizationId: number): Observable<boolean> {
return this.restService.get(this.dataTargetURL + '/getOpenDataDkRegistered', undefined, organizationId);
}
updateOpenDataDkRegistered(organizationId: number): Observable<boolean> {
return this.restService.put(this.dataTargetURL + '/updateOpenDataDkRegistered', undefined, organizationId);
}
sendOpenDataDkMail(mailDto: OddkMailInfo): Observable<boolean> {
mailDto.sharingUrl = this.getOpendataSharingApiUrl();
return this.restService.post(this.dataTargetURL + '/sendOpenDataDkMail', mailDto);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Component, OnInit, Input, OnDestroy } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Datatarget } from '../../datatarget.model';
import { Observable, Subscription } from 'rxjs';
import { Subscription } from 'rxjs';
import { Application } from '@applications/application.model';
import { IotDevice } from '@applications/iot-devices/iot-device.model';
import { faTimesCircle } from '@fortawesome/free-solid-svg-icons';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,23 @@
<h3>{{ 'DATATARGET.DETAILS' | translate }}</h3>
<app-general-details [data]="datatarget"></app-general-details>
<mat-divider></mat-divider>
<p><strong>{{ 'DATATARGET.URL' | translate }}</strong>{{datatarget.url}}</p>
<p><strong>{{ 'DATATARGET.TIMEOUT' | translate }}</strong>{{datatarget.timeout}}</p>
<span *ngIf="datatarget.type !== dataTargetType.OPENDATADK">
<p><strong>{{ 'DATATARGET.URL' | translate }}</strong>{{datatarget.url}}</p>
<p><strong>{{ 'DATATARGET.TIMEOUT' | translate }}</strong>{{datatarget.timeout}}</p>
</span>
<p><strong>{{ 'DATATARGET.TYPE' | translate }}</strong>{{'DATATARGET.' + datatarget.type + '.TYPE' | translate}}</p>
<mat-divider></mat-divider>
<p><strong>{{ 'DATATARGET.AUTHORIZATIONHEADER' | translate }}</strong></p>
<code><pre *ngIf="datatarget.authorizationHeader; else showNoAuthText">{{datatarget.authorizationHeader}}</pre></code>
<ng-template #showNoAuthText>
<p>{{ 'DATATARGET.NO-AUTHORIZATIONHEADER' | translate }}</p>
</ng-template>
<span *ngIf="datatarget.type !== dataTargetType.OPENDATADK">
<mat-divider></mat-divider>
<p><strong>{{ 'DATATARGET.AUTHORIZATIONHEADER' | translate }}</strong></p>
<code><pre *ngIf="datatarget.authorizationHeader; else showNoAuthText">{{datatarget.authorizationHeader}}</pre></code>
<ng-template #showNoAuthText>
<p>{{ 'DATATARGET.NO-AUTHORIZATIONHEADER' | translate }}</p>
</ng-template>
</span>

</div>
</div>
<div class="col-md-6 d-flex align-items-stretch">
<div *ngIf="datatarget.type === dataTargetType.OPENDATADK" class="col-md-6 d-flex align-items-stretch">
<div class="jumbotron jumbotron--m-left jumbotron--full-width">
<h3>{{ 'DATATARGET.OPENDATA-DK.TYPE' | translate }}</h3>
<div *ngIf="datatarget.setToOpendataDk else noOpendataDk">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { faArrowsAltH } from '@fortawesome/free-solid-svg-icons';
import { DatatargetDetail } from '@applications/datatarget/datatarget-detail/datatarget-detail';
import { MeService } from '@shared/services/me.service';
import { OrganizationAccessScope } from '@shared/enums/access-scopes';
import { DataTargetType } from '@shared/enums/datatarget-type';

@Component({
selector: 'app-httppush-detail',
Expand All @@ -22,14 +23,15 @@ import { OrganizationAccessScope } from '@shared/enums/access-scopes';
})
export class HttppushDetailComponent
implements DatatargetDetail, OnInit, OnDestroy {
dataTargetType = DataTargetType;

public datatargetSubscription: Subscription;
public datatarget: Datatarget;
public backButton: BackButton = { label: '', routerLink: undefined };
public dataTargetRelations: PayloadDeviceDatatargetGetByDataTarget[];
private deleteDialogSubscription: Subscription;
public dropdownButton: DropdownButton;
arrowsAltH = faArrowsAltH;
private applicationName: string;
canEdit: boolean;

constructor(
Expand All @@ -45,7 +47,6 @@ export class HttppushDetailComponent
ngOnInit(): void {
const id: number = +this.route.snapshot.paramMap.get('datatargetId');
const appId: number = +this.route.snapshot.paramMap.get('id');
this.applicationName = this.route.snapshot.paramMap.get('name');
if (id) {
this.getDatatarget(id);
this.getDatatargetRelations(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,8 @@
</li>
</ul>
</div>
<mat-slide-toggle
[(ngModel)]="datatarget.setToOpendataDk"
id="setToOpendataDk"
name="setToOpendataDk">
{{'DATATARGET.ADD-TO-OPENDATADK' | translate}}
</mat-slide-toggle>
<div class="row mb-2">
<div class="form-group mt-3 col-12">
<div class="form-group col-12">
<label class="form-label" for="name">{{'QUESTION.GIVE-DATATARGET-NAME' | translate}}</label>*
<input type="text" class="form-control" id="name" name="name"
[placeholder]="'QUESTION.GIVE-DATATARGET-NAME-PLACEHOLDER' | translate" maxlength="50" required
Expand Down Expand Up @@ -61,10 +55,8 @@
[(ngModel)]="datatarget.authorizationHeader"
[ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('authorizationHeader'), 'is-valid' : formFailedSubmit && !errorFields.includes('authorizationHeader')}">
</div>
<div *ngIf="datatarget.setToOpendataDk">
<app-opendatadk-edit [openDataDk]="datatarget.openDataDkDataset" [errorFields]="errorFields" [formFailedSubmit]="formFailedSubmit"></app-opendatadk-edit>
</div>
</div>

<div *ngIf="datatargetid === 0">
<h6> {{'QUESTION.DATATARGET.RELATIONS' | translate}} </h6>
</div>
Expand Down Expand Up @@ -135,6 +127,6 @@ <h6> {{'QUESTION.DATATARGET.RELATIONS' | translate}} </h6>
</div>
<div class="form-group mt-5">
<button (click)="routeToDatatargets()" class="btn btn-light" type="button">{{ 'GEN.BACK' | translate}}</button>
<button [disabled]="disableSaveButton()" class="btn btn-primary ml-2" type="submit">{{ submitButton }}</button>
<button class="btn btn-primary ml-2" type="submit">{{ submitButton }}</button>
</div>
</form>
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Component, OnInit, Input, OnDestroy } from '@angular/core';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Datatarget } from '../../datatarget.model';
import { Observable, Subscription } from 'rxjs';
import { Subscription } from 'rxjs';
import { Application } from '@applications/application.model';
import { IotDevice } from '@applications/iot-devices/iot-device.model';
import { faTimesCircle } from '@fortawesome/free-solid-svg-icons';
Expand All @@ -20,11 +20,7 @@ import { HttpErrorResponse } from '@angular/common/http';
import { PayloadDecoderMappedResponse } from '@payload-decoder/payload-decoder.model';
import { DeleteDialogComponent } from '@shared/components/delete-dialog/delete-dialog.component';
import { ErrorMessageService } from '@shared/error-message.service';
import { OpendatadkDialogService } from '@shared/components/opendatadk-dialog/opendatadk-dialog.service';
import { OpendatadkService } from '@shared/services/opendatadk.service';
import { ScrollToTopService } from '@shared/services/scroll-to-top.service';
import { OpenDataDkDataset } from '../../opendatadk/opendatadk-dataset.model';
import { DataTargetType } from '@shared/enums/datatarget-type';
import { DatatargetEdit } from '@applications/datatarget/datatarget-edit/datatarget-edit';
import { MeService } from '@shared/services/me.service';
import { OrganizationAccessScope } from '@shared/enums/access-scopes';
Expand Down Expand Up @@ -52,13 +48,10 @@ export class HttppushEditComponent
public formFailedSubmit = false;
public datatargetid: number;
private applicationId: number;
private applicationName: string;
public application: Application;
public devices: IotDevice[];
public payloadDecoders = [];
private counter: number;
private dataSetExcists = false;
private isMailDialogAlreadyShown = false;

payloadDeviceDatatarget: PayloadDeviceDatatarget[];
newDynamic: any = {};
Expand All @@ -75,8 +68,6 @@ export class HttppushEditComponent
private saveSnackService: SnackService,
private dialog: MatDialog,
private errorMessageService: ErrorMessageService,
private opendatadkService: OpendatadkService,
private opendatadkDialogService: OpendatadkDialogService,
private scrollToTopService: ScrollToTopService,
private meService: MeService
) {
Expand Down Expand Up @@ -104,7 +95,6 @@ export class HttppushEditComponent

this.datatargetid = +this.route.snapshot.paramMap.get('datatargetId');
this.applicationId = +this.route.snapshot.paramMap.get('id');
this.applicationName = this.route.snapshot.paramMap.get('name');
if (this.datatargetid !== 0) {
this.getDatatarget(this.datatargetid);
this.getPayloadDeviceDatatarget(this.datatargetid);
Expand All @@ -113,7 +103,6 @@ export class HttppushEditComponent
this.getDevices();
}
this.getPayloadDecoders();
this.setDataSetExcists();
this.canEdit = this.meService.hasAccessToTargetOrganization(
OrganizationAccessScope.ApplicationWrite,
undefined,
Expand Down Expand Up @@ -186,15 +175,8 @@ export class HttppushEditComponent
this.datatargetService.update(this.datatarget).subscribe(
(response: Datatarget) => {
this.datatarget = response;
if (this.datatarget.openDataDkDataset != null) {
this.datatarget.openDataDkDataset.acceptTerms = true;
}
this.shouldShowMailDialog().subscribe((response) => {
this.countToRedirect();
});
},
(error: HttpErrorResponse) => {
this.checkDataTargetModelOpendatadkdatasaet();
this.handleError(error);
this.formFailedSubmit = true;
}
Expand Down Expand Up @@ -253,14 +235,10 @@ export class HttppushEditComponent
(response: Datatarget) => {
this.datatargetid = response.id;
this.datatarget = response;
if (this.datatarget.openDataDkDataset != null) {
this.datatarget.openDataDkDataset.acceptTerms = true;
}
this.showSavedSnack();
this.routeToDatatargets();
},
(error: HttpErrorResponse) => {
this.checkDataTargetModelOpendatadkdatasaet();
this.handleError(error);
this.formFailedSubmit = true;
}
Expand All @@ -273,12 +251,6 @@ export class HttppushEditComponent
this.formFailedSubmit = false;
}

checkDataTargetModelOpendatadkdatasaet() {
if (!this.datatarget.openDataDkDataset) {
this.datatarget.openDataDkDataset = new OpenDataDkDataset();
}
}

getDevices(): void {
this.applicationSubscription = this.applicationService
.getApplication(this.applicationId)
Expand Down Expand Up @@ -338,53 +310,6 @@ export class HttppushEditComponent
this.saveSnackService.showSavedSnack();
}

private setDataSetExcists() {
this.opendatadkService.get().subscribe((response) => {
this.dataSetExcists = response.dataset.length === 0 ? false : true;
});
}

private shouldShowMailDialog(): Observable<any> {
return new Observable((observer) => {
if (
!this.dataSetExcists &&
this.datatarget.setToOpendataDk &&
!this.isMailDialogAlreadyShown
) {
this.isMailDialogAlreadyShown = true;
this.opendatadkDialogService.showDialog().subscribe((response) => {
if (response) {
this.showMailClient();
}
observer.next(response);
});
} else {
observer.next(true);
}
});
}

private showMailClient() {
if (!this.datatarget.openDataDkDataset.url) {
this.datatarget.openDataDkDataset.url = this.datatargetService.getOpendataSharingApiUrl();
}
window.location.href =
'mailto:FG2V@kk.dk?subject=Oprettelse%20af%20datas%C3%A6t%20i%20OpenDataDK&body=K%C3%A6re%20Frans%0D%0A%0D%0AHermed%20fremsendes%20linket%20til%20DCAT%20kataloget%20%2C%20du%20bedes%20registrere%20p%C3%A5%20Open%20Data%20DK%20platformen.%0D%0A%0D%0ALink%3A ' +
this.datatarget.openDataDkDataset.url;
}

disableSaveButton(): boolean {
let disable = true;
if (!this.datatarget.setToOpendataDk) {
disable = false;
} else if (this.datatarget.openDataDkDataset?.acceptTerms) {
disable = false;
} else {
disable = true;
}
return disable;
}

ngOnDestroy(): void {
if (this.relationSubscription) {
this.relationSubscription.unsubscribe();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export class OpenDataDkDataset {
description: string;
keywords: string[];
keywordsInput: string;
license = 'http://portal.opendata.dk/dataset/open-data-dk-licens';
license = 'https://creativecommons.org/publicdomain/zero/1.0/';
authorName: string; //required
authorEmail: string; //reqired
url: string; // autogenerated with orgid as input
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,6 @@
{{openDataDkDataset.keywords ? openDataDkDataset.keywords : ('OPENDATADK.DETAILS.NA' | translate) }}
</p>

<p>
<strong>{{ 'OPENDATADK.DETAILS.LICENSE' | translate }}</strong>
{{openDataDkDataset.license}}
</p>

<p>
<strong>{{ 'OPENDATADK.DETAILS.AUTHORNAME' | translate }}</strong>
{{openDataDkDataset.authorName}}
Expand Down
Loading