<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
<window id="zkwindow" border="true" width="100%" height="100%" contentStyle="padding:0;" \r
apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.DirectoryListModel')">\r
- <div id="kicsidiv" height="100%" width="100%">\r
+ <div height="100%" width="100%">\r
+<custom-attributes org.zkoss.zul.image.preload="true" />\r
<!-- Keresés menü -->\r
<hbox width="100%">\r
- <button id="sback" onClick="@command('onBack')" image="/img/baseline_arrow_back_black_18dp.png">\r
- <attribute w:name="onClick"><![CDATA[\r
- var ss = zk.Widget.$(jq('$sourceSearch')),\r
- val = "";\r
- ss.setValue(val);\r
- ss.smartUpdate('value', val);\r
- ]]></attribute>\r
- </button>\r
+ <button onClick="@command('onBack')" image="/img/baseline_arrow_back_black_18dp.png" />\r
<textbox id="sourceSearch" value="@bind(vm.searchText)" onOK="@command('doSearch')" />\r
<button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" />\r
- <button id="resetSSearch" image="/img/baseline_close_black_18dp.png" onClick="@command('clearFilter')">\r
- <attribute w:name="onClick"><![CDATA[\r
- var ss = zk.Widget.$(jq('$sourceSearch')),\r
- val = "";\r
- ss.setValue(val);\r
- ss.smartUpdate('value', val);\r
- ]]></attribute>\r
- </button>\r
- <button id="refreshS" image="/img/baseline_refresh_black_18dp.png" onClick="@command('refresh')"/>\r
+ <button image="/img/baseline_close_black_18dp.png" onClick="@command('clearFilter')" />\r
+ <button image="/img/baseline_refresh_black_18dp.png" onClick="@command('refresh')"/>\r
</hbox>\r
<!-- Forrás file lista -->\r
- <listbox id="srcbox" vflex="true" model="@load(vm.files)" multiple="false" checkmark="true" \r
+ <listbox id="srcbox" vflex="true" sizedByContent="true" model="@load(vm.files)" multiple="false" checkmark="true" \r
oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" style="border: none; background: #e3e3e3 !important;"\r
ctrlKeys="#bak" onCtrlKey="@command('onBack')" onSelect="@command('selectedItemChanged')"\r
onAfterRender="srcbox.focus()">\r
+ <custom-attributes org.zkoss.zul.listbox.selectOnHighlight.disabled="true" />\r
<listhead>\r
- <listheader label="" sort="auto(isFolder)" width="8%" />\r
- <listheader label="Név" sort="auto(name)" width="40%" />\r
- <listheader label="Méret" sort="auto(size)" width="12%" />\r
- <listheader label="Létrehozva" sort="auto(created)" width="20%" />\r
- <listheader label="Módosítva" sort="auto(modify)" />\r
+ <listheader label="" hflex="min" align="left" />\r
+ <listheader label="Név" hflex="min" align="left" />\r
+ <listheader label="Méret" hflex="min" align="left" />\r
+ <listheader label="Létrehozva" hflex="min" align="left" />\r
+ <listheader label="Módosítva" hflex="min" align="left" />\r
</listhead>\r
\r
<template name="model">\r
<listitem onDoubleClick="@command('onDoubleClick',selectedItem=each)">\r
- <attribute w:name="onDoubleClick"><![CDATA[\r
- var ss = zk.Widget.$(jq('$sourceSearch')),\r
- val = "";\r
- ss.setValue(val);\r
- ss.smartUpdate('value', val);\r
- ]]></attribute>\r
<listcell>\r
<image style="margin-left:4px;margin-top:2px;vertical-align:top;">\r
<attribute name="src" if="${!each.isFolder}">/img/outline_insert_drive_file_black_18dp.png</attribute>\r
\r
<listcell>\r
<label value="@load(each.name)" visible="${!each.isFolder}" />\r
- <a label="@load(each.name)" visible="${each.isFolder}" onClick="@command('onDoubleClick',selectedItem=each)">\r
- <attribute w:name="onClick"><![CDATA[\r
- var ss = zk.Widget.$(jq('$sourceSearch')),\r
- val = "";\r
- ss.setValue(val);\r
- ss.smartUpdate('value', val);\r
- ]]></attribute>\r
- </a>\r
+ <a label="@load(each.name)" visible="${each.isFolder}" onClick="@command('onDoubleClick',selectedItem=each)" />\r
</listcell>\r
<listcell><label value="@load(each.size) @converter(vm.fileSizeConverter)" visible="${!each.isFolder}" /></listcell>\r
<listcell><label value="@load(each.created) @converter('formatedDate',format='yyyy.MM.dd hh:mm:ss')" /></listcell>\r
<?xml version="1.0" encoding="UTF-8"?>\r
+<?init class="user.jobengine.zk.util.AuthInitiator"?>\r
<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
<window id="zkwindow" border="true" width="100%" height="98%" contentStyle="padding:0;" \r
apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.MaestroModel')">\r
<?xml version="1.0" encoding="UTF-8"?>\r
-<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
+<zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:ca="client/attribute">\r
+ <style>\r
+ .z-progressmeter { height: 16px; border: 1px solid #cfcfcf; background: #fff 0 0 repeat-x; text-align: left; overflow: hidden; // background-image:\r
+ url(/zkau/web/1bf94a1d/zul/img/misc/prgmeter-anim.gif); }\r
+ </style>\r
<window id="zkwindow" border="true" width="100%" height="100%" contentStyle="padding:0;" \r
- apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.MaestroJobListModel')">\r
- <custom-attributes org.zkoss.zul.image.preload="true" />\r
+ apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.MaestroJobListModel')">\r
+ <timer delay="500" repeats="true" onTimer="@command('uiTick')" />\r
+ <custom-attributes org.zkoss.zul.image.preload="true" />\r
\r
- <listbox id="jobs" height="400px" model="@load(vm.jobList)" multiple="false" checkmark="false"\r
+ <!-- div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" -->\r
+ <listbox height="400px" model="@load(vm.jobList)" multiple="false" checkmark="false"\r
oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
- <auxhead sclass="category-center">\r
- <auxheader label="Jobok" colspan="6"/>\r
- </auxhead>\r
<listhead>\r
- <listheader label="" sort="auto(isFolder)" width="8%" />\r
+ <!-- listheader label="" sort="auto(isFolder)" width="8%" / -->\r
+ <listheader label="Id" hflex="min" align="left" sort="auto" />\r
+ <listheader label="Indítás" hflex="min" align="left" sort="auto" />\r
+ <listheader label="Kész" hflex="min" align="left" sort="auto" />\r
+ <listheader label="Név" hflex="min" align="left" sort="auto" />\r
+ <listheader label="Prioritás" hflex="min" align="left" sort="auto" />\r
+ <listheader label="Állapot" hflex="min" align="left" sort="auto" />\r
+ <listheader label="Készültség" width="100px" align="left" sort="auto" />\r
+ <listheader label="Üzenet" hflex="max" align="left" sort="auto" />\r
+ <listheader label="Paraméterek" hflex="min" align="left" sort="auto" />\r
</listhead>\r
<template name="model" >\r
<listitem>\r
- <listcell><label value="@load(each)" /></listcell>\r
+ <listcell label="@load(each.id)" />\r
+ <listcell label="@load(each.submitted)" />\r
+ <listcell label="@load(each.finished)" />\r
+ <listcell label="@load(each.name)" />\r
+ <listcell label="@load(each.priority)" />\r
+ <listcell label="@load(each.status)" />\r
+ <listcell>\r
+ <progressmeter ca:data-animationspeed="-1" value="@load(each.progress)" width="100%" />\r
+ </listcell>\r
+ <listcell label="@load(each.description)" />\r
+ <listcell>\r
+ <a href="javascript:void(0);" label="Paraméterek" onClick="@command('showParameters', item=each)" />\r
+ </listcell>\r
</listitem>\r
</template>\r
</listbox>\r
+ <!-- /div -->\r
</window>\r
</zk>
\ No newline at end of file
<window id="zkwindow" border="true" width="100%" height="100%" contentStyle="padding:0;" \r
apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.TargetsListModel')">\r
<vbox vflex="true" width="100%">\r
- <vbox vflex="max" width="100%" pack="start">\r
- <checkbox label="${each.name}" onCheck="@command('onCheck', targetName=self.label, isChecked=self.checked)" forEach="${vm.targets}" />\r
- </vbox>\r
+ <vbox vflex="max" width="100%" pack="start">\r
+ <checkbox label="${each.name}" onCheck="@command('onCheck', targetName=self.label, isChecked=self.checked)" forEach="${vm.targets}" />\r
+ </vbox>\r
\r
- <vbox vflex="min" pack="end" align="end" width="100%" class="bottomright">\r
- <div align="" >\r
- <div class="bottomright">\r
- <button id="vegrehajt" label="Végrehajt" width="150px" height="80px"\r
- disabled="@command('notChecked') @global-command('notSelected')"\r
- onClick="@command('submitJob') @global-command('executeJob')" />\r
- </div>\r
- </div>\r
- </vbox>\r
- </vbox>\r
+ <vbox vflex="1" pack="end" align="end" width="97%" class="bottomright">\r
+ <button label="Végrehajt" width="150px" height="80px"\r
+ disabled="@load(!vm.executeEnabled)"\r
+ onClick="@command('createJob')" />\r
+ <separator />\r
+ </vbox>\r
+ </vbox>\r
</window>\r
</zk>\r
private FileSizeConverter fileSizeConverter = new FileSizeConverter();\r
private String searchText;\r
\r
+ @NotifyChange("searchText")\r
public void changeDirectory(RemoteFile selectedFolder) throws Exception {\r
setSearchText(null);\r
if (uri.getCurrentPath() == null) {\r
}\r
\r
@Command\r
- @NotifyChange("files")\r
+ @NotifyChange({ "files", "searchText" })\r
public void clearFilter() throws Exception {\r
- //files = new ListModelList<>(filesCopy);\r
+ // files = new ListModelList<>(filesCopy);\r
setSearchText(null);\r
files.clear();\r
files.addAll(filesCopy);\r
+ selectedItemChanged();\r
}\r
\r
@Command\r
} else {\r
uri.setCurrentPath(null);\r
}\r
- setSourceList();\r
}\r
+ setSourceList();\r
+ selectedItemChanged();\r
}\r
\r
@Command\r
- @NotifyChange({ "files", "searchText" })\r
+ @NotifyChange("searchText")\r
public void onDoubleClick(@BindingParam("selectedItem") RemoteFile selectedItem) {\r
if (selectedItem.getIsFolder()) {\r
try {\r
-\r
changeDirectory(selectedItem);\r
} catch (Exception e) {\r
logger.error("A forrás file -ok nem elérhetőek: {}", e);\r
}\r
}\r
+\r
+ selectedItemChanged();\r
}\r
\r
@Command\r
files.addAll(uri.getRemoteFiles());\r
} else {\r
files.clear();\r
- //List<RemoteFile> currList = new ArrayList<>;\r
+ // List<RemoteFile> currList = new ArrayList<>;\r
List<RemoteFile> currList = uri.getRemoteFiles();\r
for (int i = 0; i < currList.size(); i++) {\r
if (currList.get(i).getName().contains(searchText)) {\r
}\r
\r
@Command\r
+ @NotifyChange("executeEnabled")\r
public void selectedItemChanged() {\r
Set<RemoteFile> selection = files.getSelection();\r
- logger.info("Selected: {}", selection.size());\r
+ // logger.info("Selected: {}", selection.size());\r
\r
Map<String, Object> args = new HashMap<>();\r
args.put("sourcedata", selection);\r
}\r
\r
public void setSourceList() throws Exception {\r
- //files = new ListModelList<>(filesCopy);\r
- //files = new ListModelList<>(uri.getRemoteFiles());\r
+ // files = new ListModelList<>(filesCopy);\r
+ // files = new ListModelList<>(uri.getRemoteFiles());\r
files.clear();\r
files.addAll(uri.getRemoteFiles());\r
filesCopy = new ArrayList<>(files);\r
import org.apache.logging.log4j.Logger;\r
import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
+import org.zkoss.bind.annotation.GlobalCommand;\r
import org.zkoss.bind.annotation.Init;\r
import org.zkoss.bind.annotation.NotifyChange;\r
import org.zkoss.zk.ui.Executions;\r
import user.jobengine.server.IJobRuntime;\r
import user.jobengine.server.JobChangedEvent;\r
import user.jobengine.server.JobEngine;\r
+import user.jobengine.server.JobEngineException;\r
import user.jobengine.zk.util.SessionUtil;\r
\r
public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedListener {\r
private void initializeList() {\r
jobList.clear();\r
Map<Long, IJobRuntime> jobMap = jobEngine.getJobs();\r
- for (int i=0;i<jobMap.size();i++){\r
- if (jobMap.get(i).getOwner() == currentUser){\r
+ for (int i = 0; i < jobMap.size(); i++) {\r
+ if (jobMap.get(i).getOwner() == currentUser) {\r
jobList.add(i, jobMap.get(i));\r
}\r
}\r
this.jobList = jobList;\r
}\r
\r
-\r
public void setNewPriority(int newPriority) {\r
this.newPriority = newPriority;\r
}\r
Window window = (Window) Executions.createComponents(template, null, ListUtils.asMap("jobRuntime", jobRuntime));\r
window.doModal();\r
}\r
+\r
+ @GlobalCommand\r
+ @NotifyChange({ "jobList" })\r
+ public void submitJob() {\r
+ // public void submitJob(@BindingParam("targets") MaestroTarget targets)\r
+ // {\r
+ IJobRuntime job;\r
+ String template = "fake.xml";\r
+ // Map<String, Object> args = new HashMap<>();\r
+ // args.put("targets", targets);\r
+ try {\r
+ // jobEngine.submit(template, "fakeJob", null, currentUser);\r
+ job = jobEngine.submit(template, "fakeJob", ListUtils.asMap("itemID", 0), currentUser);\r
+ // jobList.add(job);\r
+ } catch (JobEngineException e) {\r
+ logger.info("Hiba a job indításakor", e);\r
+ }\r
+ }\r
+\r
}\r
public class MaestroTarget {\r
private String name;\r
private StoreUri storeUri;\r
+ private Boolean selected;\r
\r
public String getName() {\r
return name;\r
return storeUri;\r
}\r
\r
+ public Boolean isSelected() {\r
+ if (selected == null) {\r
+ return false;\r
+ } else {\r
+ return selected;\r
+ }\r
+ }\r
+\r
public void setName(String name) {\r
this.name = name;\r
}\r
\r
+ public void setSelected(Boolean selected) {\r
+ this.selected = selected;\r
+ }\r
+\r
public void setStoreUri(StoreUri storeUri) {\r
this.storeUri = storeUri;\r
}\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.BindUtils;\r
import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
import org.zkoss.bind.annotation.GlobalCommand;\r
private MaestroConfig config = null;\r
private ListModelList<MaestroTarget> targets;\r
private boolean executeEnabled;\r
+ Set<RemoteFile> sourceData;\r
+ Set<IMetadata> metaData;\r
+\r
+ public boolean conditionsOk() {\r
+ boolean srcMetaOk = false;\r
+ boolean ret = false;\r
+ if (sourceData != null && metaData != null) {\r
+ if (!sourceData.isEmpty() && !metaData.isEmpty()) {\r
+ srcMetaOk = true;\r
+ }\r
+ }\r
+\r
+ // Végén törölni !!! ////////////////////////////////////////\r
+ if (sourceData != null) {\r
+ if (!sourceData.isEmpty()) {\r
+ srcMetaOk = true;\r
+ }\r
+ }\r
+ // Végén törölni !!! ////////////////////////////////////////\r
+\r
+ if (srcMetaOk) {\r
+ for (int i = 0; i < targets.size(); i++) {\r
+ if (targets.get(i).isSelected().booleanValue()) {\r
+ ret = true;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ return ret;\r
+ }\r
+\r
+ @Command\r
+ public void createJob() {\r
+ Set<MaestroTarget> selection = targets.getSelection();\r
+\r
+ // Map<String, Object> args = new HashMap<>();\r
+ // args.put("targets", selection);\r
+ BindUtils.postGlobalCommand(null, null, "submitJob", null);\r
+ }\r
\r
public ListModelList<MaestroTarget> getTargets() {\r
return targets;\r
} catch (Exception e) {\r
logger.error("Hiba a config file beállításánál {}", e.getMessage());\r
}\r
+ setExecuteEnabled(false);\r
}\r
\r
+ @Command\r
public boolean isExecuteEnabled() {\r
return executeEnabled;\r
}\r
\r
@Command\r
- public void onCheck(@BindingParam("data") MaestroTarget data) {\r
- //@ContextParam(ContextType.TRIGGER_EVENT) CheckEvent event,\r
-\r
+ @NotifyChange("executeEnabled")\r
+ public void onCheck(@BindingParam("targetName") String targetName, @BindingParam("isChecked") Boolean isChecked) {\r
+ // public void onCheck(@BindingParam("sourcedata") Set<RemoteFile>\r
+ // sourceData, @BindingParam("metadata") Set<IMetadata> metaData) {\r
+ // @ContextParam(ContextType.TRIGGER_EVENT) CheckEvent event,\r
+ for (int i = 0; i < targets.size(); i++) {\r
+ if (targets.get(i).getName() == targetName) {\r
+ targets.get(i).setSelected(isChecked.booleanValue());\r
+ }\r
+ }\r
+ setExecuteEnabled(conditionsOk());\r
}\r
\r
+ @Command\r
+ @NotifyChange("executeEnabled")\r
public void setExecuteEnabled(boolean executeEnabled) {\r
this.executeEnabled = executeEnabled;\r
}\r
\r
- @NotifyChange("executeEnabled")\r
@GlobalCommand\r
+ @NotifyChange("executeEnabled")\r
public void updateExecuteState(@BindingParam("sourcedata") Set<RemoteFile> sourceData, @BindingParam("metadata") Set<IMetadata> metaData) {\r
- logger.info("{}", sourceData);\r
- logger.info("{}", metaData);\r
-\r
+ this.sourceData = sourceData;\r
+ this.metaData = metaData;\r
+ setExecuteEnabled(conditionsOk());\r
+ // logger.info("{}", sourceData);\r
+ // logger.info("{}", metaData);\r
}\r
\r
}\r