CC-3174 : Show Content Builder
adding time filled/empty row data.
This commit is contained in:
parent
7e223aebae
commit
4f5b5d8562
4 changed files with 78 additions and 28 deletions
|
@ -68,7 +68,7 @@ class Application_Model_Scheduler {
|
||||||
*
|
*
|
||||||
* @return DateTime endDT in UTC
|
* @return DateTime endDT in UTC
|
||||||
*/
|
*/
|
||||||
private function findEndTime($p_startDT, $p_duration) {
|
public static function findEndTime($p_startDT, $p_duration) {
|
||||||
|
|
||||||
$startEpoch = $p_startDT->format("U.u");
|
$startEpoch = $p_startDT->format("U.u");
|
||||||
$durationSeconds = Application_Model_Playlist::playlistTimeToSeconds($p_duration);
|
$durationSeconds = Application_Model_Playlist::playlistTimeToSeconds($p_duration);
|
||||||
|
@ -149,7 +149,7 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
Logging::log("adding file with id: ".$file["id"]);
|
Logging::log("adding file with id: ".$file["id"]);
|
||||||
|
|
||||||
$endTimeDT = $this->findEndTime($nextStartDT, $file['cliplength']);
|
$endTimeDT = self::findEndTime($nextStartDT, $file['cliplength']);
|
||||||
|
|
||||||
//item existed previously and is being moved.
|
//item existed previously and is being moved.
|
||||||
//need to keep same id for resources if we want REST.
|
//need to keep same id for resources if we want REST.
|
||||||
|
@ -184,7 +184,7 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
Logging::log("adjusting iterm {$item->getDbId()}");
|
Logging::log("adjusting iterm {$item->getDbId()}");
|
||||||
|
|
||||||
$endTimeDT = $this->findEndTime($nextStartDT, $item->getDbClipLength());
|
$endTimeDT = self::findEndTime($nextStartDT, $item->getDbClipLength());
|
||||||
|
|
||||||
$item->setDbStarts($nextStartDT);
|
$item->setDbStarts($nextStartDT);
|
||||||
$item->setDbEnds($endTimeDT);
|
$item->setDbEnds($endTimeDT);
|
||||||
|
@ -346,7 +346,7 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
Logging::log("adjusting item #".$item->getDbId());
|
Logging::log("adjusting item #".$item->getDbId());
|
||||||
|
|
||||||
$itemEndDT = $this->findEndTime($itemStartDT, $item->getDbClipLength());
|
$itemEndDT = self::findEndTime($itemStartDT, $item->getDbClipLength());
|
||||||
|
|
||||||
$item->setDbStarts($itemStartDT);
|
$item->setDbStarts($itemStartDT);
|
||||||
$item->setDbEnds($itemEndDT);
|
$item->setDbEnds($itemEndDT);
|
||||||
|
|
|
@ -7,6 +7,8 @@ class Application_Model_ShowBuilder {
|
||||||
private $endDT;
|
private $endDT;
|
||||||
private $user;
|
private $user;
|
||||||
|
|
||||||
|
private $contentDT;
|
||||||
|
|
||||||
private $defaultRowArray = array(
|
private $defaultRowArray = array(
|
||||||
"header" => false,
|
"header" => false,
|
||||||
"footer" => false,
|
"footer" => false,
|
||||||
|
@ -15,9 +17,7 @@ class Application_Model_ShowBuilder {
|
||||||
"id" => 0,
|
"id" => 0,
|
||||||
"instance" => "",
|
"instance" => "",
|
||||||
"starts" => "",
|
"starts" => "",
|
||||||
"startsUnix" => null,
|
|
||||||
"ends" => "",
|
"ends" => "",
|
||||||
"endsUnix" => null,
|
|
||||||
"runtime" => "",
|
"runtime" => "",
|
||||||
"title" => "",
|
"title" => "",
|
||||||
"creator" => "",
|
"creator" => "",
|
||||||
|
@ -56,11 +56,45 @@ class Application_Model_ShowBuilder {
|
||||||
return $runtime;
|
return $runtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function makeFooterRow() {
|
private function formatTimeFilled($p_sec) {
|
||||||
|
|
||||||
|
$formatted = "";
|
||||||
|
$sign = ($p_sec < 0) ? "-" : "+";
|
||||||
|
|
||||||
|
$time = Application_Model_Playlist::secondsToPlaylistTime(abs($p_sec));
|
||||||
|
Logging::log("time is: ".$time);
|
||||||
|
$info = explode(":", $time);
|
||||||
|
|
||||||
|
$formatted .= $sign;
|
||||||
|
|
||||||
|
if ($info[0] > 0) {
|
||||||
|
$formatted .= " {$info[0]}h";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($info[1] > 0) {
|
||||||
|
$formatted .= " {$info[1]}m";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($info[2] > 0) {
|
||||||
|
$sec = round($info[2], 0);
|
||||||
|
$formatted .= " {$sec}s";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $formatted;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function makeFooterRow($p_item) {
|
||||||
|
|
||||||
$row = $this->defaultRowArray;
|
$row = $this->defaultRowArray;
|
||||||
$row["footer"] = true;
|
$row["footer"] = true;
|
||||||
|
|
||||||
|
$showEndDT = new DateTime($p_item["si_ends"], new DateTimeZone("UTC"));
|
||||||
|
$contentDT = $this->contentDT;
|
||||||
|
|
||||||
|
$runtime = bcsub($contentDT->format("U.u"), $showEndDT->format("U.u"), 6);
|
||||||
|
$row["runtime"] = $runtime;
|
||||||
|
$row["fRuntime"] = $this->formatTimeFilled($runtime);
|
||||||
|
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,6 +114,8 @@ class Application_Model_ShowBuilder {
|
||||||
$row["title"] = $p_item["show_name"];
|
$row["title"] = $p_item["show_name"];
|
||||||
$row["instance"] = intval($p_item["si_id"]);
|
$row["instance"] = intval($p_item["si_id"]);
|
||||||
|
|
||||||
|
$this->contentDT = $showStartDT;
|
||||||
|
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,6 +143,8 @@ class Application_Model_ShowBuilder {
|
||||||
$row["title"] = $p_item["file_track_title"];
|
$row["title"] = $p_item["file_track_title"];
|
||||||
$row["creator"] = $p_item["file_artist_name"];
|
$row["creator"] = $p_item["file_artist_name"];
|
||||||
$row["album"] = $p_item["file_album_title"];
|
$row["album"] = $p_item["file_album_title"];
|
||||||
|
|
||||||
|
$this->contentDT = $schedEndDT;
|
||||||
}
|
}
|
||||||
//show is empty
|
//show is empty
|
||||||
else {
|
else {
|
||||||
|
@ -125,14 +163,17 @@ class Application_Model_ShowBuilder {
|
||||||
|
|
||||||
$scheduled_items = Application_Model_Schedule::GetScheduleDetailItems($this->startDT->format("Y-m-d H:i:s"), $this->endDT->format("Y-m-d H:i:s"));
|
$scheduled_items = Application_Model_Schedule::GetScheduleDetailItems($this->startDT->format("Y-m-d H:i:s"), $this->endDT->format("Y-m-d H:i:s"));
|
||||||
|
|
||||||
foreach ($scheduled_items as $item) {
|
for ($i = 0, $rows = count($scheduled_items); $i < $rows; $i++) {
|
||||||
|
|
||||||
|
$item = $scheduled_items[$i];
|
||||||
|
|
||||||
//make a header row.
|
//make a header row.
|
||||||
if ($current_id !== $item["si_id"]) {
|
if ($current_id !== $item["si_id"]) {
|
||||||
|
|
||||||
//make a footer row.
|
//make a footer row.
|
||||||
if ($current_id !== -1) {
|
if ($current_id !== -1) {
|
||||||
$display_items[] = $this->makeFooterRow();
|
//pass in the previous row as it's the last row for the previous show.
|
||||||
|
$display_items[] = $this->makeFooterRow($scheduled_items[$i-1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$display_items[] = $this->makeHeaderRow($item);
|
$display_items[] = $this->makeHeaderRow($item);
|
||||||
|
@ -146,7 +187,7 @@ class Application_Model_ShowBuilder {
|
||||||
|
|
||||||
//make the last footer if there were any scheduled items.
|
//make the last footer if there were any scheduled items.
|
||||||
if (count($scheduled_items) > 0) {
|
if (count($scheduled_items) > 0) {
|
||||||
$display_items[] = $this->makeFooterRow();
|
$display_items[] = $this->makeFooterRow($scheduled_items[count($scheduled_items)-1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $display_items;
|
return $display_items;
|
||||||
|
|
|
@ -362,7 +362,7 @@ function alertShowErrorAndReload(){
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
$(window).load(function() {
|
$(document).ready(function() {
|
||||||
$.ajax({ url: "/Api/calendar-init/format/json", dataType:"json", success:createFullCalendar
|
$.ajax({ url: "/Api/calendar-init/format/json", dataType:"json", success:createFullCalendar
|
||||||
, error:function(jqXHR, textStatus, errorThrown){}});
|
, error:function(jqXHR, textStatus, errorThrown){}});
|
||||||
|
|
||||||
|
|
|
@ -129,12 +129,12 @@ $(document).ready(function() {
|
||||||
//save some info for reordering purposes.
|
//save some info for reordering purposes.
|
||||||
$(nRow).data({"aData": aData});
|
$(nRow).data({"aData": aData});
|
||||||
|
|
||||||
fnPrepareSeparatorRow = function(sRowContent, sClass) {
|
fnPrepareSeparatorRow = function(sRowContent, sClass, iNodeIndex) {
|
||||||
|
|
||||||
node = nRow.children[1];
|
node = nRow.children[iNodeIndex];
|
||||||
node.innerHTML = sRowContent;
|
node.innerHTML = sRowContent;
|
||||||
node.setAttribute('colspan',100);
|
node.setAttribute('colspan',100);
|
||||||
for (i = 2; i < nRow.children.length; i = i+1) {
|
for (i = iNodeIndex + 1; i < nRow.children.length; i = i+1) {
|
||||||
node = nRow.children[i];
|
node = nRow.children[i];
|
||||||
node.innerHTML = "";
|
node.innerHTML = "";
|
||||||
node.setAttribute("style", "display : none");
|
node.setAttribute("style", "display : none");
|
||||||
|
@ -144,19 +144,29 @@ $(document).ready(function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
if (aData.header === true) {
|
if (aData.header === true) {
|
||||||
node = nRow.children[0];
|
//node = nRow.children[0];
|
||||||
node.innerHTML = '<span class="ui-icon ui-icon-play"></span>';
|
//node.innerHTML = '<span class="ui-icon ui-icon-play"></span>';
|
||||||
|
//node.innerHTML = '<span class="ui-icon ui-icon-play"></span>';
|
||||||
|
|
||||||
sSeparatorHTML = '<span>'+aData.title+'</span><span>'+aData.starts+'</span><span>'+aData.ends+'</span>';
|
sSeparatorHTML = '<span>'+aData.title+'</span><span>'+aData.starts+'</span><span>'+aData.ends+'</span>';
|
||||||
fnPrepareSeparatorRow(sSeparatorHTML, "sb-header");
|
fnPrepareSeparatorRow(sSeparatorHTML, "sb-header", 0);
|
||||||
}
|
}
|
||||||
else if (aData.footer === true) {
|
else if (aData.footer === true) {
|
||||||
|
var c,
|
||||||
node = nRow.children[0];
|
node = nRow.children[0];
|
||||||
node.innerHTML = '<span class="ui-icon ui-icon-check"></span>';
|
|
||||||
|
|
||||||
sSeparatorHTML = '<span>Show Footer</span>';
|
//check the show's content status.
|
||||||
fnPrepareSeparatorRow(sSeparatorHTML, "sb-footer");
|
if (aData.runtime > 0) {
|
||||||
|
node.innerHTML = '<span class="ui-icon ui-icon-check"></span>';
|
||||||
|
cl = 'ui-state-highlight';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node.innerHTML = '<span class="ui-icon ui-icon-notice"></span>';
|
||||||
|
cl = 'ui-state-error';
|
||||||
|
}
|
||||||
|
|
||||||
|
sSeparatorHTML = '<span>'+aData.fRuntime+'</span>';
|
||||||
|
fnPrepareSeparatorRow(sSeparatorHTML, cl, 1);
|
||||||
}
|
}
|
||||||
else if (aData.empty === true) {
|
else if (aData.empty === true) {
|
||||||
|
|
||||||
|
@ -164,7 +174,7 @@ $(document).ready(function() {
|
||||||
node.innerHTML = '';
|
node.innerHTML = '';
|
||||||
|
|
||||||
sSeparatorHTML = '<span>Show Empty</span>';
|
sSeparatorHTML = '<span>Show Empty</span>';
|
||||||
fnPrepareSeparatorRow(sSeparatorHTML, "sb-empty odd");
|
fnPrepareSeparatorRow(sSeparatorHTML, "sb-empty odd", 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$(nRow).attr("id", "sched_"+aData.id);
|
$(nRow).attr("id", "sched_"+aData.id);
|
||||||
|
@ -272,7 +282,7 @@ $(document).ready(function() {
|
||||||
},
|
},
|
||||||
|
|
||||||
// R = ColReorderResize, C = ColVis, T = TableTools
|
// R = ColReorderResize, C = ColVis, T = TableTools
|
||||||
"sDom": 'Rr<"H"CT<"#show_builder_toolbar">>t<"F">',
|
"sDom": 'Rr<"H"CT>t<"F">',
|
||||||
|
|
||||||
"sAjaxDataProp": "schedule",
|
"sAjaxDataProp": "schedule",
|
||||||
"sAjaxSource": "/showbuilder/builder-feed"
|
"sAjaxSource": "/showbuilder/builder-feed"
|
||||||
|
@ -383,15 +393,14 @@ $(document).ready(function() {
|
||||||
update: fnUpdate,
|
update: fnUpdate,
|
||||||
start: function(event, ui) {
|
start: function(event, ui) {
|
||||||
//ui.placeholder.html("PLACE HOLDER");
|
//ui.placeholder.html("PLACE HOLDER");
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
}());
|
}());
|
||||||
|
|
||||||
tableDiv.sortable(sortableConf);
|
tableDiv.sortable(sortableConf);
|
||||||
|
|
||||||
$("#show_builder_toolbar")
|
$("#show_builder .fg-toolbar")
|
||||||
.append('<span class="ui-icon ui-icon-trash"></span>')
|
.append('<div class="ColVis TableTools"><button class="ui-button ui-state-default"><span>Delete</span></button></div>')
|
||||||
.find(".ui-icon-trash")
|
.click(fnRemoveSelectedItems);
|
||||||
.click(fnRemoveSelectedItems);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue