# Conflicts:
#	dmp-backend/src/test/resources/applicationContextTEST.xml
This commit is contained in:
Diamantis Tziotzios 2018-07-23 18:56:09 +03:00
parent 29884ab016
commit 22582676a3
16 changed files with 2531 additions and 2533 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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",

View File

@ -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">

View File

@ -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');
} }

View File

@ -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>

View File

@ -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;
} }

View File

@ -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">

View File

@ -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
} }

View File

@ -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]);
} }
} }

View File

@ -3,6 +3,7 @@
position: relative; position: relative;
width: 100%; width: 100%;
margin: 25px 0; margin: 25px 0;
cursor: pointer;
} }
.card-content { .card-content {

View File

@ -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]);
} }
} }

View File

@ -0,0 +1,10 @@
* {
&:active,
:focus {
outline: none !important;
}
}
label {
margin-bottom: 0;
}

View File

@ -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

View File

@ -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";

View File

@ -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,