tabulator listazo alapok
authorelgekko <vasary@elgekko.net>
Tue, 10 May 2022 09:10:08 +0000 (11:10 +0200)
committerelgekko <vasary@elgekko.net>
Tue, 10 May 2022 09:10:08 +0000 (11:10 +0200)
server/user.mediacube.gui/pages/jobeditor.zul
server/user.mediacube.gui/pages/jobeditor2.zul
server/user.mediacube.gui/pages/jobs.zul
server/user.mediacube.gui/pages/searchitems/tabulatorresults.zul
server/user.mediacube.gui/src/user/jobengine/zk/converter/TabulatorDataConverter.java [new file with mode: 0644]
server/user.mediacube.gui/src/user/jobengine/zk/model/CachedListModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/GridSearchModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/IndexModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/MissingMaterialsModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/TabulatorSearchModel.java

index ad865467742cc34dcfa7b0ced85756168ffddc11..7a194d85b87c5651cebab3ef0e66998d8c1ef598 100644 (file)
@@ -12,6 +12,8 @@
        <vlayout height="100%" viewModel="@id('jlm') @init('user.jobengine.zk.model.JobEditorModel')">\r
                <toolbar>\r
                        <toolbarbutton label="Futtatás" iconSclass="z-icon-play" onClick="@command('execute')" disabled="${not sessionScope.userPrincipal.admin}" autodisable="self" />\r
+                       <separator orient="vertical"/>\r
+                       <toolbarbutton label="Újratöltés" iconSclass="z-icon-dot-circle-o" onClick="@command('reload')" autodisable="self"/>\r
                </toolbar>\r
                <borderlayout vflex="true">\r
                        <center border="none" vflex="true">\r
@@ -34,7 +36,6 @@
                                        <tabs visible="true">\r
                                                <tab id="tab0" label="Paraméterek" selected="true" />\r
                                                <tab id="tab1" label="Részletek" />\r
-                                               <tab id="tab2" label="Ábra" />\r
                                        </tabs>\r
                                        <tabpanels>\r
                                                <tabpanel>\r
                                                        <label height="100%" ca:data-syntax-highlight="true" multiline="true" pre="true" \r
                                                                value="@bind(jlm.selectedJob['xml'])" />\r
                                                </tabpanel>\r
-                                               <tabpanel>\r
-                                                       <include src="pages/processVisualizer.zul" />\r
-                                               </tabpanel>\r
                                        </tabpanels>\r
                                </tabbox>\r
                        </east>\r
index 4f9e2dc16310df5f2449b92725066796be356119..693abe5f9caa49d2461a211a5e2a22a7b8997558 100644 (file)
@@ -15,6 +15,7 @@
                                disabled="${not sessionScope.userPrincipal.admin}" autodisable="self" />\r
                        <toolbarbutton label="Duplikálás" iconSclass="z-icon-copy" onClick="@command('duplicateProcessEntry')" />\r
                        <toolbarbutton label="Másolás" id="CopyProcessButton" iconSclass="z-icon-copy" onClick="@command('copyProcessEntry')" />\r
+                       <separator orient="vertical"/>\r
                        <toolbarbutton label="Újratöltés" iconSclass="z-icon-dot-circle-o" onClick="@command('reload')" autodisable="self"/>\r
                </toolbar>\r
                <borderlayout vflex="true">\r
index f4cee7ce31008efc7fe7afdb29c302452733ebc9..d31bd44cfca166e656ef08cfc2030bac0861ee1f 100644 (file)
@@ -2,13 +2,11 @@
 <!DOCTYPE xml>\r
 \r
 <zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:ca="client/attribute" xmlns:x="xhtml">\r
-       <style src="css/joblist.css" />\r
-\r
        <tabbox id="pagesTab" vflex="true" hflex="true" orient="top">\r
                <tabs visible="true">\r
                        <tab id="tab0" label="Futó folyamatok" selected="true" />\r
                        <tab id="tab1" label="Folyamat szerkesztő" />\r
-                       <tab id="tab2" label="Folyamat szerkesztő2" />\r
+<!--                   <tab id="tab2" label="Folyamat szerkesztő2" /> -->\r
                </tabs>\r
                <tabpanels>\r
                        <tabpanel>\r
@@ -17,9 +15,9 @@
                        <tabpanel>\r
                                <include src="/pages/jobeditor.zul"/>\r
                        </tabpanel>\r
-                       <tabpanel>\r
-                               <include src="/pages/jobeditor2.zul" /> \r
-                       </tabpanel>\r
+<!--                   <tabpanel> -->\r
+<!--                           <include src="/pages/jobeditor2.zul" />  -->\r
+<!--                   </tabpanel> -->\r
                </tabpanels>\r
        </tabbox>\r
 </zk>
\ No newline at end of file
index fbe73b2a81f42050de8a1aca3aae9d3811e120d9..4ee48d0aaea1acd9ddb0566815e5c08dcdf77e27 100644 (file)
        <style src="/css/tabulator.css" />\r
        <script src="/js/tabulator.js" />\r
 \r
-<paging totalSize="100" pageSize="20"/>\r
-<h:div id="example_table"></h:div>\r
-<h:script>\r
-//define data array\r
-var tabledata = [\r
-    {id:1, name:"Oli Bob", progress:12, gender:"male", rating:1, col:"red", dob:"19/02/1984", car:1,serviceHistory:"Jimmy Brown"},\r
-    {id:2, name:"Mary May", progress:1, gender:"female", rating:2, col:"blue", dob:"14/05/1982", car:true},\r
-    {id:3, name:"Christine Lobowski", progress:42, gender:"female", rating:0, col:"green", dob:"22/05/1982", car:"true"},\r
-    {id:4, name:"Brendon Philips", progress:100, gender:"male", rating:1, col:"orange", dob:"01/08/1980"},\r
-    {id:5, name:"Margret Marmajuke", progress:16, gender:"female", rating:5, col:"yellow", dob:"31/01/1999"},\r
-    {id:6, name:"Frank Harbours", progress:38, gender:"male", rating:4, col:"red", dob:"12/05/1966", car:1},\r
-];\r
-\r
-//initialize table\r
-var table = new Tabulator("#example_table", {\r
-       layout:"fitDataStretch",\r
-       height: "100%",\r
-    data:tabledata, //assign data to table\r
-    autoColumns:true, //create columns from data field names\r
-    sortMode:"remote",\r
-       columnDefaults:{\r
-       resizable:true,\r
-    },  \r
-    rowFormatter:function(row){\r
-                //create and style holder elements\r
-               var holderEl = document.createElement("div");\r
-               var tableEl = document.createElement("div");\r
+       <paging totalSize="100" pageSize="20"/>\r
+       <h:div id="result_table" onTableBuilt="@command('onTableBuilt')" onRowSelectionChanged="@command('onRowSelectionChanged')"></h:div>\r
+       <h:script>\r
+       \r
+       try {\r
+               var table = initTable();\r
+       } catch(error){\r
+               console.error(error);\r
+       }\r
+       \r
+       \r
+       function initTable() {\r
+               var table = new Tabulator("#result_table", {\r
+                       layout:"fitDataStretch",\r
+                       height: "100%",\r
+                   //data:tabledata,\r
+               <!--     autoColumns:true, -->\r
+                       columns:[\r
+                       {title:"ID", field:"id", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
+                       {title:"Cím", field:"name", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
+                       {title:"Fájlnév", field:"fileName", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
+                       {title:"Archiválva", field:"archiveDate", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }},\r
+                       {title:"Hossz", field:"length", headerSortTristate:true, headerClick:function(e, column){ onSort(column); }}\r
+                   ],\r
+               initialSort:[\r
+                       {column:"fileName", dir:"asc"}\r
+               ],\r
+                   sortMode:"remote",\r
+                   selectable: true,\r
+                       columnDefaults:{\r
+                       resizable:true,\r
+                   },  \r
+                   rowFormatter:function(row){\r
+                               console.log("Formatting", row);\r
                \r
-               holderEl.style.boxSizing = "border-box";\r
-               holderEl.style.padding = "10px 30px 10px 10px";\r
-               holderEl.style.borderTop = "1px solid #333";\r
-               holderEl.style.borderBotom = "1px solid #333";\r
+                               var holderEl = document.createElement("div");\r
+                               var tableEl = document.createElement("div");\r
+                               tableEl.style.margin = "5px";\r
+                               tableEl.style.width = "60%"\r
+                               tableEl.style.boxSizing = "border-box";\r
+                               \r
+                               holderEl.style.boxSizing = "border-box";\r
+                               holderEl.style.padding = "10px 30px 10px 10px";\r
+               <!--            holderEl.style.borderTop = "1px solid #333"; -->\r
+               <!--            holderEl.style.borderBotom = "1px solid #333"; -->\r
+                               \r
+                               \r
+                               //tableEl.style.border = "1px solid #333";\r
+                               \r
+                               holderEl.appendChild(tableEl);\r
+                               \r
+                               row.getElement().appendChild(holderEl);\r
+                               var relevant = row.getData().relevant;\r
+                               if (relevant)\r
+                                       tableEl.innerHTML = relevant; \r
+                   },  \r
+               });\r
                \r
+               function onSort(column){\r
+                       //console.log("onSort", column);\r
+               }\r
+\r
+               table.on("headerClick", function(e, column){\r
+                   //e - the click event object\r
+                   //column - column component\r
+                       console.log("headerClick", column._column.field, column._column.modules.sort.dir);\r
+               });\r
+                               \r
+               table.on("rowClick", function(e, row){\r
+                   //e - the click event object\r
+                   //row - row component\r
+                       console.log("rowClick", e, row);\r
+               });\r
                \r
-               tableEl.style.border = "1px solid #333";\r
+               table.on("rowSelectionChanged", function(data, rows){\r
+                       console.log("rowSelectionChanged", data, rows);\r
+                       zk.Widget.$('$result_table').fire('onRowSelectionChanged', {\r
+                               meta : data\r
+                       }, {\r
+                               toServer : true\r
+                       });\r
+               });\r
                \r
-               holderEl.appendChild(tableEl);\r
+               table.on("tableBuilt", function(){\r
+                       console.log("tableBuilt");\r
+                       zk.Widget.$('$result_table').fire('onTableBuilt', {\r
+                               meta : null\r
+                       }, {\r
+                               toServer : true\r
+                       });\r
+               });\r
                \r
-               row.getElement().appendChild(holderEl);\r
-               tableEl.innerHTML = row.getData().serviceHistory; \r
-    },  \r
-});\r
-</h:script>\r
+               return table;\r
+       }\r
+       </h:script>\r
 \r
 </zk>
\ No newline at end of file
diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/converter/TabulatorDataConverter.java b/server/user.mediacube.gui/src/user/jobengine/zk/converter/TabulatorDataConverter.java
new file mode 100644 (file)
index 0000000..5a788f5
--- /dev/null
@@ -0,0 +1,30 @@
+package user.jobengine.zk.converter;\r
+\r
+import java.util.List;\r
+\r
+import com.ibm.nosql.json.api.BasicDBList;\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.jobengine.db.ArchivedMedia;\r
+\r
+public class TabulatorDataConverter {\r
+       \r
+       public BasicDBList convert(List<ArchivedMedia> data) {\r
+               BasicDBList result = new BasicDBList();\r
+               \r
+               for (ArchivedMedia am : data) {\r
+                       BasicDBObject row = new BasicDBObject();\r
+                       row.put("id", am.getMedia().getHouseId());\r
+                       row.put("name", am.getMedia().getTitle());\r
+//                     row.put("fileName", am.getMedia().getMediaFilesName());\r
+                       row.put("archiveDate", am.getMedia().getArchived().toString());\r
+                       row.put("length", am.getMedia().getLength());\r
+                       //row.put("itemType", am.getMedia().getItemType().getName());\r
+                       row.put("itemTitle", am.getItem().getTitle());\r
+                       row.put("relevant", am.getRelevant());\r
+                       result.add(row);\r
+               }\r
+               return result;\r
+       }\r
+\r
+}\r
index dded66f51950bb6b09355a62b7a4544abb1096fc..622dbab70a4523c5d48cd5e28340b248b08574f8 100644 (file)
@@ -29,8 +29,6 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
        private int cacheSize = 1000;\r
        private HashMap<Integer, ArchivedMedia> cache = new HashMap<Integer, ArchivedMedia>();\r
        private boolean cachedMode = true;\r
-\r
-       private String searchValue = null;\r
        private int resultSetSize = -1;\r
 \r
        private ArrayList<Item> docSelection = new ArrayList<Item>();\r
@@ -129,6 +127,8 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
         */\r
        private void loadCache(int forIndex) {\r
                try {\r
+                       long startSearch = System.currentTimeMillis();\r
+\r
                        logger.info("Loading {}", forIndex);\r
                        clearCache();\r
                        SearchResult<ArchivedMedia> sr = null;\r
@@ -167,6 +167,9 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                                cacheStart = startPos + 1;\r
                                cacheEnd = cacheStart + (cache.size() == 0 ? 0 : (cache.size() - 1));\r
                        }\r
+\r
+                       long endSearch = System.currentTimeMillis();\r
+                       logger.info("Cache filled in {} s", (float) (endSearch - startSearch) / 1000);\r
                } catch (Exception e) {\r
                        fireCacheEvent(new Event(Events.ON_ERROR, null, e));\r
                        // ki kell nullazni, egyebkent tobbszeros lekerdezes van\r
@@ -189,8 +192,6 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                        }\r
                } catch (Exception e) {\r
                        fireCacheEvent(new Event(Events.ON_ERROR, null, e));\r
-                       // ki kell nullazni, egyebkent tobbszeros lekerdezes van\r
-                       resultSetSize = 0;\r
                }\r
                return result;\r
        }\r
index 8cfb9b9ec022b8e699a69e48c7879c3eae8d24c4..2d55d438c1bdc24a4126bcfcd37dc47726f78bae 100644 (file)
@@ -150,7 +150,6 @@ public class GridSearchModel extends AsyncBaseModel {
        private boolean missingProxy;\r
        private int selectedDateOption;\r
        private Window metaWindow;\r
-       private long startSearch;\r
 \r
        public GridSearchModel() {\r
                this.itemManager = ItemManager.getInstance();\r
@@ -245,8 +244,7 @@ public class GridSearchModel extends AsyncBaseModel {
                        tags = itemManager.getAllTags();\r
                        // lekerdezesi hiba\r
                        if (tags == null)\r
-                               Clients.showNotification("A cimkék inicializálása sikertelen!", "error", tagsToolbar, "start_center",\r
-                                               3000);\r
+                               Clients.showNotification("A cimkék inicializálása sikertelen!", "error", tagsToolbar, "start_center", 3000);\r
                        else\r
                                setSearchTags();\r
 \r
@@ -284,13 +282,11 @@ public class GridSearchModel extends AsyncBaseModel {
 \r
        @Command\r
        public void copyMediaIdToClipboard() {\r
-               String port = (Executions.getCurrent().getServerPort() == 80) ? ""\r
-                               : (":" + Executions.getCurrent().getServerPort());\r
+               String port = (Executions.getCurrent().getServerPort() == 80) ? "" : (":" + Executions.getCurrent().getServerPort());\r
                String baseURL = Executions.getCurrent().getScheme() + "://" + Executions.getCurrent().getServerName() + port\r
                                + Executions.getCurrent().getContextPath();\r
                String url = String.format("%s/?%s=%d", baseURL, MEDIA_ID, selectedObject.getMedia().getId());\r
-               String email = String.format("mailto:?subject=Média címe: %s &body=A média itt tekinthető meg: %s",\r
-                               selectedObject.getMedia().getTitle(), url);\r
+               String email = String.format("mailto:?subject=Média címe: %s &body=A média itt tekinthető meg: %s", selectedObject.getMedia().getTitle(), url);\r
                Executions.getCurrent().sendRedirect(email);\r
        }\r
 \r
@@ -307,14 +303,12 @@ public class GridSearchModel extends AsyncBaseModel {
                parameters.put("successRecipient", SessionUtil.getUserPrincipal().getEmail());\r
 \r
                try {\r
-                       jobEngine.submit(CREATE_LOWRES_TEMPLATE, scheduledJob.getJobName(), parameters,\r
-                                       SessionUtil.getUserPrincipal().getDisplayName());\r
-                       Messagebox.show("A proxy pótlása elindult, emailben értesíti a rendszer a folyamat végeztével.",\r
-                                       "Információ", Messagebox.OK, Messagebox.INFORMATION);\r
+                       jobEngine.submit(CREATE_LOWRES_TEMPLATE, scheduledJob.getJobName(), parameters, SessionUtil.getUserPrincipal().getDisplayName());\r
+                       Messagebox.show("A proxy pótlása elindult, emailben értesíti a rendszer a folyamat végeztével.", "Információ", Messagebox.OK,\r
+                                       Messagebox.INFORMATION);\r
                } catch (JobEngineException e) {\r
                        logger.info("Hiba a feladat indításakor", e);\r
-                       Messagebox.show("Hiba a feladat indításakor. A rendszer üzenete: " + e.getMessage(), "Hiba", Messagebox.OK,\r
-                                       Messagebox.ERROR);\r
+                       Messagebox.show("Hiba a feladat indításakor. A rendszer üzenete: " + e.getMessage(), "Hiba", Messagebox.OK, Messagebox.ERROR);\r
                }\r
        }\r
 \r
@@ -322,8 +316,6 @@ public class GridSearchModel extends AsyncBaseModel {
        @NotifyChange({ "searchResult", "selectedObject", "hasTSMMediaFile", "hasLowresMediaFile", "lowresMediaFilePath" })\r
        public void doSearch() {\r
 \r
-               startSearch = System.currentTimeMillis();\r
-\r
                try {\r
                        search.close();\r
                        search.select();\r
@@ -350,13 +342,11 @@ public class GridSearchModel extends AsyncBaseModel {
 \r
                        List<Long> selectedTypeIds = getTypeIDs(searchFilters);\r
 \r
-                       SearchOptions options = SearchOptions.create().setText(searchValue).setTypes(selectedTypeIds)\r
-                                       .setTags(searchTags).setFrom(searchFrom).setTo(searchTo).setMissingProxy(missingProxy)\r
-                                       .setDescLength(descLength).setOrder(orderBy, orderAscending);\r
+                       SearchOptions options = SearchOptions.create().setText(searchValue).setTypes(selectedTypeIds).setTags(searchTags).setFrom(searchFrom)\r
+                                       .setTo(searchTo).setMissingProxy(missingProxy).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
+                               throw new Exception("Legalább egy keresési opció használata kötelező: 3 karakter, hiányzó proxy, dátum, típus, cimke!");\r
                        searchResult = new CachedListModel(options);\r
                        searchResult.addEventListener(e -> {\r
                                if (e.getName().equals(Events.ON_ERROR)) {\r
@@ -659,8 +649,6 @@ public class GridSearchModel extends AsyncBaseModel {
                } catch (Exception e) {\r
                        handleSearchError(e);\r
                }\r
-               long endSearch = System.currentTimeMillis();\r
-               logger.info("onAfterRenderGrid end, ellapsed {} s", (float) (endSearch - startSearch) / 1000);\r
        }\r
 \r
        @Command\r
@@ -703,8 +691,7 @@ public class GridSearchModel extends AsyncBaseModel {
                        doubleVar = (Double) jsObject.get("meta");\r
                }\r
 \r
-               if (doubleVar.floatValue() >= ((selectedObject.getTcOut() == null) ? 9999999999999999999999.9\r
-                               : selectedObject.getTcOut())) {\r
+               if (doubleVar.floatValue() >= ((selectedObject.getTcOut() == null) ? 9999999999999999999999.9 : selectedObject.getTcOut())) {\r
                        throw new Exception("A kilépés időpontjának későbbinek kell lennie mint a belépés időpontja!");\r
                } else {\r
                        selectedObject.setTcIn(new Float(doubleVar.floatValue()));\r
@@ -751,8 +738,7 @@ public class GridSearchModel extends AsyncBaseModel {
                        metaWindow = null;\r
                };\r
 \r
-               metaWindow = (Window) Executions.createComponents(template, null,\r
-                               ListUtils.asMap("selectedObject", selectedObject, "listener", listener));\r
+               metaWindow = (Window) Executions.createComponents(template, null, ListUtils.asMap("selectedObject", selectedObject, "listener", listener));\r
                metaWindow.doOverlapped();\r
                metaWindow.addEventListener("onClose", listener);\r
        }\r
@@ -817,8 +803,7 @@ public class GridSearchModel extends AsyncBaseModel {
                case TAGTYPE_REMOVE:\r
                        mediaTags.remove(tagText.toLowerCase());\r
                        if (id == 0) {\r
-                               Messagebox.show("A cimke már nem található az adatbázisban: " + tagText, "Belső hiba!", Messagebox.OK,\r
-                                               Messagebox.EXCLAMATION);\r
+                               Messagebox.show("A cimke már nem található az adatbázisban: " + tagText, "Belső hiba!", Messagebox.OK, Messagebox.EXCLAMATION);\r
                                return;\r
                        }\r
                        itemManager.removeMediaTag(id, selectedObject.getMedia().getId());\r
@@ -840,8 +825,7 @@ public class GridSearchModel extends AsyncBaseModel {
 \r
        @Command\r
        @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
-       public void select(@BindingParam("selectedObject") ArchivedMedia selectedObject,\r
-                       @ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
+       public void select(@BindingParam("selectedObject") ArchivedMedia selectedObject, @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
@@ -1137,9 +1121,7 @@ public class GridSearchModel extends AsyncBaseModel {
                // preventAfterRender = true;\r
                if (activePageIndex != itemsGrid.getActivePage()) {\r
                        itemsGrid.setActivePage(activePageIndex);\r
-                       logger.info(\r
-                                       "Selected media is shown in the results, which can be found on {} page and also it will be highlighted.",\r
-                                       activePageIndex + 1);\r
+                       logger.info("Selected media is shown in the results, which can be found on {} page and also it will be highlighted.", activePageIndex + 1);\r
                } else {\r
                        // TODO for debug purposes\r
                        // onAfterRenderGrid();\r
@@ -1148,9 +1130,9 @@ public class GridSearchModel extends AsyncBaseModel {
        }\r
 \r
        private void showSearchTypeWarning() {\r
-               Clients.showNotification(String.format(\r
-                               "Figyelem!<br><br><span style='white-space:nowrap'> A keresés eredménye nem tartalmazza az összes típust.</span>"),\r
-                               "warning", toggleShowTypeFilters, "end_center", 3000);\r
+               Clients.showNotification(\r
+                               String.format("Figyelem!<br><br><span style='white-space:nowrap'> A keresés eredménye nem tartalmazza az összes típust.</span>"), "warning",\r
+                               toggleShowTypeFilters, "end_center", 3000);\r
        }\r
 \r
        @Command\r
index cb01bdc8c4ed2f192f7a6961518e7859e9c3f031..21d1e57a96cd36f0d2939a7b7c6ad11d70b8eae2 100644 (file)
@@ -24,16 +24,14 @@ import user.jobengine.zk.util.SessionUtil;
 public class IndexModel extends BaseModel {\r
        private static final Logger logger = LogManager.getLogger();\r
        private String page;\r
-       private Map<String, Object> pathMap = ListUtils.asMap("/", "searchitems", "jobs", "jobs", "missingmaterials",\r
-                       "missingmaterials", "newshistory", "newshistory", "edithistory", "edithistory", "statistics", "statistics",\r
-                       "maestro", "maestro", "pwdgen", "pwdgen");\r
+       private Map<String, Object> pathMap = ListUtils.asMap("/", "searchitems", "jobs", "jobs", "missingmaterials", "missingmaterials", "newshistory",\r
+                       "newshistory", "edithistory", "edithistory", "statistics", "statistics", "maestro", "maestro", "pwdgen", "pwdgen");\r
 \r
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
                Selectors.wireComponents(view, this, false);\r
                Selectors.wireEventListeners(view, this);\r
-               route(Executions.getCurrent().getParameter("action"), SessionUtil.getQueryString(Arrays.asList("action")),\r
-                               false);\r
+               route(Executions.getCurrent().getParameter("action"), SessionUtil.getQueryString(Arrays.asList("action")), false);\r
                SessionUtil.setAttribute(IndexModel.class.getCanonicalName(), this);\r
        }\r
 \r
@@ -54,7 +52,7 @@ public class IndexModel extends BaseModel {
                String realAction = action.equals("/") ? action : "/actions/" + action;\r
                realAction += query;\r
                Clients.evalJavaScript(String.format("window.history.pushState(null, null, '%s');", realAction));\r
-               logger.info("Pushed to client: {}", realAction);\r
+               logger.debug("Pushed to client: {}", realAction);\r
        }\r
 \r
        public void route(String action, String query, boolean silently) {\r
index 3070cbd852f04b82255a45fd1d8aa9efb1579082..f171bccebd67529886813d2068fed43fd0c5480d 100644 (file)
@@ -46,7 +46,6 @@ import user.jobengine.server.ast.ParameterExpression;
 import user.jobengine.server.ast.VariableDeclaration;\r
 import user.jobengine.server.ast.VariableName;\r
 import user.jobengine.server.scheduler.ScheduledJob;\r
-import user.jobengine.server.scheduler.SchedulerService;\r
 \r
 public class JobEditorModel extends BaseModel {\r
        private static final String XML = "xml";\r
@@ -213,8 +212,7 @@ public class JobEditorModel extends BaseModel {
 //     }\r
 \r
        private void toast(IJobRuntime runtime) {\r
-               Clients.evalJavaScript(\r
-                               String.format("showToast('<b>%s</b> elindítva.</br>ID %d')", runtime.getName(), runtime.getId()));\r
+               Clients.evalJavaScript(String.format("showToast('<b>%s</b> elindítva.</br>ID %d')", runtime.getName(), runtime.getId()));\r
        }\r
 \r
        public ListModelList<BasicDBObject> getJobs() {\r
@@ -247,6 +245,7 @@ public class JobEditorModel extends BaseModel {
        }\r
 \r
        private void initJobList() {\r
+               setSelectedJob(null);\r
                List<BasicDBObject> jobsCollection = new ArrayList<BasicDBObject>();\r
                for (int index = 0; index < jobEngine.getJobEngineConfiguration().getSchedules().size(); index++) {\r
                        jobsCollection.add(jobEngine.getJobEngineConfiguration().getSchedules().get(index).getValue());\r
@@ -262,21 +261,17 @@ public class JobEditorModel extends BaseModel {
                        return aName.toLowerCase().compareTo(bName.toLowerCase());\r
                });\r
                jobs = new ListModelList<>(jobsCollection);\r
-\r
        }\r
 \r
        @Command\r
-       @NotifyChange("jobs")\r
+       @NotifyChange({ "selectedJob", "jobs" })\r
        public void reload() {\r
-               SchedulerService scheduler = jobEngine.getScheduler();\r
                try {\r
-                       scheduler.restart();\r
+                       jobEngine.reloadGracefully();\r
                        initJobList();\r
-\r
                } catch (Exception e) {\r
-                       logger.info("Scheduler reload error. System message: {}", e.getMessage());\r
+                       Messagebox.show(e.getMessage(), "Hiba!", Messagebox.OK, Messagebox.ERROR);\r
                }\r
-\r
        }\r
 \r
        public void setJobs(ListModelList<BasicDBObject> jobs) {\r
index 45ea3b6798d930fe0a74f273eec38d6f4de29d85..86fd8e1f0e9683b54e788c4a363cf4ef0cc53fd2 100644 (file)
@@ -73,8 +73,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                Map<String, Object> jobParameters = importJob.getJobParameters();\r
                Object targetPath = jobParameters.get(TARGETPATH);\r
                if (!(targetPath instanceof String)) {\r
-                       Messagebox.show(\r
-                                       "Nem található az 'import-morpheus-missing-materials.xml' folyamatsablonban a 'targetPath' paraméter.");\r
+                       Messagebox.show("Nem található az 'import-morpheus-missing-materials.xml' folyamatsablonban a 'targetPath' paraméter.");\r
                        return;\r
 \r
                }\r
@@ -84,8 +83,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                        if (!MorpheusStrings.STATUS_RESTORABLE.equals(status))\r
                                continue;\r
                        List<IJobRuntime> jobRuntimes = new ArrayList<>(jobEngine.getJobs().values());\r
-                       Optional<IJobRuntime> findFirst = jobRuntimes.stream()\r
-                                       .filter(jobRuntime -> isRetrieveJobFor(jobRuntime, material)).findFirst();\r
+                       Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(jobRuntime -> isRetrieveJobFor(jobRuntime, material)).findFirst();\r
 \r
                        String name = material.getString(MorpheusStrings.MATERIALID);\r
                        if (findFirst.isPresent()) {\r
@@ -96,7 +94,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                                        ScheduledJob retrieveJob = jobEngine.getScheduledJob(RETRIEVE_TEMPLATE);\r
                                        Map<String, Object> parameters = retrieveJob.getJobParameters();\r
                                        parameters.put(MorpheusStrings.MATERIAL, material);\r
-                                       jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiÄ\82Ë\87nyzÄ\82Å\82 anyag visszatÄ\82¶ltÄ\82©se", name), parameters);\r
+                                       jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), parameters);\r
                                } catch (Exception e) {\r
                                        logger.catching(e);\r
                                }\r
@@ -141,8 +139,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                        importJob = jobEngine.getScheduledJob(IMPORT_TEMPLATE);\r
 \r
                        List<IJobRuntime> jobRuntimes = new ArrayList<>(jobEngine.getJobs().values());\r
-                       Optional<IJobRuntime> findFirst = jobRuntimes.stream()\r
-                                       .filter(jobRuntime -> isImportJob(jobRuntime.getTemplate())).findFirst();\r
+                       Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(jobRuntime -> isImportJob(jobRuntime.getTemplate())).findFirst();\r
                        if (findFirst.isPresent())\r
                                setImportDisabled(true);\r
                        initializeList();\r
@@ -202,8 +199,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
        }\r
 \r
        private void onRetrieveJobChanged(IJobRuntime jobRuntime) {\r
-               Optional<BasicDBObject> findFirst = jobList.stream().filter(material -> isRetrieveJobFor(jobRuntime, material))\r
-                               .findFirst();\r
+               Optional<BasicDBObject> findFirst = jobList.stream().filter(material -> isRetrieveJobFor(jobRuntime, material)).findFirst();\r
                if (findFirst.isPresent()) {\r
                        BasicDBObject material = findFirst.get();\r
                        BindUtils.postNotifyChange(null, null, material, "*");\r
index d7af8b0a92fb4ced87bf95c9b710f713dda62dda..9ba3597a3c6156ce09e857fc5013b9af4ffd8d8f 100644 (file)
@@ -57,6 +57,8 @@ import org.zkoss.zul.Vlayout;
 import org.zkoss.zul.West;\r
 import org.zkoss.zul.Window;\r
 \r
+import com.ibm.nosql.json.api.BasicDBList;\r
+\r
 import user.commons.ListUtils;\r
 import user.commons.StoreUri;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
@@ -71,6 +73,7 @@ import user.jobengine.gui.ComponentBinder;
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.JobEngineException;\r
 import user.jobengine.server.scheduler.ScheduledJob;\r
+import user.jobengine.zk.converter.TabulatorDataConverter;\r
 import user.jobengine.zk.util.SessionUtil;\r
 \r
 public class TabulatorSearchModel extends AsyncBaseModel {\r
@@ -101,7 +104,7 @@ public class TabulatorSearchModel extends AsyncBaseModel {
        private Map<String, Long> tags = null;\r
        private List<Long> searchTags = new ArrayList<Long>();\r
        protected IItemManager itemManager = null;\r
-\r
+       private TabulatorDataConverter tabulatorConverter = new TabulatorDataConverter();\r
        @Wire\r
        Timer timer;\r
        @Wire\r
@@ -204,8 +207,8 @@ public class TabulatorSearchModel extends AsyncBaseModel {
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
                // A MediaFileServlet a services/proxy alatt szolgal ki\r
-               // Clients.evalJavaScript("setSource('http://localhost:9080/services/proxy/20209535_1-20205617.mp4',\r
-               // 'video/mp4')");\r
+//             Clients.evalJavaScript("setSource('http://localhost:9080/services/proxy/20209535_1-20205617.mp4', 'video/mp4')");\r
+//             Clients.evalJavaScript("setSource('https://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8', 'application/x-mpegURL', 5.56)");\r
 \r
                try {\r
 \r
@@ -364,12 +367,21 @@ public class TabulatorSearchModel extends AsyncBaseModel {
 \r
                        int pageSize = SessionUtil.getUserPageSize();\r
                        List<ArchivedMedia> page = searchResult.loadPage(0, pageSize);\r
-\r
+                       BasicDBList jsonData = tabulatorConverter.convert(page);\r
+                       setResultGridData(jsonData);\r
                } catch (Exception e) {\r
                        handleSearchError(e);\r
                }\r
        }\r
 \r
+       private void setResultGridData(BasicDBList jsonData) {\r
+               StringBuilder sb = new StringBuilder();\r
+               sb.append("table.setData(");\r
+               sb.append(jsonData.toString());\r
+               sb.append(");");\r
+               Clients.evalJavaScript(sb.toString());\r
+       }\r
+\r
        public void doSort(Event event) throws Exception {\r
                // TODO hande sort\r
                // itemsGrid.getColumns().getChildren().forEach(c -> ((Column)\r
@@ -633,36 +645,36 @@ public class TabulatorSearchModel extends AsyncBaseModel {
                return rowsExpanded;\r
        }\r
 \r
-       @Command\r
-       public void onAfterRenderGrid() {\r
-               logger.info("onAfterRenderGrid begin");\r
-               // aszinkron fut le, kulon kezelendo a hiba\r
-               try {\r
-\r
-                       if (searchResult != null)\r
-                               logger.info("isempty {}", searchResult.isEmpty());\r
-\r
-                       String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
-                       if (mediaID != null) {\r
-                               selectedObject = searchResult.getElementAt(0);\r
-                               highlight(selectedObject, true);\r
-                               notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
-                               logger.info("onAfterRenderGrid end");\r
-                       } else {\r
-                               if (!preventAfterRender) {\r
-                                       preventAfterRender = true;\r
-\r
-                                       if (positionToScroll != -1) {\r
-                                               ensureVisible(positionToScroll);\r
-                                       }\r
-                               }\r
-                       }\r
-               } catch (Exception e) {\r
-                       handleSearchError(e);\r
-               }\r
-               long endSearch = System.currentTimeMillis();\r
-               logger.info("onAfterRenderGrid end, ellapsed {} s", (float) (endSearch - startSearch) / 1000);\r
-       }\r
+//     @Command\r
+//     public void onAfterRenderGrid() {\r
+//             logger.info("onAfterRenderGrid begin");\r
+//             // aszinkron fut le, kulon kezelendo a hiba\r
+//             try {\r
+//\r
+//                     if (searchResult != null)\r
+//                             logger.info("isempty {}", searchResult.isEmpty());\r
+//\r
+//                     String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
+//                     if (mediaID != null) {\r
+//                             selectedObject = searchResult.getElementAt(0);\r
+//                             highlight(selectedObject, true);\r
+//                             notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
+//                             logger.info("onAfterRenderGrid end");\r
+//                     } else {\r
+//                             if (!preventAfterRender) {\r
+//                                     preventAfterRender = true;\r
+//\r
+//                                     if (positionToScroll != -1) {\r
+//                                             ensureVisible(positionToScroll);\r
+//                                     }\r
+//                             }\r
+//                     }\r
+//             } catch (Exception e) {\r
+//                     handleSearchError(e);\r
+//             }\r
+//             long endSearch = System.currentTimeMillis();\r
+//             logger.info("onAfterRenderGrid end, ellapsed {} s", (float) (endSearch - startSearch) / 1000);\r
+//     }\r
 \r
        @Command\r
        public void onChangingCombo(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
@@ -1028,7 +1040,7 @@ public class TabulatorSearchModel extends AsyncBaseModel {
                        sb.append("]);");\r
 \r
                        String js = sb.toString();\r
-                       logger.info(js);\r
+                       // logger.info(js);\r
                        Clients.evalJavaScript(js);\r
                }\r
        }\r
@@ -1173,4 +1185,21 @@ public class TabulatorSearchModel extends AsyncBaseModel {
                timer.start();\r
        }\r
 \r
+       @Command\r
+       public void onTableBuilt(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
+               logger.info("tableBuilt");\r
+               String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
+               if (mediaID != null) {\r
+                       selectedObject = searchResult.getElementAt(0);\r
+                       highlight(selectedObject, true);\r
+                       notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
+               }\r
+       }\r
+\r
+       @Command\r
+       public void onRowSelectionChanged(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
+               logger.info("rowSelectionChanged");\r
+               JSONObject jsObject = (JSONObject) event.getData();\r
+               // NoSQLUtils.getValue("")\r
+       }\r
 }\r