From: elgekko Date: Thu, 19 Jan 2023 08:10:59 +0000 (+0100) Subject: Salad X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=50886f2215cb8fa49e5968682ba0a12f03927a01;p=mediacube.git Salad --- diff --git a/server/-configuration/run-mediacube-server-hirtv.launch b/server/-configuration/run-mediacube-server-hirtv.launch index 17c87c6d..05730822 100644 --- a/server/-configuration/run-mediacube-server-hirtv.launch +++ b/server/-configuration/run-mediacube-server-hirtv.launch @@ -38,6 +38,7 @@ + diff --git a/server/-configuration/run-mediacube-server-local.launch b/server/-configuration/run-mediacube-server-local.launch index 49282300..7e57147d 100644 --- a/server/-configuration/run-mediacube-server-local.launch +++ b/server/-configuration/run-mediacube-server-local.launch @@ -49,6 +49,7 @@ + diff --git a/server/-dependencies/jobengine.target b/server/-dependencies/jobengine.target index 1802f6f9..46a32c90 100644 --- a/server/-dependencies/jobengine.target +++ b/server/-dependencies/jobengine.target @@ -19,9 +19,6 @@ - - - @@ -89,6 +86,7 @@ + win32 diff --git a/server/-dependencies/pom.xml b/server/-dependencies/pom.xml index 5fe2be44..40e0e60f 100644 --- a/server/-dependencies/pom.xml +++ b/server/-dependencies/pom.xml @@ -66,6 +66,20 @@ jar + + install3 + package + + install-file + + + libs/userdark-1.0.0.jar + hu.user.zk.theme + userdark + 1.0.0 + jar + + @@ -77,6 +91,9 @@ default-cli + + hu.user.zk.theme:userdark:1.0.0 + org.apache.felix:org.apache.felix.gogo.command:0.12.0 @@ -86,15 +103,6 @@ org.apache.felix:org.apache.felix.gogo.runtime:0.12.0 - - - - - - - - - org.eclipse.platform:org.eclipse.equinox.launcher:1.3.201 @@ -104,6 +112,7 @@ net.java.dev.jna:jna-platform:5.8.0 + org.ow2.asm:asm:5.0.1 diff --git a/server/-product/mediacube.product b/server/-product/mediacube.product index dc22eee7..9f649038 100644 --- a/server/-product/mediacube.product +++ b/server/-product/mediacube.product @@ -1,6 +1,5 @@ - @@ -39,6 +38,7 @@ + diff --git a/server/-product/production/HIRTV/jobs/schedules.json b/server/-product/production/HIRTV/jobs/schedules.json index 48954e2a..1697c76c 100644 --- a/server/-product/production/HIRTV/jobs/schedules.json +++ b/server/-product/production/HIRTV/jobs/schedules.json @@ -1,5 +1,8 @@ { "joblist": [ + { + "template": "backup-file.xml" + }, { "active": false, "cronexpression": "0/2 * * * * ?", diff --git a/server/-product/production/HIRTV/settings/mediacube.yaml b/server/-product/production/HIRTV/settings/mediacube.yaml index 356014aa..8b36bf99 100644 --- a/server/-product/production/HIRTV/settings/mediacube.yaml +++ b/server/-product/production/HIRTV/settings/mediacube.yaml @@ -1,3 +1,4 @@ +theme: userdark jobQueuePollInterval: 1000 disableHelp: true maestroDisabled: false @@ -24,8 +25,8 @@ bottomTypeFilters: - name: Reklám nyers authentication: authEnabled: true -# defaultUser: root -# defaultPassword: password + defaultUser: root + defaultPassword: password adHost: 10.10.254.11 adNonSecurePort: 3268 adBaseDn: DC=intra,DC=echotv,DC=hu diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java index 70089a5c..c1c3a5ff 100644 --- a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java @@ -1223,16 +1223,6 @@ public class SmallTests { System.out.println(formatatted + " " + formatatted.length()); } - @Test - public void test99996() throws Exception { - System.out.println(System.getProperty("user.home")); - System.setProperty("java.library.path", "/users/elgekko"); - Path filePath = Paths.get("/opt/AMC/2021/ISSUES/#203/IFL000000071_43.mxf"); - user.commons.mediatool.MediaInfo mi = new user.commons.mediatool.MediaInfo(filePath); - mi.process(); - System.out.println(String.format("%s %d %s", mi.getCodecProfileName(), mi.getHeight(), mi.getDisplayAspect())); - } - @Test public void test99997() throws Exception { diff --git a/server/user.commons.zk/.classpath b/server/user.commons.zk/.classpath index 50934149..9c8687fb 100644 --- a/server/user.commons.zk/.classpath +++ b/server/user.commons.zk/.classpath @@ -1,6 +1,5 @@ - diff --git a/server/user.commons.zk/META-INF/MANIFEST.MF b/server/user.commons.zk/META-INF/MANIFEST.MF index 32f6ee7a..18905611 100644 --- a/server/user.commons.zk/META-INF/MANIFEST.MF +++ b/server/user.commons.zk/META-INF/MANIFEST.MF @@ -47,8 +47,7 @@ Bundle-ClassPath: ., lib/zul.jar, lib/zuti.jar, lib/zweb.jar, - lib/datahandler-syntax-highlight-1.0.0.jar, - lib/userdark-8.0.3.jar + lib/datahandler-syntax-highlight-1.0.0.jar Export-Package: bsh, bsh.classpath, bsh.collection, @@ -375,7 +374,6 @@ Export-Package: bsh, org.zkoss.theme.___THEME_NAME___, org.zkoss.theme.sapphire, org.zkoss.theme.silvertail, - org.zkoss.theme.userdark, org.zkoss.util, org.zkoss.util.logging, org.zkoss.util.media, @@ -830,5 +828,6 @@ Export-Package: bsh, web.zul.img.wnd, web.zul.less, web.zul.less.font -Require-Bundle: javax.servlet-api;bundle-version="3.1.0" +Require-Bundle: javax.servlet-api;bundle-version="3.1.0", + hu.user.zk.theme.userdark;bundle-version="1.0.0" Import-Package: org.slf4j;version="1.7.2" diff --git a/server/user.commons.zk/build.properties b/server/user.commons.zk/build.properties index 7796f699..4faffaf1 100644 --- a/server/user.commons.zk/build.properties +++ b/server/user.commons.zk/build.properties @@ -43,5 +43,4 @@ bin.includes = META-INF/,\ lib/zul.jar,\ lib/zuti.jar,\ lib/zweb.jar,\ - lib/datahandler-syntax-highlight-1.0.0.jar,\ - lib/userdark-8.0.3.jar + lib/datahandler-syntax-highlight-1.0.0.jar diff --git a/server/user.commons.zk/lib/userdark-8.0.3.jar b/server/user.commons.zk/lib/userdark-8.0.3.jar deleted file mode 100644 index 0e1464b6..00000000 Binary files a/server/user.commons.zk/lib/userdark-8.0.3.jar and /dev/null differ diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveRecursive.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveRecursive.java index 119f941e..0acb47ec 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveRecursive.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveRecursive.java @@ -24,7 +24,7 @@ import com.ibm.nosql.json.api.BasicDBObject; import user.commons.JobStatus; import user.commons.ListUtils; -import user.commons.mediatool.MediaInfo; +import user.commons.mediaarea.MediaArea; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; import user.jobengine.server.steps.shared.EscortFiles; @@ -52,7 +52,7 @@ public class ArchiveRecursive extends JobStep implements FileVisitor { private boolean canReadMediaInfo(Path mediaFilePath) { boolean result = false; try { - MediaInfo mi = new MediaInfo(mediaFilePath); + MediaArea mi = new MediaArea(mediaFilePath); mi.process(); result = true; } catch (Exception e) { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/DirMXFValidatorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/DirMXFValidatorStep.java index f26d679b..9da89e33 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/DirMXFValidatorStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/DirMXFValidatorStep.java @@ -8,7 +8,7 @@ import java.nio.file.Paths; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import user.commons.mediatool.MediaInfo; +import user.commons.mediaarea.MediaArea; import user.jobengine.db.Media; public class DirMXFValidatorStep extends JobStep { @@ -43,17 +43,17 @@ public class DirMXFValidatorStep extends JobStep { } else frames = media.getLength(); - MediaInfo mi = null; + MediaArea mi = null; try { - mi = new MediaInfo(file); + mi = new MediaArea(file); mi.process(); } catch (Exception e) { logger.error(getSessionMarker(), e.getMessage()); logger.error("Unreadable: {}", fileName); } - logger.info("Valid: {} MC farmes {} FF frames {}", fileName, frames, mi.getFrames()); + logger.info("Valid: {} MC farmes {} FF frames {}", fileName, frames, mi.getFrameCount()); } return null; diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFileUpdaterStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFileUpdaterStep.java index b1802929..f6eb9c58 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFileUpdaterStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFileUpdaterStep.java @@ -10,7 +10,7 @@ import org.apache.logging.log4j.Logger; import user.commons.DownloadableMedia; import user.commons.StoreUri; -import user.commons.mediatool.MediaInfo; +import user.commons.mediaarea.MediaArea; import user.commons.remotestore.RemoteStoreProtocol; import user.jobengine.server.steps.shared.EscortFiles; @@ -40,15 +40,14 @@ public class EscortFileUpdaterStep extends JobStep { } private void storeCurrentFrames(Path filePath, DownloadableMedia downloadable, Path escortFilePath) { - MediaInfo mi = null; + MediaArea mi = null; try { - mi = new MediaInfo(filePath); + mi = new MediaArea(filePath); mi.process(); - long frames = mi.getFrames(); + long frames = mi.getFrameCount(); downloadable.put("frames", frames); Files.write(escortFilePath, downloadable.toPrettyString("").getBytes()); - logger.info(getMarker(), "{} length {} is saved to escort file", filePath, frames, - escortFilePath.getFileName().toString()); + logger.info(getMarker(), "{} length {} is saved to escort file", filePath, frames, escortFilePath.getFileName().toString()); } catch (Exception e) { logger.error(getSessionMarker(), e.getMessage()); } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java index 62fa66ea..2e021ea5 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java @@ -12,7 +12,7 @@ import org.apache.logging.log4j.message.ParameterizedMessage; import user.commons.DownloadableMedia; import user.commons.StoreUri; -import user.commons.mediatool.MediaInfo; +import user.commons.mediaarea.MediaArea; import user.commons.remotestore.RemoteStoreProtocol; import user.jobengine.db.Media; import user.jobengine.server.steps.shared.EscortFiles; @@ -22,8 +22,8 @@ public class FileValidatorStep extends JobStep { private static final Logger logger = LogManager.getLogger(); @StepEntry - public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, - String exceptedColorSpace, String escortFile) throws Exception { + public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, String exceptedColorSpace, String escortFile) + throws Exception { if (!RemoteStoreProtocol.LOCAL.equals(sourceStoreUri.getProtocol())) throw new Exception("Store URI protocol must be local."); Path filePath = Paths.get(sourceStoreUri.toString(true), fileName); @@ -39,8 +39,7 @@ public class FileValidatorStep extends JobStep { // EscortFiles.remove(escortFilePath); EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED)); - Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", - fileName); + Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", fileName); EscortFiles.notifyRecipient(escortFilePath, logger, msg); cancel(); @@ -57,8 +56,7 @@ public class FileValidatorStep extends JobStep { if (downloadable != null && expectedFrameNumber == 0) storeCurrentFrames(filePath, downloadable); - if (downloadable != null && downloadable.containsKey("skipValidation") - && downloadable.getBoolean("skipValidation")) { + if (downloadable != null && downloadable.containsKey("skipValidation") && downloadable.getBoolean("skipValidation")) { logger.info(getMarker(), "Validation skipped for {}", fileName); return null; } @@ -82,11 +80,11 @@ public class FileValidatorStep extends JobStep { } private void storeCurrentFrames(Path filePath, DownloadableMedia downloadable) { - MediaInfo mi = null; + MediaArea mi = null; try { - mi = new MediaInfo(filePath); + mi = new MediaArea(filePath); mi.process(); - long frames = mi.getFrames(); + long frames = mi.getFrameCount(); if (downloadable.containsKey("mediaId")) { Media media = getManager().getMedia(downloadable.getLong("mediaId")); @@ -102,22 +100,19 @@ public class FileValidatorStep extends JobStep { } } - private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) - throws Exception { - MediaInfo mi = null; + private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) throws Exception { + MediaArea mi = null; try { - mi = new MediaInfo(filePath); + mi = new MediaArea(filePath); mi.process(); if (expectedFrameNumber > 0) { - long frames = mi.getFrames(); + long frames = mi.getFrameCount(); if (Math.abs(frames - expectedFrameNumber) > 3) { - Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", - filePath.getFileName()); + Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", filePath.getFileName()); EscortFiles.notifyRecipient(Paths.get(escortFile), logger, msg); getJobRuntime().setDisableRetry(true); - throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber - + ", found: " + frames); + throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames); } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MVCancelableStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MVCancelableStep.java index 45e57c5d..0f208599 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MVCancelableStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MVCancelableStep.java @@ -11,7 +11,7 @@ import org.apache.logging.log4j.MarkerManager; import user.commons.RemoteFile; import user.commons.StoreUri; -import user.commons.mediatool.MediaInfo; +import user.commons.mediaarea.MediaArea; import user.commons.remotestore.FtpDirectoryLister; import user.commons.remotestore.IProgressEventListener; import user.commons.remotestore.IStatusEventListener; @@ -26,9 +26,9 @@ public class MVCancelableStep extends JobStep { @StepEntry public Object[] execute(int z) throws Exception { try { - // retrieveTest(); - // ftpTest(); - //((MediaCubeMarker) getJobRuntime().getFinishMarker()).setTo("hering.tamas70@gmail.com"); + // retrieveTest(); + // ftpTest(); + // ((MediaCubeMarker) getJobRuntime().getFinishMarker()).setTo("hering.tamas70@gmail.com"); for (int i = 0; i < count; i++) { if (getJobRuntime().isWaitingCancel()) @@ -92,7 +92,7 @@ public class MVCancelableStep extends JobStep { sourceUri.addProgressListener(new IProgressEventListener() { @Override public void progressChanged(ProgressEvent evt) { - //logger.info(evt.getProgress()); + // logger.info(evt.getProgress()); } }); sourceUri.addStatusListener(new IStatusEventListener() { @@ -104,9 +104,9 @@ public class MVCancelableStep extends JobStep { fn = fileName.substring(9); RemoteFile result = sourceUri.transferFrom(targetUri, fileName, fn); - MediaInfo mi = new MediaInfo(Paths.get(targetUri.toString(true), fn)); + MediaArea mi = new MediaArea(Paths.get(targetUri.toString(true), fn)); mi.process(); - logger.info(MarkerManager.getMarker("MOVTEST"), "Az {} állomány viszatöltve, hossz {}, audio {}", fn, mi.getFrames(), mi.getAudioStreams()); + logger.info(MarkerManager.getMarker("MOVTEST"), "Az {} állomány viszatöltve, hossz {}, audio {}", fn, mi.getFrameCount(), mi.getAudioCount()); } } catch (Exception e) { logger.info(MarkerManager.getMarker("MOVTEST"), "Az {} állomány viszatöltése sikertelen. {}", fn, e.getMessage()); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursiveStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursiveStep.java index 596a05a6..d4556521 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursiveStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/SafeDeleteRecursiveStep.java @@ -30,7 +30,7 @@ import com.ibm.nosql.json.api.BasicDBObject; import user.commons.IEntityBase; import user.commons.RemoteFile; import user.commons.StoreUri; -import user.commons.mediatool.MediaInfo; +import user.commons.mediaarea.MediaArea; import user.commons.remotestore.RemoteStoreProtocol; import user.jobengine.db.Item; import user.jobengine.db.Media; @@ -257,7 +257,7 @@ public class SafeDeleteRecursiveStep extends JobStep implements FileVisitor data = InformParser.parse(mi.inform()); for (MediaMetadata md : data.values()) { - getInform().append(md.getType(), - new BasicDBObject(Collections.unmodifiableMap(md.getMetaData()))); + getInform().append(md.getType(), new BasicDBObject(Collections.unmodifiableMap(md.getMetaData()))); } } catch (Exception ex) { throw new Exception(ex); @@ -100,4 +102,12 @@ public class MediaArea { public BasicDBObject getInform() { return inform; } + + public String getColorSpace() { + return colorSpace; + } + + public int getAudioCount() { + return audioCount; + } } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/mediatool/MediaInfo.java b/server/user.jobengine.osgi.commons/src/user/commons/mediatool/MediaInfo.java deleted file mode 100644 index 071a6e99..00000000 --- a/server/user.jobengine.osgi.commons/src/user/commons/mediatool/MediaInfo.java +++ /dev/null @@ -1,142 +0,0 @@ -package user.commons.mediatool; - -import java.io.IOException; -import java.nio.file.Path; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import io.humble.video.Codec; -import io.humble.video.CodecProfile; -import io.humble.video.Decoder; -import io.humble.video.Demuxer; -import io.humble.video.DemuxerStream; -import io.humble.video.MediaDescriptor; -import io.humble.video.Rational; - -public class MediaInfo { - private static final Logger logger = LogManager.getLogger(); - private long frames; - private Path filePath; - private int bitRate; - private String colorSpace; - private int audioStreams; - private int videoStreams; - private int height; - private int width; - private String codecProfileName; - private String displayAspect; - - public MediaInfo(Path filePath) { - this.filePath = filePath; - } - - public int getAudioStreams() { - return audioStreams; - } - - public int getBitRate() { - return bitRate; - } - - /*** - * Uppercase codec profile name - * - * @return Name or empty String, never NULL - */ - public String getCodecProfileName() { - return codecProfileName; - } - - public String getColorSpace() { - return colorSpace; - } - - public String getDisplayAspect() { - return displayAspect; - } - - public long getFrames() { - return frames; - } - - public int getHeight() { - return height; - } - - public int getVideoStreams() { - return videoStreams; - } - - public int getWidth() { - return width; - } - - public void process() throws InterruptedException, IOException { - Demuxer demuxer = null; - try { - demuxer = Demuxer.make(); - demuxer.open(filePath.toString(), null, false, true, null, null); - - bitRate = demuxer.getBitRate(); - - int numStreams = demuxer.getNumStreams(); - frames = 0; - int videoStreamId = -1; - for (int i = 0; i < numStreams; i++) { - final DemuxerStream stream = demuxer.getStream(i); - final Decoder decoder = stream.getDecoder(); - - if (decoder != null) { - if (decoder.getCodecType() == MediaDescriptor.Type.MEDIA_VIDEO) { - videoStreams++; - videoStreamId = i; - frames = stream.getNumFrames(); - - if (frames == 0) - frames = stream.getDuration(); - colorSpace = decoder.getPixelFormat().toString(); - - height = decoder.getHeight(); - width = decoder.getWidth(); - - codecProfileName = ""; - - Codec codec = decoder.getCodec(); - CodecProfile profile = codec.getSupportedProfile(decoder.getPropertyAsInt("profile")); - if (profile != null && profile.getName() != null) - codecProfileName = profile.getName().toUpperCase(); - - Rational sampleAspectRatio = stream.getSampleAspectRatio(); - float dasp = (float) (sampleAspectRatio.getNumerator() * width) / (sampleAspectRatio.getDenominator() * height); - if (dasp == 4f / 3f) - displayAspect = "4:3"; - - if (dasp == 16f / 9f) - displayAspect = "16:9"; - - } - if (decoder.getCodecType() == MediaDescriptor.Type.MEDIA_AUDIO) { - audioStreams++; - } - } - } - if (videoStreamId == -1) - throw new RuntimeException("Could not find video stream in " + filePath); - } catch (UnsatisfiedLinkError e) { - logger.catching(e); - } catch (Exception e) { - logger.catching(e); - throw e; - } finally { - try { - if (demuxer != null) - demuxer.close(); - } catch (Exception e) { - logger.catching(e); - throw e; - } - } - } - -} diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index d32e41ee..9ecb34e3 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -465,4 +465,6 @@ public interface IItemManager extends IEntityPersister { void truncate(Class classInfo); List getGroupChildren(ArchivedMedia master, String criteria); + + BasicDBObject simpleSearch(BasicDBObject searchParameters); } \ No newline at end of file diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 4ca0eb2a..dd7f285a 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -1492,4 +1492,10 @@ public class ItemManager extends MemoryCache implements IItemManager { } } + @Override + public BasicDBObject simpleSearch(BasicDBObject searchParameters) { + MediaFinder finder = new MediaFinder(this); + return finder.simpleSearch(searchParameters); + } + } diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java b/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java index 6caa1006..39a465a7 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java @@ -12,6 +12,9 @@ import org.apache.ibatis.jdbc.SQL; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.ibm.nosql.json.api.BasicDBList; +import com.ibm.nosql.json.api.BasicDBObject; + import sqlj.runtime.ref.DefaultContext; import user.jobengine.db.ArchivedMedia; import user.jobengine.db.Item; @@ -499,4 +502,76 @@ public class MediaFinder implements IMediaFinder { return resultList; } + public BasicDBObject simpleSearch(BasicDBObject searchParameters) { + BasicDBObject result = new BasicDBObject(); + BasicDBList items = new BasicDBList(); + result.put("data", items); + + String criteria = searchParameters.getString("criteria"); + String criteriasPattern = getCriteriasRegexPattern(criteria); + String textCriteria = formatSearchValue(criteria); + + int paginationSize = searchParameters.getInt("size"); + int page = searchParameters.getInt("page"); + if (page == 1) { + SQL sql = new SQL(); + sql.SELECT("COUNT(*) resultcount"); + sql.FROM("VW_ITEMS_WITH_PATH vi", "MEDIADESCRIPTION md"); + sql.WHERE("vi.mediafileid = md.mediafileid"); + if (textCriteria != null && textCriteria.trim().length() > 0) { + sql.AND(); + sql.WHERE(String.format("CONTAINS(md.description, '%s') >= 1", textCriteria)); + } + + String query = sql.toString(); + manager.executeQuery(query, rs -> { + int resultCount = rs.getInt("resultcount"); + int pageCount = (int) Math.floor(resultCount / paginationSize); + logger.info("Result count {}, pagecount {}", resultCount, pageCount); + result.put("last_page", pageCount); + return false; + }, st -> { + + }); + } + SQL sql = new SQL(); + String relevantField = String.format("HIGHLIGHT(md.description, '', '', '%s') AS relevant", criteriasPattern); + sql.SELECT("vi.itemid", "vi.itemtitle", "vi.mediaid", "vi.mediatitle", "vi.mediacreation", "vi.medialength", "vi.mediaitemtypename", "vi.mediahouseid", + "vi.mediarelativepath", relevantField); + sql.FROM("VW_ITEMS_WITH_PATH vi", "MEDIADESCRIPTION md"); + sql.WHERE("vi.mediafileid = md.mediafileid"); + if (textCriteria != null && textCriteria.trim().length() > 0) { + sql.AND(); + sql.WHERE(String.format("CONTAINS(md.description, '%s') >= 1", textCriteria)); + } + sql.LIMIT(paginationSize); + int offset = (page - 1) * paginationSize; + sql.OFFSET(offset); + sql.ORDER_BY("vi.mediacreation DESC"); + String query = sql.toString(); + logger.info(query); + + result.put("last_row", offset); + + manager.executeQuery(query, rs -> { + BasicDBObject item = new BasicDBObject(); + item.put("itemId", rs.getString("itemid")); + item.put("itemTitle", rs.getString("itemtitle")); + item.put("mediaId", rs.getString("mediaid")); + item.put("mediaTitle", rs.getString("mediatitle")); + item.put("creation", rs.getString("mediacreation")); + item.put("length", rs.getInt("medialength")); + item.put("typeName", rs.getString("mediaitemtypename")); + item.put("houseId", rs.getString("mediahouseid")); + item.put("fileName", rs.getString("mediarelativepath")); + item.put("relevant", rs.getString("relevant")); + items.add(item); + result.put("last_row", result.getInt("last_row") + 1); + return true; + }, st -> { + + }); + return result; + } + } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/JSONEncoder.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/JSONEncoder.java index 5e6549cf..6fbbad7d 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/JSONEncoder.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/ast/JSONEncoder.java @@ -15,18 +15,20 @@ public class JSONEncoder implements Visitor { BasicDBList outputs = null; // az inputs és az outputs elemei egyenként vannak hozzáadva, mert csak // String-gé konvertálva tudja a JS oldal feldolgozni (az addAll() nem működne) - List inputParameters = command.getInputParameterSequence().getParameters(); - for (int i = 0; i < inputParameters.size(); i++) { - BasicDBObject input = new BasicDBObject(); - Expression expression = ((InputParameter) inputParameters.get(i)).getExpression(); - input.append("name", expression.getName()); - - if (expression instanceof ParameterExpression) { - input.append("type", "param"); - } else { - input.append("type", "variable"); + if (command.getInputParameterSequence() != null) { + List inputParameters = command.getInputParameterSequence().getParameters(); + for (int i = 0; i < inputParameters.size(); i++) { + BasicDBObject input = new BasicDBObject(); + Expression expression = ((InputParameter) inputParameters.get(i)).getExpression(); + input.append("name", expression.getName()); + + if (expression instanceof ParameterExpression) { + input.append("type", "param"); + } else { + input.append("type", "variable"); + } + inputs.add(input); } - inputs.add(input); } if (command.getOutputParameterSequence() != null) { outputs = new BasicDBList(); @@ -37,9 +39,8 @@ public class JSONEncoder implements Visitor { } newNode.append("name", command.getType().replace(".java", "")).append("y", 75).append("w", 100).append("h", 100) - .append("connectors", "connectorsForStep").append("text", command.getType().replace(".java", "")) - .append("fillStyle", "green").append("figure", "RectangleWithGradient").append("inputs", inputs) - .append("weight", command.getWeight()); + .append("connectors", "connectorsForStep").append("text", command.getType().replace(".java", "")).append("fillStyle", "green") + .append("figure", "RectangleWithGradient").append("inputs", inputs).append("weight", command.getWeight()); if (outputs != null) { newNode.append("outputs", outputs); } @@ -48,8 +49,8 @@ public class JSONEncoder implements Visitor { BasicDBList links = (BasicDBList) dbo.get("links"); BasicDBObject newLink = new BasicDBObject(); - newLink.append("from", nodes.size()).append("to", nodes.size() + 1).append("anchorFrom", 0) - .append("anchorTo", 1).append("text", "").append("mode", "straight"); + newLink.append("from", nodes.size()).append("to", nodes.size() + 1).append("anchorFrom", 0).append("anchorTo", 1).append("text", "").append("mode", + "straight"); links.add(newLink); return null; } diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java index 4b4fdd27..2456b807 100644 --- a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java @@ -43,7 +43,6 @@ import user.commons.CalendarUtils; import user.commons.IEntityBase; import user.commons.ListUtils; import user.commons.StoreUri; -import user.commons.mediatool.MediaInfo; import user.commons.nosql.NoSQLUtils; import user.commons.octopus.IOctopusAPI; import user.commons.octopus.OctopusAPI; @@ -75,19 +74,19 @@ public class Support { @BeforeClass static public void setUpConnection() { - // // System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns"); - // // System.setProperty("jobengine.octopus.stories.name", "test_stories"); - // // System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders"); - // System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620"); - // System.setProperty("jobengine.octopus.stories.name", "stories180620"); - // System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620"); + // // System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns"); + // // System.setProperty("jobengine.octopus.stories.name", "test_stories"); + // // System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders"); + // System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620"); + // System.setProperty("jobengine.octopus.stories.name", "stories180620"); + // System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620"); // - // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); - // System.setProperty("jobengine.nosql.db.user", "db2admin"); - // System.setProperty("jobengine.nosql.db.password", "password"); - // System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); - // System.setProperty(ItemManager.DBUSERNAME, "db2admin"); - // System.setProperty(ItemManager.DBPASSWORD, "password"); + // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + // System.setProperty("jobengine.nosql.db.user", "db2admin"); + // System.setProperty("jobengine.nosql.db.password", "password"); + // System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + // System.setProperty(ItemManager.DBUSERNAME, "db2admin"); + // System.setProperty(ItemManager.DBPASSWORD, "password"); manager = new ItemManager(); manager.connect(); @@ -141,7 +140,8 @@ public class Support { @Test public void generateMissingRecordingsList() throws Exception { - // select itemtitle, mediafilehouseid from vw_items where itemtitle like '%Echo TV%' and itemtitle like '2%' and mediatitle like '%PGM%' order by itemtitle, mediafilehouseid + // select itemtitle, mediafilehouseid from vw_items where itemtitle like '%Echo TV%' and itemtitle like '2%' and mediatitle like '%PGM%' order by + // itemtitle, mediafilehouseid String[] hours = { "07:00", "08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00", "22:00" }; @@ -152,7 +152,7 @@ public class Support { for (String hour : hours) { String key = String.format("%s %s", df.format(cal.getTime()), hour); recordings.put(key, ""); - // System.out.println(key); + // System.out.println(key); } cal.add(Calendar.DAY_OF_MONTH, 1); } @@ -339,7 +339,8 @@ public class Support { public List getRundownsByPlaceHolderID(String id) { DB db = NoSQLUtils.getNoSQLDB(); DBCollection collection = db.getCollection(IOctopusAPI.STORY_COLLECTION); - BasicDBObject criteria = new BasicDBObject(IOctopusAPI.MOS_OBJECTS, new BasicDBObject(IOctopusAPI.$ELEMMATCH, new BasicDBObject(IOctopusAPI.OBJ_ID, id))); + BasicDBObject criteria = new BasicDBObject(IOctopusAPI.MOS_OBJECTS, + new BasicDBObject(IOctopusAPI.$ELEMMATCH, new BasicDBObject(IOctopusAPI.OBJ_ID, id))); DBCursor find = collection.find(criteria, new BasicDBObject(IOctopusAPI.REF_RUNDOWN, 1)); List rundowns = NoSQLUtils.asList(find); db.cancelBatch(); @@ -361,8 +362,8 @@ public class Support { @Test public void processRecordingsSummertime() throws Exception { - // Item item1 = manager.createItem("Generic", "2018.03.25 19:00 xxx", "", "56607293"); - // manager.merge(item1); + // Item item1 = manager.createItem("Generic", "2018.03.25 19:00 xxx", "", "56607293"); + // manager.merge(item1); SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd-HHmm"); OctopusAPI octopusAPI = new OctopusAPI(); @@ -377,7 +378,7 @@ public class Support { String x1 = rs.getString("x1"); String x2 = rs.getString("x2"); String time = mediaFileHouseID.substring(9, 13); - //Date scheduleDate = df.parse(mediaFileHouseID.substring(0, 13)); + // Date scheduleDate = df.parse(mediaFileHouseID.substring(0, 13)); Date scheduleDate = df.parse("20180308-1900"); RundownArchive rundownArchive = RundownHelper.processRundow(octopusAPI, scheduleDate); @@ -409,14 +410,14 @@ public class Support { }; manager.executeQuery(query, consumer, null); - //System.out.println("Available will " + duplicateLength[0]); + // System.out.println("Available will " + duplicateLength[0]); } private List query(Connection con) throws Exception { List result = new ArrayList<>(); - // [clIFsp_EC_MAM] @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, - // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null + // [clIFsp_EC_MAM] @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, + // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null try (PreparedStatement stmt = con.prepareStatement("{call dbo.clIFsp_EC_MAM(5001, Null, Null)}")) { try (ResultSet rs = stmt.executeQuery()) { while (rs.next()) { @@ -452,7 +453,7 @@ public class Support { continue; names.add(splittedLine[1]); - //lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!! + // lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!! Map> existing = getExistingItemHouseIDs(splittedLine[1]); Media media = (Media) existing.keySet().toArray()[0]; @@ -507,7 +508,7 @@ public class Support { List archivedFiles = getRundownMedias("2018-03-03", "2018-06-07"); int i = 1; for (String file : archivedFiles) { - //lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!! + // lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!! Map> existing = getExistingItemHouseIDs(file); Media media = (Media) existing.keySet().toArray()[0]; @@ -516,35 +517,35 @@ public class Support { System.out.println(String.format("%d - %s %d: ", i, file, media.getId())); i++; - // if (rundowns == null) - // continue; - // for (BasicDBObject rd : rundowns) { - // String rundownTitle = getRundownTitle(rd); - // if (itemTitles.contains(rundownTitle) || rundownTitle.contains("00:00")) - // continue; + // if (rundowns == null) + // continue; + // for (BasicDBObject rd : rundowns) { + // String rundownTitle = getRundownTitle(rd); + // if (itemTitles.contains(rundownTitle) || rundownTitle.contains("00:00")) + // continue; // - // Item item = getRundownItem(rd); - // if (item == null) { - // item = manager.createItem("Generic", rundownTitle, null, NoSQLUtils.asString(rd, IOctopusAPI.ID)); - // item.add(); - // System.out.print(String.format("* %s,", rundownTitle)); - // } else { - // System.out.print(String.format("%s (%d),", rundownTitle, item.getId())); - // } + // Item item = getRundownItem(rd); + // if (item == null) { + // item = manager.createItem("Generic", rundownTitle, null, NoSQLUtils.asString(rd, IOctopusAPI.ID)); + // item.add(); + // System.out.print(String.format("* %s,", rundownTitle)); + // } else { + // System.out.print(String.format("%s (%d),", rundownTitle, item.getId())); + // } // - // List mediaFiles = media.getMediaFiles(); - // if (mediaFiles != null) { - // for (MediaFile mf : mediaFiles) { - // mf.setId(0); - // mf.setMediaId(0); - // } - // } - // media.setId(0); - // media.setItemId(item.getId()); - // media.setPersister(manager); - // media.add(); + // List mediaFiles = media.getMediaFiles(); + // if (mediaFiles != null) { + // for (MediaFile mf : mediaFiles) { + // mf.setId(0); + // mf.setMediaId(0); + // } + // } + // media.setId(0); + // media.setItemId(item.getId()); + // media.setPersister(manager); + // media.add(); // - // } + // } } } @@ -576,13 +577,6 @@ public class Support { manager.add(m); } - @Test - public void test3() throws Exception { - MediaInfo mediaInfo = new MediaInfo(Paths.get("\\\\10.10.1.27\\mclowres\\www\\video\\170911TEL_PAKS_IP.mp4")); - mediaInfo.process(); - System.out.println("Bitrate: " + mediaInfo.getBitRate()); - } - @Test public void test4() throws Exception { String houseid = "133519696_1-001-132654584"; @@ -640,10 +634,10 @@ public class Support { String name = c.getString("longnameid"); Date recorddate = c.getDate("recorddate"); if (name != null && name.toLowerCase().contains("_nodelete")) { - // recorddate.setMonth(2); - // recorddate.setDate(31); + // recorddate.setMonth(2); + // recorddate.setDate(31); System.out.println(name + " " + recorddate); - // collection.save(c); + // collection.save(c); } } diff --git a/server/user.jobengine.osgi.services/META-INF/MANIFEST.MF b/server/user.jobengine.osgi.services/META-INF/MANIFEST.MF index 9e513b25..17f1eb8e 100644 --- a/server/user.jobengine.osgi.services/META-INF/MANIFEST.MF +++ b/server/user.jobengine.osgi.services/META-INF/MANIFEST.MF @@ -1,13 +1,11 @@ Manifest-Version: 1.0 Automatic-Module-Name: user.jobengine.osgi.services -Bundle-ManifestVersion: 2 -Bundle-Name: Services Bundle-SymbolicName: user.jobengine.osgi.services;singleton:=true -Bundle-Version: 1.0.0 +Require-Bundle: org.jboss.resteasy.jaxrs;bundle-version="3.0.11", + org.omnifaces;bundle-version="3.4.1" +Bundle-ManifestVersion: 2 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Service-Component: OSGI-INF/*.xml Bundle-ActivationPolicy: lazy -Web-ContextPath: /services Import-Package: com.fasterxml.jackson.annotation;version="2.4.5", com.fasterxml.jackson.core;version="2.4.5", com.fasterxml.jackson.databind;version="2.4.5", @@ -44,9 +42,14 @@ Import-Package: com.fasterxml.jackson.annotation;version="2.4.5", user.commons.rest, user.jobengine.db, user.jobengine.server +Service-Component: OSGI-INF/*.xml Export-Package: user.jobengine.osgi.rest, user.jobengine.osgi.rest.octopus, user.jobengine.osgi.ws.mediacube, user.jobengine.osgi.ws.nexio -Require-Bundle: org.jboss.resteasy.jaxrs;bundle-version="3.0.11", - org.omnifaces;bundle-version="3.4.1" +Bundle-Name: Services +Bundle-Version: 1.0.0 +Web-ContextPath: /services +Build-Jdk-Spec: 1.8 +Created-By: Maven Archiver 3.5.0 + diff --git a/server/user.jobengine.osgi.services/build-services-module.launch b/server/user.jobengine.osgi.services/build-services-module.launch index 94e5a916..b7d4e22d 100644 --- a/server/user.jobengine.osgi.services/build-services-module.launch +++ b/server/user.jobengine.osgi.services/build-services-module.launch @@ -1,17 +1,16 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/MediaCubeService.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/MediaCubeService.java index c2040d8f..d9690125 100644 --- a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/MediaCubeService.java +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/MediaCubeService.java @@ -65,8 +65,7 @@ public class MediaCubeService { @Path("/checkmediafile") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public Response checkMediaFile(@QueryParam("mediaFileHouseId") String mediaFileHouseId, - @QueryParam("store") String store) { + public Response checkMediaFile(@QueryParam("mediaFileHouseId") String mediaFileHouseId, @QueryParam("store") String store) { Response result = null; try { IItemManager itemManager = ComponentBinder.getItemManager(); @@ -274,8 +273,7 @@ public class MediaCubeService { @GET @Path("/notify") @Consumes({ MediaType.APPLICATION_JSON }) - public Response notify(@QueryParam("to") String to, @QueryParam("subject") String subject, - @QueryParam("content") String content) { + public Response notify(@QueryParam("to") String to, @QueryParam("subject") String subject, @QueryParam("content") String content) { Response result = null; try { logger.info(new MediaCubeMarker(to, subject), content); @@ -308,8 +306,7 @@ public class MediaCubeService { @Path("/startjob") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public Response startJob(@QueryParam("template") String template, @QueryParam("name") String name, - @Context HttpServletRequest request) { + public Response startJob(@QueryParam("template") String template, @QueryParam("name") String name, @Context HttpServletRequest request) { Response result = null; try { @@ -334,4 +331,20 @@ public class MediaCubeService { return result; } + @POST + @Path("/search") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + public Response search(BasicDBObject searchParameters) { + Response result = null; + logger.info("Request: {}", searchParameters.toPrettyString("")); + try { + IItemManager manager = ComponentBinder.getItemManager(); + BasicDBObject searchResult = manager.simpleSearch(searchParameters); + result = Response.ok(searchResult).build(); + } catch (Exception e) { + result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); + } + return result; + } } diff --git a/server/user.mediacube.gui/META-INF/MANIFEST.MF b/server/user.mediacube.gui/META-INF/MANIFEST.MF index 9d7555f0..aecc8865 100644 --- a/server/user.mediacube.gui/META-INF/MANIFEST.MF +++ b/server/user.mediacube.gui/META-INF/MANIFEST.MF @@ -10,7 +10,8 @@ Require-Bundle: user.jobengine.osgi.db;bundle-version="1.0.0", org.apache.commons.lang;bundle-version="2.4.0";visibility:=reexport, user.commons.zk;bundle-version="1.0.0", org.apache.servicemix.bundles.quartz;bundle-version="2.3.0", - user.jobengine.osgi.server + user.jobengine.osgi.server, + hu.user.zk.theme.userdark;bundle-version="1.0.0" Export-Package: user.jobengine.gui DynamicImport-Package: * Bundle-ClassPath: . diff --git a/server/user.mediacube.gui/WEB-INF/zk.xml b/server/user.mediacube.gui/WEB-INF/zk.xml index 054d39f7..14c7bb4d 100644 --- a/server/user.mediacube.gui/WEB-INF/zk.xml +++ b/server/user.mediacube.gui/WEB-INF/zk.xml @@ -8,11 +8,11 @@ https://www.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml org.zkoss.theme.preferred userdark +--> org.zkoss.web.preferred.locale diff --git a/server/user.mediacube.gui/css/tabulator.css b/server/user.mediacube.gui/css/tabulator.css index 3dde4a7d..cd70ccfd 100644 --- a/server/user.mediacube.gui/css/tabulator.css +++ b/server/user.mediacube.gui/css/tabulator.css @@ -30,7 +30,8 @@ width: 100%; border-bottom: 1px solid #999; background-color: #e6e6e6; - color: #555; + color: red; +/* color: #555;*/ font-weight: bold; white-space: nowrap; overflow: hidden; diff --git a/server/user.mediacube.gui/css/tagify.css b/server/user.mediacube.gui/css/tagify.css index 3c2c01ab..c603236e 100644 --- a/server/user.mediacube.gui/css/tagify.css +++ b/server/user.mediacube.gui/css/tagify.css @@ -6,15 +6,22 @@ } .tagify{ - --tags-border-color:#DDD; +/* --tags-border-color:#DDD;*/ + --tags-border-color: #1d1d1d; --tags-disabled-bg:#F1F1F1; - --tags-hover-border-color:#CCC; - --tags-focus-border-color:#3595f6; - --tag-bg:#E5E5E5; +/* --tags-hover-border-color:#CCC;*/ + --tags-hover-border-color: #1d1d1d; +/* --tags-focus-border-color:#3595f6;*/ + --tags-focus-border-color: #1d1d1d; + --tag-bg:#1d1d1d; --tag-hover:#D3E2E2; +/* --tag-text-color:black; --tag-text-color--edit:black; - --tag-pad:0.3em 0.5em; +*/ + --tag-text-color: white; + --tag-text-color--edit: white; +/* --tag-pad:0.3em 0.5em;*/ --tag-inset-shadow-size:1.1em; --tag-invalid-color:#D39494; --tag-invalid-bg:rgba(211, 148, 148, 0.5); @@ -33,14 +40,18 @@ display:flex; align-items:flex-start; flex-wrap:wrap; - border:1px solid #ddd; + border:1px solid lightgray; border:1px solid var(--tags-border-color); + border-radius: 3px 3px 3px 3px; + background: white; padding:0; line-height:0; cursor:text; outline:0;position:relative; box-sizing:border-box; - transition:.1s + transition:.1s; + font: 12px Verdana; + margin: 3px; } @keyframes tags--bump{ @@ -62,7 +73,9 @@ .tagify.tagify--focus{ transition:0s; - border-color:#3595f6; + border: 1px solid ; +/* border-color:#3595f6; */ + border-color: #1d1d1d; border-color:var(--tags-focus-border-color) } @@ -84,7 +97,7 @@ .tagify[readonly]:not(.tagify--mix):not(.tagify--select)>.tagify__input{ visibility:hidden; width:0; - margin:5px 0 + margin:5px 0; } .tagify[readonly]:not(.tagify--mix):not(.tagify--select) @@ -210,8 +223,8 @@ pointer-events:none; transition:120ms ease; animation:tags--bump .3s ease-out 1; - box-shadow:0 0 0 1.1em #e5e5e5 inset; - box-shadow:0 0 0 var(--tag-inset-shadow-size,1.1em) var(--tag-bg,#e5e5e5) inset + box-shadow:0 0 0 1.1em #1d1d1d inset; + box-shadow:0 0 0 var(--tag-inset-shadow-size,1.1em) var(--tag-bg,#1d1d1d) inset } .tagify__tag:focus div::before,.tagify__tag:hover:not([readonly]) div::before{ @@ -332,9 +345,10 @@ justify-content:center; border-radius:50px; cursor:pointer; - font:14px/1 Arial; - background:0 0; - background:var(--tag-remove-btn-bg,none); + font:14px/1 Verdana; + background: #FFFFFF; +/* background:0 0;*/ +/* background:var(--tag-remove-btn-bg,none);*/ color:#000; color:var(--tag-remove-btn-color,#000); width:14px; @@ -381,7 +395,7 @@ flex-grow:1; display:inline-block; min-width:110px; - margin:5px; +/* margin:5px;*/ padding:.3em .5em; padding:var(--tag-pad,.3em .5em); line-height:normal; diff --git a/server/user.mediacube.gui/pages/menu.zul b/server/user.mediacube.gui/pages/menu.zul index ce97a3bc..6a2bffd3 100644 --- a/server/user.mediacube.gui/pages/menu.zul +++ b/server/user.mediacube.gui/pages/menu.zul @@ -35,6 +35,12 @@ + + + + + + diff --git a/server/user.mediacube.gui/pages/searchitems.zul b/server/user.mediacube.gui/pages/searchitems.zul index a570cf6d..57b3f4a9 100644 --- a/server/user.mediacube.gui/pages/searchitems.zul +++ b/server/user.mediacube.gui/pages/searchitems.zul @@ -5,6 +5,7 @@ + @@ -52,7 +53,8 @@ - + + @@ -61,6 +63,9 @@ + + + diff --git a/server/user.mediacube.gui/pages/searchitems/details.zul b/server/user.mediacube.gui/pages/searchitems/details.zul index d4a4ccc0..1ee917fe 100644 --- a/server/user.mediacube.gui/pages/searchitems/details.zul +++ b/server/user.mediacube.gui/pages/searchitems/details.zul @@ -1,5 +1,12 @@
+ @@ -14,6 +21,9 @@ + + + - - -
diff --git a/server/user.mediacube.gui/pages/searchitems/filters.zul b/server/user.mediacube.gui/pages/searchitems/filters.zul index 315f1cc6..8e93cdf8 100644 --- a/server/user.mediacube.gui/pages/searchitems/filters.zul +++ b/server/user.mediacube.gui/pages/searchitems/filters.zul @@ -19,9 +19,10 @@ - + + - + diff --git a/server/user.mediacube.gui/pages/searchitems/tabulatorresults.zul b/server/user.mediacube.gui/pages/searchitems/tabulatorresults.zul index 4ee48d0a..966130c9 100644 --- a/server/user.mediacube.gui/pages/searchitems/tabulatorresults.zul +++ b/server/user.mediacube.gui/pages/searchitems/tabulatorresults.zul @@ -4,13 +4,12 @@ height="100%" width="100%">