+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-public class CancelableStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(int param) throws Exception {\r
- logger.info(getMarker(), "Executing with param {}", param);\r
- for (int i = 0; i < 10; i++) {\r
- if (getJobRuntime().isWaitingCancel())\r
- break;\r
- Thread.sleep(1000);\r
- int progress = (i + 1) * 100 / 10;\r
- setProgress(progress);\r
- }\r
- return null;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-public class DummyTestStep1 extends JobStep {\r
- private static final Logger logger = LogManager.getLogger(DummyTestStep1.class);\r
-\r
- @StepEntry\r
- public Object[] execute(String param1) {\r
- logger.info("Executing DummyTestStep1");\r
- int var1 = 0;\r
- if (param1.equals("Jozsi")) {\r
- var1 = 1;\r
- Thread.sleep(1000);\r
- setProgress(50);\r
- Thread.sleep(1000);\r
- setProgress(50);\r
- }\r
-\r
- return new Object[] {var1}; \r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-public class DummyTestStep2 extends JobStep {\r
- private static final Logger logger = LogManager.getLogger(DummyTestStep2.class);\r
-\r
- @StepEntry\r
- public Object[] execute(int var2) {\r
- logger.info("Executing DummyTestStep2");\r
- long var3 = 0L;\r
-\r
- return new Object[] { var3 };\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-public class DummyTestStep3 extends JobStep {\r
- private static final Logger logger = LogManager.getLogger(DummyTestStep3.class);\r
-\r
- @StepEntry\r
- public void execute(long var3) {\r
- logger.info("Executing DummyTestStep3");\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.IJob;\r
-import user.commons.JobStatus;\r
-import user.commons.ListUtils;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class TestForkCancelableStep extends JobStep {\r
- private static final String CHILD_TEMPLATE = "cancelable.xml";\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(int count) throws Exception {\r
- getJobRuntime().forkPrepare();\r
- for (int i = 0; i < count; i++) {\r
- if (getJobRuntime().isWaitingCancel())\r
- break;\r
- IJobRuntime runtime = getEngine().submit(getJobRuntime(), e -> {\r
- IJobRuntime r = (IJobRuntime) e.getSource();\r
-\r
- if (r.isDisableRetry())\r
- return;\r
-\r
- if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED)) {\r
- long id = ((IJob) e.getSource()).getId();\r
- logger.info("Cleanup occured because status is {} {}", e.getStatus(), id);\r
- }\r
-\r
- }, CHILD_TEMPLATE, "JOB " + i, 0, IJobEngine.DEFAULT_OWNER, ListUtils.asMap("param", i));\r
-\r
- runtime.setRelated("TEST" + runtime.getId());\r
- }\r
-\r
- getJobRuntime().forkWaitComplete();\r
- return null;\r
- }\r
-}\r
<executor className="ArchiveListBuilderStep.java" maxConcurrent="1" isRemote="false" />\r
<executor className="ArchiveMaterialSubmitStep.java" maxConcurrent="1" isRemote="false" />\r
<executor className="BatchRetrieveForkStep.java" maxConcurrent="1" isRemote="false" />\r
- <executor className="CancelableStep.java" maxConcurrent="20" isRemote="false" />\r
+ <executor className="user.jobengine.server.steps.CancelableStep" maxConcurrent="20" isRemote="false" />\r
<executor className="CalculateMD5Step.java" maxConcurrent="1" isRemote="false "/>\r
<executor className="CleanupMountedLocationStep.java" maxConcurrent="5" isRemote="false" />\r
<executor className="CreateArchiveItemStep.java" maxConcurrent="1" isRemote="false" />\r
</parameters>\r
</declarations>\r
<commands>\r
- <calljobstep remote="true" type="CancelableStep.java" weight="1" >\r
+ <calljobstep remote="true" type="user.jobengine.server.steps.CancelableStep" weight="1" >\r
<inputs>\r
<input>\r
<parameter name="param" />\r
--- /dev/null
+package hu.user.mediacube.executors.tests;\r
+\r
+import static org.junit.Assert.assertNotNull;\r
+\r
+import java.io.File;\r
+import java.util.Set;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import groovy.lang.GroovyClassLoader;\r
+import user.jobengine.server.DynamicStepsLoader;\r
+\r
+public class DynamicStepsLoaderTests {\r
+ private static final Logger logger = LogManager.getLogger();\r
+ static DynamicStepsLoader sut = null;\r
+\r
+ @BeforeClass\r
+ static public void beforeClass() {\r
+ sut = new DynamicStepsLoader(\r
+ "C:/work/user/mediacube/server/user.jobengine.executors/src/user/jobengine/server/steps");\r
+ }\r
+\r
+ @Test\r
+ public void test0() throws Exception {\r
+ GroovyClassLoader classLoader = sut.createClassLoader(this.getClass().getClassLoader());\r
+ assertNotNull(classLoader);\r
+ }\r
+\r
+ @Test\r
+ public void test1() throws Exception {\r
+ GroovyClassLoader classLoader = sut.createClassLoader(this.getClass().getClassLoader());\r
+ Set<File> sourceFiles = sut.getSourceFiles();\r
+ logger.info("Chcking {} files", sourceFiles.size());\r
+ sourceFiles.forEach(f -> {\r
+ String name = f.getName().toString();\r
+ try {\r
+ logger.info("Loading {}", name);\r
+ sut.loadClassFromSourceCode(classLoader, name);\r
+ } catch (Exception e) {\r
+ logger.error(e.getMessage());\r
+ }\r
+\r
+ });\r
+ }\r
+}\r
\r
@StepEntry\r
public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- Object[] result = { null, null, "%s", null, 0, true };\r
+ Object[] result = new Object[] { null, null, "%s", null, 0, true };\r
marker = jobRuntime.getSessionMarker();\r
\r
DB db = NoSQLUtils.getNoSQLDB();\r
}\r
\r
public void processLowresDuplicates(int limit) {\r
- long count[] = { 0, 0 };\r
+ long count[] = new long[] { 0, 0 };\r
\r
manager.executeQuery("select count(filecount) from vw_items_rd_dup", rs -> {\r
count[0] = rs.getLong(1);\r
}\r
\r
if (moved) {\r
- logger.info(marker, "{} {} {}", mediaFile.getMediaId(), mediaFile.getRelativePath(), masterMediaFile[0].getRelativePath());\r
+ logger.info(marker, "{} {} {}", mediaFile.getMediaId(), mediaFile.getRelativePath(),\r
+ masterMediaFile[0].getRelativePath());\r
mediaFile.setRelativePath(masterMediaFile[0].getRelativePath());\r
manager.modify(mediaFile);\r
}\r
}\r
System.out.println(sb);\r
ProcessBuilder processBuilder = Cmd.create(Cmd.getFFMpegExecutable(), sb);\r
- long allFrames[] = {0};\r
+ long[] allFrames = new long[]{0};\r
\r
try {\r
MediaInfo mi = new MediaInfo(Paths.get(input));\r
}\r
System.out.println(sb);\r
ProcessBuilder processBuilder = Cmd.create(Cmd.getFFMpegExecutable(), sb);\r
- long allFrames[] = {0};\r
+ long[] allFrames = new long[]{0};\r
\r
try {\r
MediaInfo mi = new MediaInfo(Paths.get(input));\r
connection = DriverManager.getConnection(dbUrl, userName, password);\r
// TODO hiba esetén exception\r
switch (type) {\r
- case TrafficMaterial:\r
+ case TrafficMaterial: {\r
manager.executeQuery(connection, MATERIAL_SQL, rs -> {\r
String progTitle = rs.getString("v_ProgTitle");\r
String epTitle = rs.getString("v_EpTitle");\r
st.setString(1, name);\r
});\r
break;\r
- case TrafficPromo:\r
+ }\r
+ case TrafficPromo: {\r
manager.executeQuery(connection, PROMO_SQL, rs -> {\r
String title = rs.getString("v_Title");\r
int in = rs.getInt("t_TcIn");\r
st.setString(1, name);\r
});\r
break;\r
- case TrafficAD:\r
+ }\r
+ case TrafficAD: {\r
manager.executeQuery(connection, AD_SQL, rs -> {\r
String title = rs.getString("v_Title");\r
int in = rs.getInt("t_TcIn");\r
st.setString(1, name);\r
});\r
break;\r
+ }\r
default:\r
return null;\r
}\r
--- /dev/null
+package user.jobengine.server;\r
+\r
+import java.io.File;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.security.CodeSource;\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+import java.util.function.Predicate;\r
+import java.util.stream.Stream;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.codehaus.groovy.control.CompilationUnit;\r
+import org.codehaus.groovy.control.CompilerConfiguration;\r
+\r
+import groovy.lang.GroovyClassLoader;\r
+\r
+public class DynamicStepsLoader {\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private String stepsDir;\r
+\r
+ public DynamicStepsLoader(String stepsDir) {\r
+ this.stepsDir = stepsDir;\r
+ }\r
+\r
+ public Class<?> loadClassFromSourceCode(GroovyClassLoader gcl, String fileName) throws IOException {\r
+ Class<?> result = null;\r
+\r
+ Path path = Paths.get(stepsDir, fileName);\r
+ File classFile = null;\r
+\r
+ // Windows alatt az eleresi utak irasmodja egyforma kell legyen.\r
+ // A GroovyClassLoader\r
+ // ld. createGroovyClassLoader a new File(path.toFile().getCanonicalPath())-al\r
+ // operal.\r
+ classFile = new File(path.toFile().getCanonicalPath());\r
+ logger.info("Class path is normalized to {}", classFile.getCanonicalPath());\r
+\r
+ if (!classFile.exists())\r
+ return result;\r
+\r
+ result = gcl.parseClass(classFile);\r
+ if (result != null)\r
+ logger.info("Class for {} successfully loaded", fileName);\r
+ return result;\r
+ }\r
+\r
+ public Set<File> getSourceFiles() {\r
+ Set<File> sharedFiles = getJavaFileList(Paths.get(stepsDir, "shared"), null);\r
+ Set<File> libFiles = getJavaFileList(Paths.get(stepsDir), null);\r
+ libFiles.addAll(sharedFiles);\r
+ return libFiles;\r
+ }\r
+\r
+ public GroovyClassLoader createClassLoader(ClassLoader stepsClassLoader) throws FileNotFoundException {\r
+ Set<File> libFiles = getSourceFiles();\r
+ GroovyClassLoader gcl = new GroovyClassLoader(stepsClassLoader) {\r
+\r
+ @Override\r
+ protected CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource source) {\r
+ CompilationUnit result = new CompilationUnit(config, source, this);\r
+ libFiles.forEach(f -> result.addSource(f));\r
+ return result;\r
+ }\r
+\r
+ };\r
+ return gcl;\r
+ }\r
+\r
+ private Set<File> getJavaFileList(Path path, String excludeFileName) {\r
+ Set<File> result = new HashSet<>();\r
+ if (path.toFile().isDirectory()) {\r
+ Predicate<Path> filter = file -> !Files.isDirectory(file)\r
+ && file.getFileName().toString().endsWith(".java");\r
+ try (Stream<Path> stream = Files.list(path)) {\r
+ stream.filter(filter).forEach(p -> {\r
+\r
+ boolean add = false;\r
+ if (excludeFileName == null)\r
+ add = true;\r
+ else if (!excludeFileName.equals(p.getFileName().toString()))\r
+ add = true;\r
+\r
+ try {\r
+ if (add) {\r
+ // ha a betoltendo osztaly eleresi utja korabban mas kapitalissal kerul\r
+ // feldolgozasra, hibat kapunk\r
+ // ld. loadClassFromSourceCode\r
+ File classFile = new File(p.toFile().getCanonicalPath());\r
+ result.add(classFile);\r
+ }\r
+ } catch (IOException e) {\r
+ logger.catching(e);\r
+ }\r
+\r
+ });\r
+ } catch (Exception e) {\r
+ }\r
+\r
+ }\r
+ return result;\r
+ }\r
+\r
+}\r
package user.jobengine.server;\r
\r
-import java.io.File;\r
import java.io.FileNotFoundException;\r
import java.io.IOException;\r
import java.io.InputStream;\r
import java.nio.file.Files;\r
import java.nio.file.Path;\r
import java.nio.file.Paths;\r
-import java.security.CodeSource;\r
import java.util.AbstractMap.SimpleEntry;\r
import java.util.ArrayList;\r
import java.util.Collections;\r
-import java.util.HashSet;\r
import java.util.LinkedHashMap;\r
import java.util.List;\r
import java.util.Map;\r
import java.util.Map.Entry;\r
-import java.util.Set;\r
import java.util.function.Consumer;\r
import java.util.function.Predicate;\r
import java.util.stream.Stream;\r
import org.apache.commons.lang.StringUtils;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
-import org.codehaus.groovy.control.CompilationUnit;\r
-import org.codehaus.groovy.control.CompilerConfiguration;\r
\r
import com.ibm.nosql.json.JSONUtil;\r
import com.ibm.nosql.json.api.BasicDBList;\r
private URLClassLoader stepsClassLoader;\r
private boolean resetStepClassLoader;\r
private GroovyClassLoader groovyClassLoader;\r
+ private DynamicStepsLoader dynamicStepsLoader;\r
+\r
+ public JobEngineConfiguration() {\r
+\r
+ try {\r
+ String stepsDir = systemConfig.getConfig(DIR_STEPS);\r
+ dynamicStepsLoader = new DynamicStepsLoader(stepsDir);\r
+ } catch (Exception e) {\r
+ logger.warn(e.getMessage());\r
+ }\r
+ }\r
\r
public synchronized void bindSystemConfiguration(Object service) {\r
if (service instanceof IConfiguration) {\r
}\r
}\r
\r
- private GroovyClassLoader createGroovyClassLoader(URLClassLoader stepsClassLoader) throws FileNotFoundException {\r
- String stepsDir = systemConfig.getConfig(DIR_STEPS);\r
-\r
- Set<File> sharedFiles = getJavaFileList(Paths.get(stepsDir, "shared"), null);\r
- Set<File> libFiles = getJavaFileList(Paths.get(stepsDir), null);\r
- libFiles.addAll(sharedFiles);\r
-\r
- // for (File f : libFiles) {\r
- // logger.info("GroovyClassLoader source {}", f.getAbsolutePath());\r
- // }\r
-\r
- GroovyClassLoader gcl = new GroovyClassLoader(stepsClassLoader) {\r
-\r
- @Override\r
- protected CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource source) {\r
- CompilationUnit result = new CompilationUnit(config, source, this);\r
- libFiles.forEach(f -> result.addSource(f));\r
- // loadStepSources(result, Paths.get(stepsDir, "shared"));\r
- // loadStepSources(result, Paths.get(stepsDir));\r
- return result;\r
- }\r
-\r
- };\r
- return gcl;\r
- }\r
-\r
@SuppressWarnings("unchecked")\r
@Override\r
public IJobStep createJobStep(String stepUnitName) throws Exception {\r
\r
if (groovyClassLoader == null) {\r
logger.info("Creating Groovy ClassLoader");\r
- groovyClassLoader = createGroovyClassLoader(stepsClassLoader);\r
+ if (dynamicStepsLoader != null)\r
+ groovyClassLoader = dynamicStepsLoader.createClassLoader(stepsClassLoader);\r
}\r
\r
Class<IJobStep> stepClass = null;\r
\r
if (isGroovyClass) {\r
- stepClass = (Class<IJobStep>) loadClassFromSourceCode(groovyClassLoader, stepUnitName);\r
+ if (dynamicStepsLoader != null)\r
+ stepClass = (Class<IJobStep>) dynamicStepsLoader.loadClassFromSourceCode(groovyClassLoader,\r
+ stepUnitName);\r
} else\r
stepClass = (Class<IJobStep>) stepsClassLoader.loadClass(stepUnitName);\r
\r
loadSchedules();\r
}\r
\r
- private Class<?> loadClassFromSourceCode(GroovyClassLoader gcl, String className) throws IOException {\r
- Class<?> result = null;\r
-\r
- String stepsDir = systemConfig.getConfig(DIR_STEPS);\r
- Path path = Paths.get(stepsDir, className);\r
- File classFile = null;\r
-\r
- // Windows alatt az eleresi utak irasmodja egyforma kell legyen.\r
- // A GroovyClassLoader\r
- // ld. createGroovyClassLoader a new File(path.toFile().getCanonicalPath())-al\r
- // operal.\r
- classFile = new File(path.toFile().getCanonicalPath());\r
- logger.info("Class path is normalized to {}", classFile.getCanonicalPath());\r
-\r
- if (!classFile.exists())\r
- return result;\r
-\r
- result = gcl.parseClass(classFile);\r
- if (result != null)\r
- logger.info("Class for {} successfully loaded", className);\r
- return result;\r
- }\r
-\r
@Override\r
public void loadExecutors(IJobEngine jobEngine, boolean autoStart) {\r
InputStream stream = null;\r
});\r
}\r
\r
- private Set<File> getJavaFileList(Path path, String excludeFileName) {\r
- Set<File> result = new HashSet<>();\r
- if (path.toFile().isDirectory()) {\r
- Predicate<Path> filter = file -> !Files.isDirectory(file)\r
- && file.getFileName().toString().endsWith(".java");\r
- try (Stream<Path> stream = Files.list(path)) {\r
- stream.filter(filter).forEach(p -> {\r
-\r
- boolean add = false;\r
- if (excludeFileName == null)\r
- add = true;\r
- else if (!excludeFileName.equals(p.getFileName().toString()))\r
- add = true;\r
-\r
- try {\r
- if (add) {\r
- // ha a betoltendo osztaly eleresi utja korabban mas kapitalissal kerul\r
- // feldolgozasra, hibat kapunk\r
- // ld. loadClassFromSourceCode\r
- File classFile = new File(p.toFile().getCanonicalPath());\r
- result.add(classFile);\r
- }\r
- } catch (IOException e) {\r
- logger.catching(e);\r
- }\r
-\r
- });\r
- } catch (Exception e) {\r
- }\r
-\r
- }\r
- return result;\r
- }\r
-\r
private void loadTemplate(Path config) {\r
InputStream stream = null;\r
try {\r
.z-listbox-autopaging .z-listitem .z-listcell .z-listcell-content{\r
padding: 5px;\r
}\r
+\r
+/*\r
+VideoJS controls never hide\r
+https://player.support.brightcove.com/styling/customizing-player-appearance.html\r
+https://www.endpointdev.com/blog/2016/03/creating-video-player-with-time-markers/\r
+*/\r
+/* .video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */\r
+/* .video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */\r
+/* .video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */\r
+/* .video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */\r
+/* .video-js.vjs-has-started.vjs-paused.vjs-ad-playing.vjs-user-inactive .vjs-control-bar, */\r
+/* .video-js.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible){ */\r
+/* transform: none; */\r
+/* -webkit-transform: none; */\r
+/* -ms-transform: none; */\r
+/* } */\r
+\r
+.video-js .vjs-time-control {\r
+ display: block;\r
+}\r
+/* .video-js .vjs-remaining-time { */\r
+/* display: none; */\r
+/* } */\r
/* Proxy lejátszó */\r
\r
-function addButton(player, id, text, classOfButton, callback){\r
+function addButton(player, id, text, icon, callback){\r
var button = videojs.getComponent('Button');\r
var breakButton = videojs.extend(button, {\r
- constructor: function() {\r
- button.apply(this, arguments);\r
- this.controlText(text);\r
- this.addClass(classOfButton);\r
- },\r
- handleClick: function() {\r
- callback();\r
- }\r
+ constructor: function() {\r
+ button.apply(this, arguments);\r
+ this.controlText(text);\r
+ this.addClass(icon);\r
+\r
+ },\r
+ handleClick: function() {\r
+ callback();\r
+ }\r
});\r
videojs.registerComponent(id, breakButton);\r
player.getChild('controlBar').addChild(id, {}); \r
function createPlayer() {\r
var player = videojs('myVideoDiv', {\r
controls : true,\r
- preload : "auto"\r
+ preload : "auto",\r
+ controlBar: {\r
+ pictureInPictureToggle: false,\r
+ _children: [\r
+ "playToggle",\r
+ "volumeMenuButton",\r
+ "durationDisplay",\r
+ "timeDivider",\r
+ "currentTimeDisplay",\r
+ "progressControl",\r
+ "remainingTimeDisplay",\r
+ "fullscreenToggle"\r
+ ]\r
+ },\r
+ _userActions: {\r
+ hotkeys: function(event){\r
+ //console.log(event.which);\r
+ //space\r
+ if (event.which === 32) {\r
+ this.play();\r
+ }\r
+ \r
+ // left\r
+ if (event.which === 37) {\r
+ \r
+ }\r
+ // right\r
+ if (event.which === 39) {\r
+ \r
+ }\r
+ // down\r
+ if (event.which === 39) {\r
+ \r
+ }\r
+ }\r
+ }\r
});\r
-\r
- addButton(player, 'stepPrevButton', "Step back", 'vjs-icon-previous-item', function() {\r
- console.log('Step back');\r
+/*\r
+ addButton(player, 'stepPrevButton', "Step back", "z-icon-step-backward", function() {\r
+ console.log('Step back');\r
+ player.pause();\r
+ player.currentTime(player.currentTime() - 0.04);\r
});\r
- addButton(player, 'breakButton', "Insert breakpoint", 'vjs-icon-chapters', function() {\r
- console.log('BREAK');\r
+ addButton(player, 'breakButton', "Insert breakpoint", "z-icon-unlink", function() {\r
+ player.pause();\r
+ createBreakPoint();\r
});\r
- addButton(player, 'stepNextButton', "Step forward", 'vjs-icon-next-item', function() {\r
- console.log('Step forward');\r
+ addButton(player, 'stepNextButton', "Step foreward", "z-icon-step-forward", function() {\r
+ console.log('Step foreward');\r
+ player.pause();\r
+ console.log(player.currentTime());\r
+ player.currentTime(player.currentTime() + 0.04);\r
+ console.log(player.currentTime());\r
});\r
- \r
+*/ \r
return player;\r
}\r
\r
return SMPTEToString(secondsToSMPTE(seconds));\r
}\r
\r
-videojs.setFormatTime(customTimeFormat); \r
-\r
-\r
-function pushTcIn() {\r
- var current = player.currentTime();\r
- console.log("pushTcIn", current);\r
- zk.Widget.$('$videoListener').fire('onTcIn', {\r
- meta : current\r
- }, {\r
- toServer : true\r
- });\r
-}\r
+//videojs.setFormatTime(customTimeFormat); \r
\r
-function pushTcOut() {\r
+function createBreakPoint() {\r
var current = player.currentTime();\r
- console.log("pushTcOut", current);\r
- zk.Widget.$('$videoListener').fire('onTcOut', {\r
+ console.log('Create breakpoint', current);\r
+ zk.Widget.$('$videoListener').fire('onCreateBreakPoint', {\r
meta : current\r
}, {\r
toServer : 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
+<!-- <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
+<!-- <tabpanel> -->\r
+<!-- <include src="pages/processVisualizer.zul" /> -->\r
+<!-- </tabpanel> -->\r
</tabpanels>\r
</tabbox>\r
</east>\r
\r
<!DOCTYPE xml>\r
<zk xmlns:h="xhtml" xmlns:n="native" xmlns:c="client">\r
- <style src="/css/video-js.css" />\r
+<!-- <style src="https://unpkg.com/@videojs/themes@1/dist/city/index.css" /> -->\r
+<!-- <style src="https://vjs.zencdn.net/7.18.1/video-js.css"/> -->\r
+<!-- <h:script src="https://vjs.zencdn.net/7.18.1/video.min.js"/> -->\r
+\r
+\r
+ <style src="/css/video-js.css?v=3" />\r
<style src="/css/searchitems.css" /> \r
<style src="/css/tagify.css" /> \r
+ \r
<h:script src="/js/tagify.min.js" />\r
<h:script src="/js/video.js" />\r
<h:script src="/js/searchitems.js" />\r
<borderlayout height="100%" width="100%">\r
<north border="none" size="60%" splittable="true" minsize="250" collapsible="true">\r
<div align="center" height="100%" width="100%">\r
- <h:video-js id="myVideoDiv" class="video-js vjs-default-skin vjs-big-play-centered" \r
+ <h:video-js id="myVideoDiv" class="video-js vjs-big-play-centered" \r
data-setup='{"inactivityTimeout": 0}'\r
style="width: 100%;height: 100%">\r
</h:video-js>\r
- <div id="videoListener" onTcOut="@command('onTcOut')" onTcIn="@command('onTcIn')" />\r
+ <div id="videoListener" onCreateBreakPoint="@command('onCreateBreakPoint')"/>\r
</div>\r
</north>\r
<center border="none">\r
}\r
\r
@Command\r
- public void onTcIn(@ContextParam(ContextType.TRIGGER_EVENT) Event event) throws Exception {\r
+ public void onCreateBreakPoint(@ContextParam(ContextType.TRIGGER_EVENT) Event event) throws Exception {\r
JSONObject jsObject = (JSONObject) event.getData();\r
Double doubleVar = 0.0;\r
if (!jsObject.get("meta").equals(0)) {\r
doubleVar = (Double) jsObject.get("meta");\r
}\r
-\r
- if (doubleVar.floatValue() >= ((selectedObject.getTcOut() == null) ? 9999999999999999999999.9\r
- : 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
- }\r
- }\r
-\r
- @Command\r
- public void onTcOut(@ContextParam(ContextType.TRIGGER_EVENT) Event event) throws Exception {\r
- JSONObject jsObject = (JSONObject) event.getData();\r
- Double doubleVar = 0.0;\r
- if (!jsObject.get("meta").equals(0)) {\r
- doubleVar = (Double) jsObject.get("meta");\r
- }\r
-\r
- if (doubleVar.floatValue() <= ((selectedObject.getTcIn() == null) ? 0.0 : selectedObject.getTcIn())) {\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.setTcOut(new Float(doubleVar.floatValue()));\r
- }\r
+ logger.info("Create breakpoint at {}", doubleVar);\r
}\r
\r
@Command\r