From: Márk Mérész Date: Tue, 17 Jul 2018 14:33:49 +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=ca058e1a5705c7bb0de80c7e73b82a411886148a;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31186 --- diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java index 9f96b578..ca72266b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java @@ -99,11 +99,9 @@ public class SearchModel extends AsyncBaseModel { private boolean orderAscending; private Map topColorClasses; - private int selectedRowIndex; - private int selectedPageIndex; + private int selectedRowIndex = -1; private volatile boolean preventAfterRender; - private Row lastSelectedRow; - private int positionToScroll; + private int positionToScroll = -1; private ListModelList searchHistory; public SearchModel() { @@ -203,7 +201,7 @@ public class SearchModel extends AsyncBaseModel { clipboard.setContents(strSel, null); String email = String.format("mailto:?subject=Média címe: %s &body=A média itt tekinthető meg: %s", selectedObject.getMedia().getTitle(), url); // Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + email, "", Messagebox.OK, Messagebox.NONE); - Executions.getCurrent().sendRedirect(email, "_blank"); + Executions.getCurrent().sendRedirect(email); } @Command @@ -263,6 +261,7 @@ public class SearchModel extends AsyncBaseModel { if (children.size() > 0) { Component top = children.get(pos); Clients.scrollIntoView(top); + logger.info("Scrolled into the {}. row on the page.", pos); } }); timer.start(); @@ -391,7 +390,8 @@ public class SearchModel extends AsyncBaseModel { List components = itemsGrid.getRows().getChildren(); for (int i = 0; i < components.size(); i++) { Row row = (Row) components.get(i); - if (am == row.getValue()) { + ArchivedMedia archivedMedia = (ArchivedMedia) row.getValue(); + if (archivedMedia != null && am.getMedia().getId() == archivedMedia.getMedia().getId()) { Detail detail = (Detail) row.getChildren().get(0); Hlayout hlayout = (Hlayout) detail.getChildren().get(0); if (highlight) { @@ -405,7 +405,22 @@ public class SearchModel extends AsyncBaseModel { } } + } + private void highlight(int index, boolean highlight) { + if (index >= itemsGrid.getRows().getChildren().size()) + return; + List components = itemsGrid.getRows().getChildren(); + Row row = (Row) components.get(index); + Detail detail = (Detail) row.getChildren().get(0); + Hlayout hlayout = (Hlayout) detail.getChildren().get(0); + if (highlight) { + row.setStyle("background: #F1F8E9;"); + hlayout.setStyle("border-bottom: 1px solid #C5E1A5; background: #F1F8E9;"); + } else { + row.setStyle("background: none;"); + hlayout.setStyle("border-bottom: 1px solid #ebebeb; background: none;"); + } } public boolean isAllChecked() { @@ -426,30 +441,31 @@ public class SearchModel extends AsyncBaseModel { @Command public void onAfterRenderGrid() { - if (preventAfterRender) - return; logger.info("onAfterRenderGrid"); - // if (mediaID != null) { - // selectedObject = searchResult.getElementAt(0); - // highlight(selectedObject, true); - // notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath"); - // } else if (showResult) { - // List children = itemsGrid.getRows().getChildren(); - // itemsGrid.setActivePage(selectedPageIndex); - // Component pos = children.get(selectedRowIndex - itemsGrid.getPageSize() * itemsGrid.getActivePage()); - // Clients.scrollIntoView(pos); - // showResult = false; - // } - - preventAfterRender = true; - if (positionToScroll > -1) { - ensureVisible(positionToScroll - itemsGrid.getPageSize() * itemsGrid.getActivePage()); + if (!preventAfterRender) { + preventAfterRender = false; + return; + } + if (mediaID != null) { + selectedObject = searchResult.getElementAt(0); + highlight(selectedObject, true); + notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath"); + } + if (positionToScroll != -1) { + ensureVisible(positionToScroll); + highlight(selectedObject, true); positionToScroll = -1; } else ensureVisible(itemsGrid.getPageSize() * itemsGrid.getActivePage()); preventAfterRender = false; } + @Command + public void onPaging() { + logger.info("onPaging"); + preventAfterRender = true; + } + @Command public void openMetaDataDialog() { String template = "/pages/metadatadetails.zul"; @@ -475,19 +491,8 @@ public class SearchModel extends AsyncBaseModel { selectedRowIndex = ((Row) event.getTarget()).getIndex(); highlight(this.selectedObject, false); this.selectedObject = selectedObject; - selectedPageIndex = itemsGrid.getActivePage(); highlight(this.selectedObject, true); - - List components = itemsGrid.getRows().getChildren(); - for (Component obj : components) { - Row row = (Row) obj; - if (selectedObject.equals(row.getValue())) { - lastSelectedRow = row; - break; - } - } - //lastSelectedRow.getUuid() - logger.info(itemsGrid.getActivePage()); + logger.info("Media was selected. Selected media archive:{}", selectedObject.getMedia().getId()); } @NotifyChange("typeFilters") @@ -572,16 +577,19 @@ public class SearchModel extends AsyncBaseModel { } @Command - // @NotifyChange("itemsGrid") + @NotifyChange("itemsGrid") public void showInResults() { - if (lastSelectedRow == null) + if (selectedObject == null) return; - - List components = itemsGrid.getRows().getChildren(); - positionToScroll = components.indexOf(lastSelectedRow); - if (positionToScroll > -1) { - int page = positionToScroll / itemsGrid.getPageSize(); - itemsGrid.setActivePage(page); + int activePageIndex = selectedRowIndex / itemsGrid.getPageSize(); + positionToScroll = selectedRowIndex - itemsGrid.getPageSize() * activePageIndex; + preventAfterRender = true; + if (activePageIndex != itemsGrid.getActivePage()) { + itemsGrid.setActivePage(activePageIndex); + logger.info("Selected media is shown in the results, which can be found on {} page and also it will be highlighted.", activePageIndex + 1); + } else { + onAfterRenderGrid(); + logger.info("Selected media is shown in the results, which can be found on opened page."); } }