CC-4229: Smart Playlist: refactor code
- bug fixes
This commit is contained in:
parent
d366220b85
commit
2d80131351
3 changed files with 207 additions and 103 deletions
|
@ -1,6 +1,88 @@
|
||||||
<?php
|
<?php
|
||||||
class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
{
|
{
|
||||||
|
private $criteriaOptions = array(
|
||||||
|
0 => "Select criteria",
|
||||||
|
"album_title" => "Album",
|
||||||
|
"bit_rate" => "Bit Rate",
|
||||||
|
"bpm" => "Bpm",
|
||||||
|
"comments" => "Comments",
|
||||||
|
"composer" => "Composer",
|
||||||
|
"conductor" => "Conductor",
|
||||||
|
"artist_name" => "Creator",
|
||||||
|
"disc_number" => "Disc Number",
|
||||||
|
"genre" => "Genre",
|
||||||
|
"isrc_number" => "ISRC",
|
||||||
|
"label" => "Label",
|
||||||
|
"language" => "Language",
|
||||||
|
"mtime" => "Last Modified",
|
||||||
|
"lptime" => "Last Played",
|
||||||
|
"length" => "Length",
|
||||||
|
"lyricist" => "Lyricist",
|
||||||
|
"mood" => "Mood",
|
||||||
|
"name" => "Name",
|
||||||
|
"orchestra" => "Orchestra",
|
||||||
|
"rating" => "Rating",
|
||||||
|
"sample_rate" => "Sample Rate",
|
||||||
|
"track_title" => "Title",
|
||||||
|
"track_number" => "Track Number",
|
||||||
|
"utime" => "Uploaded",
|
||||||
|
"year" => "Year"
|
||||||
|
);
|
||||||
|
|
||||||
|
private $criteriaTypes = array(
|
||||||
|
0 => "",
|
||||||
|
"album_title" => "s",
|
||||||
|
"artist_name" => "s",
|
||||||
|
"bit_rate" => "n",
|
||||||
|
"bpm" => "n",
|
||||||
|
"comments" => "s",
|
||||||
|
"composer" => "s",
|
||||||
|
"conductor" => "s",
|
||||||
|
"utime" => "n",
|
||||||
|
"mtime" => "n",
|
||||||
|
"lptime" => "n",
|
||||||
|
"disc_number" => "n",
|
||||||
|
"genre" => "s",
|
||||||
|
"isrc_number" => "s",
|
||||||
|
"label" => "s",
|
||||||
|
"language" => "s",
|
||||||
|
"length" => "n",
|
||||||
|
"lyricist" => "s",
|
||||||
|
"mood" => "s",
|
||||||
|
"name" => "s",
|
||||||
|
"orchestra" => "s",
|
||||||
|
"rating" => "n",
|
||||||
|
"sample_rate" => "n",
|
||||||
|
"track_title" => "s",
|
||||||
|
"track_number" => "n",
|
||||||
|
"year" => "n"
|
||||||
|
);
|
||||||
|
|
||||||
|
private $stringCriteriaOptions = array(
|
||||||
|
"0" => "Select modifier",
|
||||||
|
"contains" => "contains",
|
||||||
|
"does not contain" => "does not contain",
|
||||||
|
"is" => "is",
|
||||||
|
"is not" => "is not",
|
||||||
|
"starts with" => "starts with",
|
||||||
|
"ends with" => "ends with"
|
||||||
|
);
|
||||||
|
|
||||||
|
private $numericCriteriaOptions = array(
|
||||||
|
"0" => "Select modifier",
|
||||||
|
"is" => "is",
|
||||||
|
"is not" => "is not",
|
||||||
|
"is greater than" => "is greater than",
|
||||||
|
"is less than" => "is less than",
|
||||||
|
"is in the range" => "is in the range"
|
||||||
|
);
|
||||||
|
|
||||||
|
private $limitOptions = array(
|
||||||
|
"hours" => "hours",
|
||||||
|
"minutes" => "minutes",
|
||||||
|
"items" => "items"
|
||||||
|
);
|
||||||
|
|
||||||
public function init(){
|
public function init(){
|
||||||
|
|
||||||
|
@ -8,89 +90,6 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
|
|
||||||
public function startForm($p_blockId)
|
public function startForm($p_blockId)
|
||||||
{
|
{
|
||||||
$criteriaOptions = array(
|
|
||||||
0 => "Select criteria",
|
|
||||||
"album_title" => "Album",
|
|
||||||
"bit_rate" => "Bit Rate",
|
|
||||||
"bpm" => "Bpm",
|
|
||||||
"comments" => "Comments",
|
|
||||||
"composer" => "Composer",
|
|
||||||
"conductor" => "Conductor",
|
|
||||||
"artist_name" => "Creator",
|
|
||||||
"disc_number" => "Disc Number",
|
|
||||||
"genre" => "Genre",
|
|
||||||
"isrc_number" => "ISRC",
|
|
||||||
"label" => "Label",
|
|
||||||
"language" => "Language",
|
|
||||||
"mtime" => "Last Modified",
|
|
||||||
"lptime" => "Last Played",
|
|
||||||
"length" => "Length",
|
|
||||||
"lyricist" => "Lyricist",
|
|
||||||
"mood" => "Mood",
|
|
||||||
"name" => "Name",
|
|
||||||
"orchestra" => "Orchestra",
|
|
||||||
"rating" => "Rating",
|
|
||||||
"sample_rate" => "Sample Rate",
|
|
||||||
"track_title" => "Title",
|
|
||||||
"track_number" => "Track Number",
|
|
||||||
"utime" => "Uploaded",
|
|
||||||
"year" => "Year"
|
|
||||||
);
|
|
||||||
|
|
||||||
$criteriaTypes = array(
|
|
||||||
0 => "",
|
|
||||||
"album_title" => "s",
|
|
||||||
"artist_name" => "s",
|
|
||||||
"bit_rate" => "n",
|
|
||||||
"bpm" => "s",
|
|
||||||
"comments" => "s",
|
|
||||||
"composer" => "s",
|
|
||||||
"conductor" => "s",
|
|
||||||
"utime" => "n",
|
|
||||||
"mtime" => "n",
|
|
||||||
"lptime" => "n",
|
|
||||||
"disc_number" => "n",
|
|
||||||
"genre" => "s",
|
|
||||||
"isrc_number" => "s",
|
|
||||||
"label" => "s",
|
|
||||||
"language" => "s",
|
|
||||||
"length" => "n",
|
|
||||||
"lyricist" => "s",
|
|
||||||
"mood" => "s",
|
|
||||||
"name" => "s",
|
|
||||||
"orchestra" => "s",
|
|
||||||
"rating" => "n",
|
|
||||||
"sample_rate" => "n",
|
|
||||||
"track_title" => "s",
|
|
||||||
"track_number" => "n",
|
|
||||||
"year" => "n"
|
|
||||||
);
|
|
||||||
|
|
||||||
$stringCriteriaOptions = array(
|
|
||||||
"0" => "Select modifier",
|
|
||||||
"contains" => "contains",
|
|
||||||
"does not contain" => "does not contain",
|
|
||||||
"is" => "is",
|
|
||||||
"is not" => "is not",
|
|
||||||
"starts with" => "starts with",
|
|
||||||
"ends with" => "ends with"
|
|
||||||
);
|
|
||||||
|
|
||||||
$numericCriteriaOptions = array(
|
|
||||||
"0" => "Select modifier",
|
|
||||||
"is" => "is",
|
|
||||||
"is not" => "is not",
|
|
||||||
"is greater than" => "is greater than",
|
|
||||||
"is less than" => "is less than",
|
|
||||||
"is in the range" => "is in the range"
|
|
||||||
);
|
|
||||||
|
|
||||||
$limitOptions = array(
|
|
||||||
"hours" => "hours",
|
|
||||||
"minutes" => "minutes",
|
|
||||||
"items" => "items"
|
|
||||||
);
|
|
||||||
|
|
||||||
// load type
|
// load type
|
||||||
$out = CcBlockQuery::create()->findPk($p_blockId);
|
$out = CcBlockQuery::create()->findPk($p_blockId);
|
||||||
if ($out->getDbType() == "static") {
|
if ($out->getDbType() == "static") {
|
||||||
|
@ -128,7 +127,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
if (isset($storedCrit["crit"])) {
|
if (isset($storedCrit["crit"])) {
|
||||||
$criteriaKeys = array_keys($storedCrit["crit"]);
|
$criteriaKeys = array_keys($storedCrit["crit"]);
|
||||||
}
|
}
|
||||||
$numElements = count($criteriaOptions);
|
$numElements = count($this->criteriaOptions);
|
||||||
for ($i = 0; $i < $numElements; $i++) {
|
for ($i = 0; $i < $numElements; $i++) {
|
||||||
$criteriaType = "";
|
$criteriaType = "";
|
||||||
|
|
||||||
|
@ -155,13 +154,13 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
$criteria->setAttrib('class', 'input_select sp_input_select'.$invisible)
|
$criteria->setAttrib('class', 'input_select sp_input_select'.$invisible)
|
||||||
->setValue('Select criteria')
|
->setValue('Select criteria')
|
||||||
->setDecorators(array('viewHelper'))
|
->setDecorators(array('viewHelper'))
|
||||||
->setMultiOptions($criteriaOptions);
|
->setMultiOptions($this->criteriaOptions);
|
||||||
if ($i != 0 && !isset($criteriaKeys[$i])) {
|
if ($i != 0 && !isset($criteriaKeys[$i])) {
|
||||||
$criteria->setAttrib('disabled', 'disabled');
|
$criteria->setAttrib('disabled', 'disabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($criteriaKeys[$i])) {
|
if (isset($criteriaKeys[$i])) {
|
||||||
$criteriaType = $criteriaTypes[$storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]];
|
$criteriaType = $this->criteriaTypes[$storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]];
|
||||||
$criteria->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]);
|
$criteria->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]);
|
||||||
}
|
}
|
||||||
$this->addElement($criteria);
|
$this->addElement($criteria);
|
||||||
|
@ -176,9 +175,9 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
}
|
}
|
||||||
if (isset($criteriaKeys[$i])) {
|
if (isset($criteriaKeys[$i])) {
|
||||||
if($criteriaType == "s"){
|
if($criteriaType == "s"){
|
||||||
$criteriaModifers->setMultiOptions($stringCriteriaOptions);
|
$criteriaModifers->setMultiOptions($this->stringCriteriaOptions);
|
||||||
}else{
|
}else{
|
||||||
$criteriaModifers->setMultiOptions($numericCriteriaOptions);
|
$criteriaModifers->setMultiOptions($this->numericCriteriaOptions);
|
||||||
}
|
}
|
||||||
$criteriaModifers->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["modifier"]);
|
$criteriaModifers->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["modifier"]);
|
||||||
}else{
|
}else{
|
||||||
|
@ -217,7 +216,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
$limit = new Zend_Form_Element_Select('sp_limit_options');
|
$limit = new Zend_Form_Element_Select('sp_limit_options');
|
||||||
$limit->setAttrib('class', 'sp_input_select')
|
$limit->setAttrib('class', 'sp_input_select')
|
||||||
->setDecorators(array('viewHelper'))
|
->setDecorators(array('viewHelper'))
|
||||||
->setMultiOptions($limitOptions);
|
->setMultiOptions($this->limitOptions);
|
||||||
if (isset($storedCrit["limit"])) {
|
if (isset($storedCrit["limit"])) {
|
||||||
$limit->setValue($storedCrit["limit"]["modifier"]);
|
$limit->setValue($storedCrit["limit"]["modifier"]);
|
||||||
}
|
}
|
||||||
|
@ -262,19 +261,117 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
|
|
||||||
$this->setDecorators(array(
|
$this->setDecorators(array(
|
||||||
array('ViewScript', array('viewScript' => 'form/smart-block-criteria.phtml', "openOption"=> $openSmartBlockOption,
|
array('ViewScript', array('viewScript' => 'form/smart-block-criteria.phtml', "openOption"=> $openSmartBlockOption,
|
||||||
'criteriasLength' => count($criteriaOptions), 'poolCount' => $files['count'], 'modRowMap' => $modRowMap))
|
'criteriasLength' => count($this->criteriaOptions), 'poolCount' => $files['count'], 'modRowMap' => $modRowMap))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
function isValid($params){
|
function preValidation($params) {
|
||||||
Logging::log("isvalid called");
|
$data = Application_Model_Block::organizeSmartPlyalistCriteria($params['data']);
|
||||||
$isValid = true;
|
// add elelments that needs to be added
|
||||||
// reconstruct the params['criteria'] so we can populate the form
|
// set multioption for modifier according to creiteria_field
|
||||||
$formData = array();
|
$modRowMap = array();
|
||||||
foreach ($params['data'] as $ele) {
|
foreach ($data['criteria'] as $critKey=>$d) {
|
||||||
$formData[$ele['name']] = $ele['value'];
|
$count = 1;
|
||||||
|
foreach($d as $modKey=>$modInfo) {
|
||||||
|
if ($modKey == 0) {
|
||||||
|
$eleCrit = $this->getElement("sp_criteria_field_".$critKey."_".$modKey);
|
||||||
|
$eleCrit->setValue($this->criteriaOptions[$modInfo['sp_criteria_field']]);
|
||||||
|
$eleCrit->setAttrib("disabled", null);
|
||||||
|
|
||||||
|
$eleMod = $this->getElement("sp_criteria_modifier_".$critKey."_".$modKey);
|
||||||
|
$criteriaType = $this->criteriaTypes[$modInfo['sp_criteria_field']];
|
||||||
|
if ($criteriaType == "s") {
|
||||||
|
$eleMod->setMultiOptions($this->stringCriteriaOptions);
|
||||||
|
} else if ($criteriaType == "n") {
|
||||||
|
$eleMod->setMultiOptions($this->numericCriteriaOptions);
|
||||||
|
} else {
|
||||||
|
$eleMod->setMultiOptions(array('0' => 'Select modifier'));
|
||||||
|
}
|
||||||
|
$eleMod->setValue($modInfo['sp_criteria_modifier']);
|
||||||
|
$eleMod->setAttrib("disabled", null);
|
||||||
|
|
||||||
|
$eleValue = $this->getElement("sp_criteria_value_".$critKey."_".$modKey);
|
||||||
|
$eleValue->setValue($modInfo['sp_criteria_value']);
|
||||||
|
$eleValue->setAttrib("disabled", null);
|
||||||
|
|
||||||
|
if (isset($modInfo['sp_criteria_extra'])) {
|
||||||
|
$eleExtra = $this->getElement("sp_criteria_extra_".$critKey."_".$modKey);
|
||||||
|
$eleExtra->setValue($modInfo['sp_criteria_extra']);
|
||||||
|
$eleValue->setAttrib('class', 'input_text sp_extra_input_text');
|
||||||
|
$eleExtra->setAttrib("disabled", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$criteria = new Zend_Form_Element_Select("sp_criteria_field_".$critKey."_".$modKey);
|
||||||
|
$criteria->setAttrib('class', 'input_select sp_input_select sp-invisible')
|
||||||
|
->setValue('Select criteria')
|
||||||
|
->setDecorators(array('viewHelper'))
|
||||||
|
->setMultiOptions($this->criteriaOptions);
|
||||||
|
|
||||||
|
$criteriaType = $this->criteriaTypes[$modInfo['sp_criteria_field']];
|
||||||
|
$criteria->setValue($this->criteriaOptions[$modInfo['sp_criteria_field']]);
|
||||||
|
$this->addElement($criteria);
|
||||||
|
|
||||||
|
/****************** MODIFIER ***********/
|
||||||
|
$criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_".$critKey."_".$modKey);
|
||||||
|
$criteriaModifers->setValue('Select modifier')
|
||||||
|
->setAttrib('class', 'input_select sp_input_select')
|
||||||
|
->setDecorators(array('viewHelper'));
|
||||||
|
|
||||||
|
if ($criteriaType == "s") {
|
||||||
|
$criteriaModifers->setMultiOptions($this->stringCriteriaOptions);
|
||||||
|
} else if ($criteriaType == "n") {
|
||||||
|
$criteriaModifers->setMultiOptions($this->numericCriteriaOptions);
|
||||||
|
} else {
|
||||||
|
$criteriaModifers->setMultiOptions(array('0' => 'Select modifier'));
|
||||||
|
}
|
||||||
|
$criteriaModifers->setValue($modInfo['sp_criteria_modifier']);
|
||||||
|
$this->addElement($criteriaModifers);
|
||||||
|
|
||||||
|
/****************** VALUE ***********/
|
||||||
|
$criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_".$critKey."_".$modKey);
|
||||||
|
$criteriaValue->setAttrib('class', 'input_text sp_input_text')
|
||||||
|
->setDecorators(array('viewHelper'));
|
||||||
|
$criteriaValue->setValue($modInfo['sp_criteria_value']);
|
||||||
|
$this->addElement($criteriaValue);
|
||||||
|
|
||||||
|
/****************** EXTRA ***********/
|
||||||
|
$criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$critKey."_".$modKey);
|
||||||
|
$criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')
|
||||||
|
->setDecorators(array('viewHelper'));
|
||||||
|
if (isset($modInfo['sp_criteria_extra'])) {
|
||||||
|
$criteriaExtra->setValue($modInfo['sp_criteria_extra']);
|
||||||
|
$criteriaValue->setAttrib('class', 'input_text sp_extra_input_text');
|
||||||
|
}else{
|
||||||
|
$criteriaExtra->setAttrib('disabled', 'disabled');
|
||||||
|
}
|
||||||
|
$this->addElement($criteriaExtra);
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$modRowMap[$critKey] = $count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$decorator = $this->getDecorator("ViewScript");
|
||||||
|
$existingModRow = $decorator->getOption("modRowMap");
|
||||||
|
foreach ($modRowMap as $key=>$v) {
|
||||||
|
$existingModRow[$key] = $v;
|
||||||
|
}
|
||||||
|
$decorator->setOption("modRowMap", $existingModRow);
|
||||||
|
|
||||||
|
// reconstruct the params['criteria'] so we can populate the form
|
||||||
|
$formData = array();
|
||||||
|
foreach ($params['data'] as $ele) {
|
||||||
|
$formData[$ele['name']] = $ele['value'];
|
||||||
|
}
|
||||||
|
|
||||||
$this->populate($formData);
|
$this->populate($formData);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isValid($params){
|
||||||
|
$isValid = true;
|
||||||
|
$data = $this->preValidation($params);
|
||||||
$criteria2PeerMap = array(
|
$criteria2PeerMap = array(
|
||||||
0 => "Select criteria",
|
0 => "Select criteria",
|
||||||
"album_title" => "DbAlbumTitle",
|
"album_title" => "DbAlbumTitle",
|
||||||
|
@ -303,7 +400,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
"track_number" => "DbTrackNumber",
|
"track_number" => "DbTrackNumber",
|
||||||
"year" => "DbYear"
|
"year" => "DbYear"
|
||||||
);
|
);
|
||||||
$data = Application_Model_Block::organizeSmartPlyalistCriteria($params['data']);
|
|
||||||
// things we need to check
|
// things we need to check
|
||||||
// 1. limit value shouldn't be empty and has upperbound of 24 hrs
|
// 1. limit value shouldn't be empty and has upperbound of 24 hrs
|
||||||
// 2. sp_criteria or sp_criteria_modifier shouldn't be 0
|
// 2. sp_criteria or sp_criteria_modifier shouldn't be 0
|
||||||
|
|
|
@ -57,6 +57,13 @@
|
||||||
<span class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></span>
|
<span class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></span>
|
||||||
<?php echo $this->element->getElement('sp_limit_value')?>
|
<?php echo $this->element->getElement('sp_limit_value')?>
|
||||||
<?php echo $this->element->getElement('sp_limit_options') ?>
|
<?php echo $this->element->getElement('sp_limit_options') ?>
|
||||||
|
<?php if($this->element->getElement("sp_limit_value")->hasErrors()) : ?>
|
||||||
|
<?php foreach($this->element->getElement("sp_limit_value")->getMessages() as $error): ?>
|
||||||
|
<span class='errors sp-errors'>
|
||||||
|
<?php echo $error; ?>
|
||||||
|
</span>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php endif; ?>
|
||||||
<br />
|
<br />
|
||||||
</dd>
|
</dd>
|
||||||
<div class='sp_text_font sp_text_font_bold'>
|
<div class='sp_text_font sp_text_font_bold'>
|
||||||
|
|
|
@ -441,14 +441,12 @@ function getCriteriaOptionType(e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function callback(data, type) {
|
function callback(data, type) {
|
||||||
var form = $('#smart-playlist-form'),
|
var json = $.parseJSON(data),
|
||||||
json = $.parseJSON(data),
|
|
||||||
dt = $('table[id="library_display"]').dataTable();
|
dt = $('table[id="library_display"]').dataTable();
|
||||||
|
|
||||||
form.find('span[class="errors sp-errors"]').remove();
|
|
||||||
if (type == 'shuffle' || type == 'generate') {
|
if (type == 'shuffle' || type == 'generate') {
|
||||||
AIRTIME.playlist.fnOpenPlaylist(json);
|
AIRTIME.playlist.fnOpenPlaylist(json);
|
||||||
form = $('#smart-playlist-form');
|
var form = $('#smart-playlist-form');
|
||||||
if (json.result == "0") {
|
if (json.result == "0") {
|
||||||
if (type == 'shuffle') {
|
if (type == 'shuffle') {
|
||||||
form.find('.success').text('Smart playlist shuffled');
|
form.find('.success').text('Smart playlist shuffled');
|
||||||
|
@ -462,6 +460,7 @@ function callback(data, type) {
|
||||||
form.find('#smart_playlist_options').removeClass("closed");
|
form.find('#smart_playlist_options').removeClass("closed");
|
||||||
} else {
|
} else {
|
||||||
AIRTIME.playlist.fnOpenPlaylist(json);
|
AIRTIME.playlist.fnOpenPlaylist(json);
|
||||||
|
var form = $('#smart-playlist-form');
|
||||||
if (json.result == "0") {
|
if (json.result == "0") {
|
||||||
$('#sp-success-saved').text('Smart playlist saved');
|
$('#sp-success-saved').text('Smart playlist saved');
|
||||||
$('#sp-success-saved').show();
|
$('#sp-success-saved').show();
|
||||||
|
@ -470,6 +469,7 @@ function callback(data, type) {
|
||||||
var dt = $('table[id="library_display"]').dataTable();
|
var dt = $('table[id="library_display"]').dataTable();
|
||||||
dt.fnStandingRedraw();
|
dt.fnStandingRedraw();
|
||||||
}
|
}
|
||||||
|
form.find('#smart_playlist_options').removeClass("closed");
|
||||||
}
|
}
|
||||||
setTimeout(removeSuccessMsg, 5000);
|
setTimeout(removeSuccessMsg, 5000);
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,7 @@ var criteriaTypes = {
|
||||||
"album_title" : "s",
|
"album_title" : "s",
|
||||||
"artist_name" : "s",
|
"artist_name" : "s",
|
||||||
"bit_rate" : "n",
|
"bit_rate" : "n",
|
||||||
"bpm" : "s",
|
"bpm" : "n",
|
||||||
"comments" : "s",
|
"comments" : "s",
|
||||||
"composer" : "s",
|
"composer" : "s",
|
||||||
"conductor" : "s",
|
"conductor" : "s",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue