From 6f02f7e4d890a78dd9d82c2c2c17fb5af9cf809f Mon Sep 17 00:00:00 2001 From: Stephen Kraffmiller Date: Fri, 18 Mar 2016 11:23:47 -0400 Subject: [PATCH] #3004 Fix Cancel functionality on File Tags Popups --- .../edu/harvard/iq/dataverse/DatasetPage.java | 36 ++++---- .../iq/dataverse/EditDatafilesPage.java | 91 +++++++++++++------ src/main/webapp/dataset.xhtml | 2 +- src/main/webapp/editFilesFragment.xhtml | 15 +-- 4 files changed, 94 insertions(+), 50 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 1e88f91db13..d785c82213a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -3563,16 +3563,9 @@ public void setTabFileTagsByName(List tabFileTagsByName) { } private void refreshCategoriesByName(){ - categoriesByName= new ArrayList<>(); - for (FileMetadata fm : selectedFiles) { - if (fm.getCategories() != null) { - for (int i = 0; i < fm.getCategories().size(); i++) { - if (!categoriesByName.contains(fm.getCategories().get(i).getName())) { - categoriesByName.add(fm.getCategories().get(i).getName()); - } - } - } + for (String category: dataset.getCategoriesByName() ){ + categoriesByName.add(category); } refreshSelectedTags(); } @@ -3684,9 +3677,6 @@ public void setNewCategoryName(String newCategoryName) { public String saveNewCategory() { if (newCategoryName != null && !newCategoryName.isEmpty()) { categoriesByName.add(newCategoryName); - for (FileMetadata fm : selectedFiles) { - fm.addCategoryByName(newCategoryName); - } } //Now increase size of selectedTags and add new category String[] temp = new String[selectedTags.length + 1]; @@ -3701,10 +3691,24 @@ public String saveNewCategory() { private void refreshSelectedTags() { selectedTags = null; selectedTags = new String[0]; - if (categoriesByName.size() > 0) { - selectedTags = new String[categoriesByName.size()]; - for (int i = 0; i < categoriesByName.size(); i++) { - selectedTags[i] = categoriesByName.get(i); + + List selectedCategoriesByName= new ArrayList<>(); + for (FileMetadata fm : selectedFiles) { + if (fm.getCategories() != null) { + for (int i = 0; i < fm.getCategories().size(); i++) { + if (!selectedCategoriesByName.contains(fm.getCategories().get(i).getName())) { + selectedCategoriesByName.add(fm.getCategories().get(i).getName()); + } + + } + + } + } + + if (selectedCategoriesByName.size() > 0) { + selectedTags = new String[selectedCategoriesByName.size()]; + for (int i = 0; i < selectedCategoriesByName.size(); i++) { + selectedTags[i] = (String) selectedCategoriesByName.get(i); } } Arrays.sort(selectedTags); diff --git a/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java b/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java index 726d5c11c66..b60bcecef19 100644 --- a/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java @@ -1506,6 +1506,16 @@ public List getTabFileTags() { public void setTabFileTags(List tabFileTags) { this.tabFileTags = tabFileTags; } + + private String[] selectedTabFileTags = {}; + + public String[] getSelectedTabFileTags() { + return selectedTabFileTags; + } + + public void setSelectedTabFileTags(String[] selectedTabFileTags) { + this.selectedTabFileTags = selectedTabFileTags; + } private String[] selectedTags = {}; @@ -1536,27 +1546,26 @@ private void refreshTabFileTagsByName() { } private void refreshSelectedTabFileTags() { - selectedTags = null; - selectedTags = new String[0]; + selectedTabFileTags = null; + selectedTabFileTags = new String[0]; if (tabFileTagsByName.size() > 0) { - selectedTags = new String[tabFileTagsByName.size()]; + selectedTabFileTags = new String[tabFileTagsByName.size()]; for (int i = 0; i < tabFileTagsByName.size(); i++) { - selectedTags[i] = tabFileTagsByName.get(i); + selectedTabFileTags[i] = tabFileTagsByName.get(i); } } - Arrays.sort(selectedTags); + Arrays.sort(selectedTabFileTags); } - private void refreshCategoriesByName() { - categoriesByName = new ArrayList<>(); - if (fileMetadataSelectedForTagsPopup.getCategories() != null) { - for (int i = 0; i < fileMetadataSelectedForTagsPopup.getCategories().size(); i++) { - categoriesByName.add(fileMetadataSelectedForTagsPopup.getCategories().get(i).getName()); - } + private void refreshCategoriesByName(){ + categoriesByName= new ArrayList<>(); + for (String category: dataset.getCategoriesByName() ){ + categoriesByName.add(category); } refreshSelectedTags(); } + private List categoriesByName; public List getCategoriesByName() { @@ -1570,10 +1579,20 @@ public void setCategoriesByName(List categoriesByName) { private void refreshSelectedTags() { selectedTags = null; selectedTags = new String[0]; - if (categoriesByName.size() > 0) { - selectedTags = new String[categoriesByName.size()]; - for (int i = 0; i < categoriesByName.size(); i++) { - selectedTags[i] = categoriesByName.get(i); + List selectedCategoriesByName = new ArrayList<>(); + + if (fileMetadataSelectedForTagsPopup.getCategories() != null) { + for (int i = 0; i < fileMetadataSelectedForTagsPopup.getCategories().size(); i++) { + if (!selectedCategoriesByName.contains(fileMetadataSelectedForTagsPopup.getCategories().get(i).getName())) { + selectedCategoriesByName.add(fileMetadataSelectedForTagsPopup.getCategories().get(i).getName()); + } + } + } + + if (selectedCategoriesByName.size() > 0) { + selectedTags = new String[selectedCategoriesByName.size()]; + for (int i = 0; i < selectedCategoriesByName.size(); i++) { + selectedTags[i] = (String) selectedCategoriesByName.get(i); } } Arrays.sort(selectedTags); @@ -1586,6 +1605,8 @@ public String[] getSelectedTags() { public void setSelectedTags(String[] selectedTags) { this.selectedTags = selectedTags; } + + /* * "File Tags" (aka "File Categories"): @@ -1600,12 +1621,18 @@ public String getNewCategoryName() { public void setNewCategoryName(String newCategoryName) { this.newCategoryName = newCategoryName; } - + public String saveNewCategory() { if (newCategoryName != null && !newCategoryName.isEmpty()) { - fileMetadataSelectedForTagsPopup.addCategoryByName(newCategoryName); - } + categoriesByName.add(newCategoryName); + } + //Now increase size of selectedTags and add new category + String[] temp = new String[selectedTags.length + 1]; + System.arraycopy(selectedTags, 0, temp, 0, selectedTags.length); + selectedTags = temp; + selectedTags[selectedTags.length - 1] = newCategoryName; + //Blank out added category newCategoryName = ""; return ""; } @@ -1615,12 +1642,24 @@ public String saveNewCategory() { */ public void saveFileTagsAndCategories() { // 1. File categories: - // we don't need to do anything for the file categories that the user - // selected from the pull down list; that was done directly from the - // page with the FileMetadata.setCategoriesByName() method. - // So here we only need to take care of the new, custom category - // name, if entered: + /* + In order to get the cancel button to work we had to separate the selected tags + from the file metadata and re-add them on save + + */ + fileMetadataSelectedForTagsPopup.setCategories(new ArrayList()); + if (newCategoryName != null) { + fileMetadataSelectedForTagsPopup.addCategoryByName(newCategoryName); + } + // 2. Tabular DataFile Tags: + if (selectedTags != null) { + for (int i = 0; i < selectedTags.length; i++) { + fileMetadataSelectedForTagsPopup.addCategoryByName(selectedTags[i]); + } + } + + logger.fine("New category name: " + newCategoryName); if (fileMetadataSelectedForTagsPopup != null && newCategoryName != null) { @@ -1633,14 +1672,14 @@ public void saveFileTagsAndCategories() { // 2. Tabular DataFile Tags: - if (tabularDataTagsUpdated && selectedTags != null) { + if (tabularDataTagsUpdated && selectedTabFileTags != null) { if (fileMetadataSelectedForTagsPopup != null && fileMetadataSelectedForTagsPopup.getDataFile() != null) { fileMetadataSelectedForTagsPopup.getDataFile().setTags(null); - for (int i = 0; i < selectedTags.length; i++) { + for (int i = 0; i < selectedTabFileTags.length; i++) { DataFileTag tag = new DataFileTag(); try { - tag.setTypeByLabel(selectedTags[i]); + tag.setTypeByLabel(selectedTabFileTags[i]); tag.setDataFile(fileMetadataSelectedForTagsPopup.getDataFile()); fileMetadataSelectedForTagsPopup.getDataFile().addTag(tag); diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index 9c47fc16fec..72fda13a700 100755 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -943,7 +943,7 @@ - + diff --git a/src/main/webapp/editFilesFragment.xhtml b/src/main/webapp/editFilesFragment.xhtml index ecfd8c8998d..ac53d1014ae 100644 --- a/src/main/webapp/editFilesFragment.xhtml +++ b/src/main/webapp/editFilesFragment.xhtml @@ -71,6 +71,7 @@ selection="#{EditDatafilesPage.selectedFiles}" var="fileMetadata" widgetVar="filesTable" emptyMessage="#{datasetPage || EditDatafilesPage.showFileUploadFileComponent() ? bundle['file.noUploadedFiles.tip'] : bundle['file.noSelectedFiles.tip']}"> + #{datasetPage}
@@ -471,12 +472,12 @@
- + - + - + @@ -488,8 +489,8 @@
- + value="#{EditDatafilesPage.selectedTags}" label="#{bundle.select}"> + @@ -523,7 +524,7 @@

#{bundle['file.tabularDataTags.tip']}

@@ -544,7 +545,7 @@
- +