</Filters>\r
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %marker - %msg (%F:%L) %n" />\r
</Console>\r
- <HTMLMailAppender name="MarkeredMail" subject="TEST MediaCube rendszerüzenet" to="vasary@elgekko.net" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
+ <HTMLMailAppender name="MarkeredMail" subject="[localhost] MediaCube rendszerüzenet" to="shray.tarum@gmail.com" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
smtpPort="465" smtpProtocol="smtps" smtpUsername="mediacubeserver@gmail.com" smtpPassword="salabakter" ignoreExceptions="false" bufferSize="1">\r
<Filters>\r
<MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
"template": "import-statistics.xml",\r
"cronexpression": "0 0 0/1 1/1 * ? *",\r
"parameters": [ \r
- {"name": "daysBeforeNow", "value": 3, "type": "java.lang.Integer"}\r
+ {"name": "daysBeforeNow", "value": 6, "type": "java.lang.Integer"}\r
]\r
},\r
{\r
<executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
<executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
<executor className="user.jobengine.server.steps.ImportMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
- <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="7"/>\r
<executor className="user.jobengine.server.steps.MetadataTransformStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.OutputPathAndNameSelectorStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.RecordingsArchiveItemBuilderStep" maxConcurrent="1"/>\r
e.getMessage());\r
return null;\r
}\r
+\r
+ if (clipName.startsWith("1900")) {\r
+ Calendar cal = CalendarUtils.createCalendar(scheduledStart);\r
+ cal.add(Calendar.MINUTE, 5);\r
+ rundown = octopusAPI.getRundown(cal.getTime());\r
+ if (rundown == null) {\r
+ logger.error(systemMarker, "A '{}' anyaghoz nem található tükör '{}' kezdéssel, ezért nem archiválható.", clipName, scheduledStart);\r
+ return null;\r
+ }\r
+\r
+ RundownArchive item2 = null;\r
+\r
+ try {\r
+ item2 = processRundow(rundown, clipName, duration);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ logger.error(systemMarker, "A '{}' anyag metaadatainak transzformálása sikertelen, ezért az nem archiválható. A rendszer hibaüzenete: {}",\r
+ e.getMessage());\r
+ return null;\r
+ }\r
+\r
+ result.setItemTitle(result.getItemTitle() + " + NAPIAKT");\r
+ StoryArchive storyArchive = result.getStoryArchives().get(0);\r
+ StoryArchive storyArchive2 = item2.getStoryArchives().get(0);\r
+ storyArchive.setMediaDesc(storyArchive.getMediaDesc() + "\r\n\r\n****** NAPIAKT ******\r\n\r\n" + storyArchive2.getMediaDesc());\r
+ }\r
+\r
return result;\r
}\r
\r
jobRuntime.incrementProgress((i + 1) * count);\r
Thread.sleep(100);\r
\r
- if (i == 2)\r
- throw new Exception("TESZT");\r
+ // if (i == 2)\r
+ // throw new Exception("TESZT");\r
//logger.info("Progress {}", jobRuntime.getProgress());\r
}\r
} catch (Exception e) {\r
BasicDBObject typeStat = new BasicDBObject();\r
BasicDBObject typeStatRawData = new BasicDBObject();\r
typeStat.put("rawData", typeStatRawData);\r
- long sumduration = 0;\r
+ long sumDuration = 0;\r
long sumIngestDuration = 0;\r
long sumIngestCount = 0;\r
long sumArchiveDuration = 0;\r
long archiveDuration = 0;\r
BasicDBObject archiveInfo = manager.getArchiveInfo(scheduledDate, String.valueOf(parentStoryId));\r
if (archiveInfo != null) {\r
- archiveCount = ingestInfo.getLong("count");\r
- archiveDuration = ingestInfo.getLong("duration");\r
+ archiveCount = archiveInfo.getLong("count");\r
+ archiveDuration = archiveInfo.getLong("duration");\r
raw.put("archive_count", archiveCount);\r
raw.put("archive_duration", archiveDuration);\r
sumArchiveCount += archiveCount;\r
\r
//planStat\r
if (sfCount > 0 && rdCount == 0) {\r
- long planned = NoSQLUtils.asLong(planStat, "unreleased_count");\r
- planned++;\r
- planStat.put("unreleased_count", planned);\r
- long plannedDuration = NoSQLUtils.asLong(planStat, "unreleased_duration");\r
- planStat.put("unreleased_duration", plannedDuration + duration);\r
+ NoSQLUtils.addLong(planStat, "skip_count", 1);\r
+ NoSQLUtils.addLong(planStat, "skip_duration", duration);\r
}\r
if (rdCount > 0) {\r
- long released = NoSQLUtils.asLong(planStat, "released_count");\r
- released++;\r
- planStat.put("released_count", released);\r
- long releasedDuration = NoSQLUtils.asLong(planStat, "released_duration");\r
- planStat.put("released_duration", releasedDuration + duration);\r
+ NoSQLUtils.addLong(planStat, "onair_count", 1);\r
+ NoSQLUtils.addLong(planStat, "onair_duration", duration);\r
\r
//typeStat\r
- sumduration += duration;\r
+ sumDuration += duration;\r
if (typeStatRawData.containsKey(label)) {\r
BasicDBObject dbo = NoSQLUtils.asDBObject(typeStatRawData, label);\r
dbo.put("count", dbo.getInt("count") + 1);\r
}\r
\r
planStat.put("all_count", rawData.size());\r
- planStat.put("all_duration", sumduration);\r
+ planStat.put("all_duration", sumDuration);\r
planStat.put("archive_count", sumArchiveCount);\r
planStat.put("archive_duration", sumArchiveDuration);\r
planStat.put("ingest_count", sumIngestCount);\r
Pass = System.getProperty("jobengine.nosql.db.password");\r
}\r
\r
+ public static void addLong(BasicDBObject obj, String name, long value) {\r
+ long current = asLong(obj, name);\r
+ obj.put(name, current + value);\r
+ }\r
+\r
public static BasicDBList asDBList(BasicDBObject obj, String name) {\r
BasicDBList result = null;\r
if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBList))\r
--- /dev/null
+package user.jobengine.db;\r
+\r
+public class ArchivedMedia {\r
+ private Item item;\r
+ private Media media;\r
+\r
+ public Item getItem() {\r
+ return item;\r
+ }\r
+\r
+ public Media getMedia() {\r
+ return media;\r
+ }\r
+\r
+ public void setItem(Item item) {\r
+ this.item = item;\r
+ }\r
+\r
+ public void setMedia(Media media) {\r
+ this.media = media;\r
+ }\r
+\r
+}\r
\r
BasicDBObject getIngestInfo(Calendar scheduleDate, String houseId);\r
\r
+ Item getItem(long id);\r
+\r
Item getItemByHouseID(String houseID);\r
\r
ItemType getItemType(String itemTypeName);\r
*/\r
IEntityBase retrieveCached(Class<? extends IEntityBase> baseClass, Object key);\r
\r
+ SearchResult<ArchivedMedia> search(String criteria, int fromResult, int toResult);\r
+\r
/**\r
* A bemeneti paraméterként kapott keresési feltételeknek megfelelő Anyagokat lekéri az adatbázisból és SearchResult objektumba csomagolva visszatér.\r
*\r
*/\r
List<SearchResult> searchItem(QueryObject parameter);\r
\r
- SearchResult searchItem(String criteria, int fromResult, int toResult);\r
+ SearchResult<Item> searchItem(String criteria, int fromResult, int toResult);\r
\r
/**\r
* A bemeneti paraméterként kapott keresési feltételeknek megfelelő Munkafolyamatokat lekéri az adaatbázisból.\r
return results;\r
}\r
\r
- public SearchResult search(String criteria, int fromResult, int toResult) {\r
- SearchResult result = new SearchResult();\r
+ public SearchResult<Item> search(String criteria, int fromResult, int toResult) {\r
+ SearchResult<Item> result = new SearchResult<Item>();\r
\r
ResultSet rs = null;\r
PreparedStatement st = null;\r
\r
return result;\r
}\r
+\r
+ public SearchResult<ArchivedMedia> searchArchivedMedia(String criteria, int fromResult, int toResult) {\r
+ SearchResult<ArchivedMedia> result = new SearchResult<>();\r
+\r
+ ResultSet rs = null;\r
+ PreparedStatement st = null;\r
+ DefaultContext context = manager.getDbContext();\r
+ Connection connection = context.getConnection();\r
+\r
+ try {\r
+ StringBuffer sql = new StringBuffer();\r
+\r
+ sql.append("SELECT * FROM ((");\r
+ sql.append("SELECT DISTINCT m.id,m.title FROM ITEM i, MEDIA m, MEDIAFILE mf");\r
+ sql.append(" WHERE ((CONTAINS(i.title, ?) >= 1) OR (CONTAINS(i.description, ?) >= 1)) AND m.itemid = i.id AND mf.mediaid = m.id");\r
+ sql.append(")UNION(");\r
+ sql.append("SELECT DISTINCT m2.id,m2.title FROM ITEM i2, MEDIA m2, MEDIAFILE mf2");\r
+ sql.append(" WHERE ((CONTAINS(m2.title, ?) >= 1) OR (CONTAINS(m2.description, ?) >= 1)) AND m2.itemid = i2.id AND mf2.MEDIAID = m2.id");\r
+ sql.append(")UNION(");\r
+ sql.append("SELECT DISTINCT m3.id,m3.title FROM ITEM i3, MEDIA m3, MEDIAFILE mf3");\r
+ sql.append(" WHERE (CONTAINS(mf3.houseId, ?) >= 1) AND m3.itemid = i3.id AND mf3.mediaid = m3.id");\r
+ sql.append(")) ORDER BY title");\r
+\r
+ String query = sql.toString();\r
+ st = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);\r
+ for (int s = 1; s <= 5; s++) {\r
+ st.setString(s, criteria);\r
+ }\r
+ rs = st.executeQuery();\r
+ rs.last();\r
+ result.setItemCount(rs.getRow());\r
+\r
+ // set begining position\r
+ if (fromResult > -1) {\r
+ if (fromResult <= result.getItemCount()) {\r
+ if (fromResult > 1) {\r
+ rs.absolute(fromResult - 1);\r
+ } else {\r
+ rs.beforeFirst();\r
+ }\r
+ } else {\r
+ if (result.getItemCount() > 0) {\r
+ throw new Exception("Invalid searchResult 'from' position: " + fromResult + " total records: " + result.getItemCount() + " " + query);\r
+ }\r
+ }\r
+ } else {\r
+ rs.beforeFirst();\r
+ }\r
+\r
+ int maxRecords = toResult - fromResult;\r
+\r
+ List<ArchivedMedia> resultList = null;\r
+ logger.info("Processing query result, maxRecords {}", maxRecords);\r
+ while (rs.next() && maxRecords > 0) {\r
+ ArchivedMedia am = new ArchivedMedia();\r
+ Media media = manager.getMedia(rs.getLong("id"));\r
+ am.setMedia(media);\r
+ Item item = manager.getItem(media.getItemId());\r
+ am.setItem(item);\r
+ if (resultList == null)\r
+ resultList = new ArrayList<>();\r
+ resultList.add(am);\r
+ maxRecords--;\r
+ }\r
+ logger.info("Query result processed");\r
+ result.setItems(resultList);\r
+ connection.commit();\r
+ } catch (Exception e) {\r
+ try {\r
+ connection.rollback();\r
+ } catch (Exception e1) {\r
+ e1.printStackTrace();\r
+ }\r
+ manager.throwError(e);\r
+ } finally {\r
+ try {\r
+ if (rs != null)\r
+ rs.close();\r
+ } catch (Exception e1) {\r
+ }\r
+ try {\r
+ if (st != null)\r
+ st.close();\r
+ } catch (Exception e1) {\r
+ }\r
+ manager.putDbContext(context);\r
+ }\r
+ manager.traceOut();\r
+\r
+ return result;\r
+ }\r
}\r
try {\r
String date = df.format(scheduleDate.getTime());\r
String query = String.format(\r
- "SELECT COUNT(*) as count, SUM(length) as duration FROM VW_ITEMS WHERE houseid='%s' AND archived LIKE '%s%%' GROUP BY houseid", houseId,\r
- date);\r
+ "SELECT COUNT(*) as count, SUM(length) as duration FROM VW_ITEMS WHERE mediahouseid='%s' AND archived LIKE '%s%%' GROUP BY mediahouseid",\r
+ houseId, date);\r
st = connection.prepareStatement(query);\r
rs = st.executeQuery();\r
if (rs.next()) {\r
return result;\r
}\r
\r
+ @Override\r
+ public Item getItem(long id) {\r
+ return (Item) get(Item.class, id);\r
+ }\r
+\r
@Override\r
public Item getItemByHouseID(String houseID) {\r
traceIn();\r
// Exercise\r
List<SearchResult> searchResult = searchItem(qo);\r
\r
- if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1)\r
- result = searchResult.get(0).getItems().get(0);\r
+ if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1) {\r
+ SearchResult<Item> sr = searchResult.get(0);\r
+ result = sr.getItems().get(0);\r
+ }\r
traceOut();\r
return result;\r
}\r
traceOut();\r
}\r
\r
+ @Override\r
+ public SearchResult<ArchivedMedia> search(String criteria, int fromResult, int toResult) {\r
+ traceIn();\r
+ SearchResult<ArchivedMedia> result = null;\r
+ ItemDAOEx itemDb = new ItemDAOEx(this);\r
+ result = itemDb.searchArchivedMedia(criteria, fromResult, toResult);\r
+ traceOut();\r
+ return result;\r
+ }\r
+\r
@Override\r
public List<SearchResult> searchItem(QueryObject parameter) {\r
traceIn();\r
}\r
\r
@Override\r
- public SearchResult searchItem(String criteria, int fromResult, int toResult) {\r
+ public SearchResult<Item> searchItem(String criteria, int fromResult, int toResult) {\r
traceIn();\r
- SearchResult result = null;\r
+ SearchResult<Item> result = null;\r
ItemDAOEx itemDb = new ItemDAOEx(this);\r
result = itemDb.search(criteria, fromResult, toResult);\r
traceOut();\r
\r
import java.util.List;\r
\r
-public class SearchResult {\r
- \r
+public class SearchResult<T> {\r
+\r
private long itemCount;\r
- private ItemType itemType;\r
- private List<Item> items;\r
- private List<Item> folders;\r
- private RenderParameter parameters;\r
- \r
- public List<Item> getFolders() {\r
+ private ItemType itemType;\r
+ private List<T> items;\r
+ private List<T> folders;\r
+ private RenderParameter parameters;\r
+\r
+ public List<T> getFolders() {\r
return this.folders;\r
}\r
- \r
+\r
public long getItemCount() {\r
return this.itemCount;\r
}\r
- \r
- public List<Item> getItems() {\r
+\r
+ public List<T> getItems() {\r
return this.items;\r
}\r
- \r
+\r
public ItemType getItemType() {\r
return this.itemType;\r
}\r
return this.parameters;\r
}\r
\r
- public void setFolders(List<Item> folders) {\r
+ public void setFolders(List<T> folders) {\r
this.folders = folders;\r
}\r
\r
this.itemCount = itemCount;\r
}\r
\r
- public void setItems(List<Item> items) {\r
+ public void setItems(List<T> items) {\r
this.items = items;\r
}\r
\r
System.out.println("Item created: " + i);\r
}\r
\r
- SearchResult search = manager.searchItem("elem", 0, 9);\r
+ SearchResult<Item> search = manager.searchItem("elem", 0, 9);\r
assertEquals(10, search.getItemCount());\r
\r
for (Item item : search.getItems()) {\r
\r
@Test\r
public void testSearch() {\r
- SearchResult search = manager.searchItem("elem", 10, 20);\r
+ SearchResult<Item> search = manager.searchItem("elem", 10, 20);\r
assertEquals(1000, search.getItemCount());\r
assertEquals(10, search.getItems().size());\r
\r
</div>\r
</north>\r
<center border="0">\r
- <include style="background: #e3e3e3;" id="includeContent" src="/pages/search_items.zul" />\r
+ <include style="background: #e3e3e3;" id="includeContent" src="/pages/searchitems.zul" />\r
</center>\r
</borderlayout>\r
</window>\r
<menubar id="menubar" hflex="max" sclass="redmenubar">\r
<menu sclass="whitemenu" label="Archívum" >\r
<menupopup>\r
- <menuitem sclass="rozsda" label="Keresés" onClick='includeContent.src="/pages/search_items.zul"' disabled="false" />\r
+ <menuitem sclass="rozsda" label="Keresés" onClick='includeContent.src="/pages/searchitems.zul"' disabled="false" />\r
<menuitem sclass="rozsda" label="Folyamatok" onClick='includeContent.src="/pages/joblist.zul"' disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
<menuitem sclass="rozsda" label="Hiányzó anyagok" onClick='includeContent.src="/pages/missingmaterials.zul"' disabled="${not sessionScope.userPrincipal.jobSubmitter or sessionScope.userPrincipal.anonymous}" />\r
<!-- <menuitem sclass="rozsda" label="Test" onClick='includeContent.src="/pages/database.zul"' disabled="${not sessionScope.userPrincipal.jobSubmitter or sessionScope.userPrincipal.anonymous}" /> -->\r
<?xml version="1.0" encoding="UTF-8"?>\r
<zk xmlns="http://www.zkoss.org/2005/zul">\r
- <vlayout hflex="1" vflex="1" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.NewsHistoryModel')">\r
- <hbox height="40px" align="center">\r
- <space bar="false" />\r
- <datebox value="@bind(vm.selectedDate)" width="150px" format="yyyy.MM.dd" mold="rounded" weekOfYear="true" showTodayLink="true" lenient="false" compact="false" buttonVisible="true"\r
- constraint="no empty, no future: now or never" />\r
- </hbox>\r
-<!-- <hlayout hflex="1" vflex="1"> -->\r
- <tabbox hflex="1" vflex="1">\r
- <tabs>\r
- <tab label="Grafikonok" closable="false" />\r
- <tab label="Adatok" closable="false" />\r
- </tabs>\r
- <tabpanels>\r
- <tabpanel>\r
- <grid>\r
- <rows sclass="narrow">\r
- <row>\r
- <div width="100%" onAfterSize='typeChartCount.setWidth(new Integer(event.getWidth()))'>\r
- <charts id="typeChartCount" type="pie" />\r
- </div>\r
- <div width="100%" onAfterSize='typeChartSumDuration.setWidth(new Integer(event.getWidth()))'>\r
- <charts id="typeChartSumDuration" type="pie" />\r
- </div>\r
- <div width="100%" onAfterSize='planChart.setWidth(new Integer(event.getWidth()))'>\r
- <charts id="planChart" type="column" />\r
- </div>\r
- </row>\r
- </rows>\r
- </grid>\r
- </tabpanel>\r
- <tabpanel>\r
- <grid model="@load(vm.dataList)" mold="paging" autopaging="true" sizedByContent="false" vflex="true" hflex="true" emptyMessage="Nincs adat!">\r
- <auxhead>\r
- <auxheader colspan="11" align="right">\r
- <a href="javascript:void(0);" label="letöltés" onClick="@command('downloadRawData')" disabled="@load(vm.downloadDisabled)" />\r
- \r
- </auxheader>\r
- </auxhead> \r
- <!-- <auxhead sclass="category-center"> -->\r
- <!-- <auxheader colspan="1"> -->\r
- <!-- <textbox instant="true" width="100px" value="@bind(vm.filter.category)" onChange="@command('changeFilter')" /> -->\r
- <!-- </auxheader> -->\r
- <!-- </auxhead> -->\r
- <columns sizable="true">\r
- <column forEach="${vm.columnList}" label="${each}" sort="auto"></column>\r
- </columns>\r
- <rows>\r
- <template name="model" var="r">\r
+ <script>\r
+\r
+ function frameToTC(value) {\r
+ console.log('frameToTC ' + value)\r
+ var reminder = value;\r
+ var hour = Math.floor(reminder / (60 * 60 * 25));\r
+ reminder = reminder % (60 * 60 * 25);\r
+ var minute = Math.floor(reminder / (60 * 25));\r
+ reminder = reminder % (60 * 25);\r
+ var sec = Math.floor(reminder / 25);\r
+ reminder = reminder % 25;\r
+ var frame = Math.floor(reminder);\r
+ hour = ("" + hour).length == 1 ? '0' + hour : hour;\r
+ minute = ("" + minute).length == 1 ? '0' + minute : minute;\r
+ sec = ("" + sec).length == 1 ? '0' + sec : sec;\r
+ frame = ("" + frame).length == 1 ? '0' + frame : frame;\r
+ return hour + ':' + minute + ':' + sec + ':' + frame;\r
+ }\r
+ </script>\r
+<!-- <borderlayout hflex="1" vflex="1"> -->\r
+<!-- <center border="none" flex="true"> -->\r
+\r
+ <vlayout hflex="1" vflex="1" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.NewsHistoryModel')">\r
+ <hbox height="40px" align="center">\r
+ <space bar="false" />\r
+ <datebox value="@bind(vm.selectedDate)" width="150px" format="yyyy.MM.dd" mold="rounded" weekOfYear="true" showTodayLink="true"\r
+ lenient="false" compact="false" buttonVisible="true" constraint="no empty, no future: now or never" />\r
+ </hbox>\r
+ <tabbox hflex="1" vflex="1">\r
+ <tabs>\r
+ <tab label="Grafikonok" closable="false" />\r
+ <tab label="Adatok" closable="false" />\r
+ </tabs>\r
+ <tabpanels>\r
+ <tabpanel>\r
+ <grid>\r
+ <rows sclass="narrow">\r
<row>\r
- <label forEach="${vm.columnList}" value="${r.get(each)}"></label>\r
+ <div width="100%" onAfterSize='typeChartCount.setWidth(new Integer(event.getWidth()))'>\r
+ <charts id="typeChartCount" type="pie" />\r
+ </div>\r
+ <div width="100%" onAfterSize='typeChartSumDuration.setWidth(new Integer(event.getWidth()))'>\r
+ <charts id="typeChartSumDuration" type="pie" />\r
+ </div>\r
+ <div width="100%" onAfterSize='planChart.setWidth(new Integer(event.getWidth()))'>\r
+ <charts id="planChart" type="column" />\r
+ </div>\r
</row>\r
- </template>\r
- </rows>\r
- </grid>\r
- </tabpanel>\r
- </tabpanels>\r
- </tabbox>\r
-<!-- </hlayout> -->\r
- </vlayout>\r
+ </rows>\r
+ </grid>\r
+ </tabpanel>\r
+ <tabpanel>\r
+ <grid model="@load(vm.dataList)" mold="paging" autopaging="true" sizedByContent="true" vflex="true" hflex="true"\r
+ emptyMessage="Nincs adat!">\r
+ <auxhead>\r
+ <auxheader colspan="13" align="right">\r
+ <a href="javascript:void(0);" label="letöltés" onClick="@command('downloadRawData')"\r
+ disabled="@load(vm.downloadDisabled)" />\r
+\r
+ </auxheader>\r
+ </auxhead>\r
+ <!-- <auxhead sclass="category-center"> -->\r
+ <!-- <auxheader colspan="1"> -->\r
+ <!-- <textbox instant="true" width="100px" value="@bind(vm.filter.category)" onChange="@command('changeFilter')" /> -->\r
+ <!-- </auxheader> -->\r
+ <!-- </auxhead> -->\r
+ <columns sizable="true">\r
+ <column forEach="${vm.columnList}" label="${each}" sort="auto"></column>\r
+ </columns>\r
+ <rows>\r
+ <template name="model" var="r">\r
+ <row>\r
+ <label forEach="${vm.columnList}" value="${r.get(each)}"></label>\r
+ </row>\r
+ </template>\r
+ </rows>\r
+ </grid>\r
+ </tabpanel>\r
+ </tabpanels>\r
+ </tabbox>\r
+ </vlayout>\r
+\r
+<!-- </center> -->\r
+<!-- <east title="Folyamatok" size="30%" flex="true" splittable="true" collapsible="true" open="false"> -->\r
+<!-- <include src="/pages/joblist.zul" /> -->\r
+<!-- </east> -->\r
+<!-- </borderlayout> -->\r
+\r
</zk>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
-<?script type="text/javascript" src="/js/videojs-ie8.min.js"?>\r
-<?script type="text/javascript" src="/js/video.js"?>\r
-<?init class="user.jobengine.zk.util.AuthInitiator"?>\r
-<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
- <!-- csak igy jo a list sebessege -->\r
- <custom-attributes org.zkoss.zul.listbox.rod="true" />\r
- <custom-attributes org.zkoss.zul.listbox.initRodSize="50" />\r
- <custom-attributes org.zkoss.zul.listbox.preloadSize="50" />\r
-\r
- <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('svm') @init('user.jobengine.zk.model.SearchModel')">\r
-\r
-\r
- <borderlayout>\r
- <west border="none" size="50%" splittable="true" minsize="250">\r
- <div height="100%" width="100%">\r
- <groupbox vflex="min" closable="false">\r
- <textbox style="border:none" instant="true" value="@bind(svm.searchValue)" width="100%"\r
- tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
- </groupbox>\r
-\r
- <groupbox vflex="true" closable="false">\r
- <caption sclass="boldfont" label="Gyűjtők" />\r
- <listbox id="itemResults" sizedByContent="false" span="true" model="@load(svm.searchResult)" multiple="false" autopaging="true"\r
- mold="paging" vflex="true" selectedItem="@bind(svm.selectedItem)" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style"\r
- sclass="listbox-normal-style">\r
- <listhead sizable="true">\r
- <listheader label="ID" hflex="1" align="left" />\r
- <listheader label="Cím" hflex="6" align="left" />\r
- </listhead>\r
- <template name="model">\r
- <listitem>\r
- <listcell label="@load(each.houseId)" />\r
- <listcell label="@load(each.title)" />\r
- </listitem>\r
- </template>\r
- </listbox>\r
- </groupbox>\r
-\r
- <groupbox vflex="true" closable="false">\r
- <caption sclass="boldfont" label="Anyagok" />\r
-\r
- <listbox id="mediaList" sizedByContent="false" span="true" onSelect="@command('onSelectMedia', media=event.reference.value)"\r
- model="@load(svm.selectedItem.medias)" multiple="false" vflex="true" selectedItem="@bind(svm.selectedMedia)"\r
- style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
- <listhead sizable="true">\r
- <listheader label="ID" hflex="1" align="left" />\r
- <listheader label="Cím" hflex="6" align="left" />\r
- <listheader label="Fájlnév" hflex="6" align="left" />\r
- <listheader label="Kópiák" hflex="1" align="left" />\r
- </listhead>\r
- <template name="model">\r
- <listitem>\r
- <listcell label="@load(each.houseId)" />\r
- <listcell label="@load(each.title)" />\r
- <listcell label="@load(each.mediaFilesName)" />\r
- <listcell label="@load(each.mediaFilesCount)" />\r
- </listitem>\r
- </template>\r
- </listbox>\r
- </groupbox>\r
-\r
- </div>\r
- </west>\r
- <!-- media player -->\r
- <center border="none">\r
-\r
- <borderlayout height="100%" width="100%">\r
-\r
- <north border="none" size="60%" splittable="true" minsize="250" collapsible="true">\r
- <div align="center" height="100%" width="100%">\r
-<!-- <html> -->\r
-<!-- <![CDATA[ -->\r
-<!-- <link href="/css/video-js.css" rel="stylesheet"> -->\r
-<!-- <video id="myVideoDiv" width="100%" height="100%" class="video-js" controls preload="auto" data-setup="{}"> -->\r
-<!-- <source src="@load(svm.lowresMediaFilePath)" type='video/mp4'> -->\r
-<!-- </video> -->\r
-<!-- <script> var player = videojs('myVideoDiv'); </script> -->\r
-<!-- ]]> -->\r
-<!-- </html> -->\r
- <iframe id="mediaPlayer" height="100%" width="100%" autohide="false" src="@load(svm.lowresMediaFilePath)"></iframe>\r
- </div>\r
- </north>\r
- <center border="none">\r
-\r
- <groupbox closable="false" mold="3d" width="100%" height="100%" >\r
- <caption>\r
- <button label="Visszatöltés" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not svm.hasTSMMediaFile)"\r
- sclass="buttonboldfont" />\r
- </caption>\r
- <div width="100%" height="100%" style="padding: 4px; overflow:auto; background-color: white">\r
- <div>\r
- <label style="font-size:8pt; color: gray" value="Anyag azonosító" />\r
- <div style="margin: 4px">\r
- <label value="@load(svm.selectedItem.houseId)" />\r
- </div>\r
- <space bar="false" />\r
- </div>\r
- <div>\r
- <label style="font-size:8pt; color: gray" value="Anyag címe" />\r
- <div style="margin: 4px">\r
- <label value="@load(svm.selectedItem.title)" />\r
- </div>\r
- <space bar="false" />\r
- </div>\r
- <div>\r
- <label style="font-size:8pt; color: gray" value="Anyag leírása" />\r
- <div style="margin: 4px">\r
- <label value="@load(svm.selectedItem.description)" />\r
- </div>\r
- <space bar="false" />\r
- </div>\r
- <div>\r
- <label style="font-size:8pt; color: gray" value="Média azonosító" />\r
- <div style="margin: 4px">\r
- <label value="@load(svm.selectedMedia.houseId)" />\r
- </div>\r
- <space bar="false" />\r
- </div>\r
- <div>\r
- <label style="font-size:8pt; color: gray" value="Média címe" />\r
- <div style="margin: 4px">\r
- <label value="@load(svm.selectedMedia.title)" />\r
- </div>\r
- <space bar="false" />\r
- </div>\r
- <div>\r
- <label style="font-size:8pt; color: gray" value="Média leírása" />\r
- <div style="margin: 4px">\r
- <label multiline="true" value="@load(svm.selectedMedia.description)" />\r
- </div>\r
- </div>\r
- </div>\r
- </groupbox>\r
- </center>\r
- </borderlayout>\r
-\r
- </center>\r
- </borderlayout>\r
-\r
-\r
- </div>\r
-</zk>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
+<?script type="text/javascript" src="/js/videojs-ie8.min.js"?>\r
+<?script type="text/javascript" src="/js/video.js"?>\r
+<?init class="user.jobengine.zk.util.AuthInitiator"?>\r
+<zk xmlns:w="http://www.zkoss.org/2005/zk/client">\r
+ <!-- csak igy jo a list sebessege -->\r
+ <custom-attributes org.zkoss.zul.listbox.rod="true" />\r
+ <custom-attributes org.zkoss.zul.listbox.initRodSize="50" />\r
+ <custom-attributes org.zkoss.zul.listbox.preloadSize="50" />\r
+\r
+ <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
+\r
+\r
+ <borderlayout>\r
+ <west border="none" size="50%" splittable="true" minsize="250">\r
+ <div height="100%" width="100%">\r
+ <groupbox vflex="min" closable="false">\r
+\r
+ <textbox style="border:none" instant="true" value="@bind(vm.searchValue)" width="100%"\r
+ tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
+ <toolbar>\r
+ <checkbox checked="@bind(vm.allFeedChecked)" />\r
+ <toolbarbutton label="Hír bejátszó" mode="toggle" checked="@bind(vm.newsFeedChecked)" />\r
+ <toolbarbutton label="Hír nyersanyag" mode="toggle" checked="@bind(vm.newsRawChecked)" />\r
+ <toolbarbutton label="Műsor" mode="toggle" checked="@bind(vm.materialChecked)" />\r
+ <toolbarbutton label="Promo" mode="toggle" checked="@bind(vm.promoChecked)" />\r
+ <toolbarbutton label="Reklám" mode="toggle" checked="@bind(vm.adChecked)" />\r
+ <toolbarbutton label="Visszarögzített" mode="toggle" checked="@bind(vm.recordingChecked) "/>\r
+ <toolbarbutton label="Egyéb" mode="toggle" checked="@bind(vm.otherChecked)" />\r
+ </toolbar>\r
+ </groupbox>\r
+ <!-- <grid> -->\r
+ <!-- <columns> -->\r
+ <!-- <column width="40px" /> -->\r
+ <!-- <column hflex="1" label="Name" sort="auto" /> -->\r
+ <!-- <column width="150px" label="Price" sort="auto" align="center" /> -->\r
+ <!-- <column width="150px" label="Rating" sort="auto" align="center" /> -->\r
+ <!-- </columns> -->\r
+ <!-- <rows> -->\r
+ <!-- <template name="model"> -->\r
+ <!-- <row> -->\r
+ <!-- <detail open="true"> -->\r
+ <!-- <hlayout> -->\r
+ <!-- <image sclass="myimg" width="140px" height="90px" src="/widgets/grid/master_detail/img/${img}" /> -->\r
+ <!-- <div sclass="details"> -->\r
+ <!-- <div> -->\r
+ <!-- <label value="Facilities:" /> -->\r
+ <!-- <label value="${facilities}" sclass="heavy" /> -->\r
+ <!-- </div> -->\r
+ <!-- <div> -->\r
+ <!-- <label value="Room Type:" /> -->\r
+ <!-- <label value="${roomType}" sclass="heavy" /> -->\r
+ <!-- </div> -->\r
+ <!-- <div> -->\r
+ <!-- <label value="Included:" /> -->\r
+ <!-- <label value="${included}" sclass="heavy" /> -->\r
+ <!-- </div> -->\r
+ <!-- <div> -->\r
+ <!-- <label value="Nearby:" /> -->\r
+ <!-- <label value="${nearby}" sclass="heavy" /> -->\r
+ <!-- </div> -->\r
+ <!-- <div> -->\r
+ <!-- <label value="PaymentOptions:" /> -->\r
+ <!-- <label value="${paymentOptions}" sclass="heavy" /> -->\r
+ <!-- </div> -->\r
+ <!-- </div> -->\r
+ <!-- </hlayout> -->\r
+ <!-- </detail> -->\r
+ <!-- <label value="${name}" /> -->\r
+ <!-- <label value="${price}" sclass="price" /> -->\r
+ <!-- <label value="${rating}" sclass="rating" /> -->\r
+ <!-- </row> -->\r
+ <!-- </template> -->\r
+ <!-- </rows> -->\r
+ <!-- </grid> -->\r
+\r
+ <groupbox vflex="true" closable="false">\r
+ <listbox id="itemResults" sizedByContent="false" span="true" model="@load(vm.searchResult)" activePage="@bind(vm.activePage)" mold="paging" multiple="false" autopaging="true"\r
+ vflex="true" selectedItem="@bind(vm.selectedItem)" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style"\r
+ sclass="listbox-normal-style">\r
+ <listhead sizable="true">\r
+ <listheader label="ID" hflex="1" align="left" />\r
+ <listheader label="Cím" hflex="6" align="left" />\r
+ </listhead>\r
+ <template name="model">\r
+ <listitem>\r
+ <listcell label="@load(each.media.houseId)" />\r
+ <listcell label="@load(each.media.title)" />\r
+ </listitem>\r
+ </template>\r
+ </listbox>\r
+ </groupbox>\r
+ </div>\r
+ </west>\r
+ <!-- media player -->\r
+ <center border="none">\r
+\r
+ <borderlayout height="100%" width="100%">\r
+\r
+ <north border="none" size="60%" splittable="true" minsize="250" collapsible="true">\r
+ <div align="center" height="100%" width="100%">\r
+ <!-- <html> -->\r
+ <!-- <![CDATA[ -->\r
+ <!-- <link href="/css/video-js.css" rel="stylesheet"> -->\r
+ <!-- <video id="myVideoDiv" width="100%" height="100%" class="video-js" controls preload="auto" data-setup="{}"> -->\r
+ <!-- <source src="@load(vm.lowresMediaFilePath)" type='video/mp4'> -->\r
+ <!-- </video> -->\r
+ <!-- <script> var player = videojs('myVideoDiv'); </script> -->\r
+ <!-- ]]> -->\r
+ <!-- </html> -->\r
+ <iframe id="mediaPlayer" height="100%" width="100%" autohide="false" src="@load(vm.lowresMediaFilePath)"></iframe>\r
+ </div>\r
+ </north>\r
+ <center border="none">\r
+\r
+ <groupbox closable="false" mold="3d" width="100%" height="100%">\r
+ <caption>\r
+ <button label="Visszatöltés" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)"\r
+ sclass="buttonboldfont" />\r
+ </caption>\r
+ <div width="100%" height="100%" style="padding: 4px; overflow:auto; background-color: white">\r
+ <div>\r
+ <label style="font-size:8pt; color: gray" value="Anyag azonosító" />\r
+ <div style="margin: 4px">\r
+ <label value="@load(vm.selectedItem.item)" />\r
+ </div>\r
+ <space bar="false" />\r
+ </div>\r
+ <div>\r
+ <label style="font-size:8pt; color: gray" value="Anyag címe" />\r
+ <div style="margin: 4px">\r
+ <label value="@load(vm.selectedItem.item.title)" />\r
+ </div>\r
+ <space bar="false" />\r
+ </div>\r
+ <div>\r
+ <label style="font-size:8pt; color: gray" value="Anyag leírása" />\r
+ <div style="margin: 4px">\r
+ <label value="@load(vm.selectedItem.item.description)" />\r
+ </div>\r
+ <space bar="false" />\r
+ </div>\r
+ <div>\r
+ <label style="font-size:8pt; color: gray" value="Média azonosító" />\r
+ <div style="margin: 4px">\r
+ <label value="@load(vm.selectedItem.media.houseId)" />\r
+ </div>\r
+ <space bar="false" />\r
+ </div>\r
+ <div>\r
+ <label style="font-size:8pt; color: gray" value="Média címe" />\r
+ <div style="margin: 4px">\r
+ <label value="@load(vm.selectedItem.media.title)" />\r
+ </div>\r
+ <space bar="false" />\r
+ </div>\r
+ <div>\r
+ <label style="font-size:8pt; color: gray" value="Média leírása" />\r
+ <div style="margin: 4px">\r
+ <label multiline="true" value="@load(vm.selectedItem.getMedia().description)" />\r
+ </div>\r
+ </div>\r
+ </div>\r
+ </groupbox>\r
+ </center>\r
+ </borderlayout>\r
+\r
+ </center>\r
+ </borderlayout>\r
+\r
+\r
+ </div>\r
+</zk>
\ No newline at end of file
-version=2.2.3\r
+version=2.3.1\r
footer=2016 © Copyright User Rendszerház Kft.\r
\r
login_info=Információ\r
package user.jobengine.zk.model;\r
\r
-import java.sql.Timestamp;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.List;\r
import org.zkoss.zul.ListModelList;\r
import org.zkoss.zul.event.ListDataEvent;\r
\r
+import user.jobengine.db.ArchivedMedia;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.Item;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.ItemManager;\r
import user.jobengine.db.SearchResult;\r
-import user.jobengine.server.JobEngine;\r
\r
/**\r
* Cachelt modell nagy listakhoz. Cacheli a dokumentumokat a megadott meretben. Az utoljara elkert index +- cacheSize/2\r
*/\r
-public class CachedListModel extends ListModelList<Item> {\r
+public class CachedListModel extends ListModelList<ArchivedMedia> {\r
private static final Logger logger = LogManager.getLogger();\r
- private int cacheSize = 500;\r
- private HashMap<Integer, Item> cache = new HashMap<Integer, Item>();\r
+ private int cacheSize = 100;\r
+ private HashMap<Integer, ArchivedMedia> cache = new HashMap<Integer, ArchivedMedia>();\r
\r
private String searchValue = null;\r
private int resultSetSize = -1;\r
private ArrayList<EventListener> eventListenerList = new ArrayList<EventListener>();\r
private IItemManager itemManager = null;\r
\r
- //KONSTRUKTOR\r
public CachedListModel(String _searchValue) {\r
this.searchValue = _searchValue;\r
- this.itemManager = JobEngine.getStaticItemManager();\r
- //sajat selection modellt hasznalunk\r
+ this.itemManager = ItemManager.getInstance();\r
//this.setMultiple(true);\r
reinit();\r
}\r
}\r
\r
public void clearCache() {\r
- cache.clear();\r
cache.clear();\r
docSelection.clear();\r
}\r
}\r
\r
@Override\r
- public Item getElementAt(int index) {\r
+ public ArchivedMedia getElementAt(int index) {\r
//logger.debug("CachedListMode.getElementAt(): " + index);\r
- Item ret = cache.get(index);\r
+ ArchivedMedia ret = cache.get(index);\r
if (ret == null) {\r
loadCache(index);\r
ret = cache.get(index);\r
return ret;\r
}\r
\r
+ public IItemManager getItemManager() {\r
+ return itemManager;\r
+ }\r
+\r
//ListModelList method felulirva\r
//after 1. search ++++++++++\r
@Override\r
int endPos = (startPos + rowLimit);\r
endPos = ((this.resultSetSize < 0) || (endPos <= this.resultSetSize)) ? endPos : this.resultSetSize;\r
\r
- //DO SEARCH for startPos, endPos\r
- //SearchResult sr = loadFakeItems(startPos, endPos);\r
- SearchResult sr = this.itemManager.searchItem(searchValue + "*", startPos, endPos);\r
+ SearchResult<ArchivedMedia> sr = this.itemManager.search(searchValue + "*", startPos, endPos);\r
\r
if (sr != null) {\r
if (this.resultSetSize < 0) {\r
this.resultSetSize = (int) sr.getItemCount();\r
}\r
\r
- List<Item> resList = sr.getItems();\r
+ List<ArchivedMedia> resList = sr.getItems();\r
if (resList != null) {\r
for (int c = 0; c < resList.size(); c++) {\r
cache.put(startPos + c, resList.get(c));\r
}\r
}\r
\r
- //TEST CODE\r
- private SearchResult loadFakeItems(int start, int end) {\r
- SearchResult sr = new SearchResult();\r
- sr.setItemCount(15000);\r
- List<Item> itemList = new ArrayList<Item>();\r
-\r
- for (int c = start; c < end; c++) {\r
- Item i = new Item();\r
- i.setId(c);\r
- i.setDescription("ItemDesc " + c);\r
- i.setTitle("ItemTitle " + c);\r
- i.setCreated(new Timestamp(System.currentTimeMillis()));\r
- i.setModified(new Timestamp(System.currentTimeMillis()));\r
-\r
- //mediaList\r
- List<Media> mediaList = new ArrayList<Media>();\r
- for (int m = 0; m < 3; m++) {\r
- Media med = new Media();\r
- med.setId(Integer.parseInt(c + 1 + "" + m + 1));\r
- med.setTitle("MediaTitle " + m);\r
- med.setDescription("MediaDesc " + m);\r
- mediaList.add(med);\r
- //video test\r
- MediaFile mediaFile = new MediaFile();\r
- if (m % 2 == 0) {\r
- mediaFile.setRelativePath("/zk/media_oceans.mp4");\r
- } else {\r
- mediaFile.setRelativePath("/zk/media_ed_hd.mp4");\r
- }\r
- List<MediaFile> mediaFiles = new ArrayList<MediaFile>();\r
- mediaFiles.add(mediaFile);\r
- med.setMediaFiles(mediaFiles);\r
-\r
- }\r
- i.setMedias(mediaList);\r
- itemList.add(i);\r
- }\r
-\r
- sr.setItems(itemList);\r
- return sr;\r
- }\r
-\r
//kintrol is hivhatjak\r
public void reinit() {\r
this.resultSetSize = -1;\r
private static final Logger logger = LogManager.getLogger();\r
private static final String TARGETPATH = "targetPath";\r
private static final String IMPORT_DISABLED = "importDisabled";\r
- private static final String TEMPLATE = "template";\r
private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml";\r
private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml";\r
private ListModelList<BasicDBObject> jobList = new ListModelList<BasicDBObject>();\r
List<BasicDBObject> jobs = NoSQLUtils.asList(scheduler.getScheduleJobs());\r
BasicDBObject importJob = null;\r
for (BasicDBObject job : jobs) {\r
- if (isImportJob(job.getString(TEMPLATE))) {\r
+ if (isImportJob(job.getString(IMPORT_TEMPLATE))) {\r
importJob = job;\r
//logger.info(job.toString());\r
break;\r
import org.zkoss.chart.Charts;\r
import org.zkoss.chart.Point;\r
import org.zkoss.chart.Series;\r
+import org.zkoss.chart.Tooltip;\r
import org.zkoss.chart.YAxis;\r
+import org.zkoss.json.JavaScriptValue;\r
\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
\r
private static void init(Charts charts) {\r
charts.getChart().setPlotBorderWidth(0);\r
- charts.getChart().setPlotShadow(false);\r
+ charts.getChart().setPlotShadow(true);\r
charts.getPlotOptions().getSeries().setAnimation(false);\r
charts.getPlotOptions().getSeries().setAllowPointSelect(false);\r
charts.getPlotOptions().getSeries().setEnableMouseTracking(false);\r
\r
public static void initMultiAxis(Charts charts, BasicDBObject planStat) {\r
init(charts);\r
+ charts.getPlotOptions().getSeries().setEnableMouseTracking(true);\r
+\r
+ charts.setTitle("Bejátszók felhasználtsága");\r
+ Tooltip tooltip = charts.getTooltip();\r
+ tooltip.setShared(true);\r
+ tooltip.setUseHTML(true);\r
+ tooltip.setEnabled(true);\r
+ tooltip.addExtraAttr("formatter", new JavaScriptValue("function () { return this.points[0].point.y + 'db / ' + frameToTC(this.points[1].point.y); }"));\r
+\r
charts.getXAxis().setCategories("Összes", "Betöltve", "Adásban", "Kihagyva", "Archivált");\r
- YAxis yAxis1 = charts.getYAxis();\r
- yAxis1.getLabels().setFormat("{value} db");\r
- yAxis1.getLabels().setStyle("color: " + charts.getColors().get(1).stringValue());\r
+\r
+ YAxis yAxis1 = charts.getYAxis(0);\r
yAxis1.setTitle("Darab");\r
- yAxis1.getTitle().setStyle("color: " + charts.getColors().get(1).stringValue());\r
+ yAxis1.getLabels().setFormat("{value}");\r
+ yAxis1.getLabels().setStyle("color: " + charts.getColors().get(0).stringValue());\r
+ yAxis1.getTitle().setStyle("color: " + charts.getColors().get(0).stringValue());\r
\r
- // Secondary y axis\r
YAxis yAxis2 = charts.getYAxis(1);\r
yAxis2.setTitle("Hossz");\r
- yAxis2.getTitle().setStyle("color: " + charts.getColors().get(0).stringValue());\r
- yAxis2.getLabels().setFormat("{value} kocka");\r
- yAxis2.getLabels().setStyle("color: " + charts.getColors().get(0).stringValue());\r
+ yAxis2.getTitle().setStyle("color: " + charts.getColors().get(1).stringValue());\r
+ yAxis2.getLabels().setFormat("{value}");\r
+ yAxis2.getLabels().setStyle("color: " + charts.getColors().get(1).stringValue());\r
yAxis2.setOpposite(true);\r
+ yAxis2.getLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return frameToTC(this.value); }"));\r
\r
Series s1 = charts.getSeries(0);\r
s1.setName("Darab");\r
- s1.setType("column");\r
- s1.setYAxis(1);\r
- s1.setData(new Double[] { 49.9, 71.5, 106.4, 129.2, 144.0 });\r
- charts.getPlotOptions().getColumn().getTooltip().setValueSuffix(" db");\r
+ s1.setYAxis(0);\r
+ s1.setData(new Long[] { NoSQLUtils.asLong(planStat, "all_count"), NoSQLUtils.asLong(planStat, "ingest_count"),\r
+ NoSQLUtils.asLong(planStat, "onair_count"), NoSQLUtils.asLong(planStat, "skip_count"), NoSQLUtils.asLong(planStat, "archive_count") });\r
+ // TooltipPlotOptions tooltipOptions = charts.getPlotOptions().getColumn().getTooltip();\r
+ // tooltipOptions.setValueSuffix(" db");\r
+ // tooltip.addExtraAttr("formatter", new JavaScriptValue("function () { return statistics(this.point); }"));\r
\r
Series s2 = charts.getSeries(1);\r
s2.setName("Hossz");\r
- s2.setType("column");\r
- s2.setData(new Double[] { 7.0, 6.9, 9.5, 14.5, 18.2 });\r
- charts.getPlotOptions().getSpline().getTooltip().setValueSuffix(" képkocka");\r
+ s2.setYAxis(1);\r
+ s2.setData(new Long[] { NoSQLUtils.asLong(planStat, "all_duration"), NoSQLUtils.asLong(planStat, "ingest_duration"),\r
+ NoSQLUtils.asLong(planStat, "onair_duration"), NoSQLUtils.asLong(planStat, "skip_duration"), NoSQLUtils.asLong(planStat, "archive_duration") });\r
+ s2.getDataLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return frameToTC(this.y); }"));\r
+\r
}\r
\r
static public void initTypeCount(Charts charts, BasicDBObject datas) {\r
static public void initTypeDuration(Charts charts, BasicDBObject datas) {\r
init(charts);\r
charts.setTitle("Adásbejátszók hossza típus szerint");\r
- charts.getSeries().getDataLabels().setFormat("{point.name} {point.y} képkocka");\r
+ charts.getSeries().getDataLabels().addExtraAttr("formatter", new JavaScriptValue("function () { return this.point.name + ' ' + frameToTC(this.y); }"));\r
fill(charts, datas, "duration");\r
}\r
\r
private static final Logger logger = LogManager.getLogger();\r
private List<BasicDBObject> dataList;\r
private List<String> columnList = Arrays.asList(IOctopusAPI.ID, IOctopusAPI.NAME, IOctopusAPI.PARENT_STORY_ID, IOctopusAPI.REPORTERS, IOctopusAPI.OBJ_ID,\r
- IOctopusAPI.LABEL, "duration", IOctopusAPI.REF_RUNDOWN, IOctopusAPI.REF_STORYFOLDER, "ingest_count", "ingest_duration");\r
+ IOctopusAPI.LABEL, "duration", IOctopusAPI.REF_RUNDOWN, IOctopusAPI.REF_STORYFOLDER, "ingest_count", "ingest_duration", "archive_count",\r
+ "archive_duration");\r
private DB db = null;\r
private DBCollection collection;\r
private Date selectedDate;\r
\r
int axisSize = charts.getyAxisSize();\r
for (int i = 0; i < axisSize; i++) {\r
- charts.getYAxis(i).remove();\r
+ charts.getYAxis(0).remove();\r
}\r
\r
charts.setTitle("");\r
import org.apache.commons.lang.StringUtils;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
-import org.zkoss.bind.Converter;\r
-import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
import org.zkoss.bind.annotation.NotifyChange;\r
import org.zkoss.zk.ui.Executions;\r
\r
import user.commons.StoreUri;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Item;\r
+import user.jobengine.db.ArchivedMedia;\r
+import user.jobengine.db.IItemManager;\r
import user.jobengine.db.Media;\r
import user.jobengine.db.MediaFile;\r
import user.jobengine.db.Store;\r
private static final String PAGES_MEDIAPLAYER = "/pages/mediaplayer.jsp?mediaurl=";\r
\r
private String searchValue = null;\r
- protected CachedListModel searchResult = null;\r
- private Item selectedItem = null;\r
- private Media selectedMedia = null;\r
- private Converter lfConverter = new LineFeedConverter();\r
+ private CachedListModel searchResult = null;\r
+ private ArchivedMedia selectedItem = null;\r
+ private boolean newsFeedChecked;\r
+ private boolean allFeedChecked;\r
+ private boolean newsRawChecked;\r
+ private boolean materialChecked;\r
+ private boolean promoChecked;\r
+ private boolean adChecked;\r
+ private boolean recordingChecked;\r
+ private boolean otherChecked;\r
+ private int activePage;\r
\r
@Command\r
- @NotifyChange({ "mold", "paging", "searchResult", "selectedItem", "selectedMedia", "hasLowresMediaFile" })\r
+ @NotifyChange({ "activePage", "searchResult", "selectedItem", "hasLowresMediaFile" })\r
public void doSearch() {\r
try {\r
- //do search ++++++++\r
this.selectedItem = null;\r
- this.selectedMedia = null;\r
if (StringUtils.isBlank(searchValue) || searchValue.length() < 3)\r
throw new Exception("Legalább 3 karakter megadása kötelező!");\r
searchResult = new CachedListModel(searchValue);\r
-\r
} catch (Exception e) {\r
Messagebox.show(e.getMessage());\r
logger.catching(e);\r
if (!getHasTSMMediaFile())\r
return;\r
Map<String, Object> arguments = new HashMap<String, Object>();\r
- arguments.put(MEDIACUBEMEDIA, this.selectedMedia);\r
+ arguments.put(MEDIACUBEMEDIA, this.selectedItem.getMedia());\r
Window window = (Window) Executions.createComponents(PAGES_RETRIEVESELECTOR_ZUL, null, arguments);\r
window.doModal();\r
}\r
\r
+ public int getActivePage() {\r
+ return activePage;\r
+ }\r
+\r
public boolean getHasLowresMediaFile() {\r
boolean ret = false;\r
- if (this.selectedMedia != null) {\r
- List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
+ Media media = getMedia();\r
+ if (media != null) {\r
+ List<MediaFile> mediaFiles = media.getMediaFiles();\r
if (mediaFiles != null) {\r
for (MediaFile mf : mediaFiles) {\r
if (mf.getStore().isLowres()) {\r
}\r
\r
public boolean getHasTSMMediaFile() {\r
- boolean ret = false;\r
- if (this.selectedMedia != null) {\r
- List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
- if (mediaFiles != null) {\r
- for (MediaFile mf : mediaFiles) {\r
- if (mf.getStore().isSystem()) {\r
- return true;\r
- }\r
- }\r
- }\r
- }\r
- return ret;\r
- }\r
-\r
- public Converter getLfConverter() {\r
- return lfConverter;\r
+ return selectedItem != null;\r
}\r
\r
public String getLowresMediaFilePath() throws Exception {\r
String ret = PAGES_MEDIAPLAYER;\r
- if (this.selectedMedia != null) {\r
- List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
+ Media media = getMedia();\r
+ if (media != null) {\r
+ List<MediaFile> mediaFiles = media.getMediaFiles();\r
if (mediaFiles != null) {\r
for (MediaFile mf : mediaFiles) {\r
Store store = mf.getStore();\r
URL base = new URL(sourceStoreUri.toString());\r
String relative = mf.getRelativePath().replace("\\", "/");\r
ret += new URL(base, relative).toString();\r
- // File f = new File("file://" + mf.getRelativePath().replace("\\", "/"));\r
- // ret = String.format("%s%s%s", "/pages/mediaplayer.jsp?mediaurl=", sourceStoreUri.toString(), f.getName()).toString();\r
break;\r
}\r
}\r
return ret;\r
}\r
\r
+ private Media getMedia() {\r
+ Media result = null;\r
+ if (searchResult != null && selectedItem != null) {\r
+ IItemManager manager = searchResult.getItemManager();\r
+ result = manager.getMedia(selectedItem.getMedia().getId());\r
+ }\r
+ return result;\r
+ }\r
+\r
public CachedListModel getSearchResult() {\r
return searchResult;\r
}\r
return searchValue;\r
}\r
\r
- public Item getSelectedItem() {\r
+ public ArchivedMedia getSelectedItem() {\r
return selectedItem;\r
}\r
\r
- public Media getSelectedMedia() {\r
- return selectedMedia;\r
- }\r
-\r
- //islowres player protocol + address + relativepath\r
- //issystem TSM\r
-\r
- /*\r
- public String getMediaFilePath(){\r
- String ret = "";\r
- if(this.selectedMedia != null){\r
- List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
- for(MediaFile mf : mediaFiles){\r
- //if(!mf.isArchived() ???){ ++++++++++++++++++++\r
- ret = "/pages/mediaplayer.jsp?mediaurl=" + mf.getRelativePath();\r
- //ret = mf.getRelativePath();\r
- //}\r
- }\r
- }\r
- return ret;\r
- }\r
- \r
- public boolean getHasSelectedMediaFile(){\r
- String mediaFilePath =getMediaFilePath();\r
- return (mediaFilePath != null && !"".equals(mediaFilePath));\r
- }\r
- */\r
-\r
public String getTSMMediaFilePath() throws Exception {\r
String ret = "";\r
- if (this.selectedMedia != null) {\r
- List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
+ Media media = getMedia();\r
+ if (media != null) {\r
+ List<MediaFile> mediaFiles = media.getMediaFiles();\r
for (MediaFile mf : mediaFiles) {\r
Store store = mf.getStore();\r
- if (mf.getStore().isSystem()) {\r
+ if (mf.getStore().isSystem())\r
ret = Paths.get(store.getStoreUris().get(0).toString(false), mf.getRelativePath()).toString();\r
- }\r
}\r
}\r
return ret;\r
}\r
\r
- @Command\r
- @NotifyChange({ "mediaFilePath", "hasSelectedMediaFile", "hasLowresMediaFile", "lowresMediaFilePath", "hasTSMMediaFile" })\r
- public void onSelectMedia(@BindingParam("media") Media m) {\r
- this.selectedMedia = m;\r
+ public boolean isAdChecked() {\r
+ return adChecked;\r
}\r
\r
- public void setSearchValue(String searchValue) {\r
- this.searchValue = searchValue;\r
+ public boolean isAllFeedChecked() {\r
+ return allFeedChecked;\r
+ }\r
+\r
+ public boolean isMaterialChecked() {\r
+ return materialChecked;\r
}\r
\r
- public void setSelectedItem(Item _selectedItem) {\r
- this.selectedItem = _selectedItem;\r
+ public boolean isNewsFeedChecked() {\r
+ return newsFeedChecked;\r
+ }\r
+\r
+ public boolean isNewsRawChecked() {\r
+ return newsRawChecked;\r
+ }\r
+\r
+ public boolean isOtherChecked() {\r
+ return otherChecked;\r
+ }\r
+\r
+ public boolean isPromoChecked() {\r
+ return promoChecked;\r
+ }\r
+\r
+ public boolean isRecordingChecked() {\r
+ return recordingChecked;\r
+ }\r
+\r
+ public void setActivePage(int activePage) {\r
+ this.activePage = activePage;\r
+ }\r
+\r
+ public void setAdChecked(boolean adChecked) {\r
+ this.adChecked = adChecked;\r
+ }\r
+\r
+ public void setAllFeedChecked(boolean allFeedChecked) {\r
+ this.allFeedChecked = allFeedChecked;\r
+ }\r
+\r
+ public void setMaterialChecked(boolean materialChecked) {\r
+ this.materialChecked = materialChecked;\r
+ }\r
+\r
+ public void setNewsFeedChecked(boolean newsFeedChecked) {\r
+ this.newsFeedChecked = newsFeedChecked;\r
+ }\r
+\r
+ public void setNewsRawChecked(boolean newsRawChecked) {\r
+ this.newsRawChecked = newsRawChecked;\r
+ }\r
+\r
+ public void setOtherChecked(boolean otherChecked) {\r
+ this.otherChecked = otherChecked;\r
+ }\r
+\r
+ public void setPromoChecked(boolean promoChecked) {\r
+ this.promoChecked = promoChecked;\r
+ }\r
+\r
+ public void setRecordingChecked(boolean recordingChecked) {\r
+ this.recordingChecked = recordingChecked;\r
+ }\r
+\r
+ public void setSearchValue(String searchValue) {\r
+ this.searchValue = searchValue;\r
}\r
\r
- public void setSelectedMedia(Media _selectedMedia) {\r
- this.selectedMedia = _selectedMedia;\r
+ @NotifyChange({ "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath", "selectedItem.item" })\r
+ public void setSelectedItem(ArchivedMedia selectedItem) {\r
+ this.selectedItem = selectedItem;\r
}\r
\r
}\r