From 3d1f9b05e9ff165f5ba74c46f167fb73dbbf5bc9 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Mon, 4 Aug 2008 17:35:44 +0000 Subject: [PATCH] libs/cbi: Optimized Comboboxes --- i18n/english/luasrc/i18n/cbi.en.lua | 2 +- i18n/german/luasrc/i18n/cbi.de.lua | 2 +- libs/cbi/htdocs/luci-static/resources/cbi.js | 68 +++++++++++++++------------- 3 files changed, 38 insertions(+), 34 deletions(-) diff --git a/i18n/english/luasrc/i18n/cbi.en.lua b/i18n/english/luasrc/i18n/cbi.en.lua index ca1285d0a..012d7c5f6 100644 --- a/i18n/english/luasrc/i18n/cbi.en.lua +++ b/i18n/english/luasrc/i18n/cbi.en.lua @@ -4,5 +4,5 @@ cbi_invalid = "Error: Invalid input value" cbi_addopt = "-- Additional Field --" cbi_optional = " (optional)" cbi_sectempty = "This section contains no values yet" -cbi_manual = "-- manual --" +cbi_manual = "-- custom --" cbi_select = "-- Please choose --" diff --git a/i18n/german/luasrc/i18n/cbi.de.lua b/i18n/german/luasrc/i18n/cbi.de.lua index f34cb59b5..f2ed5ecd2 100644 --- a/i18n/german/luasrc/i18n/cbi.de.lua +++ b/i18n/german/luasrc/i18n/cbi.de.lua @@ -3,5 +3,5 @@ cbi_del = "Eintrag entfernen" cbi_invalid = "Error: Ungültige Eingabe" cbi_addopt = "-- Zusätzliches Feld --" cbi_sectempty = "Diese Sektion enthält noch keine Einträge" -cbi_manual = "-- manuell --" +cbi_manual = "-- benutzerdefiniert --" cbi_select = "-- Bitte auswählen --" \ No newline at end of file diff --git a/libs/cbi/htdocs/luci-static/resources/cbi.js b/libs/cbi/htdocs/luci-static/resources/cbi.js index 38e27d8f4..7cb2f7c1d 100644 --- a/libs/cbi/htdocs/luci-static/resources/cbi.js +++ b/libs/cbi/htdocs/luci-static/resources/cbi.js @@ -60,46 +60,50 @@ function cbi_bind(obj, type, callback, mode) { function cbi_combobox(id, values, def, man) { var obj = document.getElementById(id) - if (obj.value == "" || values[obj.value]) { - var sel = document.createElement("select") - obj.parentNode.appendChild(sel) + var sel = document.createElement("select"); + obj.parentNode.appendChild(sel); - if (obj.value == "") { - var optdef = document.createElement("option") - optdef.value = "" - optdef.appendChild(document.createTextNode(def)) - sel.appendChild(optdef) - } - - for (var i in values) { - var opt = document.createElement("option") - opt.value = i + if (obj.value == "") { + var optdef = document.createElement("option"); + optdef.value = ""; + optdef.appendChild(document.createTextNode(def)); + sel.appendChild(optdef); + } else if (!values[obj.value]) { + var opt = document.createElement("option"); + opt.value = obj.value; + opt.selected = "selected"; + opt.appendChild(document.createTextNode(obj.value)); + sel.appendChild(opt); + } - if (obj.value == i) { - opt.selected = "selected" - } + for (var i in values) { + var opt = document.createElement("option"); + opt.value = i; - opt.appendChild(document.createTextNode(values[i])) - sel.appendChild(opt) + if (obj.value == i) { + opt.selected = "selected"; } - var optman = document.createElement("option") - optman.value = "" - optman.appendChild(document.createTextNode(man)) - sel.appendChild(optman) + opt.appendChild(document.createTextNode(values[i])); + sel.appendChild(opt); + } + + var optman = document.createElement("option"); + optman.value = ""; + optman.appendChild(document.createTextNode(man)); + sel.appendChild(optman); - obj.style.display = "none" + obj.style.display = "none"; - cbi_bind(sel, "change", function() { - obj.value = sel.options[sel.selectedIndex].value + cbi_bind(sel, "change", function() { + obj.value = sel.options[sel.selectedIndex].value; - if (sel.selectedIndex == sel.options.length - 1) { - obj.style.display = "inline" - sel.parentNode.removeChild(sel) - obj.focus() - } - }) - } + if (sel.selectedIndex == sel.options.length - 1) { + obj.style.display = "inline"; + sel.parentNode.removeChild(sel); + obj.focus(); + } + }) } function cbi_combobox_init(id, values, def, man) { -- 2.11.0