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",
|
||||
"@swimlane/ngx-datatable": "13.0.1",
|
||||
"@types/file-saver": "1.3.0",
|
||||
"bootstrap": "^4.1.2",
|
||||
"core-js": "^2.4.1",
|
||||
"file-saver": "1.3.3",
|
||||
"rxjs": "^6.2.1",
|
||||
|
|
|
@ -9,9 +9,7 @@
|
|||
<help-content position="left"></help-content>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<h4>
|
||||
<app-breadcrumb *ngIf="this.isAuthenticated() && (hasBreadCrumb | async)"></app-breadcrumb>
|
||||
</h4>
|
||||
<app-breadcrumb *ngIf="this.isAuthenticated() && (hasBreadCrumb | async)"></app-breadcrumb>
|
||||
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
||||
import { BaseHttpService } from './utilities/cite-http-service-module/base-http.service';
|
||||
import { DashboardService } from './services/dashboard/dashboard.service';
|
||||
import { DatasetService } from './services/dataset/dataset.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 { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||
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 { 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 { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { FigurecardComponent } from './shared/components/figurecard/figurecard.component';
|
||||
import { HomepageComponent } from './homepage/homepage.component';
|
||||
import { PageNotFoundComponent } from './not-found.component';
|
||||
import { AppComponent } from './app.component';
|
||||
import { NgModule } from "@angular/core";
|
||||
import { DatasetProfileModule } from './dataset-profile-form/dataset-profile.module';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { WelcomepageComponent } from './welcomepage/welcomepage.component';
|
||||
import { HelpContentService } from './services/help-content/help-content.service';
|
||||
import { B2AccessLoginComponent } from './user-management/login/b2access/b2access-login.component';
|
||||
import { RecentActivityComponent } from './users/activity/recent-activity.component';
|
||||
import { LanguageResolverService } from './services/language-resolver/language-resolver.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 { AuthGuard } from './shared/guards/auth.guard';
|
||||
import { UrlUtilities } from './utilities/UrlUtilities';
|
||||
import { BreadCrumbResolverService } from './services/breadcrumb/breadcrumb-resolver.service';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
PageNotFoundComponent,
|
||||
HomepageComponent,
|
||||
RecentActivityComponent,
|
||||
WelcomepageComponent,
|
||||
HelpContentComponent,
|
||||
AsideHelpContentComponent,
|
||||
B2AccessLoginComponent,
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
ReactiveFormsModule,
|
||||
FormsModule,
|
||||
HttpModule,
|
||||
HttpClientModule,
|
||||
BaseHttpModule.forRoot(),
|
||||
declarations: [
|
||||
AppComponent,
|
||||
PageNotFoundComponent,
|
||||
HomepageComponent,
|
||||
RecentActivityComponent,
|
||||
WelcomepageComponent,
|
||||
HelpContentComponent,
|
||||
AsideHelpContentComponent,
|
||||
B2AccessLoginComponent,
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
ReactiveFormsModule,
|
||||
FormsModule,
|
||||
HttpModule,
|
||||
HttpClientModule,
|
||||
BaseHttpModule.forRoot(),
|
||||
|
||||
CommonModule,
|
||||
AppRoutingModule,
|
||||
BrowserAnimationsModule,
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useFactory: HttpLoaderFactory,
|
||||
deps: [HttpClient]
|
||||
}
|
||||
}),
|
||||
BrowserAnimationsModule,
|
||||
MaterialModule,
|
||||
SharedModule,
|
||||
CommonModule,
|
||||
AppRoutingModule,
|
||||
BrowserAnimationsModule,
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useFactory: HttpLoaderFactory,
|
||||
deps: [HttpClient]
|
||||
}
|
||||
}),
|
||||
BrowserAnimationsModule,
|
||||
MaterialModule,
|
||||
SharedModule,
|
||||
|
||||
LoginModule.forRoot({
|
||||
loginProviders: [
|
||||
LoginOptions.facebookOauth,
|
||||
LoginOptions.googleOauth,
|
||||
LoginOptions.linkedInOauth,
|
||||
LoginOptions.twitterOauth,
|
||||
LoginOptions.b2Access
|
||||
],
|
||||
facebookConfiguration: { clientId: "110586756143149" },
|
||||
googleConfiguration: { clientId: '524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googleusercontent.com' },
|
||||
linkedInConfiguration: {
|
||||
clientId: "86bl8vfk77clh9",
|
||||
oauthUrl: "https://www.linkedin.com/oauth/v2/authorization",
|
||||
redirectUri: HostConfiguration.App + "login/linkedin",
|
||||
accessTokenUri: "https://www.linkedin.com/oauth/v2/accessToken",
|
||||
clientSecret: "2OCO9e3wKylW05Tt"
|
||||
},
|
||||
twitterConfiguration: { clientId: "HiR4hQH9HNubKC5iKQy0l4mAZ", oauthUrl: "https://api.twitter.com/oauth/authenticate" },
|
||||
b2accessConfiguration: {
|
||||
clientId: "eudatdmptool",
|
||||
clientSecret: "A3b*1*92",
|
||||
oauthUrl: "https://b2access-integration.fz-juelich.de:443/oauth2-as/oauth2-authz",
|
||||
redirectUri: "http://dl043.madgik.di.uoa.gr/api/oauth/authorized/b2access",
|
||||
accessTokenUri: "https://b2access-integration.fz-juelich.de:443/oauth2/token"
|
||||
}
|
||||
}),
|
||||
LoginModule.forRoot({
|
||||
loginProviders: [
|
||||
LoginOptions.facebookOauth,
|
||||
LoginOptions.googleOauth,
|
||||
LoginOptions.linkedInOauth,
|
||||
LoginOptions.twitterOauth,
|
||||
LoginOptions.b2Access
|
||||
],
|
||||
facebookConfiguration: { clientId: '110586756143149' },
|
||||
googleConfiguration: { clientId: '524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googleusercontent.com' },
|
||||
linkedInConfiguration: {
|
||||
clientId: '86bl8vfk77clh9',
|
||||
oauthUrl: 'https://www.linkedin.com/oauth/v2/authorization',
|
||||
redirectUri: HostConfiguration.App + 'login/linkedin',
|
||||
accessTokenUri: 'https://www.linkedin.com/oauth/v2/accessToken',
|
||||
clientSecret: '2OCO9e3wKylW05Tt'
|
||||
},
|
||||
twitterConfiguration: { clientId: 'HiR4hQH9HNubKC5iKQy0l4mAZ', oauthUrl: 'https://api.twitter.com/oauth/authenticate' },
|
||||
b2accessConfiguration: {
|
||||
clientId: 'eudatdmptool',
|
||||
clientSecret: 'A3b*1*92',
|
||||
oauthUrl: 'https://b2access-integration.fz-juelich.de:443/oauth2-as/oauth2-authz',
|
||||
redirectUri: 'http://dl043.madgik.di.uoa.gr/api/oauth/authorized/b2access',
|
||||
accessTokenUri: 'https://b2access-integration.fz-juelich.de:443/oauth2/token'
|
||||
}
|
||||
}),
|
||||
|
||||
],
|
||||
providers: [
|
||||
AuthGuard,
|
||||
AuthService,
|
||||
BaseHttpService,
|
||||
UrlUtilities,
|
||||
DashboardService,
|
||||
HelpContentService,
|
||||
LanguageService,
|
||||
LanguageResolverService,
|
||||
BreadCrumbResolverService
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
],
|
||||
providers: [
|
||||
AuthGuard,
|
||||
AuthService,
|
||||
BaseHttpService,
|
||||
UrlUtilities,
|
||||
DashboardService,
|
||||
HelpContentService,
|
||||
LanguageService,
|
||||
LanguageResolverService,
|
||||
BreadCrumbResolverService
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule {
|
||||
constructor() {
|
||||
}
|
||||
constructor() {
|
||||
}
|
||||
}
|
||||
|
||||
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">
|
||||
<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">
|
||||
<mat-card>
|
||||
<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 *ngIf="!isNew">
|
||||
<button *ngIf="!editMode && !isExternalProject()" mat-icon-button (click)="enableForm()">
|
||||
|
@ -19,77 +19,70 @@
|
|||
</div>
|
||||
</mat-card-header>
|
||||
<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>
|
||||
<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 class="col-md-6">
|
||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.ABBREVIATION' | translate}}" type="text" name="abbreviation" formControlName="abbreviation"
|
||||
required>
|
||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.backendError">{{baseErrorModel.abbreviation}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.ABBREVIATION' | translate}}" type="text" name="abbreviation" formControlName="abbreviation"
|
||||
required>
|
||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.backendError">{{baseErrorModel.abbreviation}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('abbreviation').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="col-md-6">
|
||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri">
|
||||
<mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<input matInput placeholder="{{'PROJECT-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri">
|
||||
<mat-error *ngIf="formGroup.get('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
|
||||
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="col-md-6">
|
||||
<input matInput (focus)="startDate.open()" (click)="startDate.open()" placeholder="{{'PROJECT-EDITOR.FIELDS.START' | translate}}"
|
||||
class="table-input" [matDatepicker]="startDate" formControlName="startDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="startDate"></mat-datepicker-toggle>
|
||||
<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">
|
||||
<tr>
|
||||
<td>
|
||||
<mat-form-field>
|
||||
<input matInput (focus)="startDate.open()" (click)="startDate.open()" placeholder="{{'PROJECT-EDITOR.FIELDS.START' | translate}}"
|
||||
class="table-input" [matDatepicker]="startDate" formControlName="startDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="startDate"></mat-datepicker-toggle>
|
||||
<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>
|
||||
</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="col-md-6">
|
||||
<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>
|
||||
|
||||
<mat-form-field class="full-width">
|
||||
<textarea matInput class="description-area" placeholder="{{'PROJECT-EDITOR.FIELDS.DESCRIPTION' | translate}}" formControlName="description"
|
||||
required></textarea>
|
||||
<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-form-field>
|
||||
<p>{{this.languageResolverService.getBy('editorLogo') | translate}}</p>
|
||||
<mat-form-field class="col-md-12">
|
||||
<textarea matInput class="description-area" placeholder="{{'PROJECT-EDITOR.FIELDS.DESCRIPTION' | translate}}" formControlName="description"
|
||||
required></textarea>
|
||||
<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-form-field>
|
||||
<p>{{this.languageResolverService.getBy('editorLogo') | translate}}</p>
|
||||
|
||||
<table class="logo-table full-width">
|
||||
<tr>
|
||||
<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/'+formGroup.get('files').value[0].id+'?location='+formGroup.get('files').value[0].location+'&type='+formGroup.get('files').value[0].type">
|
||||
</td>
|
||||
<td>
|
||||
<app-fileuploader-component [form]="formGroup.get('files')" [label]="'FILE-UPLOADER.PROJECT'" [fileUploader]="uploaderService"></app-fileuploader-component>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div layout="row" class="full-width text-right" align="end">
|
||||
<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="button" (click)="delete()">{{'PROJECT-EDITOR.ACTIONS.DELETE' | translate}}</button>
|
||||
<table class="logo-table col-md-12">
|
||||
<tr>
|
||||
<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/'+formGroup.get('files').value[0].id+'?location='+formGroup.get('files').value[0].location+'&type='+formGroup.get('files').value[0].type">
|
||||
</td>
|
||||
<td>
|
||||
<app-fileuploader-component [form]="formGroup.get('files')" [label]="'FILE-UPLOADER.PROJECT'" [fileUploader]="uploaderService"></app-fileuploader-component>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<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 *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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</form>
|
||||
|
|
|
@ -19,10 +19,6 @@
|
|||
}
|
||||
|
||||
.project-editor {
|
||||
mat-form-field {
|
||||
width: 100%;
|
||||
padding: 3px;
|
||||
}
|
||||
.fill-space {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
<mat-table [dataSource]="dataSource" matSort (matSortChange)="refresh()">
|
||||
|
||||
|
||||
<ng-container cdkColumnDef="avatar">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header="avatar">{{'PROJECT-LISTING.COLUMNS.AVATAR' | translate}}</mat-header-cell>
|
||||
<mat-cell *matCellDef="let row">
|
||||
|
|
|
@ -2,6 +2,7 @@ ol.no-style {
|
|||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
margin-bottom: 0px;
|
||||
margin-top: 20px;
|
||||
padding-left: 0px
|
||||
}
|
||||
|
|
|
@ -5,35 +5,35 @@ import { BreadcrumbItem } from './definition/breadcrumb-item';
|
|||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
@Component({
|
||||
selector: 'app-breadcrumb',
|
||||
templateUrl: './breadcrumb.component.html',
|
||||
styleUrls: ['./breadcrumb.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
selector: 'app-breadcrumb',
|
||||
templateUrl: './breadcrumb.component.html',
|
||||
styleUrls: ['./breadcrumb.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class BreadcrumbComponent implements OnInit {
|
||||
breadcrumbs$ = this.router.events
|
||||
.filter(event => event instanceof NavigationEnd)
|
||||
.distinctUntilChanged()
|
||||
.flatMap(event => this.buildBreadCrumb(this.activatedRoute.root));
|
||||
breadcrumbs$ = this.router.events
|
||||
.filter(event => event instanceof NavigationEnd)
|
||||
.distinctUntilChanged()
|
||||
.flatMap(event => this.buildBreadCrumb(this.activatedRoute.root));
|
||||
|
||||
|
||||
constructor(
|
||||
public activatedRoute: ActivatedRoute,
|
||||
private router: Router,
|
||||
private breadCrumbService: BreadCrumbResolverService
|
||||
) {
|
||||
constructor(
|
||||
public activatedRoute: ActivatedRoute,
|
||||
private router: Router,
|
||||
private breadCrumbService: BreadCrumbResolverService
|
||||
) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
ngOnInit() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> {
|
||||
return this.breadCrumbService.resolve(route).map(x => { x.unshift({ label: "Home", url: "/welcome" }); return x; });
|
||||
}
|
||||
buildBreadCrumb(route: ActivatedRoute): Observable<BreadcrumbItem[]> {
|
||||
return this.breadCrumbService.resolve(route).map(x => { x.unshift({ label: 'Home', url: '/welcome' }); return x; });
|
||||
}
|
||||
|
||||
navigate(url, params) {
|
||||
this.router.navigate([url, params])
|
||||
}
|
||||
navigate(url, params) {
|
||||
this.router.navigate([url, params]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
position: relative;
|
||||
width: 100%;
|
||||
margin: 25px 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.card-content {
|
||||
|
|
|
@ -2,29 +2,29 @@ import { Component, OnInit, Input } from '@angular/core';
|
|||
import { Router } from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-figurecard',
|
||||
templateUrl: './figurecard.component.html',
|
||||
styleUrls: ['./figurecard.component.css']
|
||||
selector: 'app-figurecard',
|
||||
templateUrl: './figurecard.component.html',
|
||||
styleUrls: ['./figurecard.component.css']
|
||||
})
|
||||
export class FigurecardComponent implements OnInit {
|
||||
@Input() headerIcon: string;
|
||||
@Input() category: string;
|
||||
@Input() title: string;
|
||||
@Input() footerIcon: string;
|
||||
@Input() footContent: string;
|
||||
@Input() linearColor: string;
|
||||
@Input() boxShadow: string;
|
||||
@Input() routelLink: string;
|
||||
@Input() hasFootContent = true;
|
||||
@Input() headerIcon: string;
|
||||
@Input() category: string;
|
||||
@Input() title: string;
|
||||
@Input() footerIcon: string;
|
||||
@Input() footContent: string;
|
||||
@Input() linearColor: string;
|
||||
@Input() boxShadow: string;
|
||||
@Input() routelLink: string;
|
||||
@Input() hasFootContent = true;
|
||||
|
||||
constructor(private router:Router) { }
|
||||
constructor(private router: Router) { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
navigateToUrl(){
|
||||
this.router.navigate([this.routelLink]);
|
||||
navigateToUrl() {
|
||||
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 = {
|
||||
production: false,
|
||||
Server: 'http://localhost:8080/api/',
|
||||
Server: 'http://devel-21.local.cite.gr:8080/api/',
|
||||
App: 'http://localhost:4200/',
|
||||
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;
|
||||
color: #111010;
|
||||
}
|
||||
|
||||
//Material-Bootstrap configuration
|
||||
@import "assets/scss/bootstrap-material";
|
|
@ -23,7 +23,8 @@
|
|||
"import-spacing": true,
|
||||
"indent": [
|
||||
true,
|
||||
"spaces"
|
||||
"tabs",
|
||||
4
|
||||
],
|
||||
"interface-over-type-literal": true,
|
||||
"label-position": true,
|
||||
|
|
Loading…
Reference in New Issue