From: Sweidan Omar Date: Tue, 1 Mar 2022 14:41:04 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=0c0026c90570cff9b3643af670d96ae01324fb13;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C33004 --- 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 9331aaa0..9f964abe 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 @@ -36,7 +36,6 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.KeyEvent; -import org.zkoss.zk.ui.event.MouseEvent; import org.zkoss.zk.ui.event.SortEvent; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.Wire; @@ -45,9 +44,12 @@ import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Column; import org.zkoss.zul.Combobox; +import org.zkoss.zul.Div; import org.zkoss.zul.Hbox; import org.zkoss.zul.ListModelList; import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listhead; +import org.zkoss.zul.Listheader; import org.zkoss.zul.Listitem; import org.zkoss.zul.Menuitem; import org.zkoss.zul.Menupopup; @@ -60,6 +62,7 @@ import org.zkoss.zul.Toolbarbutton; import org.zkoss.zul.Vlayout; import org.zkoss.zul.West; import org.zkoss.zul.Window; +import org.zkoss.zul.event.ZulEvents; import user.commons.ListUtils; import user.commons.StoreUri; @@ -103,8 +106,9 @@ public class ListSearchModel extends AsyncBaseModel { private boolean itemSelected; private int descLength; private Map tags = null; - private List searchTags = new ArrayList<>(); + private List searchTags = new ArrayList(); protected IItemManager itemManager = null; + private List columnSizes = new ArrayList(); @Wire Timer timer; @@ -136,7 +140,7 @@ public class ListSearchModel extends AsyncBaseModel { private String orderBy; - private boolean orderAscending; + private boolean isOrderAscending; private Map topColorClasses; private int selectedListItemIndex = -1; private volatile boolean preventAfterRender; @@ -152,12 +156,12 @@ public class ListSearchModel extends AsyncBaseModel { public ListSearchModel() { this.itemManager = ItemManager.getInstance(); - typeFilters = new LinkedHashMap<>(); + typeFilters = new LinkedHashMap(); MediaCubeConfig mediaCubeConfig = SessionUtil.getMediaCubeConfig(); setTopTypeFilters(mediaCubeConfig.getTopTypeFilters()); setBottomTypeFilters(mediaCubeConfig.getBottomTypeFilters()); - columnHeaders = new LinkedHashMap<>(); + columnHeaders = new LinkedHashMap(); columnHeaders.put("ID", "mediahouseid"); columnHeaders.put("Cím", "mediatitle"); columnHeaders.put("Hossz", "length"); @@ -195,7 +199,8 @@ public class ListSearchModel extends AsyncBaseModel { } }; - // searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory()); + // searchHistory = new + // ListModelList(SessionUtil.getUserSearchHistory()); // setColumnOrder(); // setUserSelectedFilters(); } @@ -210,9 +215,9 @@ public class ListSearchModel extends AsyncBaseModel { // A MediaFileServlet a services/proxy alatt szolgal ki // Clients.evalJavaScript("setSource('http://localhost:9080/services/proxy/20209535_1-20205617.mp4', // 'video/mp4')"); + logger.info("afterCompose"); try { - Selectors.wireComponents(view, this, false); Selectors.wireEventListeners(view, this); @@ -226,8 +231,9 @@ public class ListSearchModel extends AsyncBaseModel { configureSearchResultListbox(); showExternalMediaID(); - searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory()); + searchHistory = new ListModelList(SessionUtil.getUserSearchHistory()); setColumnOrder(); + logger.info("columnOrder: {}", columnOrder); setUserSelectedFilters(); if (SessionUtil.getUserPageSize() != 0) { @@ -245,13 +251,16 @@ public class ListSearchModel extends AsyncBaseModel { else setSearchTags(); + Listhead head = itemsListbox.getListhead(); + head.addEventListener(ZulEvents.ON_COL_SIZE, new ColumnSizeListener(this)); +// setColumnSizes(columnSizes); } catch (Exception e) { handleSearchError(e); } } - private void clearAllFilters() { + private void unsetAllFilters() { for (String filter : typeFilters.keySet()) { typeFilters.get(filter).setChecked(false); } @@ -265,16 +274,17 @@ public class ListSearchModel extends AsyncBaseModel { } private void configureSearchResultListbox() { + logger.info("configureSearchResultListbox"); if (itemsListbox != null) { if (itemsListbox.getItemCount() > 0) { Paging paging = itemsListbox.getPagingChild(); paging.setAutohide(false); for (Component header : itemsListbox.getHeads()) { - Column column = (Column) header; + Listhead column = (Listhead) header; if (columnOrder != null) - if (column.getLabel().equals(columnOrder.entrySet().iterator().next().getKey())) - column.setSortDirection(columnOrder.entrySet().iterator().next().getValue()); + if (column.getAttribute("label").equals(columnOrder.entrySet().iterator().next().getKey())) + column.setAttribute("label", columnOrder.entrySet().iterator().next().getValue()); column.addEventListener("onSort", evt -> doSort(evt)); } } @@ -320,6 +330,7 @@ public class ListSearchModel extends AsyncBaseModel { @Command @NotifyChange({ "searchResult", "selectedObject", "hasTSMMediaFile", "hasLowresMediaFile", "lowresMediaFilePath" }) public void doSearch() { + logger.info("doSearch"); try { search.close(); search.select(); @@ -333,7 +344,7 @@ public class ListSearchModel extends AsyncBaseModel { SessionUtil.putUserSearchHistory(searchHistory); } - List searchFilters = getColumnOrder(); + List searchFilters = getSearchFilters(); if (searchFilters == null || searchFilters.size() == 0) throw new Exception("Anyag típus kiválasztása kötelező!"); @@ -342,7 +353,7 @@ public class ListSearchModel extends AsyncBaseModel { SearchOptions options = SearchOptions.create().setText(searchValue).setTypes(selectedTypeIds) .setTags(searchTags).setFrom(searchFrom).setTo(searchTo).setMissingProxy(missingProxy) - .setDescLength(descLength).setOrder(orderBy, orderAscending); + .setDescLength(descLength).setOrder(orderBy, isOrderAscending); validateSearchOptions(options); searchResult = new CachedListModel(options); @@ -367,19 +378,20 @@ public class ListSearchModel extends AsyncBaseModel { "Legalább egy keresési opció használata kötelező: 3 karakter, hiányzó proxy, dátum, típus, cimke!"); } - private List getColumnOrder() { + private List getSearchFilters() { 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"); + isOrderAscending = columnOrder.entrySet().iterator().next().getValue().equals("ascending"); } return searchFilters; } public void doSort(Event event) throws Exception { + logger.info("doSort"); if (itemsListbox.getItemCount() > 0) { itemsListbox.getHeads().forEach(c -> ((Column) c).setSortDirection("natural")); SortEvent evt = (SortEvent) event; @@ -387,13 +399,14 @@ public class ListSearchModel extends AsyncBaseModel { column.setSortDirection(evt.isAscending() ? "ascending" : "descending"); logger.info("{} {}", column.getLabel(), evt.isAscending()); - columnOrder = new HashMap<>(); + columnOrder = new HashMap(); columnOrder.put(column.getLabel(), column.getSortDirection()); SessionUtil.putUserColumnOrder(columnOrder); orderBy = columnHeaders.get(column.getLabel()); - orderAscending = evt.isAscending(); + isOrderAscending = evt.isAscending(); doSearch(); + notifyChange("searchResult", "selectedObject", "hasLowresMediaFile", "lowresMediaFilePath"); evt.stopPropagation(); } @@ -593,7 +606,7 @@ public class ListSearchModel extends AsyncBaseModel { Clients.showNotification("Database query error!", "error", btnSearch, "start_center", 3000); else Clients.showNotification(e.getMessage(), "error", btnSearch, "start_center", 3000); - logger.error(e); + logger.error(e.getMessage()); } private void highlight(ArchivedMedia am, boolean highlight) { @@ -641,11 +654,14 @@ public class ListSearchModel extends AsyncBaseModel { logger.info("onAfterRenderList begin"); // aszinkron fut le, kulon kezelendo a hiba try { - - if (searchResult != null) + if (searchResult != null) { logger.info("isEmpty {}", searchResult.isEmpty()); + } + setColumnSizes(columnSizes); + refreshColumns(); String mediaID = SessionUtil.getQueryParameter(MEDIA_ID); + logger.info("mediaID: {}", mediaID); if (mediaID != null) { selectedObject = searchResult.getElementAt(0); highlight(selectedObject, true); @@ -663,6 +679,7 @@ public class ListSearchModel extends AsyncBaseModel { if (positionToScroll != -1) { ensureVisible(positionToScroll); } + } catch (Exception e) { handleSearchError(e); } @@ -832,18 +849,6 @@ public class ListSearchModel extends AsyncBaseModel { } } - @Command - public void rowMouseOut(@BindingParam("evt") MouseEvent event) { - logger.info(event); - } - - // public void rowSelected(@BindingParam("item") Object media, - // @BindingParam("isChecked") boolean isChecked) { - @Command - public void rowMouseOver(@BindingParam("evt") MouseEvent event) { - logger.info(event); - } - @Command @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" }) public void select(@BindingParam("selectedObject") ArchivedMedia selectedObject, @@ -944,10 +949,12 @@ public class ListSearchModel extends AsyncBaseModel { } private void setColumnOrder() { + columnOrder = new HashMap(); if (SessionUtil.getUserColumnOrder() != null) { - columnOrder = new HashMap<>(); columnOrder.put(SessionUtil.getUserColumnOrder().entrySet().iterator().next().getKey(), (String) SessionUtil.getUserColumnOrder().entrySet().iterator().next().getValue()); + } else { + columnOrder.putAll(columnHeaders); } } @@ -1109,7 +1116,7 @@ public class ListSearchModel extends AsyncBaseModel { private void setUserSelectedFilters() { List selectedFilters = SessionUtil.getUserSearchFilter(); if (selectedFilters != null) { - clearAllFilters(); + unsetAllFilters(); for (String filter : selectedFilters) { if (typeFilters.containsKey(filter)) { TypeFilter typeFilter = typeFilters.get(filter); @@ -1184,4 +1191,35 @@ public class ListSearchModel extends AsyncBaseModel { timer.start(); } + public void refreshColumns() { + refreshListboxItems(); + } + + private void refreshListboxItems() { + for (Listitem listitem : itemsListbox.getItems()) { + for (int i = 0; i < 5; i++) { + ((Div) listitem.getFirstChild().getFirstChild().getFirstChild().getChildren().get(i)) + .setWidth(columnSizes.get(i)); + } + } + } + + public void setColumnSizes(List newColumnSizes) { + if (columnSizes.isEmpty()) { + Listhead head = itemsListbox.getListhead(); + for (int i = 0; i < 5; i++) { + Listheader header = (Listheader) head.getChildren().get(i); + if (header.getWidth() != null) { + columnSizes.add(header.getWidth()); + } else { + columnSizes.add("174px"); + } + } + } else { + for (int i = 0; i < newColumnSizes.size(); i++) { + columnSizes.set(i, newColumnSizes.get(i)); + } + } + logger.info("columnSizes: {}", columnSizes); + } }