<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
<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
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
<!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
<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
<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
--- /dev/null
+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
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
*/\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
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
}\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
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
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
\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
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
@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
\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
} 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
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
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
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
\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
// 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
}\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
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
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
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
// }\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
}\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
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
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
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
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
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
}\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
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
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
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
@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
\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
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
sb.append("]);");\r
\r
String js = sb.toString();\r
- logger.info(js);\r
+ // logger.info(js);\r
Clients.evalJavaScript(js);\r
}\r
}\r
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