This commit is contained in:
annampak 2018-01-11 18:29:23 +02:00
commit d617ad0bb1
28 changed files with 27082 additions and 331 deletions

View File

@ -163,7 +163,6 @@ public class DMP implements Serializable,DataEntity<DMP> {
} }
public Set<UserInfo> getUsers() { public Set<UserInfo> getUsers() {
return users; return users;
} }
@ -262,7 +261,7 @@ public class DMP implements Serializable,DataEntity<DMP> {
this.description = entity.getDescription(); this.description = entity.getDescription();
this.researchers = entity.getResearchers(); this.researchers = entity.getResearchers();
this.organisations = entity.getOrganisations(); this.organisations = entity.getOrganisations();
this.users = entity.getUsers(); if (entity.getUsers() != null) this.users = entity.getUsers();
} }
@Override @Override

View File

@ -21,6 +21,7 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
private String extendedDescription; private String extendedDescription;
private Multiplicity multiplicity; private Multiplicity multiplicity;
private boolean hasCommentField; private boolean hasCommentField;
private String commentFieldValue;
public List<Field> getFields() { public List<Field> getFields() {
return fields; return fields;
} }
@ -85,12 +86,19 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
this.hasCommentField = hasCommentField; this.hasCommentField = hasCommentField;
} }
public String getCommentFieldValue() {
return commentFieldValue;
}
public void setCommentFieldValue(String commentFieldValue) {
this.commentFieldValue = commentFieldValue;
}
@Override @Override
public Element toXml(Document doc) { public Element toXml(Document doc) {
Element fieldSet = doc.createElement("fieldSet"); Element fieldSet = doc.createElement("fieldSet");
fieldSet.setAttribute("id", this.id); fieldSet.setAttribute("id", this.id);
fieldSet.setAttribute("ordinal", ""+this.ordinal); fieldSet.setAttribute("ordinal", ""+this.ordinal);
fieldSet.setAttribute("hasCommentField",""+this.hasCommentField);
Element title = doc.createElement("title"); Element title = doc.createElement("title");
title.setTextContent(this.title); title.setTextContent(this.title);
@ -104,12 +112,17 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
multiplicity.setAttribute("min", ""+this.multiplicity.getMin()); multiplicity.setAttribute("min", ""+this.multiplicity.getMin());
multiplicity.setAttribute("max", ""+this.multiplicity.getMax()); multiplicity.setAttribute("max", ""+this.multiplicity.getMax());
Element commentField = doc.createElement("commentField");
commentField.setAttribute("hasCommentField",""+this.hasCommentField);
commentField.setAttribute("commentFieldValue",this.commentFieldValue);
Element fieldsElement = doc.createElement("fields"); Element fieldsElement = doc.createElement("fields");
for(Field field : fields){ for(Field field : fields){
fieldsElement.appendChild(field.toXml(doc)); fieldsElement.appendChild(field.toXml(doc));
} }
fieldSet.appendChild(commentField);
fieldSet.appendChild(fieldsElement); fieldSet.appendChild(fieldsElement);
fieldSet.appendChild(multiplicity); fieldSet.appendChild(multiplicity);
fieldSet.appendChild(title); fieldSet.appendChild(title);
@ -123,14 +136,15 @@ public class FieldSet implements DatabaseViewStyleDefinition,XmlSerializable<Fie
this.id = element.getAttribute("id"); this.id = element.getAttribute("id");
this.ordinal = Integer.parseInt(element.getAttribute("ordinal")); this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
this.fields = new LinkedList(); this.fields = new LinkedList();
this.hasCommentField = Boolean.parseBoolean(element.getAttribute("hasCommentField"));
Element title = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title"); Element title = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title");
this.title = title.getTextContent(); this.title = title.getTextContent();
Element description = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description"); Element description = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description");
this.description = description.getTextContent(); this.description = description.getTextContent();
Element extendedDescription = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription"); Element extendedDescription = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription");
this.extendedDescription = extendedDescription.getTextContent(); this.extendedDescription = extendedDescription.getTextContent();
Element commentField = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "commentField");
this.hasCommentField = Boolean.parseBoolean(commentField.getAttribute("hasCommentField"));
this.commentFieldValue = commentField.getAttribute("commentFieldValue");
Element fields = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fields"); Element fields = (Element)XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fields");
if(fields!=null){ if(fields!=null){

View File

@ -41,7 +41,8 @@ public class DataManagementPlanManager {
public eu.eudat.models.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository, String id, Principal principal) throws InstantiationException, IllegalAccessException { public eu.eudat.models.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository, String id, Principal principal) throws InstantiationException, IllegalAccessException {
DMP dataManagementPlanEntity = dmpsRepository.find(UUID.fromString(id)); DMP dataManagementPlanEntity = dmpsRepository.find(UUID.fromString(id));
if(dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size()==0)throw new UnauthorisedException(); if (dataManagementPlanEntity.getCreator().getId()!=principal.getId()&&dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();
eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan(); eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan();
datamanagementPlan.fromDataModel(dataManagementPlanEntity); datamanagementPlan.fromDataModel(dataManagementPlanEntity);
return datamanagementPlan; return datamanagementPlan;

View File

@ -22,6 +22,7 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
private List<Field> fields; private List<Field> fields;
private List<FieldSet> multiplicityItems; private List<FieldSet> multiplicityItems;
private boolean hasCommentField; private boolean hasCommentField;
private String commentFieldValue;
public List<Field> getFields() { public List<Field> getFields() {
Collections.sort(this.fields); Collections.sort(this.fields);
return fields; return fields;
@ -79,8 +80,6 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
this.multiplicity = multiplicity; this.multiplicity = multiplicity;
} }
public List<FieldSet> getMultiplicityItems() { public List<FieldSet> getMultiplicityItems() {
return multiplicityItems; return multiplicityItems;
} }
@ -93,12 +92,20 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
this.ordinal = ordinal; this.ordinal = ordinal;
} }
public void setHasCommentField(boolean hasCommentField) {
this.hasCommentField = hasCommentField;
}
public boolean getHasCommentField() { public boolean getHasCommentField() {
return hasCommentField; return hasCommentField;
} }
public void setHasCommentField(boolean hasCommentField) { public String getCommentFieldValue() {
this.hasCommentField = hasCommentField; return commentFieldValue;
}
public void setCommentFieldValue(String commentFieldValue) {
this.commentFieldValue = commentFieldValue;
} }
@Override @Override
@ -109,6 +116,7 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
item.setOrdinal(this.ordinal); item.setOrdinal(this.ordinal);
item.setHasCommentField(this.hasCommentField); item.setHasCommentField(this.hasCommentField);
item.setMultiplicity(this.multiplicity); item.setMultiplicity(this.multiplicity);
item.setCommentFieldValue(this.commentFieldValue);
return item; return item;
} }
@ -122,6 +130,7 @@ public class FieldSet implements Comparable,PropertiesModelBuilder, ViewStyleDef
this.extendedDescription = item.getExtendedDescription(); this.extendedDescription = item.getExtendedDescription();
this.hasCommentField = item.getHasCommentField(); this.hasCommentField = item.getHasCommentField();
this.multiplicity = item.getMultiplicity(); this.multiplicity = item.getMultiplicity();
this.commentFieldValue = item.getCommentFieldValue();
} }
@Override @Override

View File

@ -47,7 +47,7 @@ public class LinkedInTokenValidator implements TokenValidator {
LinkedInProfile linkedInProfile = linkedInService.profileOperations().getUserProfile(); LinkedInProfile linkedInProfile = linkedInService.profileOperations().getUserProfile();
LoginProviderUser user = new LoginProviderUser(); LoginProviderUser user = new LoginProviderUser();
if (user.getEmail() == null) throw new UnauthorisedException("Cannot login user.LinkedIn account did not provide email"); if (linkedInProfile.getEmailAddress() == null) throw new UnauthorisedException("Cannot login user.LinkedIn account did not provide email");
user.setEmail(linkedInProfile.getEmailAddress()); user.setEmail(linkedInProfile.getEmailAddress());
user.setIsVerified(true); //TODO user.setIsVerified(true); //TODO
user.setName(linkedInProfile.getFirstName() + " " + linkedInProfile.getLastName()); user.setName(linkedInProfile.getFirstName() + " " + linkedInProfile.getLastName());

View File

@ -80,7 +80,7 @@ public class AuthenticationService {
credential.setCreationTime(new Date()); credential.setCreationTime(new Date());
credential.setStatus(1); credential.setStatus(1);
credential.setLastUpdateTime(new Date()); credential.setLastUpdateTime(new Date());
credential.setProvider((int) TokenValidatorFactoryImpl.LoginProvider.FACEBOOK.getValue()); credential.setProvider((int) profile.getProvider().getValue());
credential.setSecret(profile.getSecret()); credential.setSecret(profile.getSecret());
if(userInfo == null) { if(userInfo == null) {
userInfo = new UserInfo(); userInfo = new UserInfo();

View File

@ -19,7 +19,7 @@ configuration.externalUrls = file:///C:\\Users\\ikalyvas\\Documents\\Projects\\O
spring.mail.default-encoding=UTF-8 spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.gmail.com spring.mail.host=smtp.gmail.com
spring.mail.username=kalivasioan@gmail.com spring.mail.username=kalivasioan@gmail.com
spring.mail.password=A3b*1*92 spring.mail.password=A3b*1*92giannis
spring.mail.port=587 spring.mail.port=587
spring.mail.protocol=smtp spring.mail.protocol=smtp
spring.mail.test-connection=false spring.mail.test-connection=false
@ -38,7 +38,7 @@ google.login.clientId = 524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googl
########################LINKEDIN LOGIN Properties#############################HiR4hQH9HNubKC5iKQy0l4mAZ ########################LINKEDIN LOGIN Properties#############################HiR4hQH9HNubKC5iKQy0l4mAZ
linkedin.login.clientId = 86bl8vfk77clh9 linkedin.login.clientId = 86bl8vfk77clh9
linkedin.login.clientSecret = 2OCO9e3wKylW05Tt linkedin.login.clientSecret = 2OCO9e3wKylW05Tt
linkedin.login.redirect_uri = 2OCO9e3wKylW05Tt linkedin.login.redirect_uri = http://localhost:4200/login/linkedin
########################LINKEDIN LOGIN Properties############################# ########################LINKEDIN LOGIN Properties#############################
twitter.login.clientId = HiR4hQH9HNubKC5iKQy0l4mAZ twitter.login.clientId = HiR4hQH9HNubKC5iKQy0l4mAZ

View File

@ -3,10 +3,10 @@
<mat-step [stepControl]="formGroup"> <mat-step [stepControl]="formGroup">
<form *ngIf="formGroup" [formGroup]="formGroup"> <form *ngIf="formGroup" [formGroup]="formGroup">
<ng-template matStepLabel>{{'DATASET-WIZARD.FIRST-STEP.TITLE' | translate}}</ng-template> <ng-template matStepLabel>{{'DATASET-WIZARD.FIRST-STEP.TITLE' | translate}}</ng-template>
<auto-complete class="full-width" placeholder="{{'DATASET-WIZARD.FIRST-STEP.DMP' | translate}}" [configuration]="dmpAutoCompleteConfiguration" <auto-complete class="mat-form-field-full-width" placeholder="{{'DATASET-WIZARD.FIRST-STEP.DMP' | translate}}" [configuration]="dmpAutoCompleteConfiguration"
titleKey="label" [control]="formGroup.get('dmp')" [required]="true"> titleKey="label" [control]="formGroup.get('dmp')" [required]="true">
</auto-complete> </auto-complete>
<auto-complete class="full-width" placeholder="{{'DATASET-WIZARD.FIRST-STEP.PROFILE' | translate}}" [configuration]="datasetProfileAutoCompleteConfiguration" <auto-complete class="mat-form-field-full-width" placeholder="{{'DATASET-WIZARD.FIRST-STEP.PROFILE' | translate}}" [configuration]="datasetProfileAutoCompleteConfiguration"
titleKey="label" [control]="formGroup.get('profile')" [required]="true" [disabled]="!formGroup.get('dmp').value"> titleKey="label" [control]="formGroup.get('profile')" [required]="true" [disabled]="!formGroup.get('dmp').value">
</auto-complete> </auto-complete>
<div> <div>

View File

@ -11,10 +11,13 @@
} }
.data-management-plan-editor { .data-management-plan-editor {
.mat-form-field-full-width{
mat-form-field { mat-form-field {
width: 100%; width: 100%;
padding: 3px; padding: 3px;
} }
}
.mat-card { .mat-card {
margin: 16px 0; margin: 16px 0;

View File

@ -3,8 +3,9 @@
<app-datasets-criteria-component></app-datasets-criteria-component> <app-datasets-criteria-component></app-datasets-criteria-component>
<mat-card class="mat-card"> <mat-card class="mat-card">
<mat-card-header>
<mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar> <mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
</mat-card-header>
<mat-table [dataSource]="dataSource" matSort> <mat-table [dataSource]="dataSource" matSort>
<!-- Column Definition: Name --> <!-- Column Definition: Name -->

View File

@ -2,10 +2,6 @@
margin: 24px; margin: 24px;
} }
.mat-progress-bar {
position: absolute;
}
.mat-fab-bottom-right { .mat-fab-bottom-right {
top: auto !important; top: auto !important;
right: 20px !important; right: 20px !important;

View File

@ -5,14 +5,14 @@
<mat-card-title *ngIf="!isNew">{{'DATASET-EDITOR.TITLE.EDIT' | translate}} {{dataset.label}}</mat-card-title> <mat-card-title *ngIf="!isNew">{{'DATASET-EDITOR.TITLE.EDIT' | translate}} {{dataset.label}}</mat-card-title>
<mat-card-content> <mat-card-content>
<mat-form-field> <mat-form-field class="full-width">
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" <input matInput placeholder="{{'DATASET-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label"
required> required>
<mat-error *ngIf="formGroup.get('label').errors?.backendError">{{baseErrorModel.label}}</mat-error> <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-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field class="full-width">
<input matInput placeholder="{{'DATASET-EDITOR.FIELDS.URI' | translate}}" type="text" name="uri" formControlName="uri" required> <input matInput placeholder="{{'DATASET-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('uri').errors?.backendError">{{baseErrorModel.uri}}</mat-error>
<mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('uri').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>

View File

@ -11,10 +11,13 @@
} }
.project-editor { .project-editor {
.mat-form-field-full-width{
mat-form-field { mat-form-field {
width: 100%; width: 100%;
padding: 3px; padding: 3px;
} }
}
.mat-card { .mat-card {
margin: 16px 0; margin: 16px 0;

View File

@ -18,7 +18,7 @@ import { ExternalSourcesItemModel } from "../../models/external-sources/External
@Component({ @Component({
selector: 'app-dataset-editor-component', selector: 'app-dataset-editor-component',
templateUrl: 'dataset-editor.component.html', templateUrl: 'dataset-editor.component.html',
styleUrls: ['./dataset-editor.component.css'], styleUrls: ['./dataset-editor.component.scss'],
providers: [DatasetService, ExternalSourcesService], providers: [DatasetService, ExternalSourcesService],
encapsulation: ViewEncapsulation.None encapsulation: ViewEncapsulation.None
}) })

View File

@ -3,8 +3,9 @@
<app-dmp-criteria-component></app-dmp-criteria-component> <app-dmp-criteria-component></app-dmp-criteria-component>
<mat-card class="mat-card"> <mat-card class="mat-card">
<mat-card-header>
<mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar> <mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
</mat-card-header>
<mat-table [dataSource]="dataSource" matSort> <mat-table [dataSource]="dataSource" matSort>
@ -49,7 +50,7 @@
<mat-cell *matCellDef="let row"> <mat-cell *matCellDef="let row">
<mat-menu #actionsMenu="matMenu"> <mat-menu #actionsMenu="matMenu">
<button mat-menu-item (click)="rowClick(row.id)"><mat-icon>mode_edit</mat-icon>{{'DMP-LISTING.ACTIONS.EDIT' | translate}}</button> <button mat-menu-item (click)="rowClick(row.id)"><mat-icon>mode_edit</mat-icon>{{'DMP-LISTING.ACTIONS.EDIT' | translate}}</button>
<button mat-menu-item (click)="openShareDialog(row.id)"><mat-icon>insert_invitation</mat-icon>{{'DMP-LISTING.ACTIONS.INVITE' | translate}}</button> <button mat-menu-item (click)="openShareDialog(row.id,row.label)"><mat-icon>insert_invitation</mat-icon>{{'DMP-LISTING.ACTIONS.INVITE' | translate}}</button>
</mat-menu> </mat-menu>
<button mat-icon-button [matMenuTriggerFor]="actionsMenu"> <button mat-icon-button [matMenuTriggerFor]="actionsMenu">
<mat-icon>more_vert</mat-icon> <mat-icon>more_vert</mat-icon>

View File

@ -2,10 +2,6 @@
margin: 24px; margin: 24px;
} }
.mat-progress-bar {
position: absolute;
}
.mat-fab-bottom-right { .mat-fab-bottom-right {
top: auto !important; top: auto !important;
right: 20px !important; right: 20px !important;

View File

@ -58,12 +58,13 @@ export class DataManagementPlanListingComponent implements OnInit {
return defaultCriteria; return defaultCriteria;
} }
openShareDialog(rowId: any) { openShareDialog(rowId: any, rowName: any) {
let dialogRef = this.dialog.open(InvitationComponent, { let dialogRef = this.dialog.open(InvitationComponent, {
height: '200px', height: '200px',
width: '700px', width: '700px',
data: { data: {
dmpId: rowId dmpId: rowId,
dmpName: rowName
} }
}); });
} }

View File

@ -5,7 +5,7 @@
<mat-card-title *ngIf="!isNew">{{formGroup.get('label').value}}</mat-card-title> <mat-card-title *ngIf="!isNew">{{formGroup.get('label').value}}</mat-card-title>
<mat-card-content> <mat-card-content>
<mat-form-field> <mat-form-field class="full-width">
<input matInput placeholder="{{'DMP-EDITOR.FIELDS.NAME' | translate}}" type="text" name="label" formControlName="label" required> <input matInput placeholder="{{'DMP-EDITOR.FIELDS.NAME' | 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?.backendError">{{baseErrorModel.label}}</mat-error>
<mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('label').errors?.required">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
@ -18,7 +18,7 @@
<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>
<auto-complete class="full-width" placeholder="{{'DMP-EDITOR.FIELDS.PROJECT' | translate}}" <auto-complete class="mat-form-field-full-width" placeholder="{{'DMP-EDITOR.FIELDS.PROJECT' | translate}}"
[configuration]="projectAutoCompleteConfiguration" [configuration]="projectAutoCompleteConfiguration"
titleKey="label" titleKey="label"
[control]="formGroup.get('project')" [control]="formGroup.get('project')"

View File

@ -11,10 +11,14 @@
} }
.data-management-plan-editor { .data-management-plan-editor {
.mat-form-field-full-width{
mat-form-field { mat-form-field {
width: 100%; width: 100%;
padding: 3px; padding: 3px;
} }
}
.mat-card { .mat-card {
margin: 16px 0; margin: 16px 0;

View File

@ -1,7 +1,8 @@
<div> <form *ngIf="formGroup" [formGroup]="formGroup">
<form *ngIf="formGroup" (ngSubmit)="formSubmit()" [formGroup]="formGroup"> <h1 mat-dialog-title>{{'INVITATION-EDITOR.TITLE' | translate}} {{data.dmpName}}</h1>
<td-chips color="accent" [items]="filteredUsers" formControlName="users" placeholder="{{'INVITATION-EDITOR.TITLE' | translate}}" <div mat-dialog-content>
(inputChange)="filterUsers($event)" [requireMatch]="false"> <td-chips color="accent" [items]="filteredUsers" formControlName="users" placeholder="{{'INVITATION-EDITOR.AUTOCOMPLETE-TITLE' | translate}}"
(inputChange)="filterUsers($event)" requireMatch>
<ng-template td-chip let-chip="chip"> <ng-template td-chip let-chip="chip">
<div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div> <div class="tc-grey-100 bgc-teal-700" td-chip-avatar>{{chip.name.substring(0, 1).toUpperCase()}}</div>
{{chip.name}} {{chip.name}}
@ -13,6 +14,10 @@
</ng-template> </ng-template>
<mat-progress-bar [style.height.px]="2" *ngIf="filteredUsersAsync" mode="indeterminate"></mat-progress-bar> <mat-progress-bar [style.height.px]="2" *ngIf="filteredUsersAsync" mode="indeterminate"></mat-progress-bar>
</td-chips> </td-chips>
<button mat-raised-button color="primary" (click)="send()" type="button">{{'INVITATION-EDITOR.ACTIONS.SEND-INVITATION' | translate}}</button>
</form>
</div> </div>
<div mat-dialog-actions>
<div layout="row" class="full-width text-right" align="end">
<button mat-raised-button color="primary" (click)="send()" type="button">{{'INVITATION-EDITOR.ACTIONS.SEND-INVITATION' | translate}}</button>
</div>
</div>
</form>

View File

@ -3,7 +3,9 @@
<app-projects-criteria-component></app-projects-criteria-component> <app-projects-criteria-component></app-projects-criteria-component>
<mat-card class="mat-card"> <mat-card class="mat-card">
<mat-card-header>
<mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar> <mat-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
</mat-card-header>
<mat-table [dataSource]="dataSource" matSort> <mat-table [dataSource]="dataSource" matSort>
@ -41,9 +43,7 @@
<mat-row *matRowDef="let row; columns: displayedColumns" (click)="rowClick(row.id)"></mat-row> <mat-row *matRowDef="let row; columns: displayedColumns" (click)="rowClick(row.id)"></mat-row>
</mat-table> </mat-table>
<mat-paginator #paginator <mat-paginator #paginator [length]="dataSource?.totalCount" [pageSizeOptions]="[10, 25, 100]">
[length]="dataSource?.totalCount"
[pageSizeOptions]="[10, 25, 100]">
</mat-paginator> </mat-paginator>
</mat-card> </mat-card>

View File

@ -2,9 +2,6 @@
margin: 24px; margin: 24px;
} }
.mat-progress-bar {
position: absolute;
}
.mat-fab-bottom-right { .mat-fab-bottom-right {
top: auto !important; top: auto !important;

View File

@ -159,7 +159,8 @@
} }
}, },
"INVITATION-EDITOR": { "INVITATION-EDITOR": {
"TITLE": "User/Email", "TITLE": "Send Invitations for ",
"AUTOCOMPLETE-TITLE": "User/Email",
"ACTIONS": { "ACTIONS": {
"SEND-INVITATION": "Send Invitations", "SEND-INVITATION": "Send Invitations",
"CANCEL": "Cancel" "CANCEL": "Cancel"

6680
hs_err_pid11912.log Normal file

File diff suppressed because it is too large Load Diff

6707
hs_err_pid11972.log Normal file

File diff suppressed because it is too large Load Diff

6608
hs_err_pid12228.log Normal file

File diff suppressed because it is too large Load Diff

6725
hs_err_pid12896.log Normal file

File diff suppressed because it is too large Load Diff