Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
This commit is contained in:
commit
5ec2408478
7 changed files with 280 additions and 177 deletions
|
@ -5,16 +5,15 @@ var AIRTIME = (function(AIRTIME){
|
||||||
AIRTIME.library = {};
|
AIRTIME.library = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
AIRTIME.library.events = {};
|
mod = AIRTIME.library;
|
||||||
mod = AIRTIME.library.events;
|
|
||||||
|
|
||||||
mod.enableAddButtonCheck = function() {
|
mod.checkAddButton = function() {
|
||||||
var selected = $('#library_display tr[id ^= "au"] input[type=checkbox]').filter(":checked"),
|
var selected = mod.getChosenItemsLength(),
|
||||||
sortable = $('#spl_sortable'),
|
sortable = $('#spl_sortable'),
|
||||||
check = false;
|
check = false;
|
||||||
|
|
||||||
//make sure audioclips are selected and a playlist is currently open.
|
//make sure audioclips are selected and a playlist is currently open.
|
||||||
if (selected.length !== 0 && sortable.length !== 0) {
|
if (selected !== 0 && sortable.length !== 0) {
|
||||||
check = true;
|
check = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +35,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
|
|
||||||
mod.fnDrawCallback = function() {
|
mod.fnDrawCallback = function() {
|
||||||
|
|
||||||
|
mod.redrawChosen();
|
||||||
|
mod.checkToolBarIcons();
|
||||||
|
|
||||||
$('#library_display tr[id ^= "au"]').draggable({
|
$('#library_display tr[id ^= "au"]').draggable({
|
||||||
helper: function(){
|
helper: function(){
|
||||||
var selected = $('#library_display tr:not(:first) input:checked').parents('tr[id^="au"]'),
|
var selected = $('#library_display tr:not(:first) input:checked').parents('tr[id^="au"]'),
|
||||||
|
@ -82,8 +84,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
$toolbar
|
$toolbar
|
||||||
.append("<ul />")
|
.append("<ul />")
|
||||||
.find('ul')
|
.find('ul')
|
||||||
.append('<li class="ui-state-default ui-state-disabled lib-button-add" title="add selected files to playlist"><span class="ui-icon ui-icon-plusthick"></span></li>')
|
.append('<li class="ui-state-default lib-button-select" title="Select"><span class="ui-icon ui-icon-document-b"></span></li>')
|
||||||
.append('<li class="ui-state-default ui-state-disabled lib-button-delete" title="delete selected files"><span class="ui-icon ui-icon-trash"></span></li>');
|
.append('<li class="ui-state-default ui-state-disabled lib-button-add" title="Add selected library items to the current playlist"><span class="ui-icon ui-icon-plusthick"></span></li>')
|
||||||
|
.append('<li class="ui-state-default ui-state-disabled lib-button-delete" title="Delete selected library items"><span class="ui-icon ui-icon-trash"></span></li>');
|
||||||
|
|
||||||
//add to playlist button
|
//add to playlist button
|
||||||
$toolbar.find('.lib-button-add')
|
$toolbar.find('.lib-button-add')
|
||||||
|
@ -120,6 +123,8 @@ var AIRTIME = (function(AIRTIME){
|
||||||
|
|
||||||
AIRTIME.library.fnDeleteSelectedItems();
|
AIRTIME.library.fnDeleteSelectedItems();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mod.createToolbarDropDown();
|
||||||
};
|
};
|
||||||
|
|
||||||
return AIRTIME;
|
return AIRTIME;
|
||||||
|
|
|
@ -5,16 +5,15 @@ var AIRTIME = (function(AIRTIME){
|
||||||
AIRTIME.library = {};
|
AIRTIME.library = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
AIRTIME.library.events = {};
|
mod = AIRTIME.library;
|
||||||
mod = AIRTIME.library.events;
|
|
||||||
|
|
||||||
mod.enableAddButtonCheck = function() {
|
mod.checkAddButton = function() {
|
||||||
var selected = $('#library_display tr input[type=checkbox]').filter(":checked"),
|
var selected = mod.getChosenItemsLength(),
|
||||||
cursor = $('tr.cursor-selected-row'),
|
cursor = $('tr.cursor-selected-row'),
|
||||||
check = false;
|
check = false;
|
||||||
|
|
||||||
//make sure library items are selected and a cursor is selected.
|
//make sure library items are selected and a cursor is selected.
|
||||||
if (selected.length !== 0 && cursor.length !== 0) {
|
if (selected !== 0 && cursor.length !== 0) {
|
||||||
check = true;
|
check = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +35,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
|
|
||||||
mod.fnDrawCallback = function fnLibDrawCallback() {
|
mod.fnDrawCallback = function fnLibDrawCallback() {
|
||||||
|
|
||||||
|
mod.redrawChosen();
|
||||||
|
mod.checkToolBarIcons();
|
||||||
|
|
||||||
$('#library_display tr:not(:first)').draggable({
|
$('#library_display tr:not(:first)').draggable({
|
||||||
helper: function(){
|
helper: function(){
|
||||||
var selected = $('#library_display tr:not(:first) input:checked').parents('tr'),
|
var selected = $('#library_display tr:not(:first) input:checked').parents('tr'),
|
||||||
|
@ -73,18 +75,18 @@ var AIRTIME = (function(AIRTIME){
|
||||||
},
|
},
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
connectToSortable: '#show_builder_table'
|
connectToSortable: '#show_builder_table'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.setupLibraryToolbar = function() {
|
mod.setupLibraryToolbar = function() {
|
||||||
var $toolbar = $(".lib-content .fg-toolbar:first"),
|
var $toolbar = $(".lib-content .fg-toolbar:first");
|
||||||
$libTable = $("#library_display");
|
|
||||||
|
|
||||||
$toolbar
|
$toolbar
|
||||||
.append("<ul />")
|
.append("<ul />")
|
||||||
.find('ul')
|
.find('ul')
|
||||||
.append('<li class="ui-state-default ui-state-disabled lib-button-add" title="add files after cursor points"><span class="ui-icon ui-icon-plusthick"></span></li>')
|
.append('<li class="ui-state-default lib-button-select" title="Select"><span class="ui-icon ui-icon-document-b"></span></li>')
|
||||||
.append('<li class="ui-state-default ui-state-disabled lib-button-delete" title="delete selected files"><span class="ui-icon ui-icon-trash"></span></li>');
|
.append('<li class="ui-state-default ui-state-disabled lib-button-add" title="Add library items after selected cursors in the timeline"><span class="ui-icon ui-icon-plusthick"></span></li>')
|
||||||
|
.append('<li class="ui-state-default ui-state-disabled lib-button-delete" title="Delete selected library items"><span class="ui-icon ui-icon-trash"></span></li>');
|
||||||
|
|
||||||
//add to timeline button
|
//add to timeline button
|
||||||
$toolbar.find('.lib-button-add')
|
$toolbar.find('.lib-button-add')
|
||||||
|
@ -131,7 +133,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
}
|
}
|
||||||
|
|
||||||
AIRTIME.library.fnDeleteSelectedItems();
|
AIRTIME.library.fnDeleteSelectedItems();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mod.createToolbarDropDown();
|
||||||
};
|
};
|
||||||
|
|
||||||
return AIRTIME;
|
return AIRTIME;
|
||||||
|
|
|
@ -4,38 +4,154 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
oTable,
|
oTable,
|
||||||
$libContent,
|
$libContent,
|
||||||
$libTable,
|
$libTable,
|
||||||
LIB_SELECTED_CLASS = "lib-selected";
|
LIB_SELECTED_CLASS = "lib-selected",
|
||||||
|
chosenItems = {};
|
||||||
|
|
||||||
if (AIRTIME.library === undefined) {
|
if (AIRTIME.library === undefined) {
|
||||||
AIRTIME.library = {};
|
AIRTIME.library = {};
|
||||||
}
|
}
|
||||||
mod = AIRTIME.library;
|
mod = AIRTIME.library;
|
||||||
|
|
||||||
mod.getSelectedData = function() {
|
mod.getChosenItemsLength = function(){
|
||||||
var $selected = $libTable.find("tbody").find("input:checkbox").filter(":checked").parents("tr"),
|
var selected = Object.keys(chosenItems).length;
|
||||||
aData = [],
|
|
||||||
i, length,
|
|
||||||
$item;
|
|
||||||
|
|
||||||
for (i = 0, length = $selected.length; i < length; i++) {
|
return selected;
|
||||||
$item = $($selected.get(i));
|
};
|
||||||
aData.push($item.data('aData'));
|
|
||||||
|
mod.createToolbarDropDown = function() {
|
||||||
|
|
||||||
|
$.contextMenu({
|
||||||
|
selector: '#library_content .ui-icon-document-b',
|
||||||
|
trigger: "left",
|
||||||
|
ignoreRightClick: true,
|
||||||
|
items: {
|
||||||
|
"sp": {name: "Select This Page", callback: mod.selectCurrentPage},
|
||||||
|
"dp": {name: "Deselect This Page", callback: mod.deselectCurrentPage},
|
||||||
|
"sn": {name: "Deselect All", callback: mod.selectNone}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.checkDeleteButton = function() {
|
||||||
|
var selected = mod.getChosenItemsLength(),
|
||||||
|
check = false;
|
||||||
|
|
||||||
|
if (selected !== 0) {
|
||||||
|
check = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return aData.reverse();
|
if (check === true) {
|
||||||
|
AIRTIME.button.enableButton("lib-button-delete");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
AIRTIME.button.disableButton("lib-button-delete");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.selectAll = function () {
|
mod.checkToolBarIcons = function() {
|
||||||
$libTable.find("input:checkbox").attr("checked", true);
|
|
||||||
};
|
|
||||||
|
|
||||||
mod.selectNone = function () {
|
|
||||||
$libTable.find("input:checkbox").attr("checked", false);
|
|
||||||
$libTable.find("tr").removeClass(LIB_SELECTED_CLASS);
|
|
||||||
|
|
||||||
//disable all lib buttons.
|
AIRTIME.library.checkAddButton();
|
||||||
AIRTIME.button.disableButton("lib-button-delete");
|
AIRTIME.library.checkDeleteButton();
|
||||||
AIRTIME.button.disableButton("lib-button-add");
|
};
|
||||||
|
|
||||||
|
mod.getSelectedData = function() {
|
||||||
|
var id,
|
||||||
|
data = [];
|
||||||
|
|
||||||
|
for (id in chosenItems) {
|
||||||
|
|
||||||
|
if (chosenItems.hasOwnProperty(id)) {
|
||||||
|
data.push(chosenItems[id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.redrawChosen = function() {
|
||||||
|
var ids = Object.keys(chosenItems),
|
||||||
|
i, length,
|
||||||
|
$el;
|
||||||
|
|
||||||
|
for (i = 0, length = ids.length; i < length; i++) {
|
||||||
|
$el = $libTable.find("#"+ids[i]);
|
||||||
|
|
||||||
|
if ($el.length !== 0) {
|
||||||
|
mod.highlightItem($el);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.highlightItem = function($el) {
|
||||||
|
var $input = $el.find("input");
|
||||||
|
|
||||||
|
$input.attr("checked", true);
|
||||||
|
$el.addClass(LIB_SELECTED_CLASS);
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.selectItem = function($el) {
|
||||||
|
var id;
|
||||||
|
|
||||||
|
mod.highlightItem($el);
|
||||||
|
|
||||||
|
id = $el.attr("id");
|
||||||
|
chosenItems[id] = $el.data('aData');
|
||||||
|
|
||||||
|
mod.checkToolBarIcons();
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.deselectItem = function($el) {
|
||||||
|
var id,
|
||||||
|
$input = $el.find("input");
|
||||||
|
|
||||||
|
$input.attr("checked", false);
|
||||||
|
$el.removeClass(LIB_SELECTED_CLASS);
|
||||||
|
|
||||||
|
id = $el.attr("id");
|
||||||
|
delete chosenItems[id];
|
||||||
|
|
||||||
|
mod.checkToolBarIcons();
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* selects all items which the user can currently see.
|
||||||
|
* (behaviour taken from gmail)
|
||||||
|
*/
|
||||||
|
mod.selectCurrentPage = function() {
|
||||||
|
var $trs = $libTable.find("tbody input:checkbox").parents("tr");
|
||||||
|
|
||||||
|
$trs.each(function(i, el){
|
||||||
|
$el = $(this);
|
||||||
|
|
||||||
|
mod.selectItem($el);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* deselects all items that the user can currently see.
|
||||||
|
* (behaviour taken from gmail)
|
||||||
|
*/
|
||||||
|
mod.deselectCurrentPage = function() {
|
||||||
|
|
||||||
|
var $trs = $libTable.find("tbody input:checkbox").filter(":checked").parents("tr");
|
||||||
|
|
||||||
|
$trs.each(function(i, el){
|
||||||
|
$el = $(this);
|
||||||
|
|
||||||
|
mod.deselectItem($el);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.selectNone = function() {
|
||||||
|
var $inputs = $libTable.find("tbody input:checkbox"),
|
||||||
|
$trs = $inputs.parents("tr");
|
||||||
|
|
||||||
|
$inputs.attr("checked", false);
|
||||||
|
$trs.removeClass(LIB_SELECTED_CLASS);
|
||||||
|
|
||||||
|
chosenItems = {};
|
||||||
|
|
||||||
|
mod.checkToolBarIcons();
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.fnDeleteItems = function(aMedia) {
|
mod.fnDeleteItems = function(aMedia) {
|
||||||
|
@ -46,7 +162,7 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
if (json.message !== undefined) {
|
if (json.message !== undefined) {
|
||||||
alert(json.message);
|
alert(json.message);
|
||||||
}
|
}
|
||||||
|
chosenItems = {};
|
||||||
oTable.fnDraw();
|
oTable.fnDraw();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -80,7 +196,7 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
//put hidden columns at the top to insure they can never be visible on the table through column reordering.
|
//put hidden columns at the top to insure they can never be visible on the table through column reordering.
|
||||||
"aoColumns": [
|
"aoColumns": [
|
||||||
/* ftype */ {"sTitle": "", "mDataProp": "ftype", "bSearchable": false, "bVisible": false},
|
/* ftype */ {"sTitle": "", "mDataProp": "ftype", "bSearchable": false, "bVisible": false},
|
||||||
/* Checkbox */ {"sTitle": "<input type='checkbox' name='pl_cb_all'>", "mDataProp": "checkbox", "bSortable": false, "bSearchable": false, "sWidth": "25px", "sClass": "library_checkbox"},
|
/* Checkbox */ {"sTitle": "", "mDataProp": "checkbox", "bSortable": false, "bSearchable": false, "sWidth": "25px", "sClass": "library_checkbox"},
|
||||||
/* Type */ {"sTitle": "", "mDataProp": "image", "bSearchable": false, "sWidth": "25px", "sClass": "library_type", "iDataSort": 0},
|
/* Type */ {"sTitle": "", "mDataProp": "image", "bSearchable": false, "sWidth": "25px", "sClass": "library_type", "iDataSort": 0},
|
||||||
/* Title */ {"sTitle": "Title", "mDataProp": "track_title", "sClass": "library_title"},
|
/* Title */ {"sTitle": "Title", "mDataProp": "track_title", "sClass": "library_title"},
|
||||||
/* Creator */ {"sTitle": "Creator", "mDataProp": "artist_name", "sClass": "library_creator"},
|
/* Creator */ {"sTitle": "Creator", "mDataProp": "artist_name", "sClass": "library_creator"},
|
||||||
|
@ -181,7 +297,7 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
"success": fnCallback
|
"success": fnCallback
|
||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
"fnRowCallback": AIRTIME.library.events.fnRowCallback,
|
"fnRowCallback": AIRTIME.library.fnRowCallback,
|
||||||
"fnCreatedRow": function( nRow, aData, iDataIndex ) {
|
"fnCreatedRow": function( nRow, aData, iDataIndex ) {
|
||||||
|
|
||||||
//add the play function to the library_type td
|
//add the play function to the library_type td
|
||||||
|
@ -248,13 +364,10 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
//remove any selected nodes before the draw.
|
//remove any selected nodes before the draw.
|
||||||
"fnPreDrawCallback": function( oSettings ) {
|
"fnPreDrawCallback": function( oSettings ) {
|
||||||
|
|
||||||
AIRTIME.button.disableButton("lib-button-delete");
|
//make sure any dragging helpers are removed or else they'll be stranded on the screen.
|
||||||
AIRTIME.button.disableButton("lib-button-add");
|
$("#draggingContainer").remove();
|
||||||
},
|
},
|
||||||
"fnDrawCallback": AIRTIME.library.events.fnDrawCallback,
|
"fnDrawCallback": AIRTIME.library.fnDrawCallback,
|
||||||
"fnHeaderCallback": function(nHead) {
|
|
||||||
$(nHead).find("input[type=checkbox]").attr("checked", false);
|
|
||||||
},
|
|
||||||
|
|
||||||
"aaSorting": [[3, 'asc']],
|
"aaSorting": [[3, 'asc']],
|
||||||
"sPaginationType": "full_numbers",
|
"sPaginationType": "full_numbers",
|
||||||
|
@ -283,7 +396,7 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
|
|
||||||
$libContent.find(".dataTables_scrolling").css("max-height", tableHeight);
|
$libContent.find(".dataTables_scrolling").css("max-height", tableHeight);
|
||||||
|
|
||||||
AIRTIME.library.events.setupLibraryToolbar(oTable);
|
AIRTIME.library.setupLibraryToolbar(oTable);
|
||||||
|
|
||||||
$("#library_display_type")
|
$("#library_display_type")
|
||||||
.addClass("dataTables_type")
|
.addClass("dataTables_type")
|
||||||
|
@ -296,65 +409,29 @@ var AIRTIME = (function(AIRTIME) {
|
||||||
.change(function(ev){
|
.change(function(ev){
|
||||||
oTable.fnDraw();
|
oTable.fnDraw();
|
||||||
});
|
});
|
||||||
|
|
||||||
$libTable.find('[name="pl_cb_all"]').click(function() {
|
|
||||||
var $cbs = $libTable.find("input:checkbox"),
|
|
||||||
$trs;
|
|
||||||
|
|
||||||
if ($(this).is(":checked")) {
|
|
||||||
$cbs.attr("checked", true);
|
|
||||||
//checking to enable buttons
|
|
||||||
|
|
||||||
$trs = $cbs.parents("tr");
|
|
||||||
$trs.addClass(LIB_SELECTED_CLASS);
|
|
||||||
|
|
||||||
AIRTIME.button.enableButton("lib-button-delete");
|
|
||||||
AIRTIME.library.events.enableAddButtonCheck();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$cbs.attr("checked", false);
|
|
||||||
|
|
||||||
$trs = $cbs.parents("tr");
|
|
||||||
$trs.removeClass(LIB_SELECTED_CLASS);
|
|
||||||
|
|
||||||
AIRTIME.button.disableButton("lib-button-delete");
|
|
||||||
AIRTIME.button.disableButton("lib-button-add");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$libTable.find("tbody").on("click", "input[type=checkbox]", function(ev) {
|
$libTable.find("tbody").on("click", "input[type=checkbox]", function(ev) {
|
||||||
|
|
||||||
var $cb = $(this),
|
var $cb = $(this),
|
||||||
$selectedCb,
|
|
||||||
$prev,
|
$prev,
|
||||||
$tr = $cb.parents("tr");
|
$tr = $cb.parents("tr"),
|
||||||
|
$trs;
|
||||||
|
|
||||||
if ($cb.is(":checked")) {
|
if ($cb.is(":checked")) {
|
||||||
|
|
||||||
if (ev.shiftKey) {
|
if (ev.shiftKey) {
|
||||||
$prev = $libTable.find("tbody").find("tr."+LIB_SELECTED_CLASS).eq(-1);
|
$prev = $libTable.find("tbody").find("tr."+LIB_SELECTED_CLASS).eq(-1);
|
||||||
|
$trs = $prev.nextUntil($tr);
|
||||||
|
|
||||||
$prev.nextUntil($tr)
|
$trs.each(function(i, el){
|
||||||
.addClass(LIB_SELECTED_CLASS)
|
mod.selectItem($(el));
|
||||||
.find("input:checkbox")
|
});
|
||||||
.attr("checked", true)
|
|
||||||
.end();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$tr.addClass(LIB_SELECTED_CLASS);
|
mod.selectItem($tr);
|
||||||
//checking to enable buttons
|
|
||||||
AIRTIME.button.enableButton("lib-button-delete");
|
|
||||||
AIRTIME.library.events.enableAddButtonCheck();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$selectedCb = $libTable.find("tbody input:checkbox").filter(":checked");
|
mod.deselectItem($tr);
|
||||||
$tr.removeClass(LIB_SELECTED_CLASS);
|
|
||||||
|
|
||||||
//checking to disable buttons
|
|
||||||
if ($selectedCb.length === 0) {
|
|
||||||
AIRTIME.button.disableButton("lib-button-delete");
|
|
||||||
}
|
|
||||||
AIRTIME.library.events.enableAddButtonCheck();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -275,9 +275,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
}
|
}
|
||||||
|
|
||||||
function redrawLib() {
|
function redrawLib() {
|
||||||
var dt = $("#library_display").dataTable();
|
var dt = $lib.find("#library_display").dataTable();
|
||||||
|
|
||||||
dt.fnStandingRedraw();
|
dt.fnDraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPlaylistContent(json) {
|
function setPlaylistContent(json) {
|
||||||
|
|
|
@ -50,6 +50,59 @@ var AIRTIME = (function(AIRTIME){
|
||||||
return mod.showInstances;
|
return mod.showInstances;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mod.checkTrimButton = function() {
|
||||||
|
$over = $sbTable.find(".sb-over");
|
||||||
|
|
||||||
|
if ($over.length !== 0) {
|
||||||
|
AIRTIME.button.enableButton("sb-button-trim");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
AIRTIME.button.disableButton("sb-button-trim");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.checkDeleteButton = function() {
|
||||||
|
$selected = $sbTable.find("tbody").find("input:checkbox").filter(":checked");
|
||||||
|
|
||||||
|
if ($selected.length !== 0) {
|
||||||
|
AIRTIME.button.enableButton("sb-button-delete");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
AIRTIME.button.disableButton("sb-button-delete");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.checkJumpToCurrentButton = function() {
|
||||||
|
$current = $sbTable.find(".sb-now-playing");
|
||||||
|
|
||||||
|
if ($current.length !== 0) {
|
||||||
|
AIRTIME.button.enableButton("sb-button-current");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
AIRTIME.button.disableButton("sb-button-current");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.checkCancelButton = function() {
|
||||||
|
$current = $sbTable.find(".sb-current-show");
|
||||||
|
|
||||||
|
if ($current.length !== 0) {
|
||||||
|
AIRTIME.button.enableButton("sb-button-cancel");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
AIRTIME.button.disableButton("sb-button-cancel");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mod.checkToolBarIcons = function() {
|
||||||
|
|
||||||
|
AIRTIME.library.checkAddButton();
|
||||||
|
mod.checkTrimButton();
|
||||||
|
mod.checkDeleteButton();
|
||||||
|
mod.checkJumpToCurrentButton();
|
||||||
|
mod.checkCancelButton();
|
||||||
|
};
|
||||||
|
|
||||||
mod.getSelectedData = function() {
|
mod.getSelectedData = function() {
|
||||||
var $selected = $sbTable.find("tbody").find("input:checkbox").filter(":checked").parents("tr"),
|
var $selected = $sbTable.find("tbody").find("input:checkbox").filter(":checked").parents("tr"),
|
||||||
aData = [],
|
aData = [],
|
||||||
|
@ -65,11 +118,25 @@ var AIRTIME = (function(AIRTIME){
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.selectAll = function () {
|
mod.selectAll = function () {
|
||||||
$sbTable.find("input:checkbox").attr("checked", true);
|
$inputs = $sbTable.find("input:checkbox");
|
||||||
|
|
||||||
|
$inputs.attr("checked", true);
|
||||||
|
|
||||||
|
$trs = $inputs.parents("tr");
|
||||||
|
$trs.addClass(SB_SELECTED_CLASS);
|
||||||
|
|
||||||
|
mod.checkToolBarIcons();
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.selectNone = function () {
|
mod.selectNone = function () {
|
||||||
$sbTable.find("input:checkbox").attr("checked", false);
|
$inputs = $sbTable.find("input:checkbox");
|
||||||
|
|
||||||
|
$inputs.attr("checked", false);
|
||||||
|
|
||||||
|
$trs = $inputs.parents("tr");
|
||||||
|
$trs.removeClass(SB_SELECTED_CLASS);
|
||||||
|
|
||||||
|
mod.checkToolBarIcons();
|
||||||
};
|
};
|
||||||
|
|
||||||
mod.fnAdd = function(aMediaIds, aSchedIds) {
|
mod.fnAdd = function(aMediaIds, aSchedIds) {
|
||||||
|
@ -79,7 +146,6 @@ var AIRTIME = (function(AIRTIME){
|
||||||
function(json){
|
function(json){
|
||||||
checkError(json);
|
checkError(json);
|
||||||
oSchedTable.fnDraw();
|
oSchedTable.fnDraw();
|
||||||
AIRTIME.library.selectNone();
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -155,7 +221,7 @@ var AIRTIME = (function(AIRTIME){
|
||||||
|
|
||||||
oSchedTable = $sbTable.dataTable( {
|
oSchedTable = $sbTable.dataTable( {
|
||||||
"aoColumns": [
|
"aoColumns": [
|
||||||
/* checkbox */ {"mDataProp": "allowed", "sTitle": "<input type='checkbox' name='sb_cb_all'>", "sWidth": "15px", "sClass": "sb-checkbox"},
|
/* checkbox */ {"mDataProp": "allowed", "sTitle": "", "sWidth": "15px", "sClass": "sb-checkbox"},
|
||||||
/* Type */ {"mDataProp": "image", "sTitle": "", "sClass": "library_image sb-image", "sWidth": "16px"},
|
/* Type */ {"mDataProp": "image", "sTitle": "", "sClass": "library_image sb-image", "sWidth": "16px"},
|
||||||
/* starts */ {"mDataProp": "starts", "sTitle": "Start", "sClass": "sb-starts", "sWidth": "60px"},
|
/* starts */ {"mDataProp": "starts", "sTitle": "Start", "sClass": "sb-starts", "sWidth": "60px"},
|
||||||
/* ends */ {"mDataProp": "ends", "sTitle": "End", "sClass": "sb-ends", "sWidth": "60px"},
|
/* ends */ {"mDataProp": "ends", "sTitle": "End", "sClass": "sb-ends", "sWidth": "60px"},
|
||||||
|
@ -428,15 +494,6 @@ var AIRTIME = (function(AIRTIME){
|
||||||
|
|
||||||
//make sure any dragging helpers are removed or else they'll be stranded on the screen.
|
//make sure any dragging helpers are removed or else they'll be stranded on the screen.
|
||||||
$("#draggingContainer").remove();
|
$("#draggingContainer").remove();
|
||||||
|
|
||||||
//disable jump to current button.
|
|
||||||
AIRTIME.button.disableButton("sb-button-delete");
|
|
||||||
//disable jump to current button.
|
|
||||||
AIRTIME.button.disableButton("sb-button-current");
|
|
||||||
//disable deleting of overbooked tracks.
|
|
||||||
AIRTIME.button.disableButton("sb-button-trim");
|
|
||||||
//disable cancelling current show.
|
|
||||||
AIRTIME.button.disableButton("sb-button-cancel");
|
|
||||||
},
|
},
|
||||||
"fnDrawCallback": function fnBuilderDrawCallback(oSettings, json) {
|
"fnDrawCallback": function fnBuilderDrawCallback(oSettings, json) {
|
||||||
var wrapperDiv,
|
var wrapperDiv,
|
||||||
|
@ -514,7 +571,7 @@ var AIRTIME = (function(AIRTIME){
|
||||||
aData = temp.data("aData");
|
aData = temp.data("aData");
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
AIRTIME.showbuilder.resetTimestamp();
|
mod.resetTimestamp();
|
||||||
oSchedTable.fnDraw();
|
oSchedTable.fnDraw();
|
||||||
}, aData.refresh * 1000); //need refresh in milliseconds
|
}, aData.refresh * 1000); //need refresh in milliseconds
|
||||||
|
|
||||||
|
@ -522,31 +579,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//now playing item exists.
|
mod.checkToolBarIcons();
|
||||||
if (elements[0].length > 0) {
|
|
||||||
//enable jump to current button.
|
|
||||||
AIRTIME.button.enableButton("sb-button-current");
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if there are any overbooked tracks on screen to enable the trim button.
|
|
||||||
$tr = $sbTable.find("tr.sb-over.sb-future");
|
|
||||||
if ($tr.length > 0) {
|
|
||||||
//enable deleting of overbooked tracks.
|
|
||||||
AIRTIME.button.enableButton("sb-button-trim");
|
|
||||||
}
|
|
||||||
|
|
||||||
$tr = $sbTable.find('tr.sb-future:first');
|
|
||||||
if ($tr.hasClass('sb-current-show')) {
|
|
||||||
//enable cancelling current show.
|
|
||||||
AIRTIME.button.enableButton("sb-button-cancel");
|
|
||||||
}
|
|
||||||
|
|
||||||
AIRTIME.library.events.enableAddButtonCheck();
|
|
||||||
},
|
},
|
||||||
"fnHeaderCallback": function(nHead) {
|
|
||||||
$(nHead).find("input[type=checkbox]").attr("checked", false);
|
|
||||||
},
|
|
||||||
|
|
||||||
"oColVis": {
|
"oColVis": {
|
||||||
"aiExclude": [ 0, 1 ]
|
"aiExclude": [ 0, 1 ]
|
||||||
},
|
},
|
||||||
|
@ -562,34 +597,9 @@ var AIRTIME = (function(AIRTIME){
|
||||||
"sAjaxSource": "/showbuilder/builder-feed"
|
"sAjaxSource": "/showbuilder/builder-feed"
|
||||||
});
|
});
|
||||||
|
|
||||||
//adding checkbox events.
|
|
||||||
$sbTable.find('[name="sb_cb_all"]').click(function() {
|
|
||||||
var $cbs = $sbTable.find("input:checkbox"),
|
|
||||||
$trs;
|
|
||||||
|
|
||||||
if ($(this).is(":checked")) {
|
|
||||||
$cbs.attr("checked", true);
|
|
||||||
//checking to enable buttons
|
|
||||||
|
|
||||||
$trs = $cbs.parents("tr");
|
|
||||||
$trs.addClass(SB_SELECTED_CLASS);
|
|
||||||
|
|
||||||
AIRTIME.button.enableButton("sb-button-delete");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$cbs.attr("checked", false);
|
|
||||||
|
|
||||||
$trs = $cbs.parents("tr");
|
|
||||||
$trs.removeClass(SB_SELECTED_CLASS);
|
|
||||||
|
|
||||||
AIRTIME.button.disableButton("sb-button-delete");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$sbTable.find("tbody").on("click", "input:checkbox", function(ev) {
|
$sbTable.find("tbody").on("click", "input:checkbox", function(ev) {
|
||||||
|
|
||||||
var $cb = $(this),
|
var $cb = $(this),
|
||||||
$selectedCb,
|
|
||||||
$tr = $cb.parents("tr"),
|
$tr = $cb.parents("tr"),
|
||||||
$prev;
|
$prev;
|
||||||
|
|
||||||
|
@ -606,18 +616,12 @@ var AIRTIME = (function(AIRTIME){
|
||||||
}
|
}
|
||||||
|
|
||||||
$tr.addClass(SB_SELECTED_CLASS);
|
$tr.addClass(SB_SELECTED_CLASS);
|
||||||
//checking to enable buttons
|
|
||||||
AIRTIME.button.enableButton("sb-button-delete");
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$selectedCb = $sbTable.find("tbody input:checkbox").filter(":checked");
|
|
||||||
$tr.removeClass(SB_SELECTED_CLASS);
|
$tr.removeClass(SB_SELECTED_CLASS);
|
||||||
|
|
||||||
//checking to disable buttons
|
|
||||||
if ($selectedCb.length === 0) {
|
|
||||||
AIRTIME.button.disableButton("sb-button-delete");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mod.checkToolBarIcons();
|
||||||
});
|
});
|
||||||
|
|
||||||
var sortableConf = (function(){
|
var sortableConf = (function(){
|
||||||
|
@ -772,15 +776,26 @@ var AIRTIME = (function(AIRTIME){
|
||||||
$toolbar = $(".sb-content .fg-toolbar");
|
$toolbar = $(".sb-content .fg-toolbar");
|
||||||
|
|
||||||
$ul = $("<ul/>");
|
$ul = $("<ul/>");
|
||||||
$ul.append('<li class="ui-state-default ui-state-disabled sb-button-trim" title="delete all overbooked tracks"><span class="ui-icon ui-icon-scissors"></span></li>')
|
$ul.append('<li class="ui-state-default sb-button-select" title="Select"><span class="ui-icon ui-icon-document-b"></span></li>')
|
||||||
.append('<li class="ui-state-default ui-state-disabled sb-button-delete" title="delete selected items"><span class="ui-icon ui-icon-trash"></span></li>');
|
.append('<li class="ui-state-default ui-state-disabled sb-button-trim" title="Delete all overbooked tracks"><span class="ui-icon ui-icon-scissors"></span></li>')
|
||||||
|
.append('<li class="ui-state-default ui-state-disabled sb-button-delete" title="Delete selected scheduled items"><span class="ui-icon ui-icon-trash"></span></li>');
|
||||||
$toolbar.append($ul);
|
$toolbar.append($ul);
|
||||||
|
|
||||||
$ul = $("<ul/>");
|
$ul = $("<ul/>");
|
||||||
$ul.append('<li class="ui-state-default ui-state-disabled sb-button-current" title="jump to the currently playing track"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>')
|
$ul.append('<li class="ui-state-default ui-state-disabled sb-button-current" title="Jump to the currently playing track"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>')
|
||||||
.append('<li class="ui-state-default ui-state-disabled sb-button-cancel" title="cancel current show"><span class="ui-icon ui-icon-eject"></span></li>');
|
.append('<li class="ui-state-default ui-state-disabled sb-button-cancel" title="Cancel current show"><span class="ui-icon ui-icon-eject"></span></li>');
|
||||||
$toolbar.append($ul);
|
$toolbar.append($ul);
|
||||||
|
|
||||||
|
$.contextMenu({
|
||||||
|
selector: '#show_builder .ui-icon-document-b',
|
||||||
|
trigger: "left",
|
||||||
|
ignoreRightClick: true,
|
||||||
|
items: {
|
||||||
|
"sa": {name: "Select All", callback: mod.selectAll},
|
||||||
|
"sn": {name: "Select None", callback: mod.selectNone}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//jump to current
|
//jump to current
|
||||||
$toolbar.find('.sb-button-cancel')
|
$toolbar.find('.sb-button-cancel')
|
||||||
.click(function() {
|
.click(function() {
|
||||||
|
@ -875,8 +890,7 @@ var AIRTIME = (function(AIRTIME){
|
||||||
.removeClass(cursorSelClass);
|
.removeClass(cursorSelClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
//check if add button can still be enabled.
|
mod.checkToolBarIcons();
|
||||||
AIRTIME.library.events.enableAddButtonCheck();
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,7 +6,7 @@ virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
. ${virtualenv_bin}activate
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
media_monitor_path="/usr/lib/airtime/media-monitor/"
|
media_monitor_path="/usr/lib/airtime/media-monitor/"
|
||||||
media_monitor_script="MediaMonitor.py"
|
media_monitor_script="media_monitor.py"
|
||||||
|
|
||||||
api_client_path="/usr/lib/airtime/"
|
api_client_path="/usr/lib/airtime/"
|
||||||
|
|
||||||
|
|
|
@ -41,12 +41,15 @@ logger.info("\n\n*** Media Monitor bootup ***\n\n")
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
fs_encoding = locale.getdefaultlocale()[1].lower()
|
fs_encoding = locale.getdefaultlocale()[1]
|
||||||
if fs_encoding not in ['utf-8', 'utf8']:
|
if fs_encoding is not None:
|
||||||
logger.error("Filesystem encoding needs to be UTF-8. Currently '%s'. Exiting..." % fs_encoding)
|
if fs_encoding not in ['utf-8', 'utf8']:
|
||||||
sys.exit(1)
|
logger.error("Filesystem encoding needs to be UTF-8. Currently '%s'. Exiting..." % fs_encoding)
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
logger.debug("Filesystem encoding: '%s'" % fs_encoding)
|
||||||
else:
|
else:
|
||||||
logger.debug("Filesystem encoding: '%s'" % fs_encoding)
|
logger.debug("Unknown encoding")
|
||||||
|
|
||||||
|
|
||||||
config = AirtimeMediaConfig(logger)
|
config = AirtimeMediaConfig(logger)
|
Loading…
Add table
Add a link
Reference in a new issue