git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Tue, 17 Jul 2018 11:50:16 +0000 (11:50 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Tue, 17 Jul 2018 11:50:16 +0000 (11:50 +0000)
server/user.jobengine.osgi.server/pages/searchitems.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java

index 542b7344e65c6b442851b8a8daafbc9ac54c8ad3..2479b2d74d83677485fc7f7e7dd7b941f0536dc1 100644 (file)
 \r
                .type-inlist { width:80px; border-left:1px solid #008AC8; border-bottom:1px solid #008AC8; padding:4px; }\r
 \r
-               .buttonBold{ font-weight:bold; width:200px;}\r
-               .menuButtons{ display: flex; justify-content: space-between; padding:5px 10px 5px 10px; }\r
-               .menuButtons >button{ width:200px; }\r
-               .z-messagebox-window{ top:40% !important; width:30% !important; }\r
+               .buttonBold{ font-weight:bold; width:200px;} .menuButtons{ display: flex; justify-content: space-between; padding:5px 10px 5px 10px; } .menuButtons\r
+               >button{ width:200px; } .z-messagebox-window{ top:40% !important; width:30% !important; }\r
        </style>\r
        <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
                <timer id="timer" delay="1" repeats="false" onTimer="@command('uiTick')" />\r
                                                                </vlayout>\r
                                                        </hbox>\r
                                                </vlayout>\r
-                                               <hbox width="100%" pack="center" align="center">\r
-                                                       <textbox hflex="1" focus="true" instant="true" value="@bind(vm.searchValue)"\r
-                                                               tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
+                                               <hbox width="100%" pack="center" align="left">\r
+                                                       <combobox id="search" hflex="1" focus="true" model="@load(vm.searchHistory)" autodrop="true"\r
+                                                               tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onSelect="@command('doSearch')" onOK="@command('doSearch')">\r
+                                                               <template name="model">\r
+                                                                       <comboitem label="${each}" />\r
+                                                               </template>\r
+                                                       </combobox>\r
                                                        <button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" style="width:40px" />\r
                                                </hbox>\r
                                        </groupbox>\r
                                                </vlayout>\r
                                        </popup>\r
                                        <groupbox vflex="true" closable="false">\r
-                                       <!-- \r
-                                                       onAfterRender='Events.sendEvent("onAfterDataLoading", self, null);'\r
-                                               onAfterDataLoading="@command('afterDataLoading')"\r
-\r
--->\r
                                                <grid id="itemsGrid" sizedByContent="false" span="true" vflex="true" hflex="true" mold="paging" autopaging="false"\r
-                                                       model="@load(vm.searchResult)" emptyMessage="Nincs találat!" \r
-                                                       pageSize="50"\r
-                                                       onAfterRender="@command('onAfterRenderGrid')"\r
+                                                       model="@load(vm.searchResult)" emptyMessage="Nincs találat!" pageSize="50" onAfterRender="@command('onAfterRenderGrid')"\r
                                                        style="border: none; background: white !important;" oddRowSclass="listbox-odd-style">\r
                                                        <columns>\r
                                                                <column hflex="min">\r
                                                                                                                <label style="font:20px Century Gothic; color:#008AC8;" value="@load(each.item.title)" />\r
                                                                                                        </hlayout>\r
                                                                                                        <html sclass="relevant">\r
-\r
-\r
-\r
-                                                                                                               \r
                                                                                                                <![CDATA[ <div style='width: 90%'>${each.relevant}</div> ]]>\r
-                                                                                                               \r
-                                                                                                               \r
-                                                                                                               \r
-                                                                                                               \r
                                                                                                        </html>\r
                                                                                                </div>\r
                                                                                        </hlayout>\r
                                        <center border="none">\r
 \r
                                                <groupbox closable="false" mold="3d" width="100%" height="100%">\r
-<!--                                                   <div> -->\r
-<!--                                                   <button label="Visszaugrás a kijelölt videóhoz" onClick="@command('jumpToPosition')" autodisable="self" disabled="@load(vm.selectedObject eq null)" -->\r
-<!--                                                                   width="min" id="backToVideoButton"/> -->\r
-<!--                                                   </div> -->\r
                                                        <div width="100%" sclass="menuButtons">\r
-                                                       <toolbar vflex="min" width="100%" style="font-size:8px">\r
-                                                               <toolbarbutton image="/img/ic_compare_arrows_black_18dp.png" autodisable="self" onClick="@command('showInResults')" \r
-                                                                       disabled="@load(vm.selectedObject eq null)"\r
-                                                                       label="Szinkronizálás" hflex="min"/>\r
-                                                               <toolbarbutton image="/img/ic_shopping_cart_black_18dp.png" autodisable="self" onClick="@command('downloadMedia')" \r
-                                                                       disabled="@load(not vm.hasTSMMediaFile)" hflex="min"\r
-                                                                       label="Visszatöltés" />\r
-                                                               <toolbarbutton image="/img/baseline_share_black_18dp.png" autodisable="self" onClick="@command('copyMediaIdToClipboard')"\r
-                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)"\r
-                                                                       label="Megosztás" hflex="min"/>\r
-                                                                       \r
-                                                               <toolbarbutton image="/img/baseline_edit_black_18dp.png" autodisable="self" onClick="@command('openMetaDataDialog')"\r
-                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)"\r
-                                                                       label="Szerkesztés" hflex="min"/>\r
-                                                       </toolbar>\r
-                                                       \r
-                                                               <!--  <button label="Kosárba" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)"\r
-                                                                       sclass="buttonBold" />\r
-                                                               <button id="copyMediaIdButton" label="Email kiküldése" onClick="@command('copyMediaIdToClipboard')" autodisable="self"\r
-                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
-                                                               <button id="metadataButton" label="Szerkesztés" onClick="@command('openMetaDataDialog')" autodisable="self"\r
-                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />-->\r
+                                                               <toolbar vflex="min" width="100%" style="font-size:8px">\r
+                                                                       <toolbarbutton image="/img/ic_compare_arrows_black_18dp.png" autodisable="self" onClick="@command('showInResults')"\r
+                                                                               disabled="@load(vm.selectedObject eq null)" label="Szinkronizálás" hflex="min" />\r
+                                                                       <toolbarbutton image="/img/ic_shopping_cart_black_18dp.png" autodisable="self" onClick="@command('downloadMedia')"\r
+                                                                               disabled="@load(not vm.hasTSMMediaFile)" hflex="min" label="Visszatöltés" />\r
+                                                                       <toolbarbutton image="/img/baseline_share_black_18dp.png" autodisable="self" onClick="@command('copyMediaIdToClipboard')"\r
+                                                                               disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" label="Megosztás"\r
+                                                                               hflex="min" />\r
+                                                                       <toolbarbutton image="/img/baseline_edit_black_18dp.png" autodisable="self" onClick="@command('openMetaDataDialog')"\r
+                                                                               disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" label="Szerkesztés"\r
+                                                                               hflex="min" />\r
+                                                               </toolbar>\r
                                                        </div>\r
 \r
                                                        <div width="100%" height="90%" style="padding: 4px; overflow:auto; background-color: white">\r
index f05253212db6a5739f888eedee4c3d47632b077c..49dfa98f036ccdfe52d34065511edd3140cb0d1a 100644 (file)
@@ -33,9 +33,11 @@ import org.zkoss.zk.ui.util.Clients;
 import org.zkoss.zul.Button;\r
 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.Grid;\r
 import org.zkoss.zul.Hlayout;\r
+import org.zkoss.zul.ListModelList;\r
 import org.zkoss.zul.Messagebox;\r
 import org.zkoss.zul.Row;\r
 import org.zkoss.zul.Timer;\r
@@ -85,6 +87,9 @@ public class SearchModel extends AsyncBaseModel {
        Grid itemsGrid;\r
        @Wire\r
        Button backToVideoButton;\r
+       @Wire\r
+       Combobox search;\r
+\r
        private String orderBy;\r
        private boolean orderAscending;\r
 \r
@@ -95,6 +100,7 @@ public class SearchModel extends AsyncBaseModel {
        private volatile boolean preventAfterRender;\r
        private Row lastSelectedRow;\r
        private int positionToScroll;\r
+       private ListModelList<String> searchHistory;\r
 \r
        public SearchModel() {\r
                typeFilters = new LinkedHashMap<>();\r
@@ -147,6 +153,8 @@ public class SearchModel extends AsyncBaseModel {
                                }\r
                        }\r
                };\r
+\r
+               searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory());\r
        }\r
 \r
        private void addTypeFilter(TypeFilter typeFilter) {\r
@@ -185,15 +193,22 @@ public class SearchModel extends AsyncBaseModel {
        }\r
 \r
        @Command\r
-       @NotifyChange({ "searchResult", "selectedObject", "hasLowresMediaFile", "lowresMediaFilePath" })\r
+       @NotifyChange({ "searchResult", "selectedObject", "hasTSMMediaFile", "hasLowresMediaFile", "lowresMediaFilePath" })\r
        public void doSearch() {\r
                try {\r
-                       this.selectedObject = null;\r
+                       searchValue = search.getText();\r
                        if (StringUtils.isBlank(searchValue) || searchValue.length() < 3)\r
                                throw new Exception("Legalább 3 karakter megadása kötelező!");\r
 \r
                        List<String> searchFilters = getSelectedFilters();\r
                        searchResult = new CachedListModel(searchValue, searchFilters, orderBy, orderAscending);\r
+                       setSelectedObject(null);\r
+\r
+                       if (!searchHistory.contains(searchValue)) {\r
+                               searchHistory.add(0, searchValue);\r
+                               SessionUtil.putUserSearchHistory(searchHistory);\r
+                       }\r
+\r
                } catch (Exception e) {\r
                        Messagebox.show(e.getMessage(), "Hiba", Messagebox.OK, Messagebox.ERROR);\r
                        logger.catching(e);\r
@@ -303,12 +318,12 @@ public class SearchModel extends AsyncBaseModel {
                return result;\r
        }\r
 \r
-       public CachedListModel getSearchResult() {\r
-               return searchResult;\r
+       public ListModelList<String> getSearchHistory() {\r
+               return searchHistory;\r
        }\r
 \r
-       public String getSearchValue() {\r
-               return searchValue;\r
+       public CachedListModel getSearchResult() {\r
+               return searchResult;\r
        }\r
 \r
        private List<String> getSelectedFilters() {\r
@@ -504,8 +519,8 @@ public class SearchModel extends AsyncBaseModel {
                this.rowsExpanded = rowsExpanded;\r
        }\r
 \r
-       public void setSearchValue(String searchValue) {\r
-               this.searchValue = searchValue;\r
+       public void setSearchHistory(ListModelList<String> searchHistory) {\r
+               this.searchHistory = searchHistory;\r
        }\r
 \r
        @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
index 7c8bacdf25932d49e2ce4824dc2e3c5623cc21b1..94f07901f6ff2802feec447e6ca707050b692728 100644 (file)
@@ -3,6 +3,7 @@ package user.jobengine.zk.util;
 import java.io.FileInputStream;\r
 import java.io.InputStream;\r
 import java.util.ArrayList;\r
+import java.util.Arrays;\r
 import java.util.Collections;\r
 import java.util.List;\r
 import java.util.Map;\r
@@ -26,6 +27,7 @@ import user.jobengine.server.JobEngine;
 import user.jobengine.zk.model.IndexModel;\r
 \r
 public class SessionUtil {\r
+       private static final String SEARCH_HISTORY = "searchHistory";\r
        private static final String USER_NAME = "userName";\r
        private static final String USER_SETTINGS = "userSettings";\r
        private static Logger logger = LogManager.getLogger();\r
@@ -133,6 +135,12 @@ public class SessionUtil {
                return (UserPrincipal) getAttribute(USERPRINCIPAL);\r
        }\r
 \r
+       public static List<String> getUserSearchHistory() {\r
+               BasicDBObject userSettings = getUserSettings();\r
+               String[] history = (String[]) userSettings.get(SEARCH_HISTORY);\r
+               return (history == null) ? new ArrayList<>() : Arrays.asList(history);\r
+       }\r
+\r
        static private BasicDBObject getUserSettings() {\r
                BasicDBObject result = (BasicDBObject) getAttribute(USER_SETTINGS);\r
                if (result == null) {\r
@@ -141,6 +149,7 @@ public class SessionUtil {
                        if (result == null)\r
                                result = new BasicDBObject(USER_NAME, userPrincipal.getAccount());\r
                }\r
+               setAttribute(USER_SETTINGS, result);\r
                return result;\r
        }\r
 \r
@@ -210,6 +219,12 @@ public class SessionUtil {
                history.add(new BasicDBObject("action", action).append("query", query));\r
        }\r
 \r
+       public static void putUserSearchHistory(List<String> searchHistory) {\r
+               BasicDBObject userSettings = getUserSettings();\r
+               userSettings.put(SEARCH_HISTORY, searchHistory.toArray(new String[searchHistory.size()]));\r
+               putUserSettings();\r
+       }\r
+\r
        static private void putUserSettings() {\r
                BasicDBObject userSettings = (BasicDBObject) getAttribute(USER_SETTINGS);\r
                if (userSettings != null)\r