git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Mon, 10 Jan 2022 10:21:57 +0000 (10:21 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Mon, 10 Jan 2022 10:21:57 +0000 (10:21 +0000)
server/user.mediacube.gui/src/user/jobengine/zk/model/ListSearchModel.java

index ac1e8f15aac671517381404bf9486e86a306246d..039afcfce631b2271f486ea6eedda060b2aba8ce 100644 (file)
@@ -45,9 +45,7 @@ import org.zkoss.zul.Button;
 import org.zkoss.zul.Checkbox;\r
 import org.zkoss.zul.Column;\r
 import org.zkoss.zul.Combobox;\r
-import org.zkoss.zul.Detail;\r
 import org.zkoss.zul.Hbox;\r
-import org.zkoss.zul.Hlayout;\r
 import org.zkoss.zul.ListModelList;\r
 import org.zkoss.zul.Listbox;\r
 import org.zkoss.zul.Listitem;\r
@@ -140,7 +138,7 @@ public class ListSearchModel extends AsyncBaseModel {
 \r
        private boolean orderAscending;\r
        private Map<String, String> topColorClasses;\r
-       private int selectedRowIndex = -1;\r
+       private int selectedListItemIndex = -1;\r
        private volatile boolean preventAfterRender;\r
        private int positionToScroll = -1;\r
        private ListModelList<String> searchHistory;\r
@@ -335,13 +333,7 @@ public class ListSearchModel extends AsyncBaseModel {
                                SessionUtil.putUserSearchHistory(searchHistory);\r
                        }\r
 \r
-                       List<String> searchFilters = getSelectedFilters();\r
-                       SessionUtil.putUserSearchFilter(searchFilters);\r
-\r
-                       if (SessionUtil.getUserColumnOrder() != null) {\r
-                               orderBy = columnHeaders.get(columnOrder.entrySet().iterator().next().getKey());\r
-                               orderAscending = columnOrder.entrySet().iterator().next().getValue().equals("ascending");\r
-                       }\r
+                       List<String> searchFilters = getColumnOrder();\r
 \r
                        if (searchFilters == null || searchFilters.size() == 0)\r
                                throw new Exception("Anyag típus kiválasztása kötelező!");\r
@@ -352,9 +344,7 @@ public class ListSearchModel extends AsyncBaseModel {
                                        .setTags(searchTags).setFrom(searchFrom).setTo(searchTo).setMissingProxy(missingProxy)\r
                                        .setDescLength(descLength).setOrder(orderBy, orderAscending);\r
 \r
-                       if (!options.isValid())\r
-                               throw new Exception(\r
-                                               "Legalább egy keresési opció használata kötelező: 3 karakter, hiányzó proxy, dátum, típus, cimke!");\r
+                       validateSearchOptions(options);\r
                        searchResult = new CachedListModel(options);\r
                        searchResult.addEventListener(e -> {\r
                                if (e.getName().equals(Events.ON_ERROR)) {\r
@@ -371,6 +361,24 @@ public class ListSearchModel extends AsyncBaseModel {
                }\r
        }\r
 \r
+       private void validateSearchOptions(SearchOptions options) throws Exception {\r
+               if (!options.isValid())\r
+                       throw new Exception(\r
+                                       "Legalább egy keresési opció használata kötelező: 3 karakter, hiányzó proxy, dátum, típus, cimke!");\r
+       }\r
+\r
+       private List<String> getColumnOrder() {\r
+               List<String> searchFilters = getSelectedFilters();\r
+               SessionUtil.putUserSearchFilter(searchFilters);\r
+\r
+               if (SessionUtil.getUserColumnOrder() != null) {\r
+                       orderBy = columnHeaders.get(columnOrder.entrySet().iterator().next().getKey());\r
+                       orderAscending = columnOrder.entrySet().iterator().next().getValue().equals("ascending");\r
+               }\r
+\r
+               return searchFilters;\r
+       }\r
+\r
        public void doSort(Event event) throws Exception {\r
                if (itemsListbox.getItemCount() > 0) {\r
                        itemsListbox.getHeads().forEach(c -> ((Column) c).setSortDirection("natural"));\r
@@ -594,20 +602,16 @@ public class ListSearchModel extends AsyncBaseModel {
                List<Listitem> components = itemsListbox.getItems();\r
                for (int i = 0; i < components.size(); i++) {\r
                        Listitem listitem = components.get(i);\r
-                       ArchivedMedia archivedMedia = (ArchivedMedia) listitem.getValue();\r
-                       if (archivedMedia != null && am.getMedia().getId() == archivedMedia.getMedia().getId()) {\r
-                               Detail detail = (Detail) listitem.getChildren().get(0);\r
-                               Hlayout hlayout = (Hlayout) detail.getChildren().get(0);\r
+                       ArchivedMedia currentArchivedMedia = (ArchivedMedia) listitem.getValue();\r
+                       if (currentArchivedMedia != null && am.getMedia().getId() == currentArchivedMedia.getMedia().getId()) {\r
+\r
                                if (highlight) {\r
-                                       selectedRowIndex = i;\r
+                                       selectedListItemIndex = i;\r
                                        listitem.setStyle("background: #F1F8E9;");\r
-                                       hlayout.setStyle("border-bottom: 1px solid #C5E1A5; background: #F1F8E9;");\r
                                } else {\r
                                        listitem.setStyle("background: none;");\r
-                                       hlayout.setStyle("border-bottom: 1px solid #ebebeb; background: none;");\r
                                }\r
                                break;\r
-\r
                        }\r
                }\r
        }\r
@@ -844,13 +848,13 @@ public class ListSearchModel extends AsyncBaseModel {
        @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
        public void select(@BindingParam("selectedObject") ArchivedMedia selectedObject,\r
                        @ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
-               Event event = ctx.getTriggerEvent();\r
-               // Nem mindig a row a target, ha a kepre kattintunk akkor az image\r
-               // selectedRowIndex = ((Row) event.getTarget()).getIndex();\r
                highlight(this.selectedObject, false);\r
                setSelectedObject(selectedObject);\r
                highlight(this.selectedObject, true);\r
+\r
+               // scrolls the ancestor elements to make the specified element visible\r
                Clients.scrollIntoView(mediaDetails.getFirstChild());\r
+\r
                logger.info("Media was selected. Selected media archive:{}", selectedObject.getMedia().getId());\r
        }\r
 \r
@@ -967,23 +971,27 @@ public class ListSearchModel extends AsyncBaseModel {
                if (mediaId > 0)\r
                        mediaTags = itemManager.getMediaTags(mediaId);\r
 \r
-               // inicializaljuk, hogy az addTag event ezeket mar ne akarja meg 1x hozzadni\r
+               // inicializaljuk, hogy az addTag event ezeket mar ne akarja meg 1x hozzaadni\r
                StringBuilder sb = new StringBuilder();\r
+               sb.insert(0, "addMediaTags([");\r
                if (mediaTags != null) {\r
-                       for (String tag : mediaTags) {\r
-                               selectedObject.getTags().add(tag.toLowerCase());\r
-                               if (tag.contains("'"))\r
-                                       continue;\r
-                               if (sb.length() > 0)\r
-                                       sb.append(",");\r
-                               sb.append(String.format("'%s'", tag));\r
+                       if (!mediaTags.isEmpty()) {\r
+                               for (String tag : mediaTags) {\r
+                                       selectedObject.getTags().add(tag.toLowerCase());\r
+                                       if (tag.contains("'")) {\r
+                                               continue;\r
+                                       }\r
+                                       if (sb.length() > 0) {\r
+                                               sb.append(",");\r
+                                       }\r
+                                       sb.append(String.format("'%s'", tag));\r
+                               }\r
                        }\r
                }\r
-               sb.insert(0, "addMediaTags([");\r
                sb.append("]);");\r
 \r
                String js = sb.toString();\r
-               logger.info(js);\r
+               logger.info("js: {}", js);\r
                Clients.evalJavaScript(js);\r
        }\r
 \r
@@ -1075,9 +1083,9 @@ public class ListSearchModel extends AsyncBaseModel {
                                logger.error(e);\r
                        }\r
 \r
-               } else\r
+               } else {\r
                        Clients.evalJavaScript("addMediaTags([]);");\r
-\r
+               }\r
        }\r
 \r
        private void setSettingsPageSize(int pageSize) {\r
@@ -1132,8 +1140,8 @@ public class ListSearchModel extends AsyncBaseModel {
        public void showInResults() {\r
                if (selectedObject == null)\r
                        return;\r
-               int activePageIndex = selectedRowIndex / itemsListbox.getPageSize();\r
-               positionToScroll = selectedRowIndex - itemsListbox.getPageSize() * activePageIndex;\r
+               int activePageIndex = selectedListItemIndex / itemsListbox.getPageSize();\r
+               positionToScroll = selectedListItemIndex - itemsListbox.getPageSize() * activePageIndex;\r
                // preventAfterRender = true;\r
                if (activePageIndex != itemsListbox.getActivePage()) {\r
                        itemsListbox.setActivePage(activePageIndex);\r