From b95bb4d23a9662a44f0b910d087507b449ed9f11 Mon Sep 17 00:00:00 2001 From: afsahsyeda Date: Wed, 28 Jun 2023 14:17:22 +0530 Subject: [PATCH] feat(ProjectObligationsEdit): Save comment and status fields on edit Signed-off-by: afsahsyeda --- .../META-INF/resources/html/projects/edit.jsp | 2 ++ .../includes/projects/obligationsEdit.jspf | 33 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/edit.jsp b/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/edit.jsp index 89edec7e18..1432fe03ec 100644 --- a/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/edit.jsp +++ b/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/edit.jsp @@ -319,6 +319,7 @@ require(['jquery', 'modules/autocomplete', 'modules/dialog', 'modules/listgroup' $(document).find(".checkStatus select").attr("disabled", false); $(document).find(".checkedComment input").attr("disabled", false); + localStorage.clear(); $('#projectEditForm').submit(); } @@ -331,6 +332,7 @@ require(['jquery', 'modules/autocomplete', 'modules/dialog', 'modules/listgroup' "<%=PortalConstants.DOCUMENT_ID%>": "${project.id}" } }).always(function() { + localStorage.clear(); var baseUrl = '<%= PortletURLFactoryUtil.create(request, portletDisplay.getId(), themeDisplay.getPlid(), PortletRequest.RENDER_PHASE) %>', portletURL = Liferay.PortletURL.createURL(baseUrl) diff --git a/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/includes/projects/obligationsEdit.jspf b/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/includes/projects/obligationsEdit.jspf index cf92c26446..5a656db8ff 100644 --- a/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/includes/projects/obligationsEdit.jspf +++ b/frontend/sw360-portlet/src/main/resources/META-INF/resources/html/projects/includes/projects/obligationsEdit.jspf @@ -203,6 +203,7 @@ require(['jquery', 'bridges/datatables', 'utils/render', 'modules/button', 'modu actionOptions = {}; var jsonObject = {}, obligationsFromLicenseDatabase = "", + projectId = "", licenseTableData=$("#spinnerForLicenseObligation").html().toString(); $("#spinnerForLicenseObligation").remove(); @@ -327,7 +328,25 @@ require(['jquery', 'bridges/datatables', 'utils/render', 'modules/button', 'modu "action": updateObligations } ], - "initComplete": datatables.showPageContainer + "initComplete": datatables.showPageContainer, + "fnDrawCallback": function() { + var table = document.getElementById("editObligationsTable"); + for (var i = 1, row; row = table.rows[i]; i++) { + var statusTD = row.cells[4]; + var commentTD = row.cells[7]; + var oblTD = row.cells[1]; + var obl = $(oblTD).find('span').text(); + + if (localStorage.getItem(obl+"- "+projectId)) { + var json = JSON.parse(localStorage.getItem(obl+"- "+projectId)); + + dataMap.set(obl, ''); + + $(statusTD).find('select').val(json['status']); + $(commentTD).find('input').val(json['comment']); + } + } + } }, undefined, [0, 4, 7]); function renderStatus(status, type, row) { @@ -374,6 +393,7 @@ require(['jquery', 'bridges/datatables', 'utils/render', 'modules/button', 'modu /* Add event listener for change in any editable fields in table */ $("#editObligationsTable tbody").on("change", 'td select.obl_status', function () { storeData($(this)); + saveStatusAndObl($(this)); }); /* $("#editObligationsTable tbody").on("change", 'td select.obl_action',function () { @@ -383,9 +403,20 @@ require(['jquery', 'bridges/datatables', 'utils/render', 'modules/button', 'modu $("#editObligationsTable tbody").on("change", 'td input.obl_comment', function () { if ($(this).closest('tr').find("input.obl_comment").val()) { storeData($(this)); + saveStatusAndObl($(this)); } }); + function saveStatusAndObl(thisObj) { + let $tr = thisObj.closest("tr"); + let localJsonObject = {}; + + localJsonObject["comment"] = $tr.find("input.obl_comment").val(); + localJsonObject["status"] = $tr.find("select.obl_status").val(); + + localStorage.setItem($tr.find("span").text()+"- "+projectId, JSON.stringify(localJsonObject)); + } + function storeData(thisObj) { let $tr = thisObj.closest("tr"); if (!$tr.hasClass('orphan')) {