Merge branch 'Development' of https://gitlab.eudat.eu/dmp/OpenAIRE-EUDAT-DMP-service-pilot into Development
This commit is contained in:
commit
d617ad0bb1
|
@ -14,261 +14,260 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
|
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name="\"DMP\"")
|
@Table(name = "\"DMP\"")
|
||||||
@NamedEntityGraphs({
|
@NamedEntityGraphs({
|
||||||
@NamedEntityGraph(
|
@NamedEntityGraph(
|
||||||
name = "organisationsAndResearchers",
|
name = "organisationsAndResearchers",
|
||||||
attributeNodes = {@NamedAttributeNode("organisations"),@NamedAttributeNode("researchers")}),
|
attributeNodes = {@NamedAttributeNode("organisations"), @NamedAttributeNode("researchers")}),
|
||||||
@NamedEntityGraph(
|
@NamedEntityGraph(
|
||||||
name = "fullyDetailed",
|
name = "fullyDetailed",
|
||||||
attributeNodes = {
|
attributeNodes = {
|
||||||
@NamedAttributeNode("project"),@NamedAttributeNode("profile"),
|
@NamedAttributeNode("project"), @NamedAttributeNode("profile"),
|
||||||
@NamedAttributeNode("users"),@NamedAttributeNode("organisations"),@NamedAttributeNode("researchers")})
|
@NamedAttributeNode("users"), @NamedAttributeNode("organisations"), @NamedAttributeNode("researchers")})
|
||||||
})
|
})
|
||||||
public class DMP implements Serializable,DataEntity<DMP> {
|
public class DMP implements Serializable, DataEntity<DMP> {
|
||||||
|
|
||||||
public static Set<String> getHints() {
|
public static Set<String> getHints() {
|
||||||
return hints;
|
return hints;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Set<String> hints = new HashSet<>(Arrays.asList("organisationsAndResearchers", "fullyDetailed"));
|
private static final Set<String> hints = new HashSet<>(Arrays.asList("organisationsAndResearchers", "fullyDetailed"));
|
||||||
private static final long serialVersionUID = -8263056535208547615L;
|
private static final long serialVersionUID = -8263056535208547615L;
|
||||||
|
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue
|
@GeneratedValue
|
||||||
@GenericGenerator(name = "uuid2", strategy = "uuid2")
|
@GenericGenerator(name = "uuid2", strategy = "uuid2")
|
||||||
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
|
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
|
||||||
private UUID id;
|
private UUID id;
|
||||||
|
|
||||||
@Type(type="org.hibernate.type.PostgresUUIDType")
|
@Type(type = "org.hibernate.type.PostgresUUIDType")
|
||||||
@Column(name = "\"Previous\"")
|
@Column(name = "\"Previous\"")
|
||||||
private UUID previous;
|
private UUID previous;
|
||||||
|
|
||||||
@Column(name = "\"Label\"")
|
@Column(name = "\"Label\"")
|
||||||
private String label;
|
private String label;
|
||||||
|
|
||||||
@Column(name = "\"Version\"")
|
@Column(name = "\"Version\"")
|
||||||
private Integer version;
|
private Integer version;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "dmp", fetch = FetchType.LAZY)
|
@OneToMany(mappedBy = "dmp", fetch = FetchType.LAZY)
|
||||||
private Set<Dataset> dataset;
|
private Set<Dataset> dataset;
|
||||||
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "\"Project\"")
|
@JoinColumn(name = "\"Project\"")
|
||||||
private Project project;
|
private Project project;
|
||||||
|
|
||||||
|
|
||||||
@Type(type="eu.eudat.typedefinition.XMLType")
|
@Type(type = "eu.eudat.typedefinition.XMLType")
|
||||||
@Column(name = "\"AssociatedDmps\"", columnDefinition = "xml", nullable = true)
|
@Column(name = "\"AssociatedDmps\"", columnDefinition = "xml", nullable = true)
|
||||||
private String associatedDmps;
|
private String associatedDmps;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "\"Profile\"")
|
@JoinColumn(name = "\"Profile\"")
|
||||||
private DMPProfile profile;
|
private DMPProfile profile;
|
||||||
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
@JoinColumn(name = "\"Creator\"")
|
@JoinColumn(name = "\"Creator\"")
|
||||||
private UserInfo creator;
|
private UserInfo creator;
|
||||||
|
|
||||||
|
|
||||||
@OneToMany(fetch = FetchType.LAZY)
|
@OneToMany(fetch = FetchType.LAZY)
|
||||||
@JoinTable(name="\"DMPOrganisation\"",
|
@JoinTable(name = "\"DMPOrganisation\"",
|
||||||
joinColumns={@JoinColumn(name="\"DMP\"", referencedColumnName="\"ID\"")},
|
joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")},
|
||||||
inverseJoinColumns={@JoinColumn(name="\"Organisation\"", referencedColumnName="\"ID\"")}
|
inverseJoinColumns = {@JoinColumn(name = "\"Organisation\"", referencedColumnName = "\"ID\"")}
|
||||||
)
|
)
|
||||||
private Set<Organisation> organisations;
|
private Set<Organisation> organisations;
|
||||||
|
|
||||||
|
|
||||||
@OneToMany(fetch = FetchType.LAZY)
|
@OneToMany(fetch = FetchType.LAZY)
|
||||||
@JoinTable(name="\"DMPResearcher\"",
|
@JoinTable(name = "\"DMPResearcher\"",
|
||||||
joinColumns={@JoinColumn(name="\"DMP\"", referencedColumnName="\"ID\"")},
|
joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")},
|
||||||
inverseJoinColumns={@JoinColumn(name="\"Researcher\"", referencedColumnName="\"ID\"")}
|
inverseJoinColumns = {@JoinColumn(name = "\"Researcher\"", referencedColumnName = "\"ID\"")}
|
||||||
)
|
)
|
||||||
private Set<Researcher> researchers;
|
private Set<Researcher> researchers;
|
||||||
|
|
||||||
|
|
||||||
@OneToMany(fetch = FetchType.LAZY)
|
@OneToMany(fetch = FetchType.LAZY)
|
||||||
@JoinTable(name="\"UserDMP\"",
|
@JoinTable(name = "\"UserDMP\"",
|
||||||
joinColumns={@JoinColumn(name="dmp", referencedColumnName="\"ID\"")},
|
joinColumns = {@JoinColumn(name = "dmp", referencedColumnName = "\"ID\"")},
|
||||||
inverseJoinColumns={@JoinColumn(name="usr", referencedColumnName="id")}
|
inverseJoinColumns = {@JoinColumn(name = "usr", referencedColumnName = "id")}
|
||||||
)
|
)
|
||||||
private Set<UserInfo> users;
|
private Set<UserInfo> users;
|
||||||
|
|
||||||
|
|
||||||
@Column(name = "\"Status\"", nullable = false)
|
@Column(name = "\"Status\"", nullable = false)
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
|
|
||||||
@Column(name = "\"Created\"")
|
@Column(name = "\"Created\"")
|
||||||
private Date created = null;
|
private Date created = null;
|
||||||
|
|
||||||
@Column(name = "\"Modified\"")
|
@Column(name = "\"Modified\"")
|
||||||
private Date modified = new Date();
|
private Date modified = new Date();
|
||||||
|
|
||||||
|
|
||||||
@Column(name = "\"Description\"")
|
@Column(name = "\"Description\"")
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setDescription(String description) {
|
public void setDescription(String description) {
|
||||||
this.description = description;
|
this.description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public UserInfo getCreator() {
|
public UserInfo getCreator() {
|
||||||
return creator;
|
return creator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setCreator(UserInfo creator) {
|
public void setCreator(UserInfo creator) {
|
||||||
this.creator = creator;
|
this.creator = creator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Short getStatus() {
|
public Short getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setStatus(Short status) {
|
public void setStatus(Short status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Date getCreated() {
|
public Date getCreated() {
|
||||||
return created;
|
return created;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setCreated(Date created) {
|
public void setCreated(Date created) {
|
||||||
this.created = created;
|
this.created = created;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Date getModified() {
|
public Date getModified() {
|
||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setModified(Date modified) {
|
public void setModified(Date modified) {
|
||||||
this.modified = modified;
|
this.modified = modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Set<UserInfo> getUsers() {
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
|
||||||
public Set<UserInfo> getUsers() {
|
public void setUsers(Set<UserInfo> users) {
|
||||||
return users;
|
this.users = users;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUsers(Set<UserInfo> users) {
|
|
||||||
this.users = users;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public UUID getId() {
|
public UUID getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(UUID id) {
|
public void setId(UUID id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getPrevious() {
|
public UUID getPrevious() {
|
||||||
return previous;
|
return previous;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrevious(UUID previous) {
|
public void setPrevious(UUID previous) {
|
||||||
this.previous = previous;
|
this.previous = previous;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLabel() {
|
public String getLabel() {
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLabel(String label) {
|
public void setLabel(String label) {
|
||||||
this.label = label;
|
this.label = label;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getVersion() {
|
public Integer getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersion(Integer version) {
|
public void setVersion(Integer version) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Project getProject() {
|
public Project getProject() {
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProject(Project project) {
|
public void setProject(Project project) {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAssociatedDmps() {
|
public String getAssociatedDmps() {
|
||||||
return associatedDmps;
|
return associatedDmps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAssociatedDmps(String associatedDmps) {
|
public void setAssociatedDmps(String associatedDmps) {
|
||||||
this.associatedDmps = associatedDmps;
|
this.associatedDmps = associatedDmps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DMPProfile getProfile() {
|
public DMPProfile getProfile() {
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProfile(DMPProfile profile) {
|
public void setProfile(DMPProfile profile) {
|
||||||
this.profile = profile;
|
this.profile = profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Dataset> getDataset() {
|
public Set<Dataset> getDataset() {
|
||||||
return dataset;
|
return dataset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDataset(Set<Dataset> dataset) {
|
public void setDataset(Set<Dataset> dataset) {
|
||||||
this.dataset = dataset;
|
this.dataset = dataset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Organisation> getOrganisations() {
|
public Set<Organisation> getOrganisations() {
|
||||||
return organisations;
|
return organisations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOrganisations(Set<Organisation> organisations) {
|
public void setOrganisations(Set<Organisation> organisations) {
|
||||||
this.organisations = organisations;
|
this.organisations = organisations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Researcher> getResearchers() {
|
public Set<Researcher> getResearchers() {
|
||||||
return researchers;
|
return researchers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setResearchers(Set<Researcher> researchers) {
|
public void setResearchers(Set<Researcher> researchers) {
|
||||||
this.researchers = researchers;
|
this.researchers = researchers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(DMP entity) {
|
public void update(DMP entity) {
|
||||||
this.setAssociatedDmps(entity.associatedDmps);
|
this.setAssociatedDmps(entity.associatedDmps);
|
||||||
this.label = entity.getLabel();
|
this.label = entity.getLabel();
|
||||||
this.status = entity.getStatus();
|
this.status = entity.getStatus();
|
||||||
this.created = entity.created;
|
this.created = entity.created;
|
||||||
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
|
||||||
public Object[] getKeys() {
|
public Object[] getKeys() {
|
||||||
return new UUID[]{this.id == null ? null : this.id};
|
return new UUID[]{this.id == null ? null : this.id};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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){
|
||||||
|
|
|
@ -25,80 +25,81 @@ import eu.eudat.utilities.builders.DomainModelConverter;
|
||||||
|
|
||||||
public class DataManagementPlanManager {
|
public class DataManagementPlanManager {
|
||||||
|
|
||||||
public DataTableData<DataManagementPlanListingModel> getPaged(ApiContext apiContext, DataManagementPlanTableRequest dataManagementPlanTableRequest,Principal principal) throws IllegalAccessException, InstantiationException{
|
public DataTableData<DataManagementPlanListingModel> getPaged(ApiContext apiContext, DataManagementPlanTableRequest dataManagementPlanTableRequest, Principal principal) throws IllegalAccessException, InstantiationException {
|
||||||
UserInfo userInfo = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId());
|
UserInfo userInfo = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId());
|
||||||
QueryableList<DMP> items = apiContext.getDatabaseRepository().getDmpDao().getWithCriteria(dataManagementPlanTableRequest.getCriteria());
|
QueryableList<DMP> items = apiContext.getDatabaseRepository().getDmpDao().getWithCriteria(dataManagementPlanTableRequest.getCriteria());
|
||||||
QueryableList<DMP> authItems = apiContext.getDatabaseRepository().getDmpDao().getAuthenticated(items,userInfo);
|
QueryableList<DMP> authItems = apiContext.getDatabaseRepository().getDmpDao().getAuthenticated(items, userInfo);
|
||||||
QueryableList<DMP> pagedItems = PaginationManager.applyPaging(authItems,dataManagementPlanTableRequest);
|
QueryableList<DMP> pagedItems = PaginationManager.applyPaging(authItems, dataManagementPlanTableRequest);
|
||||||
|
|
||||||
if(dataManagementPlanTableRequest.getWithHint())pagedItems.withHint("fullyDetailed");
|
if (dataManagementPlanTableRequest.getWithHint()) pagedItems.withHint("fullyDetailed");
|
||||||
List<DataManagementPlanListingModel> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, DataManagementPlanListingModel>().fromDataModel( pagedItems.toList(), DataManagementPlanListingModel.class);
|
List<DataManagementPlanListingModel> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, DataManagementPlanListingModel>().fromDataModel(pagedItems.toList(), DataManagementPlanListingModel.class);
|
||||||
DataTableData<DataManagementPlanListingModel> dataTable = new DataTableData<DataManagementPlanListingModel>();
|
DataTableData<DataManagementPlanListingModel> dataTable = new DataTableData<DataManagementPlanListingModel>();
|
||||||
dataTable.setData(datamanagementPlans);
|
dataTable.setData(datamanagementPlans);
|
||||||
dataTable.setTotalCount(items.count());
|
dataTable.setTotalCount(items.count());
|
||||||
return dataTable;
|
return dataTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan();
|
throw new UnauthorisedException();
|
||||||
datamanagementPlan.fromDataModel(dataManagementPlanEntity);
|
eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan();
|
||||||
return datamanagementPlan;
|
datamanagementPlan.fromDataModel(dataManagementPlanEntity);
|
||||||
}
|
return datamanagementPlan;
|
||||||
|
}
|
||||||
|
|
||||||
public List<DataManagementPlan> getWithCriteria(DMPDao dmpsRepository, DataManagementPlanCriteriaRequest dataManagementPlanCriteria) throws IllegalAccessException, InstantiationException{
|
public List<DataManagementPlan> getWithCriteria(DMPDao dmpsRepository, DataManagementPlanCriteriaRequest dataManagementPlanCriteria) throws IllegalAccessException, InstantiationException {
|
||||||
QueryableList<DMP> items = dmpsRepository.getWithCriteria(dataManagementPlanCriteria.getCriteria());
|
QueryableList<DMP> items = dmpsRepository.getWithCriteria(dataManagementPlanCriteria.getCriteria());
|
||||||
List<eu.eudat.models.dmp.DataManagementPlan> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, eu.eudat.models.dmp.DataManagementPlan>().fromDataModel( items.toList(), eu.eudat.models.dmp.DataManagementPlan.class);
|
List<eu.eudat.models.dmp.DataManagementPlan> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, eu.eudat.models.dmp.DataManagementPlan>().fromDataModel(items.toList(), eu.eudat.models.dmp.DataManagementPlan.class);
|
||||||
return datamanagementPlans;
|
return datamanagementPlans;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void createOrUpdate(ApiContext apiContext, DataManagementPlan dataManagementPlan, Principal principal){
|
public static void createOrUpdate(ApiContext apiContext, DataManagementPlan dataManagementPlan, Principal principal) {
|
||||||
DMP newDmp = dataManagementPlan.toDataModel();
|
DMP newDmp = dataManagementPlan.toDataModel();
|
||||||
createOrganisationsIfTheyDontExist(newDmp,apiContext.getDatabaseRepository().getOrganisationDao());
|
createOrganisationsIfTheyDontExist(newDmp, apiContext.getDatabaseRepository().getOrganisationDao());
|
||||||
createResearchersIfTheyDontExist(newDmp,apiContext.getDatabaseRepository().getResearcherDao());
|
createResearchersIfTheyDontExist(newDmp, apiContext.getDatabaseRepository().getResearcherDao());
|
||||||
UserInfo user = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId());
|
UserInfo user = apiContext.getDatabaseRepository().getUserInfoDao().find(principal.getId());
|
||||||
createProjectIfItDoesntExist(newDmp,apiContext.getDatabaseRepository().getProjectDao(),user);
|
createProjectIfItDoesntExist(newDmp, apiContext.getDatabaseRepository().getProjectDao(), user);
|
||||||
newDmp.setCreator(user);
|
newDmp.setCreator(user);
|
||||||
apiContext.getDatabaseRepository().getDmpDao().createOrUpdate(newDmp);
|
apiContext.getDatabaseRepository().getDmpDao().createOrUpdate(newDmp);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createResearchersIfTheyDontExist(DMP newDmp,ResearcherDao researcherRepository){
|
private static void createResearchersIfTheyDontExist(DMP newDmp, ResearcherDao researcherRepository) {
|
||||||
if(newDmp.getResearchers()!=null&&!newDmp.getResearchers().isEmpty()){
|
if (newDmp.getResearchers() != null && !newDmp.getResearchers().isEmpty()) {
|
||||||
for(eu.eudat.entities.Researcher researcher : newDmp.getResearchers()){
|
for (eu.eudat.entities.Researcher researcher : newDmp.getResearchers()) {
|
||||||
ResearcherCriteria criteria = new ResearcherCriteria();
|
ResearcherCriteria criteria = new ResearcherCriteria();
|
||||||
criteria.setLike(researcher.getReference());
|
criteria.setLike(researcher.getReference());
|
||||||
List<eu.eudat.entities.Researcher> entries = researcherRepository.listBy(criteria);
|
List<eu.eudat.entities.Researcher> entries = researcherRepository.listBy(criteria);
|
||||||
if(entries!=null&&!entries.isEmpty())researcher.setId(entries.get(0).getId());
|
if (entries != null && !entries.isEmpty()) researcher.setId(entries.get(0).getId());
|
||||||
else researcher = researcherRepository.create(researcher);
|
else researcher = researcherRepository.create(researcher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createOrganisationsIfTheyDontExist(DMP newDmp,OrganisationDao organisationRepository){
|
private static void createOrganisationsIfTheyDontExist(DMP newDmp, OrganisationDao organisationRepository) {
|
||||||
if(newDmp.getOrganisations()!=null&&!newDmp.getOrganisations().isEmpty()){
|
if (newDmp.getOrganisations() != null && !newDmp.getOrganisations().isEmpty()) {
|
||||||
for(eu.eudat.entities.Organisation organisation: newDmp.getOrganisations()){
|
for (eu.eudat.entities.Organisation organisation : newDmp.getOrganisations()) {
|
||||||
OrganisationCriteria criteria = new OrganisationCriteria();
|
OrganisationCriteria criteria = new OrganisationCriteria();
|
||||||
criteria.setLike(organisation.getReference());
|
criteria.setLike(organisation.getReference());
|
||||||
List<eu.eudat.entities.Organisation> entries = organisationRepository.listBy(criteria);
|
List<eu.eudat.entities.Organisation> entries = organisationRepository.listBy(criteria);
|
||||||
if(entries!=null&&!entries.isEmpty())organisation.setId(entries.get(0).getId());
|
if (entries != null && !entries.isEmpty()) organisation.setId(entries.get(0).getId());
|
||||||
else organisation = organisationRepository.create(organisation);
|
else organisation = organisationRepository.create(organisation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createProjectIfItDoesntExist(DMP newDmp,ProjectDao projectDao,UserInfo userInfo){
|
private static void createProjectIfItDoesntExist(DMP newDmp, ProjectDao projectDao, UserInfo userInfo) {
|
||||||
if(newDmp.getProject()!=null){
|
if (newDmp.getProject() != null) {
|
||||||
Project project = newDmp.getProject();
|
Project project = newDmp.getProject();
|
||||||
ProjectCriteria criteria = new ProjectCriteria();
|
ProjectCriteria criteria = new ProjectCriteria();
|
||||||
criteria.setLike(project.getReference());
|
criteria.setLike(project.getReference());
|
||||||
List<eu.eudat.entities.Project> entries = projectDao.getWithCriteria(criteria).toList();
|
List<eu.eudat.entities.Project> entries = projectDao.getWithCriteria(criteria).toList();
|
||||||
if(entries!=null&&!entries.isEmpty())project.setId(entries.get(0).getId());
|
if (entries != null && !entries.isEmpty()) project.setId(entries.get(0).getId());
|
||||||
else{
|
else {
|
||||||
project.setCreationUser(userInfo);
|
project.setCreationUser(userInfo);
|
||||||
projectDao.createOrUpdate(project);
|
projectDao.createOrUpdate(project);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -11,11 +11,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.data-management-plan-editor {
|
.data-management-plan-editor {
|
||||||
mat-form-field {
|
.mat-form-field-full-width{
|
||||||
width: 100%;
|
mat-form-field {
|
||||||
padding: 3px;
|
width: 100%;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.mat-card {
|
.mat-card {
|
||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
|
<mat-card-header>
|
||||||
|
<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 -->
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -11,11 +11,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-editor {
|
.project-editor {
|
||||||
mat-form-field {
|
.mat-form-field-full-width{
|
||||||
width: 100%;
|
mat-form-field {
|
||||||
padding: 3px;
|
width: 100%;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.mat-card {
|
.mat-card {
|
||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
}
|
}
|
|
@ -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
|
||||||
})
|
})
|
||||||
|
|
|
@ -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-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
|
<mat-card-header>
|
||||||
|
<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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -27,7 +27,7 @@ export class DataManagementPlanListingComponent implements OnInit {
|
||||||
@ViewChild(DataManagementPlanCriteriaComponent) criteria: DataManagementPlanCriteriaComponent;
|
@ViewChild(DataManagementPlanCriteriaComponent) criteria: DataManagementPlanCriteriaComponent;
|
||||||
|
|
||||||
dataSource: DataManagementPlanDataSource | null;
|
dataSource: DataManagementPlanDataSource | null;
|
||||||
displayedColumns: String[] = ['name', 'project', 'profile', 'researchers', 'organisations', 'version','actions'];
|
displayedColumns: String[] = ['name', 'project', 'profile', 'researchers', 'organisations', 'version', 'actions'];
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private dataManagementPlanService: DataManagementPlanService,
|
private dataManagementPlanService: DataManagementPlanService,
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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')"
|
||||||
|
|
|
@ -11,11 +11,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.data-management-plan-editor {
|
.data-management-plan-editor {
|
||||||
mat-form-field {
|
|
||||||
width: 100%;
|
.mat-form-field-full-width{
|
||||||
padding: 3px;
|
mat-form-field {
|
||||||
|
width: 100%;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.mat-card {
|
.mat-card {
|
||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
</div>
|
||||||
</form>
|
<div mat-dialog-actions>
|
||||||
</div>
|
<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>
|
|
@ -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-progress-bar *ngIf="dataSource?.isLoadingResults" mode="query"></mat-progress-bar>
|
<mat-card-header>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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"
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue