Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot
# Conflicts: # dmp-backend/src/test/resources/applicationContextTEST.xml
This commit is contained in:
parent
29884ab016
commit
22582676a3
File diff suppressed because it is too large
Load Diff
|
@ -29,6 +29,7 @@
|
||||||
"@ngx-translate/http-loader": "3.0.1",
|
"@ngx-translate/http-loader": "3.0.1",
|
||||||
"@swimlane/ngx-datatable": "13.0.1",
|
"@swimlane/ngx-datatable": "13.0.1",
|
||||||
"@types/file-saver": "1.3.0",
|
"@types/file-saver": "1.3.0",
|
||||||
|
"bootstrap": "^4.1.2",
|
||||||
"core-js": "^2.4.1",
|
"core-js": "^2.4.1",
|
||||||
"file-saver": "1.3.3",
|
"file-saver": "1.3.3",
|
||||||
"rxjs": "^6.2.1",
|
"rxjs": "^6.2.1",
|
||||||
|
|
|
@ -9,9 +9,7 @@
|
||||||
<help-content position="left"></help-content>
|
<help-content position="left"></help-content>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<h4>
|
<app-breadcrumb *ngIf="this.isAuthenticated() && (hasBreadCrumb | async)"></app-breadcrumb>
|
||||||
<app-breadcrumb *ngIf="this.isAuthenticated() && (hasBreadCrumb | async)"></app-breadcrumb>
|
|
||||||
</h4>
|
|
||||||
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
|
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
||||||
import { BaseHttpService } from './utilities/cite-http-service-module/base-http.service';
|
import { BaseHttpService } from './utilities/cite-http-service-module/base-http.service';
|
||||||
import { DashboardService } from './services/dashboard/dashboard.service';
|
import { DashboardService } from './services/dashboard/dashboard.service';
|
||||||
import { DatasetService } from './services/dataset/dataset.service';
|
|
||||||
import { AuthService } from './services/auth/auth.service';
|
import { AuthService } from './services/auth/auth.service';
|
||||||
import { PaginationService } from './services/pagination.service';
|
|
||||||
import { VisibilityRulesService } from './utilities/visibility-rules/visibility-rules.service';
|
|
||||||
import { MaterialModule } from './shared/material/material.module';
|
import { MaterialModule } from './shared/material/material.module';
|
||||||
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
@ -17,111 +14,104 @@ import { BaseHttpModule } from './utilities/cite-http-service-module/cite-http.m
|
||||||
|
|
||||||
import { LoginOptions } from './user-management/utilties/LoginOptions';
|
import { LoginOptions } from './user-management/utilties/LoginOptions';
|
||||||
import { LoginModule } from './user-management/login.module';
|
import { LoginModule } from './user-management/login.module';
|
||||||
import { ProjectsModule } from './projects/projects.module';
|
|
||||||
|
|
||||||
import { DataManagementPlanModule } from './dmps/dmps.module';
|
|
||||||
import { DynamicFormModule } from './form/dynamic-form.module';
|
|
||||||
import { DatasetModule } from './datasets/dataset.module';
|
|
||||||
import { SharedModule } from './shared/shared.module';
|
import { SharedModule } from './shared/shared.module';
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { FigurecardComponent } from './shared/components/figurecard/figurecard.component';
|
|
||||||
import { HomepageComponent } from './homepage/homepage.component';
|
import { HomepageComponent } from './homepage/homepage.component';
|
||||||
import { PageNotFoundComponent } from './not-found.component';
|
import { PageNotFoundComponent } from './not-found.component';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { NgModule } from "@angular/core";
|
import { NgModule } from '@angular/core';
|
||||||
import { DatasetProfileModule } from './dataset-profile-form/dataset-profile.module';
|
|
||||||
import { WelcomepageComponent } from './welcomepage/welcomepage.component';
|
import { WelcomepageComponent } from './welcomepage/welcomepage.component';
|
||||||
import { HelpContentService } from './services/help-content/help-content.service';
|
import { HelpContentService } from './services/help-content/help-content.service';
|
||||||
import { B2AccessLoginComponent } from './user-management/login/b2access/b2access-login.component';
|
import { B2AccessLoginComponent } from './user-management/login/b2access/b2access-login.component';
|
||||||
import { RecentActivityComponent } from './users/activity/recent-activity.component';
|
import { RecentActivityComponent } from './users/activity/recent-activity.component';
|
||||||
import { LanguageResolverService } from './services/language-resolver/language-resolver.service';
|
import { LanguageResolverService } from './services/language-resolver/language-resolver.service';
|
||||||
import { LanguageService } from './services/language/language.service';
|
import { LanguageService } from './services/language/language.service';
|
||||||
import { UsersModule } from './users/users.module';
|
|
||||||
import { HelpContentComponent, AsideHelpContentComponent } from './shared/help-content/help-content.component';
|
import { HelpContentComponent, AsideHelpContentComponent } from './shared/help-content/help-content.component';
|
||||||
import { AuthGuard } from './shared/guards/auth.guard';
|
import { AuthGuard } from './shared/guards/auth.guard';
|
||||||
import { UrlUtilities } from './utilities/UrlUtilities';
|
import { UrlUtilities } from './utilities/UrlUtilities';
|
||||||
import { BreadCrumbResolverService } from './services/breadcrumb/breadcrumb-resolver.service';
|
import { BreadCrumbResolverService } from './services/breadcrumb/breadcrumb-resolver.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
PageNotFoundComponent,
|
PageNotFoundComponent,
|
||||||
HomepageComponent,
|
HomepageComponent,
|
||||||
RecentActivityComponent,
|
RecentActivityComponent,
|
||||||
WelcomepageComponent,
|
WelcomepageComponent,
|
||||||
HelpContentComponent,
|
HelpContentComponent,
|
||||||
AsideHelpContentComponent,
|
AsideHelpContentComponent,
|
||||||
B2AccessLoginComponent,
|
B2AccessLoginComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
HttpModule,
|
HttpModule,
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
BaseHttpModule.forRoot(),
|
BaseHttpModule.forRoot(),
|
||||||
|
|
||||||
CommonModule,
|
CommonModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
useFactory: HttpLoaderFactory,
|
useFactory: HttpLoaderFactory,
|
||||||
deps: [HttpClient]
|
deps: [HttpClient]
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
MaterialModule,
|
MaterialModule,
|
||||||
SharedModule,
|
SharedModule,
|
||||||
|
|
||||||
LoginModule.forRoot({
|
LoginModule.forRoot({
|
||||||
loginProviders: [
|
loginProviders: [
|
||||||
LoginOptions.facebookOauth,
|
LoginOptions.facebookOauth,
|
||||||
LoginOptions.googleOauth,
|
LoginOptions.googleOauth,
|
||||||
LoginOptions.linkedInOauth,
|
LoginOptions.linkedInOauth,
|
||||||
LoginOptions.twitterOauth,
|
LoginOptions.twitterOauth,
|
||||||
LoginOptions.b2Access
|
LoginOptions.b2Access
|
||||||
],
|
],
|
||||||
facebookConfiguration: { clientId: "110586756143149" },
|
facebookConfiguration: { clientId: '110586756143149' },
|
||||||
googleConfiguration: { clientId: '524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googleusercontent.com' },
|
googleConfiguration: { clientId: '524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googleusercontent.com' },
|
||||||
linkedInConfiguration: {
|
linkedInConfiguration: {
|
||||||
clientId: "86bl8vfk77clh9",
|
clientId: '86bl8vfk77clh9',
|
||||||
oauthUrl: "https://www.linkedin.com/oauth/v2/authorization",
|
oauthUrl: 'https://www.linkedin.com/oauth/v2/authorization',
|
||||||
redirectUri: HostConfiguration.App + "login/linkedin",
|
redirectUri: HostConfiguration.App + 'login/linkedin',
|
||||||
accessTokenUri: "https://www.linkedin.com/oauth/v2/accessToken",
|
accessTokenUri: 'https://www.linkedin.com/oauth/v2/accessToken',
|
||||||
clientSecret: "2OCO9e3wKylW05Tt"
|
clientSecret: '2OCO9e3wKylW05Tt'
|
||||||
},
|
},
|
||||||
twitterConfiguration: { clientId: "HiR4hQH9HNubKC5iKQy0l4mAZ", oauthUrl: "https://api.twitter.com/oauth/authenticate" },
|
twitterConfiguration: { clientId: 'HiR4hQH9HNubKC5iKQy0l4mAZ', oauthUrl: 'https://api.twitter.com/oauth/authenticate' },
|
||||||
b2accessConfiguration: {
|
b2accessConfiguration: {
|
||||||
clientId: "eudatdmptool",
|
clientId: 'eudatdmptool',
|
||||||
clientSecret: "A3b*1*92",
|
clientSecret: 'A3b*1*92',
|
||||||
oauthUrl: "https://b2access-integration.fz-juelich.de:443/oauth2-as/oauth2-authz",
|
oauthUrl: 'https://b2access-integration.fz-juelich.de:443/oauth2-as/oauth2-authz',
|
||||||
redirectUri: "http://dl043.madgik.di.uoa.gr/api/oauth/authorized/b2access",
|
redirectUri: 'http://dl043.madgik.di.uoa.gr/api/oauth/authorized/b2access',
|
||||||
accessTokenUri: "https://b2access-integration.fz-juelich.de:443/oauth2/token"
|
accessTokenUri: 'https://b2access-integration.fz-juelich.de:443/oauth2/token'
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
AuthGuard,
|
AuthGuard,
|
||||||
AuthService,
|
AuthService,
|
||||||
BaseHttpService,
|
BaseHttpService,
|
||||||
UrlUtilities,
|
UrlUtilities,
|
||||||
DashboardService,
|
DashboardService,
|
||||||
HelpContentService,
|
HelpContentService,
|
||||||
LanguageService,
|
LanguageService,
|
||||||
LanguageResolverService,
|
LanguageResolverService,
|
||||||
BreadCrumbResolverService
|
BreadCrumbResolverService
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
})
|
})
|
||||||
export class AppModule {
|
export class AppModule {
|
||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function HttpLoaderFactory(httpClient: HttpClient) {
|
export function HttpLoaderFactory(httpClient: HttpClient) {
|
||||||
return new TranslateHttpLoader(httpClient, 'assets/lang/', '.json');
|
return new TranslateHttpLoader(httpClient, 'assets/lang/', '.json');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="project-editor">
|
<div class="project-editor">
|
||||||
|
<mat-card-title *ngIf="isNew">{{'PROJECT-EDITOR.TITLE.NEW' | translate}}</mat-card-title>
|
||||||
|
<mat-card-title *ngIf="!isNew">{{formGroup?.get('label')?.value}}</mat-card-title>
|
||||||
<form *ngIf="formGroup" (ngSubmit)="formSubmit()" [formGroup]="formGroup">
|
<form *ngIf="formGroup" (ngSubmit)="formSubmit()" [formGroup]="formGroup">
|
||||||
<mat-card>
|
<mat-card>
|
||||||
<mat-card-header>
|
<mat-card-header>
|
||||||
<mat-card-title *ngIf="isNew">{{'PROJECT-EDITOR.TITLE.NEW' | translate}}</mat-card-title>
|
|
||||||
<mat-card-title *ngIf="!isNew">{{formGroup.get('label').value}}</mat-card-title>
|
|
||||||
<div class="fill-space"></div>
|
<div class="fill-space"></div>
|
||||||
<div *ngIf="!isNew">
|
<div *ngIf="!isNew">
|
||||||
<button *ngIf="!editMode && !isExternalProject()" mat-icon-button (click)="enableForm()">
|
<button *ngIf="!editMode && !isExternalProject()" mat-icon-button (click)="enableForm()">
|
||||||
|
@ -19,77 +19,70 @@
|
||||||
</div>
|
</div>
|
||||||
</mat-card-header>
|
</mat-card-header>
|
||||||
<mat-card-content>
|
<mat-card-content>
|
||||||
|
<div class="row">
|
||||||
|
<mat-form-field class="col-md-12">
|
||||||
|
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.LABEL' | translate}}" type="text" name="label" formControlName="label"
|
||||||
|
required>
|
||||||
|
<mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error>
|
||||||
|
<mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
<mat-form-field>
|
<mat-form-field class="col-md-6">
|
||||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.LABEL' | translate}}" type="text" name="label" formControlName="label"
|
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.ABBREVIATION' | translate}}" type="text" name="abbreviation" formControlName="abbreviation"
|
||||||
required>
|
required>
|
||||||
<mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error>
|
<mat-error *ngIf="formGroup.get('abbreviation').errors?.backendError">{{baseErrorModel.abbreviation}}</mat-error>
|
||||||
<mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
<mat-error *ngIf="formGroup.get('abbreviation').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
<mat-form-field>
|
<mat-form-field class="col-md-6">
|
||||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.ABBREVIATION' | translate}}" type="text" name="abbreviation" formControlName="abbreviation"
|
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri">
|
||||||
required>
|
<mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
|
||||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.backendError">{{baseErrorModel.abbreviation}}</mat-error>
|
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
</mat-form-field>
|
||||||
</mat-form-field>
|
|
||||||
|
|
||||||
<mat-form-field>
|
<mat-form-field class="col-md-6">
|
||||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri">
|
<input matInput (focus)="startDate.open()" (click)="startDate.open()" placeholder="{{'PROJECT-EDITOR.FIELDS.START' | translate}}"
|
||||||
<mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
|
class="table-input" [matDatepicker]="startDate" formControlName="startDate">
|
||||||
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
<mat-datepicker-toggle matSuffix [for]="startDate"></mat-datepicker-toggle>
|
||||||
</mat-form-field>
|
<mat-datepicker #startDate></mat-datepicker>
|
||||||
|
<mat-error *ngIf="formGroup.get('startDate').errors?.backendError">{{this.project.errorModel.startDate}}</mat-error>
|
||||||
|
<mat-error *ngIf="formGroup.get('startDate').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
<table class="input-table full-width">
|
<mat-form-field class="col-md-6">
|
||||||
<tr>
|
<input matInput (focus)="endDate.open()" (click)="endDate.open()" placeholder="{{'PROJECT-EDITOR.FIELDS.END' | translate}}"
|
||||||
<td>
|
class="table-input" [matDatepicker]="endDate" formControlName="endDate">
|
||||||
<mat-form-field>
|
<mat-datepicker-toggle matSuffix [for]="endDate"></mat-datepicker-toggle>
|
||||||
<input matInput (focus)="startDate.open()" (click)="startDate.open()" placeholder="{{'PROJECT-EDITOR.FIELDS.START' | translate}}"
|
<mat-datepicker #endDate></mat-datepicker>
|
||||||
class="table-input" [matDatepicker]="startDate" formControlName="startDate">
|
<mat-error *ngIf="formGroup.get('endDate').errors?.backendError">{{baseErrorModel.endDate}}</mat-error>
|
||||||
<mat-datepicker-toggle matSuffix [for]="startDate"></mat-datepicker-toggle>
|
<mat-error *ngIf="formGroup.get('endDate').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||||
<mat-datepicker #startDate></mat-datepicker>
|
</mat-form-field>
|
||||||
<mat-error *ngIf="formGroup.get('startDate').errors?.backendError">{{this.project.errorModel.startDate}}</mat-error>
|
|
||||||
<mat-error *ngIf="formGroup.get('startDate').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
|
||||||
</mat-form-field>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<mat-form-field>
|
|
||||||
<input matInput (focus)="endDate.open()" (click)="endDate.open()" placeholder="{{'PROJECT-EDITOR.FIELDS.END' | translate}}"
|
|
||||||
class="table-input" [matDatepicker]="endDate" formControlName="endDate">
|
|
||||||
<mat-datepicker-toggle matSuffix [for]="endDate"></mat-datepicker-toggle>
|
|
||||||
<mat-datepicker #endDate></mat-datepicker>
|
|
||||||
<mat-error *ngIf="formGroup.get('endDate').errors?.backendError">{{baseErrorModel.endDate}}</mat-error>
|
|
||||||
<mat-error *ngIf="formGroup.get('endDate').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
|
||||||
</mat-form-field>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<mat-form-field class="full-width">
|
<mat-form-field class="col-md-12">
|
||||||
<textarea matInput class="description-area" placeholder="{{'PROJECT-EDITOR.FIELDS.DESCRIPTION' | translate}}" formControlName="description"
|
<textarea matInput class="description-area" placeholder="{{'PROJECT-EDITOR.FIELDS.DESCRIPTION' | translate}}" formControlName="description"
|
||||||
required></textarea>
|
required></textarea>
|
||||||
<mat-error *ngIf="formGroup.get('description').errors?.backendError">{{errorModel.description}}</mat-error>
|
<mat-error *ngIf="formGroup.get('description').errors?.backendError">{{errorModel.description}}</mat-error>
|
||||||
<mat-error *ngIf="formGroup.get('description').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
<mat-error *ngIf="formGroup.get('description').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<p>{{this.languageResolverService.getBy('editorLogo') | translate}}</p>
|
<p>{{this.languageResolverService.getBy('editorLogo') | translate}}</p>
|
||||||
|
|
||||||
<table class="logo-table full-width">
|
<table class="logo-table col-md-12">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<img mat-card-avatar *ngIf="!formGroup.get('files') || !formGroup.get('files').value" [src]="host+'files/any?type=jpg'">
|
<img mat-card-avatar *ngIf="!formGroup.get('files') || !formGroup.get('files').value" [src]="host+'files/any?type=jpg'">
|
||||||
<img mat-card-avatar *ngIf="formGroup.get('files') && formGroup.get('files').value" [src]="host+'files/'+formGroup.get('files').value[0].id+'?location='+formGroup.get('files').value[0].location+'&type='+formGroup.get('files').value[0].type">
|
<img mat-card-avatar *ngIf="formGroup.get('files') && formGroup.get('files').value" [src]="host+'files/'+formGroup.get('files').value[0].id+'?location='+formGroup.get('files').value[0].location+'&type='+formGroup.get('files').value[0].type">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<app-fileuploader-component [form]="formGroup.get('files')" [label]="'FILE-UPLOADER.PROJECT'" [fileUploader]="uploaderService"></app-fileuploader-component>
|
<app-fileuploader-component [form]="formGroup.get('files')" [label]="'FILE-UPLOADER.PROJECT'" [fileUploader]="uploaderService"></app-fileuploader-component>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div layout="row" class="full-width text-right" align="end">
|
<div class="col-md-12 text-right" align="end">
|
||||||
<button mat-raised-button color="primary" (click)="cancel()" type="button">{{'PROJECT-EDITOR.ACTIONS.CANCEL' | translate}}</button>
|
<button mat-raised-button color="primary" (click)="cancel()" type="button">{{'PROJECT-EDITOR.ACTIONS.CANCEL' | translate}}</button>
|
||||||
<button *ngIf="isNew || editMode" mat-raised-button color="primary" type="submit">{{'PROJECT-EDITOR.ACTIONS.SAVE' | translate}}</button>
|
<button *ngIf="isNew || editMode" mat-raised-button color="primary" type="submit">{{'PROJECT-EDITOR.ACTIONS.SAVE' | translate}}</button>
|
||||||
<button *ngIf="!isNew && editMode" mat-raised-button color="primary" type="button" (click)="delete()">{{'PROJECT-EDITOR.ACTIONS.DELETE' | translate}}</button>
|
<button *ngIf="!isNew && editMode" mat-raised-button color="primary" type="button" (click)="delete()">{{'PROJECT-EDITOR.ACTIONS.DELETE' | translate}}</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -19,10 +19,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-editor {
|
.project-editor {
|
||||||
mat-form-field {
|
|
||||||
width: 100%;
|
|
||||||
padding: 3px;
|
|
||||||
}
|
|
||||||
.fill-space {
|
.fill-space {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
<mat-table [dataSource]="dataSource" matSort (matSortChange)="refresh()">
|
<mat-table [dataSource]="dataSource" matSort (matSortChange)="refresh()">
|
||||||
|
|
||||||
|
|
||||||
<ng-container cdkColumnDef="avatar">
|
<ng-container cdkColumnDef="avatar">
|
||||||
<mat-header-cell *matHeaderCellDef mat-sort-header="avatar">{{'PROJECT-LISTING.COLUMNS.AVATAR' | translate}}</mat-header-cell>
|
<mat-header-cell *matHeaderCellDef mat-sort-header="avatar">{{'PROJECT-LISTING.COLUMNS.AVATAR' | translate}}</mat-header-cell>
|
||||||
<mat-cell *matCellDef="let row">
|
<mat-cell *matCellDef="let row">
|
||||||
|
|
|
@ -2,6 +2,7 @@ ol.no-style {
|
||||||
li {
|
li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
margin-bottom: 0px;
|
||||||
|
margin-top: 20px;
|
||||||
padding-left: 0px
|
padding-left: 0px
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,35 +5,35 @@ import { BreadcrumbItem } from './definition/breadcrumb-item';
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-breadcrumb',
|
selector: 'app-breadcrumb',
|
||||||
templateUrl: './breadcrumb.component.html',
|
templateUrl: './breadcrumb.component.html',
|
||||||
styleUrls: ['./breadcrumb.component.scss'],
|
styleUrls: ['./breadcrumb.component.scss'],
|
||||||
encapsulation: ViewEncapsulation.None
|
encapsulation: ViewEncapsulation.None
|
||||||
})
|
})
|
||||||
export class BreadcrumbComponent implements OnInit {
|
export class BreadcrumbComponent implements OnInit {
|
||||||
breadcrumbs$ = this.router.events
|
breadcrumbs$ = this.router.events
|
||||||
.filter(event => event instanceof NavigationEnd)
|
.filter(event => event instanceof NavigationEnd)
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.flatMap(event => this.buildBreadCrumb(this.activatedRoute.root));
|
.flatMap(event => this.buildBreadCrumb(this.activatedRoute.root));
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
public activatedRoute: ActivatedRoute,
|
public activatedRoute: ActivatedRoute,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private breadCrumbService: BreadCrumbResolverService
|
private breadCrumbService: BreadCrumbResolverService
|
||||||
) {
|
) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> {
|
buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> {
|
||||||
return this.breadCrumbService.resolve(route).map(x => { x.unshift({ label: "Home", url: "/welcome" }); return x; });
|
return this.breadCrumbService.resolve(route).map(x => { x.unshift({ label: 'Home', url: '/welcome' }); return x; });
|
||||||
}
|
}
|
||||||
|
|
||||||
navigate(url, params) {
|
navigate(url, params) {
|
||||||
this.router.navigate([url, params])
|
this.router.navigate([url, params]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 25px 0;
|
margin: 25px 0;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-content {
|
.card-content {
|
||||||
|
|
|
@ -2,29 +2,29 @@ import { Component, OnInit, Input } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-figurecard',
|
selector: 'app-figurecard',
|
||||||
templateUrl: './figurecard.component.html',
|
templateUrl: './figurecard.component.html',
|
||||||
styleUrls: ['./figurecard.component.css']
|
styleUrls: ['./figurecard.component.css']
|
||||||
})
|
})
|
||||||
export class FigurecardComponent implements OnInit {
|
export class FigurecardComponent implements OnInit {
|
||||||
@Input() headerIcon: string;
|
@Input() headerIcon: string;
|
||||||
@Input() category: string;
|
@Input() category: string;
|
||||||
@Input() title: string;
|
@Input() title: string;
|
||||||
@Input() footerIcon: string;
|
@Input() footerIcon: string;
|
||||||
@Input() footContent: string;
|
@Input() footContent: string;
|
||||||
@Input() linearColor: string;
|
@Input() linearColor: string;
|
||||||
@Input() boxShadow: string;
|
@Input() boxShadow: string;
|
||||||
@Input() routelLink: string;
|
@Input() routelLink: string;
|
||||||
@Input() hasFootContent = true;
|
@Input() hasFootContent = true;
|
||||||
|
|
||||||
constructor(private router:Router) { }
|
constructor(private router: Router) { }
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
navigateToUrl(){
|
navigateToUrl() {
|
||||||
this.router.navigate([this.routelLink]);
|
this.router.navigate([this.routelLink]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
* {
|
||||||
|
&:active,
|
||||||
|
:focus {
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
export const environment = {
|
export const environment = {
|
||||||
production: false,
|
production: false,
|
||||||
Server: 'http://localhost:8080/api/',
|
Server: 'http://devel-21.local.cite.gr:8080/api/',
|
||||||
App: 'http://localhost:4200/',
|
App: 'http://localhost:4200/',
|
||||||
HelpServiceUrl: 'localhost:5000/'
|
HelpServiceUrl: 'localhost:5000/'
|
||||||
};
|
};
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -24,3 +24,6 @@ $theme: mat-light-theme($primary, $accent);
|
||||||
background-color: #CF1407;
|
background-color: #CF1407;
|
||||||
color: #111010;
|
color: #111010;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Material-Bootstrap configuration
|
||||||
|
@import "assets/scss/bootstrap-material";
|
|
@ -23,7 +23,8 @@
|
||||||
"import-spacing": true,
|
"import-spacing": true,
|
||||||
"indent": [
|
"indent": [
|
||||||
true,
|
true,
|
||||||
"spaces"
|
"tabs",
|
||||||
|
4
|
||||||
],
|
],
|
||||||
"interface-over-type-literal": true,
|
"interface-over-type-literal": true,
|
||||||
"label-position": true,
|
"label-position": true,
|
||||||
|
|
Loading…
Reference in New Issue