On 9/16/2011 12:16 PM, Endi Sukma Dewata wrote:
The service type field in the service adder dialog has been modified
to use an editable combobox.
Ticket #1633.
Rebased (removed undo parameter).
--
Endi S. Dewata
From 8a135be9e592132524f3b15ef876ffc224c7d4a6 Mon Sep 17 00:00:00 2001
From: Endi S. Dewata <edew...@redhat.com>
Date: Fri, 16 Sep 2011 12:02:12 -0500
Subject: [PATCH] Use editable combobox for service type.
The service type field in the service adder dialog has been modified
to use an editable combobox.
Ticket #1633.
---
install/ui/service.js | 42 +++++++++++++++---------------------------
install/ui/widget.js | 34 +++++++++++++++++++++++++++++-----
2 files changed, 44 insertions(+), 32 deletions(-)
diff --git a/install/ui/service.js b/install/ui/service.js
index 87b0bbf20bd5aff1240980c5e19d1cd7db52266e..ac1c1d2376ac7738a9bf1ee1503cf4533ad24dfa 100644
--- a/install/ui/service.js
+++ b/install/ui/service.js
@@ -78,31 +78,6 @@ IPA.entity_factories.service = function() {
};
-IPA.service_select_widget = function(spec) {
-
- var that = IPA.text_widget(spec);
- var known_services = ["", "cifs", "DNS", "ftp", "HTTP","imap", "ldap",
- "libvirt","nfs","qpidd","smtp"];
-
- that.parent_create = that.create;
-
- that.create = function(container) {
-
- var select_widget = $('<select/>');
- for (var i = 0; i < known_services.length; i += 1){
- select_widget.append($('<option/>',{
- text: known_services[i],
- click: function(){
- that.input.val(this.value);
- }
- }));
- }
- container.append(select_widget);
- that.parent_create(container);
- };
- return that;
-};
-
IPA.service_add_dialog = function(spec) {
spec = spec || {};
@@ -114,10 +89,23 @@ IPA.service_add_dialog = function(spec) {
entity: spec.entity,
hidden: true
})).
- field(IPA.service_select_widget({
+ field(IPA.combobox_widget({
name: 'service',
label: IPA.messages.objects.service.service,
- size: 20,
+ options: [
+ 'cifs',
+ 'DNS',
+ 'ftp',
+ 'HTTP',
+ 'imap',
+ 'ldap',
+ 'libvirt',
+ 'nfs',
+ 'smtp',
+ 'qpidd'
+ ],
+ editable: true,
+ size: 10,
entity: spec.entity,
param_info: { required: true }
})).
diff --git a/install/ui/widget.js b/install/ui/widget.js
index f32dfbb18479fb5020e9ae7c2987e29321c833ef..8d425412de05308bf2fa886a6e0eed6aae61e597 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -1598,8 +1598,9 @@ IPA.combobox_widget = function(spec) {
that.editable = spec.editable;
that.searchable = spec.searchable;
- that.list_size = spec.list_size || 5;
+ that.size = spec.size || 5;
that.empty_option = spec.empty_option === undefined ? true : spec.empty_option;
+ that.options = spec.options || [];
that.create = function(container) {
that.widget_create(container);
@@ -1688,7 +1689,7 @@ IPA.combobox_widget = function(spec) {
that.list = $('<select/>', {
name: 'list',
- size: that.list_size,
+ size: that.size,
style: 'width: 100%',
change: function() {
var value = $('option:selected', that.list).val();
@@ -1720,7 +1721,30 @@ IPA.combobox_widget = function(spec) {
return that.list_container.css('visibility') == 'visible';
};
- that.search = function(filter) {
+ that.search = function(filter, on_success, on_error) {
+
+ that.remove_options();
+
+ if (that.empty_option) {
+ that.create_option();
+ }
+
+ for (var i=0; i<that.options.length; i++) {
+ var option = that.options[i];
+
+ var label, value;
+ if (option instanceof Object) {
+ label = option.label;
+ value = option.value;
+ } else {
+ label = option;
+ value = option;
+ }
+
+ that.create_option(label, value);
+ }
+
+ if (on_success) on_success.call(this);
};
that.update = function() {
@@ -1792,9 +1816,9 @@ IPA.combobox_widget = function(spec) {
return value === '' ? [] : [value];
};
- that.create_option = function(text, value) {
+ that.create_option = function(label, value) {
return $('<option/>', {
- text: text,
+ text: label,
value: value
}).appendTo(that.list);
};
--
1.7.5.1
_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel