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