-datagrid now highlights current song playing

This commit is contained in:
mkonecny 2011-01-25 15:25:24 -05:00
parent 51f77dba50
commit e8d7b59127
4 changed files with 64 additions and 19 deletions

View file

@ -9,7 +9,8 @@ class Application_Model_Nowplaying
$current = Schedule::GetCurrentlyPlaying($timeNow); $current = Schedule::GetCurrentlyPlaying($timeNow);
$next = Schedule::GetNextItems($timeNow, 10); $next = Schedule::GetNextItems($timeNow, 10);
$columnHeaders = array(array("sTitle"=>"Date"), $columnHeaders = array(array("sTitle"=>"type", "bVisible"=>false),
array("sTitle"=>"Date"),
array("sTitle"=>"Start"), array("sTitle"=>"Start"),
array("sTitle"=>"End"), array("sTitle"=>"End"),
array("sTitle"=>"Duration"), array("sTitle"=>"Duration"),
@ -21,19 +22,19 @@ class Application_Model_Nowplaying
$rows = array(); $rows = array();
foreach ($previous as $item){ foreach ($previous as $item){
array_push($rows, array($item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"], array_push($rows, array("p", $item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"],
$item["album_title"], "x" , "y")); $item["album_title"], "x" , $item["playlistname"]));
} }
foreach ($current as $item){ foreach ($current as $item){
array_push($rows, array($item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"], array_push($rows, array("c", $item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"],
$item["album_title"], "x" , "y")); $item["album_title"], "x" , $item["playlistname"]));
} }
foreach ($next as $item){ foreach ($next as $item){
array_push($rows, array($item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"], array_push($rows, array("n", $item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"],
$item["album_title"], "x" , "y")); $item["album_title"], "x" , $item["playlistname"]));
} }
return array("columnHeaders"=>$columnHeaders, "rows"=>$rows); return array("columnHeaders"=>$columnHeaders, "rows"=>$rows);

View file

@ -479,9 +479,10 @@ class Schedule {
public static function GetPreviousItems($timeNow, $prevCount = 1){ public static function GetPreviousItems($timeNow, $prevCount = 1){
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT * FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft" $sql = "SELECT *, pt.name as playlistname FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt"
." WHERE (st.ends < TIMESTAMP '$timeNow')" ." WHERE (st.ends < TIMESTAMP '$timeNow')"
." AND (st.file_id = ft.id)" ." AND (st.file_id = ft.id)"
." AND (st.playlist_id = pt.id)"
." ORDER BY st.starts DESC" ." ORDER BY st.starts DESC"
." LIMIT $prevCount"; ." LIMIT $prevCount";
$rows = $CC_DBC->GetAll($sql); $rows = $CC_DBC->GetAll($sql);
@ -491,7 +492,7 @@ class Schedule {
public static function GetCurrentlyPlaying($timeNow){ public static function GetCurrentlyPlaying($timeNow){
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT *, pt.name as playlistName FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt" $sql = "SELECT *, pt.name as playlistname FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt"
." WHERE (st.starts < TIMESTAMP '$timeNow')" ." WHERE (st.starts < TIMESTAMP '$timeNow')"
." AND (st.ends > TIMESTAMP '$timeNow')" ." AND (st.ends > TIMESTAMP '$timeNow')"
." AND (st.playlist_id = pt.id)" ." AND (st.playlist_id = pt.id)"
@ -502,7 +503,7 @@ class Schedule {
public static function GetNextItems($timeNow, $nextCount = 1) { public static function GetNextItems($timeNow, $nextCount = 1) {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT *, pt.name as playlistName FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt" $sql = "SELECT *, pt.name as playlistname FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt"
." WHERE (st.starts > TIMESTAMP '$timeNow')" ." WHERE (st.starts > TIMESTAMP '$timeNow')"
." AND (st.file_id = ft.id)" ." AND (st.file_id = ft.id)"
." AND (st.playlist_id = pt.id)" ." AND (st.playlist_id = pt.id)"

View file

@ -1,6 +1,10 @@
<div id='demo'></div> <div id='demo'></div>
<script> <script>
function getDateText(obj){ function getDateText(obj){
//var str = "";
//for (s in obj.oSettings)
// str += s + ", ";
//alert(str);
var str = obj.aData[ obj.iDataColumn ]; var str = obj.aData[ obj.iDataColumn ];
if (str.indexOf(" ") != -1){ if (str.indexOf(" ") != -1){
return changeTimePrecision(str.substring(0, str.indexOf(" "))); return changeTimePrecision(str.substring(0, str.indexOf(" ")));
@ -30,13 +34,26 @@ function changeTimePrecision(str){
return str; return str;
} }
function createDataGrid(obj){ function notifySongEnd(){
for (row in datagridData.rows){
if (row[0] == "c")
row[0] = "p";
if (row[0] == "n"){
row[0] = "c";
break;
}
}
obj.columnHeaders[0]["fnRender"] = getDateText; createDataGrid();
obj.columnHeaders[1]["fnRender"] = getTimeText; }
obj.columnHeaders[2]["fnRender"] = getTimeText;
obj.columnHeaders[3]["fnRender"] = changeTimePrecisionInit; function createDataGrid(){
datagridData.columnHeaders[0]["fnRender"] = getDateText;
datagridData.columnHeaders[1]["fnRender"] = getTimeText;
datagridData.columnHeaders[2]["fnRender"] = getTimeText;
datagridData.columnHeaders[3]["fnRender"] = changeTimePrecisionInit;
$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' ); $('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' );
$('#example').dataTable( { $('#example').dataTable( {
"bSort" : false, "bSort" : false,
@ -44,16 +61,34 @@ function createDataGrid(obj){
"bFilter": true, "bFilter": true,
"bInfo": false, "bInfo": false,
"bLengthChange": false, "bLengthChange": false,
"aaData": obj.rows, "aaData": datagridData.rows,
"aoColumns": obj.columnHeaders "aoColumns": datagridData.columnHeaders,
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
if (aData[0] == "p"){
//$(nRow).attr("style", "background-color:blue;");
} else if (aData[0] == "c"){
$(nRow).attr("style", "background-color:#61B329;");
} else if (aData[0] == "n"){
}
return nRow;
}
} ); } );
} }
var registered = false
function init2(){ function init2(){
$.ajax({ url: "/Nowplaying/get-data-grid-data/format/json", dataType:"json", success:function(data){ $.ajax({ url: "/Nowplaying/get-data-grid-data/format/json", dataType:"json", success:function(data){
createDataGrid(data.entries); datagridData = data.entries;
createDataGrid();
}}); }});
//setTimeout(init2, 5000);
if (typeof registerSongEndListener == 'function' && !registered){
registered = true;
registerSongEndListener(notifySongEnd);
}
setTimeout(init2, 5000);
} }
$(document).ready(function() { $(document).ready(function() {

View file

@ -11,6 +11,12 @@ var currentElem;
var updateInterval = 5000; var updateInterval = 5000;
var songEndFunc;
function registerSongEndListener(func){
songEndFunc = func;
}
function convertToHHMMSS(timeInMS){ function convertToHHMMSS(timeInMS){
var time = parseInt(timeInMS); var time = parseInt(timeInMS);
@ -103,6 +109,8 @@ function updateProgressBarValue(){
function temp(){ function temp(){
currentSong[0] = nextSongs[0]; currentSong[0] = nextSongs[0];
updatePlaylist(); updatePlaylist();
songEndFunc();
} }
function updatePlaylist(){ function updatePlaylist(){