From: vasary.daniel Date: Sat, 16 Apr 2022 18:50:13 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=9f2440db0b2c45e143b19de08afca605b73423e1;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C33171 --- diff --git a/server/-product/production/HIRTV/jobs/steps/CancelableStep.java b/server/-product/production/HIRTV/jobs/steps/CancelableStep.java deleted file mode 100644 index 3368e445..00000000 --- a/server/-product/production/HIRTV/jobs/steps/CancelableStep.java +++ /dev/null @@ -1,22 +0,0 @@ -package user.jobengine.server.steps; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class CancelableStep extends JobStep { - private static final Logger logger = LogManager.getLogger(); - - @StepEntry - public Object[] execute(int param) throws Exception { - logger.info(getMarker(), "Executing with param {}", param); - for (int i = 0; i < 10; i++) { - if (getJobRuntime().isWaitingCancel()) - break; - Thread.sleep(1000); - int progress = (i + 1) * 100 / 10; - setProgress(progress); - } - return null; - } - -} diff --git a/server/-product/production/HIRTV/jobs/steps/DummyTestStep1.java b/server/-product/production/HIRTV/jobs/steps/DummyTestStep1.java deleted file mode 100644 index 22b3ab97..00000000 --- a/server/-product/production/HIRTV/jobs/steps/DummyTestStep1.java +++ /dev/null @@ -1,23 +0,0 @@ -package user.jobengine.server.steps; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DummyTestStep1 extends JobStep { - private static final Logger logger = LogManager.getLogger(DummyTestStep1.class); - - @StepEntry - public Object[] execute(String param1) { - logger.info("Executing DummyTestStep1"); - int var1 = 0; - if (param1.equals("Jozsi")) { - var1 = 1; - Thread.sleep(1000); - setProgress(50); - Thread.sleep(1000); - setProgress(50); - } - - return new Object[] {var1}; - } -} diff --git a/server/-product/production/HIRTV/jobs/steps/DummyTestStep2.java b/server/-product/production/HIRTV/jobs/steps/DummyTestStep2.java deleted file mode 100644 index 58431315..00000000 --- a/server/-product/production/HIRTV/jobs/steps/DummyTestStep2.java +++ /dev/null @@ -1,16 +0,0 @@ -package user.jobengine.server.steps; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DummyTestStep2 extends JobStep { - private static final Logger logger = LogManager.getLogger(DummyTestStep2.class); - - @StepEntry - public Object[] execute(int var2) { - logger.info("Executing DummyTestStep2"); - long var3 = 0L; - - return new Object[] { var3 }; - } -} diff --git a/server/-product/production/HIRTV/jobs/steps/DummyTestStep3.java b/server/-product/production/HIRTV/jobs/steps/DummyTestStep3.java deleted file mode 100644 index b3e061ab..00000000 --- a/server/-product/production/HIRTV/jobs/steps/DummyTestStep3.java +++ /dev/null @@ -1,13 +0,0 @@ -package user.jobengine.server.steps; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DummyTestStep3 extends JobStep { - private static final Logger logger = LogManager.getLogger(DummyTestStep3.class); - - @StepEntry - public void execute(long var3) { - logger.info("Executing DummyTestStep3"); - } -} diff --git a/server/-product/production/HIRTV/jobs/steps/TestForkCancelableStep.java b/server/-product/production/HIRTV/jobs/steps/TestForkCancelableStep.java deleted file mode 100644 index 8083d94f..00000000 --- a/server/-product/production/HIRTV/jobs/steps/TestForkCancelableStep.java +++ /dev/null @@ -1,41 +0,0 @@ -package user.jobengine.server.steps; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import user.commons.IJob; -import user.commons.JobStatus; -import user.commons.ListUtils; -import user.jobengine.server.IJobEngine; -import user.jobengine.server.IJobRuntime; - -public class TestForkCancelableStep extends JobStep { - private static final String CHILD_TEMPLATE = "cancelable.xml"; - private static final Logger logger = LogManager.getLogger(); - - @StepEntry - public Object[] execute(int count) throws Exception { - getJobRuntime().forkPrepare(); - for (int i = 0; i < count; i++) { - if (getJobRuntime().isWaitingCancel()) - break; - IJobRuntime runtime = getEngine().submit(getJobRuntime(), e -> { - IJobRuntime r = (IJobRuntime) e.getSource(); - - if (r.isDisableRetry()) - return; - - if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED)) { - long id = ((IJob) e.getSource()).getId(); - logger.info("Cleanup occured because status is {} {}", e.getStatus(), id); - } - - }, CHILD_TEMPLATE, "JOB " + i, 0, IJobEngine.DEFAULT_OWNER, ListUtils.asMap("param", i)); - - runtime.setRelated("TEST" + runtime.getId()); - } - - getJobRuntime().forkWaitComplete(); - return null; - } -} diff --git a/server/-product/production/LOCAL/jobs/executors.xml b/server/-product/production/LOCAL/jobs/executors.xml index 0fd7a2f2..14f3fa67 100644 --- a/server/-product/production/LOCAL/jobs/executors.xml +++ b/server/-product/production/LOCAL/jobs/executors.xml @@ -14,7 +14,7 @@ - + diff --git a/server/-product/production/LOCAL/jobs/templates/cancelable.xml b/server/-product/production/LOCAL/jobs/templates/cancelable.xml index 2be289b3..e5ec0cf3 100644 --- a/server/-product/production/LOCAL/jobs/templates/cancelable.xml +++ b/server/-product/production/LOCAL/jobs/templates/cancelable.xml @@ -6,7 +6,7 @@ - + diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/DynamicStepsLoaderTests.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/DynamicStepsLoaderTests.java new file mode 100644 index 00000000..2303b7bd --- /dev/null +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/DynamicStepsLoaderTests.java @@ -0,0 +1,48 @@ +package hu.user.mediacube.executors.tests; + +import static org.junit.Assert.assertNotNull; + +import java.io.File; +import java.util.Set; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.BeforeClass; +import org.junit.Test; + +import groovy.lang.GroovyClassLoader; +import user.jobengine.server.DynamicStepsLoader; + +public class DynamicStepsLoaderTests { + private static final Logger logger = LogManager.getLogger(); + static DynamicStepsLoader sut = null; + + @BeforeClass + static public void beforeClass() { + sut = new DynamicStepsLoader( + "C:/work/user/mediacube/server/user.jobengine.executors/src/user/jobengine/server/steps"); + } + + @Test + public void test0() throws Exception { + GroovyClassLoader classLoader = sut.createClassLoader(this.getClass().getClassLoader()); + assertNotNull(classLoader); + } + + @Test + public void test1() throws Exception { + GroovyClassLoader classLoader = sut.createClassLoader(this.getClass().getClassLoader()); + Set sourceFiles = sut.getSourceFiles(); + logger.info("Chcking {} files", sourceFiles.size()); + sourceFiles.forEach(f -> { + String name = f.getName().toString(); + try { + logger.info("Loading {}", name); + sut.loadClassFromSourceCode(classLoader, name); + } catch (Exception e) { + logger.error(e.getMessage()); + } + + }); + } +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java index d3180f51..830e41fc 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java @@ -24,7 +24,7 @@ public class DetectMissingLengthStep extends JobStep { @StepEntry public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - Object[] result = { null, null, "%s", null, 0, true }; + Object[] result = new Object[] { null, null, "%s", null, 0, true }; marker = jobRuntime.getSessionMarker(); DB db = NoSQLUtils.getNoSQLDB(); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java index 6aed5a00..741edbbb 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/DuplicateRemoverStep.java @@ -33,7 +33,7 @@ public class DuplicateRemoverStep extends JobStep { } public void processLowresDuplicates(int limit) { - long count[] = { 0, 0 }; + long count[] = new long[] { 0, 0 }; manager.executeQuery("select count(filecount) from vw_items_rd_dup", rs -> { count[0] = rs.getLong(1); @@ -89,7 +89,8 @@ public class DuplicateRemoverStep extends JobStep { } if (moved) { - logger.info(marker, "{} {} {}", mediaFile.getMediaId(), mediaFile.getRelativePath(), masterMediaFile[0].getRelativePath()); + logger.info(marker, "{} {} {}", mediaFile.getMediaId(), mediaFile.getRelativePath(), + masterMediaFile[0].getRelativePath()); mediaFile.setRelativePath(masterMediaFile[0].getRelativePath()); manager.modify(mediaFile); } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/FFMpeg.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/FFMpeg.java index 206796dd..b1f2855d 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/FFMpeg.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/FFMpeg.java @@ -71,7 +71,7 @@ public class FFMpeg { } System.out.println(sb); ProcessBuilder processBuilder = Cmd.create(Cmd.getFFMpegExecutable(), sb); - long allFrames[] = {0}; + long[] allFrames = new long[]{0}; try { MediaInfo mi = new MediaInfo(Paths.get(input)); @@ -158,7 +158,7 @@ public class FFMpeg { } System.out.println(sb); ProcessBuilder processBuilder = Cmd.create(Cmd.getFFMpegExecutable(), sb); - long allFrames[] = {0}; + long[] allFrames = new long[]{0}; try { MediaInfo mi = new MediaInfo(Paths.get(input)); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/PlanAirExtensions.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/PlanAirExtensions.java index 05553a56..b64d36d4 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/PlanAirExtensions.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/shared/PlanAirExtensions.java @@ -185,7 +185,7 @@ public class PlanAirExtensions { connection = DriverManager.getConnection(dbUrl, userName, password); // TODO hiba esetén exception switch (type) { - case TrafficMaterial: + case TrafficMaterial: { manager.executeQuery(connection, MATERIAL_SQL, rs -> { String progTitle = rs.getString("v_ProgTitle"); String epTitle = rs.getString("v_EpTitle"); @@ -215,7 +215,8 @@ public class PlanAirExtensions { st.setString(1, name); }); break; - case TrafficPromo: + } + case TrafficPromo: { manager.executeQuery(connection, PROMO_SQL, rs -> { String title = rs.getString("v_Title"); int in = rs.getInt("t_TcIn"); @@ -228,7 +229,8 @@ public class PlanAirExtensions { st.setString(1, name); }); break; - case TrafficAD: + } + case TrafficAD: { manager.executeQuery(connection, AD_SQL, rs -> { String title = rs.getString("v_Title"); int in = rs.getInt("t_TcIn"); @@ -241,6 +243,7 @@ public class PlanAirExtensions { st.setString(1, name); }); break; + } default: return null; } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicStepsLoader.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicStepsLoader.java new file mode 100644 index 00000000..5e8a3b40 --- /dev/null +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicStepsLoader.java @@ -0,0 +1,108 @@ +package user.jobengine.server; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.CodeSource; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.codehaus.groovy.control.CompilationUnit; +import org.codehaus.groovy.control.CompilerConfiguration; + +import groovy.lang.GroovyClassLoader; + +public class DynamicStepsLoader { + private static final Logger logger = LogManager.getLogger(); + private String stepsDir; + + public DynamicStepsLoader(String stepsDir) { + this.stepsDir = stepsDir; + } + + public Class loadClassFromSourceCode(GroovyClassLoader gcl, String fileName) throws IOException { + Class result = null; + + Path path = Paths.get(stepsDir, fileName); + File classFile = null; + + // Windows alatt az eleresi utak irasmodja egyforma kell legyen. + // A GroovyClassLoader + // ld. createGroovyClassLoader a new File(path.toFile().getCanonicalPath())-al + // operal. + classFile = new File(path.toFile().getCanonicalPath()); + logger.info("Class path is normalized to {}", classFile.getCanonicalPath()); + + if (!classFile.exists()) + return result; + + result = gcl.parseClass(classFile); + if (result != null) + logger.info("Class for {} successfully loaded", fileName); + return result; + } + + public Set getSourceFiles() { + Set sharedFiles = getJavaFileList(Paths.get(stepsDir, "shared"), null); + Set libFiles = getJavaFileList(Paths.get(stepsDir), null); + libFiles.addAll(sharedFiles); + return libFiles; + } + + public GroovyClassLoader createClassLoader(ClassLoader stepsClassLoader) throws FileNotFoundException { + Set libFiles = getSourceFiles(); + GroovyClassLoader gcl = new GroovyClassLoader(stepsClassLoader) { + + @Override + protected CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource source) { + CompilationUnit result = new CompilationUnit(config, source, this); + libFiles.forEach(f -> result.addSource(f)); + return result; + } + + }; + return gcl; + } + + private Set getJavaFileList(Path path, String excludeFileName) { + Set result = new HashSet<>(); + if (path.toFile().isDirectory()) { + Predicate filter = file -> !Files.isDirectory(file) + && file.getFileName().toString().endsWith(".java"); + try (Stream stream = Files.list(path)) { + stream.filter(filter).forEach(p -> { + + boolean add = false; + if (excludeFileName == null) + add = true; + else if (!excludeFileName.equals(p.getFileName().toString())) + add = true; + + try { + if (add) { + // ha a betoltendo osztaly eleresi utja korabban mas kapitalissal kerul + // feldolgozasra, hibat kapunk + // ld. loadClassFromSourceCode + File classFile = new File(p.toFile().getCanonicalPath()); + result.add(classFile); + } + } catch (IOException e) { + logger.catching(e); + } + + }); + } catch (Exception e) { + } + + } + return result; + } + +} diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java index f1063db9..1bd5c162 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java @@ -1,6 +1,5 @@ package user.jobengine.server; -import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -10,16 +9,13 @@ import java.net.URLClassLoader; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.security.CodeSource; import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Set; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.stream.Stream; @@ -27,8 +23,6 @@ import java.util.stream.Stream; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.codehaus.groovy.control.CompilationUnit; -import org.codehaus.groovy.control.CompilerConfiguration; import com.ibm.nosql.json.JSONUtil; import com.ibm.nosql.json.api.BasicDBList; @@ -61,6 +55,17 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { private URLClassLoader stepsClassLoader; private boolean resetStepClassLoader; private GroovyClassLoader groovyClassLoader; + private DynamicStepsLoader dynamicStepsLoader; + + public JobEngineConfiguration() { + + try { + String stepsDir = systemConfig.getConfig(DIR_STEPS); + dynamicStepsLoader = new DynamicStepsLoader(stepsDir); + } catch (Exception e) { + logger.warn(e.getMessage()); + } + } public synchronized void bindSystemConfiguration(Object service) { if (service instanceof IConfiguration) { @@ -69,32 +74,6 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { } } - private GroovyClassLoader createGroovyClassLoader(URLClassLoader stepsClassLoader) throws FileNotFoundException { - String stepsDir = systemConfig.getConfig(DIR_STEPS); - - Set sharedFiles = getJavaFileList(Paths.get(stepsDir, "shared"), null); - Set libFiles = getJavaFileList(Paths.get(stepsDir), null); - libFiles.addAll(sharedFiles); - - // for (File f : libFiles) { - // logger.info("GroovyClassLoader source {}", f.getAbsolutePath()); - // } - - GroovyClassLoader gcl = new GroovyClassLoader(stepsClassLoader) { - - @Override - protected CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource source) { - CompilationUnit result = new CompilationUnit(config, source, this); - libFiles.forEach(f -> result.addSource(f)); - // loadStepSources(result, Paths.get(stepsDir, "shared")); - // loadStepSources(result, Paths.get(stepsDir)); - return result; - } - - }; - return gcl; - } - @SuppressWarnings("unchecked") @Override public IJobStep createJobStep(String stepUnitName) throws Exception { @@ -126,13 +105,16 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { if (groovyClassLoader == null) { logger.info("Creating Groovy ClassLoader"); - groovyClassLoader = createGroovyClassLoader(stepsClassLoader); + if (dynamicStepsLoader != null) + groovyClassLoader = dynamicStepsLoader.createClassLoader(stepsClassLoader); } Class stepClass = null; if (isGroovyClass) { - stepClass = (Class) loadClassFromSourceCode(groovyClassLoader, stepUnitName); + if (dynamicStepsLoader != null) + stepClass = (Class) dynamicStepsLoader.loadClassFromSourceCode(groovyClassLoader, + stepUnitName); } else stepClass = (Class) stepsClassLoader.loadClass(stepUnitName); @@ -253,29 +235,6 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { loadSchedules(); } - private Class loadClassFromSourceCode(GroovyClassLoader gcl, String className) throws IOException { - Class result = null; - - String stepsDir = systemConfig.getConfig(DIR_STEPS); - Path path = Paths.get(stepsDir, className); - File classFile = null; - - // Windows alatt az eleresi utak irasmodja egyforma kell legyen. - // A GroovyClassLoader - // ld. createGroovyClassLoader a new File(path.toFile().getCanonicalPath())-al - // operal. - classFile = new File(path.toFile().getCanonicalPath()); - logger.info("Class path is normalized to {}", classFile.getCanonicalPath()); - - if (!classFile.exists()) - return result; - - result = gcl.parseClass(classFile); - if (result != null) - logger.info("Class for {} successfully loaded", className); - return result; - } - @Override public void loadExecutors(IJobEngine jobEngine, boolean autoStart) { InputStream stream = null; @@ -346,40 +305,6 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { }); } - private Set getJavaFileList(Path path, String excludeFileName) { - Set result = new HashSet<>(); - if (path.toFile().isDirectory()) { - Predicate filter = file -> !Files.isDirectory(file) - && file.getFileName().toString().endsWith(".java"); - try (Stream stream = Files.list(path)) { - stream.filter(filter).forEach(p -> { - - boolean add = false; - if (excludeFileName == null) - add = true; - else if (!excludeFileName.equals(p.getFileName().toString())) - add = true; - - try { - if (add) { - // ha a betoltendo osztaly eleresi utja korabban mas kapitalissal kerul - // feldolgozasra, hibat kapunk - // ld. loadClassFromSourceCode - File classFile = new File(p.toFile().getCanonicalPath()); - result.add(classFile); - } - } catch (IOException e) { - logger.catching(e); - } - - }); - } catch (Exception e) { - } - - } - return result; - } - private void loadTemplate(Path config) { InputStream stream = null; try { diff --git a/server/user.mediacube.gui/css/archivum.css b/server/user.mediacube.gui/css/archivum.css index 3b7bc705..5a22e7e0 100644 --- a/server/user.mediacube.gui/css/archivum.css +++ b/server/user.mediacube.gui/css/archivum.css @@ -225,3 +225,26 @@ body *:not([class*="z-icon-"], [class*="vjs-icon-"]) { .z-listbox-autopaging .z-listitem .z-listcell .z-listcell-content{ padding: 5px; } + +/* +VideoJS controls never hide +https://player.support.brightcove.com/styling/customizing-player-appearance.html +https://www.endpointdev.com/blog/2016/03/creating-video-player-with-time-markers/ +*/ +/* .video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-active .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */ +/* .video-js.not-hover.vjs-has-started.vjs-paused.vjs-user-inactive .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */ +/* .video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-active .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */ +/* .video-js.not-hover.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible), */ +/* .video-js.vjs-has-started.vjs-paused.vjs-ad-playing.vjs-user-inactive .vjs-control-bar, */ +/* .video-js.vjs-has-started.vjs-playing.vjs-user-inactive .vjs-control-bar:not(.vjs-focus-within):not(.vjs-control-bar-visible){ */ +/* transform: none; */ +/* -webkit-transform: none; */ +/* -ms-transform: none; */ +/* } */ + +.video-js .vjs-time-control { + display: block; +} +/* .video-js .vjs-remaining-time { */ +/* display: none; */ +/* } */ diff --git a/server/user.mediacube.gui/js/searchitems.js b/server/user.mediacube.gui/js/searchitems.js index f96ff094..6956ffc0 100644 --- a/server/user.mediacube.gui/js/searchitems.js +++ b/server/user.mediacube.gui/js/searchitems.js @@ -1,16 +1,17 @@ /* Proxy lejátszó */ -function addButton(player, id, text, classOfButton, callback){ +function addButton(player, id, text, icon, callback){ var button = videojs.getComponent('Button'); var breakButton = videojs.extend(button, { - constructor: function() { - button.apply(this, arguments); - this.controlText(text); - this.addClass(classOfButton); - }, - handleClick: function() { - callback(); - } + constructor: function() { + button.apply(this, arguments); + this.controlText(text); + this.addClass(icon); + + }, + handleClick: function() { + callback(); + } }); videojs.registerComponent(id, breakButton); player.getChild('controlBar').addChild(id, {}); @@ -19,19 +20,61 @@ function addButton(player, id, text, classOfButton, callback){ function createPlayer() { var player = videojs('myVideoDiv', { controls : true, - preload : "auto" + preload : "auto", + controlBar: { + pictureInPictureToggle: false, + _children: [ + "playToggle", + "volumeMenuButton", + "durationDisplay", + "timeDivider", + "currentTimeDisplay", + "progressControl", + "remainingTimeDisplay", + "fullscreenToggle" + ] + }, + _userActions: { + hotkeys: function(event){ + //console.log(event.which); + //space + if (event.which === 32) { + this.play(); + } + + // left + if (event.which === 37) { + + } + // right + if (event.which === 39) { + + } + // down + if (event.which === 39) { + + } + } + } }); - - addButton(player, 'stepPrevButton', "Step back", 'vjs-icon-previous-item', function() { - console.log('Step back'); +/* + addButton(player, 'stepPrevButton', "Step back", "z-icon-step-backward", function() { + console.log('Step back'); + player.pause(); + player.currentTime(player.currentTime() - 0.04); }); - addButton(player, 'breakButton', "Insert breakpoint", 'vjs-icon-chapters', function() { - console.log('BREAK'); + addButton(player, 'breakButton', "Insert breakpoint", "z-icon-unlink", function() { + player.pause(); + createBreakPoint(); }); - addButton(player, 'stepNextButton', "Step forward", 'vjs-icon-next-item', function() { - console.log('Step forward'); + addButton(player, 'stepNextButton', "Step foreward", "z-icon-step-forward", function() { + console.log('Step foreward'); + player.pause(); + console.log(player.currentTime()); + player.currentTime(player.currentTime() + 0.04); + console.log(player.currentTime()); }); - +*/ return player; } @@ -87,23 +130,12 @@ function customTimeFormat(seconds) { return SMPTEToString(secondsToSMPTE(seconds)); } -videojs.setFormatTime(customTimeFormat); - - -function pushTcIn() { - var current = player.currentTime(); - console.log("pushTcIn", current); - zk.Widget.$('$videoListener').fire('onTcIn', { - meta : current - }, { - toServer : true - }); -} +//videojs.setFormatTime(customTimeFormat); -function pushTcOut() { +function createBreakPoint() { var current = player.currentTime(); - console.log("pushTcOut", current); - zk.Widget.$('$videoListener').fire('onTcOut', { + console.log('Create breakpoint', current); + zk.Widget.$('$videoListener').fire('onCreateBreakPoint', { meta : current }, { toServer : true diff --git a/server/user.mediacube.gui/pages/jobeditor.zul b/server/user.mediacube.gui/pages/jobeditor.zul index ad865467..88af4224 100644 --- a/server/user.mediacube.gui/pages/jobeditor.zul +++ b/server/user.mediacube.gui/pages/jobeditor.zul @@ -34,7 +34,7 @@ - + @@ -102,9 +102,9 @@ - - - + + + diff --git a/server/user.mediacube.gui/pages/searchitems.zul b/server/user.mediacube.gui/pages/searchitems.zul index 0b66449f..44b22616 100644 --- a/server/user.mediacube.gui/pages/searchitems.zul +++ b/server/user.mediacube.gui/pages/searchitems.zul @@ -8,9 +8,15 @@ -