diff --git a/backend/src-common/src/main/java/org/eclipse/sw360/components/summary/ReleaseSummary.java b/backend/src-common/src/main/java/org/eclipse/sw360/components/summary/ReleaseSummary.java index 7585be119..7e4d4f7a3 100644 --- a/backend/src-common/src/main/java/org/eclipse/sw360/components/summary/ReleaseSummary.java +++ b/backend/src-common/src/main/java/org/eclipse/sw360/components/summary/ReleaseSummary.java @@ -101,6 +101,8 @@ private void setShortSummaryFields(Release document, Release copy) { copyField(document, copy, _Fields.COMPONENT_ID); copyField(document, copy, _Fields.CLEARING_TEAM_TO_FOSSOLOGY_STATUS); copyField(document, copy, _Fields.FOSSOLOGY_ID); + copyField(document, copy, _Fields.CLEARING_STATE); + copyField(document, copy, _Fields.MAINLINE_STATE); } private void setAdditionalFieldsForSummariesOtherThanShortAndDetailedExport(Release document, Release copy){ diff --git a/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectRepository.java b/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectRepository.java index a06108fd9..ae357a079 100644 --- a/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectRepository.java +++ b/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectRepository.java @@ -250,7 +250,7 @@ public Set getAccessibleProjects(User user) { } public List searchByName(String name, User user) { - return searchByName(name, user, SummaryType.SHORT); + return searchByName(name, user, SummaryType.SUMMARY); } @NotNull diff --git a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/common/PortalConstants.java b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/common/PortalConstants.java index 86a197e4c..d654acc9e 100644 --- a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/common/PortalConstants.java +++ b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/common/PortalConstants.java @@ -213,6 +213,14 @@ public class PortalConstants { public static final String WHERE_ARRAY = "where[]"; public static final String HOW = "how"; + //! Specialized keys for CSS-classes of project (clearing) state boxes + public static final String PROJECT_STATE_ACTIVE__CSS = "projectStateActive"; + public static final String PROJECT_STATE_INACTIVE__CSS = "projectStateInactive"; + public static final String CLEARING_STATE_OPEN__CSS = "clearingStateOpen"; + public static final String CLEARING_STATE_INPROGRESS__CSS = "clearingStateInProgress"; + public static final String CLEARING_STATE_CLOSED__CSS = "clearingStateClosed"; + public static final String CLEARING_STATE_UNKNOWN__CSS = "clearingStateUnknown"; + //! Serve resource keywords //! Actions diff --git a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/components/ComponentPortlet.java b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/components/ComponentPortlet.java index 873226aad..e39e52bfc 100644 --- a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/components/ComponentPortlet.java +++ b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/components/ComponentPortlet.java @@ -250,17 +250,12 @@ private void serveUnsubscribeRelease(ResourceRequest request, ResourceResponse r private void serveLinkedReleases(ResourceRequest request, ResourceResponse response) throws IOException, PortletException { String what = request.getParameter(PortalConstants.WHAT); - String projectId = request.getParameter(RELEASE_ID); - if (PortalConstants.LIST_NEW_LINKED_RELEASES.equals(what)) { String[] where = request.getParameterValues(PortalConstants.WHERE_ARRAY); serveNewTableRowLinkedRelease(request, response, where); } else if (PortalConstants.RELEASE_SEARCH.equals(what)) { String where = request.getParameter(PortalConstants.WHERE); serveReleaseSearchResults(request, response, where); - } else if (PortalConstants.RELEASE_SEARCH_BY_VENDOR.equals(what)) { - String where = request.getParameter(PortalConstants.WHERE); - serveReleaseSearchResultsByVendor(request, response, where); } } @@ -289,31 +284,26 @@ private void serveNewTableRowLinkedRelease(ResourceRequest request, ResourceResp } private void serveReleaseSearchResults(ResourceRequest request, ResourceResponse response, String searchText) throws IOException, PortletException { - serveReleaseSearch(request, response, searchText, false); + serveReleaseSearch(request, response, searchText); } - private void serveReleaseSearchResultsByVendor(ResourceRequest request, ResourceResponse response, String searchText) throws IOException, PortletException { - serveReleaseSearch(request, response, searchText, true); - } - - private void serveReleaseSearch(ResourceRequest request, ResourceResponse response, String searchText, boolean searchByVendor) throws IOException, PortletException { + private void serveReleaseSearch(ResourceRequest request, ResourceResponse response, String searchText) throws IOException, PortletException { List searchResult; try { ComponentService.Iface componentClient = thriftClients.makeComponentClient(); - if (searchByVendor) { + + searchResult = componentClient.searchReleaseByNamePrefix(searchText); + + if(searchText != "") { final VendorService.Iface vendorClient = thriftClients.makeVendorClient(); final Set vendorIds = vendorClient.searchVendorIds(searchText); if (vendorIds != null && vendorIds.size() > 0) { - searchResult = componentClient.getReleasesFromVendorIds(vendorIds); - } else { - searchResult = Collections.emptyList(); + searchResult.addAll(componentClient.getReleasesFromVendorIds(vendorIds)); } - } else { - searchResult = componentClient.searchReleaseByNamePrefix(searchText); } } catch (TException e) { - log.error("Error searching projects", e); + log.error("Error searching linked releases", e); searchResult = Collections.emptyList(); } @@ -322,6 +312,7 @@ private void serveReleaseSearch(ResourceRequest request, ResourceResponse respon include("/html/utils/ajax/searchReleasesAjax.jsp", request, response, PortletRequest.RESOURCE_PHASE); } + //! VIEW and helpers @Override public void doView(RenderRequest request, RenderResponse response) throws IOException, PortletException { diff --git a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/projects/ProjectPortlet.java b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/projects/ProjectPortlet.java index f17c9bcbe..724bad420 100644 --- a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/projects/ProjectPortlet.java +++ b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/portlets/projects/ProjectPortlet.java @@ -354,9 +354,6 @@ private void serveLinkedReleases(ResourceRequest request, ResourceResponse respo } else if (PortalConstants.RELEASE_SEARCH.equals(what)) { String where = request.getParameter(PortalConstants.WHERE); serveReleaseSearchResults(request, response, where); - } else if (PortalConstants.RELEASE_SEARCH_BY_VENDOR.equals(what)) { - String where = request.getParameter(PortalConstants.WHERE); - serveReleaseSearchResultsByVendor(request, response, where); } else if (PortalConstants.RELEASE_LIST_FROM_LINKED_PROJECTS.equals(what)) { serveReleasesFromLinkedProjects(request, response, projectId); } @@ -432,30 +429,30 @@ private void serveProjectSearchResults(ResourceRequest request, ResourceResponse } private void serveReleaseSearchResults(ResourceRequest request, ResourceResponse response, String searchText) throws IOException, PortletException { - serveReleaseSearch(request, response, searchText, false); - } - - private void serveReleaseSearchResultsByVendor(ResourceRequest request, ResourceResponse response, String searchText) throws IOException, PortletException { - serveReleaseSearch(request, response, searchText, true); + serveReleaseSearch(request, response, searchText); } - @SuppressWarnings("Duplicates") - private void serveReleaseSearch(ResourceRequest request, ResourceResponse response, String searchText, boolean searchByVendor) throws IOException, PortletException { + private void serveReleaseSearch(ResourceRequest request, ResourceResponse response, String searchText) throws IOException, PortletException { List searchResult; try { + ComponentService.Iface componentClient = thriftClients.makeComponentClient(); - if (searchByVendor) { + + // First: Search by name: + searchResult = componentClient.searchReleaseByNamePrefix(searchText); + + // If one is searching for everything, then it makes no sense to search also by vendors, as 'searchResult' already contains all releases. + if(searchText != "") { + // Second: Search by vendor and append: + // Note: The search-by-vendor by definition does not give results if the search string is empty. + // Therefore, an empty-string search does not introduce duplicated results, which is nice. final VendorService.Iface vendorClient = thriftClients.makeVendorClient(); final Set vendorIds = vendorClient.searchVendorIds(searchText); if (vendorIds != null && vendorIds.size() > 0) { - searchResult = componentClient.getReleasesFromVendorIds(vendorIds); - } else { - searchResult = Collections.emptyList(); + searchResult.addAll(componentClient.getReleasesFromVendorIds(vendorIds)); } - } else { - searchResult = componentClient.searchReleaseByNamePrefix(searchText); } } catch (TException e) { log.error("Error searching projects", e); diff --git a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayProjectStateBox.java b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayProjectStateBox.java index 8ada351a3..256487025 100644 --- a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayProjectStateBox.java +++ b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayProjectStateBox.java @@ -12,6 +12,7 @@ import org.apache.thrift.TEnum; import org.eclipse.sw360.datahandler.common.ThriftEnumUtils; import org.eclipse.sw360.datahandler.thrift.projects.ProjectState; +import org.eclipse.sw360.portal.common.PortalConstants; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; @@ -26,9 +27,9 @@ public void setValue(ProjectState state) { } public String makeBox(ProjectState state) { - String projectStateBackgroundColour = "projectStateInactive"; + String projectStateBackgroundColour = PortalConstants.PROJECT_STATE_INACTIVE__CSS; if( state == ProjectState.ACTIVE ) { - projectStateBackgroundColour = "projectStateActive"; + projectStateBackgroundColour = PortalConstants.PROJECT_STATE_ACTIVE__CSS; } return "
PS
"; } diff --git a/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayStateBoxes.java b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayStateBoxes.java new file mode 100644 index 000000000..ca0ba757e --- /dev/null +++ b/frontend/sw360-portlet/src/main/java/org/eclipse/sw360/portal/tags/DisplayStateBoxes.java @@ -0,0 +1,71 @@ +/* + * Copyright Siemens AG, 2017. + * Part of the SW360 Portal Project. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.sw360.portal.tags; + +import org.eclipse.sw360.datahandler.common.ThriftEnumUtils; +import org.eclipse.sw360.datahandler.thrift.projects.Project; +import org.eclipse.sw360.datahandler.thrift.projects.ProjectState; +import org.eclipse.sw360.portal.common.PortalConstants; + + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.tagext.JspTag; +import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; + +import static org.eclipse.sw360.datahandler.thrift.projects.ProjectClearingState.*; + +public class DisplayStateBoxes extends SimpleTagSupport { + + private Project project; + + public void setProject(Project project) { + this.project = project; + } + + public String makeBoxes() { + // The hardcoded strings correspond to CSS classes defined in sw360.css + + // Add project state color to boxes if the project is active + // (default color is grey) + String projectStateBackgroundColour = PortalConstants.PROJECT_STATE_INACTIVE__CSS; + if( project.isSetState() && project.state == ProjectState.ACTIVE ) { // -> green + projectStateBackgroundColour = PortalConstants.PROJECT_STATE_ACTIVE__CSS; + } + + // Add clearingstate color to boxes in projects list + // (default color is grey) + String clearingStateBackgroundColour = PortalConstants.CLEARING_STATE_UNKNOWN__CSS; + + if(project.isSetClearingState()) { + switch(project.clearingState) { + case CLOSED: // -> green + clearingStateBackgroundColour = PortalConstants.CLEARING_STATE_CLOSED__CSS; + break; + case IN_PROGRESS: // -> yellow + clearingStateBackgroundColour = PortalConstants.CLEARING_STATE_INPROGRESS__CSS; + break; + case OPEN: // -> red + clearingStateBackgroundColour = PortalConstants.CLEARING_STATE_OPEN__CSS; + break; + } + } + + String box_PS = "
PS
"; + String box_CS = "
CS
"; + + return box_PS+box_CS; + } + + + public void doTag() throws JspException, IOException { + getJspContext().getOut().print( makeBoxes() ); + } +} diff --git a/frontend/sw360-portlet/src/main/webapp/WEB-INF/customTags.tld b/frontend/sw360-portlet/src/main/webapp/WEB-INF/customTags.tld index 109c25685..4f7f40da9 100644 --- a/frontend/sw360-portlet/src/main/webapp/WEB-INF/customTags.tld +++ b/frontend/sw360-portlet/src/main/webapp/WEB-INF/customTags.tld @@ -120,6 +120,17 @@ true + + DisplayStateBoxes + org.eclipse.sw360.portal.tags.DisplayStateBoxes + empty + + project + true + org.eclipse.sw360.datahandler.thrift.projects.Project + true + + DisplayProjectStateBox org.eclipse.sw360.portal.tags.DisplayProjectStateBox diff --git a/frontend/sw360-portlet/src/main/webapp/html/components/editRelease.jsp b/frontend/sw360-portlet/src/main/webapp/html/components/editRelease.jsp index 57d7421e9..e75adc53a 100644 --- a/frontend/sw360-portlet/src/main/webapp/html/components/editRelease.jsp +++ b/frontend/sw360-portlet/src/main/webapp/html/components/editRelease.jsp @@ -117,7 +117,7 @@
- <%@include file="/html/components/includes/releases/editReleaseClearingInformation.jspf" %> + <%@include file="/html/components/includes/releases/editReleaseClearingInformation.jspf" %>
<%@include file="/html/components/includes/releases/editReleaseECCInformation.jspf" %> @@ -149,13 +149,13 @@ - + <%@ include file="/html/utils/includes/requirejs.jspf" %> + + <%@include file="/html/components/includes/vendors/searchVendor.jspf" %> -<%--for javascript library loading --%> -<%@ include file="/html/utils/includes/requirejs.jspf" %> diff --git a/frontend/sw360-portlet/src/main/webapp/html/projects/view.jsp b/frontend/sw360-portlet/src/main/webapp/html/projects/view.jsp index 245667aaf..d32eda3b3 100644 --- a/frontend/sw360-portlet/src/main/webapp/html/projects/view.jsp +++ b/frontend/sw360-portlet/src/main/webapp/html/projects/view.jsp @@ -275,7 +275,7 @@ "id": '${project.id}', "name": '', "description": '', - "state": ["", ""], + "state": '', "clearing": 'Not loaded yet', "responsible": '', "linkedProjectsSize": '${project.linkedProjectsSize}', @@ -293,7 +293,7 @@ {title: "Project Name", data: "name", render: {display: renderProjectNameLink}}, {title: "Description", data: "description"}, {title: "Project Responsible", data: "responsible"}, - {title: "State", data: "state", render: {display: displayStateBoxes}}, + {title: "State", data: "state"}, {title: "Clearing Status", data: "clearing"}, {title: "Actions", data: "id", render: {display: renderProjectActions}} ] diff --git a/frontend/sw360-portlet/src/main/webapp/html/utils/ajax/searchReleasesAjax.jsp b/frontend/sw360-portlet/src/main/webapp/html/utils/ajax/searchReleasesAjax.jsp index edcbea6dc..6e6f59586 100644 --- a/frontend/sw360-portlet/src/main/webapp/html/utils/ajax/searchReleasesAjax.jsp +++ b/frontend/sw360-portlet/src/main/webapp/html/utils/ajax/searchReleasesAjax.jsp @@ -25,11 +25,13 @@ + + - + No releases found with your search. diff --git a/frontend/sw360-portlet/src/main/webapp/html/utils/includes/editLinkedReleases.jspf b/frontend/sw360-portlet/src/main/webapp/html/utils/includes/editLinkedReleases.jspf index e2455f471..58d0adb58 100644 --- a/frontend/sw360-portlet/src/main/webapp/html/utils/includes/editLinkedReleases.jspf +++ b/frontend/sw360-portlet/src/main/webapp/html/utils/includes/editLinkedReleases.jspf @@ -20,6 +20,6 @@ - +

diff --git a/frontend/sw360-portlet/src/main/webapp/html/utils/includes/linkedReleaseDelete.jspf b/frontend/sw360-portlet/src/main/webapp/html/utils/includes/linkedReleaseDelete.jspf index d20eff14e..c86966b94 100644 --- a/frontend/sw360-portlet/src/main/webapp/html/utils/includes/linkedReleaseDelete.jspf +++ b/frontend/sw360-portlet/src/main/webapp/html/utils/includes/linkedReleaseDelete.jspf @@ -8,8 +8,6 @@ ~ which accompanies this distribution, and is available at ~ http://www.eclipse.org/legal/epl-v10.html --%> - - -<%@include file="/html/utils/includes/linkedReleaseDelete.jspf" %> \ No newline at end of file +<%@include file="/html/utils/includes/linkedReleaseDelete.jspf" %> + + \ No newline at end of file diff --git a/frontend/sw360-portlet/src/main/webapp/html/utils/includes/searchReleasesFromRelease.jsp b/frontend/sw360-portlet/src/main/webapp/html/utils/includes/searchReleasesFromRelease.jsp deleted file mode 100644 index 78ad6a7ae..000000000 --- a/frontend/sw360-portlet/src/main/webapp/html/utils/includes/searchReleasesFromRelease.jsp +++ /dev/null @@ -1,120 +0,0 @@ -<%-- - ~ Copyright Siemens AG, 2013-2015. Part of the SW360 Portal Project. - ~ - ~ SPDX-License-Identifier: EPL-1.0 - ~ - ~ All rights reserved. This program and the accompanying materials - ~ are made available under the terms of the Eclipse Public License v1.0 - ~ which accompanies this distribution, and is available at - ~ http://www.eclipse.org/legal/epl-v10.html - --%> - -<%@ page import="com.liferay.portlet.PortletURLFactoryUtil" %> -<%@include file="/html/init.jsp" %> - - -<%@ taglib prefix="sw360" uri="/WEB-INF/customTags.tld" %> - - - -<%@ page import="org.eclipse.sw360.portal.common.PortalConstants" %> - - - - - - - - - - -<%@include file="/html/utils/includes/linkedReleaseDelete.jspf" %> \ No newline at end of file diff --git a/frontend/sw360-portlet/src/main/webapp/js/main.js b/frontend/sw360-portlet/src/main/webapp/js/main.js index e63cde10c..56cb1c3e3 100644 --- a/frontend/sw360-portlet/src/main/webapp/js/main.js +++ b/frontend/sw360-portlet/src/main/webapp/js/main.js @@ -13,10 +13,10 @@ var openDialogs = []; function openDialog(id, focusId, heightPerc, widthPerc) { - heightPerc = (heightPerc !== undefined) ? heightPerc : .40; + heightPerc = (heightPerc !== undefined) ? heightPerc : .50; widthPerc = (widthPerc !== undefined) ? widthPerc : .55; - var dlgHeight = Math.max((window.innerHeight * heightPerc), 400); + var dlgHeight = Math.max((window.innerHeight * heightPerc), 500); var dlgWidth = Math.max((window.innerWidth * widthPerc), 600); var $dialogForm = $("#" + id); @@ -133,38 +133,6 @@ function renderLinkTo(url, content, htmlContent) { return $link[0].outerHTML; } -function displayStateBoxes(data) { - var project_state = data[0]; - var clearing_state = data[1]; - - // Add project state color to boxes if the project is active - // (default color is grey) - var projectStateBackgroundColour = "projectStateInactive"; - if( project_state == "Active" ) { // -> green - projectStateBackgroundColour = "projectStateActive"; - } - - // Add clearingstate color to boxes in projects list - // (default color is grey) - var clearingStateBackgroundColour = "clearingStateUnknown"; - switch(clearing_state) { - case "Closed": // -> green - clearingStateBackgroundColour = "clearingStateClosed"; - break; - case "In Progress": // -> yellow - clearingStateBackgroundColour = "clearingStateInProgress"; - break; - case "Open": // -> red - clearingStateBackgroundColour = "clearingStateOpen"; - break; - } - - var box_PS = '
PS
'; - var box_CS = '
CS
'; - - return box_PS+box_CS; -} - function renderUserEmail(user) { if (typeof user == 'string') { return renderLinkTo("mailto:" + user, user);