From 14da847c4c7cd6cc2e6c1e34840ad9906404ca2b Mon Sep 17 00:00:00 2001 From: nathanvda Date: Mon, 18 Jun 2018 01:32:41 +0200 Subject: [PATCH 1/7] Add option to sort select-options The default option is not-sorted, which is what it used to be long ago. Not sure what is preferable. --- src/jquery.jeditable.js | 16 +++++++++------- tests/tests.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/jquery.jeditable.js b/src/jquery.jeditable.js index 810a88d..19c0028 100644 --- a/src/jquery.jeditable.js +++ b/src/jquery.jeditable.js @@ -668,13 +668,14 @@ var _supportInType = function (type) { for (key in json) { tuples.push([key, json[key]]); // Store: [key, value] } - // sort it - tuples.sort(function(a, b) { - a = a[1]; - b = b[1]; - return a < b ? -1 : (a > b ? 1 : 0); - }); - + if (settings.sort_select_options) { + // sort it + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; + return a < b ? -1 : (a > b ? 1 : 0); + }); + } // now add the options to our select var option; for (var i = 0; i < tuples.length; i++) { @@ -783,6 +784,7 @@ var _supportInType = function (type) { loadtype : 'GET', loadtext : 'Loading...', placeholder: 'Click to edit', + sort_select_options: false, loaddata : {}, submitdata : {}, ajaxoptions: {} diff --git a/tests/tests.js b/tests/tests.js index bcadba4..eac4678 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -24,3 +24,44 @@ QUnit.test('Enable/disable/destroy', function(assert) { elem.editable().editable('destroy'); assert.notOk(elem.data('event.editable')); }); + +QUnit.module("select-boxes"); +QUnit.test("Default: NOT Sorting select options", function(assert) { + elem.append( "Letter F" ); + + $.fn.editable.defaults.sort_select_options = false; + + $('#select-tester').editable('http://bla', { + type: 'select', + data: {"E": "Letter E", 'F': 'Letter F', 'D': 'Letter Disk'}, + selected: 'Letter F' + }); + + assert.equal( $( "#select-tester").attr('title'), "Click to edit", "Editable enabled: it sets the title" ); + $('#select-tester').click(); + assert.equal($('#select-tester form').length, 1, "Clicking Editable adds inline form") + + var options_list = [] + $('#select-tester option').each(function(name, val) { options_list.push(val.text); }); + + assert.deepEqual(options_list, ["Letter E", "Letter F", "Letter Disk"], "Does not sort the given options-list"); +}); +QUnit.test("Default: Sorting select options", function(assert) { + elem.append( "Letter F" ); + + $.fn.editable.defaults.sort_select_options = true; + + $('#select-sorted-tester').editable('http://bla', { + type: 'select', + data: {"E": "Letter E", 'F': 'Letter F', 'D': 'Letter Disk'}, + selected: 'Letter F' + }); + assert.equal( $( "#select-sorted-tester").attr('title'), "Click to edit", "Editable enabled: it sets the title" ); + $('#select-sorted-tester').click(); + assert.equal($('#select-sorted-tester form').length, 1, "Clicking Editable adds inline form") + + var options_list = [] + $('#select-sorted-tester option').each(function(name, val) { options_list.push(val.text); }); + + assert.deepEqual(options_list, ["Letter Disk", "Letter E", "Letter F"], "It does sort the given options list"); +}); From 6fc5db847e5d65b589682e47d898617ad1ae56d9 Mon Sep 17 00:00:00 2001 From: nathanvda Date: Mon, 18 Jun 2018 02:10:06 +0200 Subject: [PATCH 2/7] Use the key to set the selected value This fixes #167 --- src/jquery.jeditable.js | 12 ++++++------ tests/tests.js | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/jquery.jeditable.js b/src/jquery.jeditable.js index 19c0028..8ceaa42 100644 --- a/src/jquery.jeditable.js +++ b/src/jquery.jeditable.js @@ -688,14 +688,14 @@ var _supportInType = function (type) { if (key !== 'selected') { option = $('