From b9ad279ad2d8d93dd501115a028783cf8fe7fcbd Mon Sep 17 00:00:00 2001
From: Adam Young
Date: Wed, 19 Jan 2011 12:26:14 -0500
Subject: rename static to ui
Directory rename
---
install/ui/search.js | 462 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 462 insertions(+)
create mode 100644 install/ui/search.js
(limited to 'install/ui/search.js')
diff --git a/install/ui/search.js b/install/ui/search.js
new file mode 100644
index 00000000..934000b9
--- /dev/null
+++ b/install/ui/search.js
@@ -0,0 +1,462 @@
+/*jsl:import ipa.js */
+
+/* Authors:
+ * Pavel Zuna
+ * Adam Young
+ * Endi S. Dewata
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/* REQUIRES: ipa.js */
+
+IPA.search_widget = function (spec) {
+
+ spec = spec || {};
+
+ var that = IPA.table_widget(spec);
+
+ that.facet = spec.facet;
+
+ that.create = function(container) {
+
+ var search_controls = $('', {
+ 'class': 'search-controls'
+ }).appendTo(container);
+
+ var search_filter = $('', {
+ 'class': 'search-filter',
+ 'name': 'search-filter'
+ }).appendTo(search_controls);
+
+ search_controls.append(IPA.create_network_spinner());
+
+ this.filter = $('', {
+ 'type': 'text',
+ 'name': 'search-' + that.entity_name + '-filter'
+ }).appendTo(search_filter);
+
+ $('', {
+ 'type': 'button',
+ 'name': 'find',
+ 'value': 'Find'
+ }).appendTo(search_filter);
+
+ var action_panel = that.facet.get_action_panel();
+ var li = $('.action-controls', action_panel);
+
+ var search_buttons = $('', {
+ 'class': 'search-buttons'
+ }).appendTo(li);
+
+ $('', {
+ 'type': 'button',
+ 'name': 'remove',
+ 'value': 'Remove'
+ }).appendTo(search_buttons);
+
+ $('', {
+ 'type': 'button',
+ 'name': 'add',
+ 'value': 'Add'
+ }).appendTo(search_buttons);
+
+ $('', {
+ 'class': 'search-results'
+ }).appendTo(container);
+
+ that.table_create(container);
+ };
+
+ that.setup = function(container) {
+
+ that.table_setup(container);
+
+ var search_filter = $('span[name=search-filter]', that.container);
+
+ var button = $('input[name=find]', search_filter);
+ that.find_button = IPA.button({
+ 'label': IPA.messages.button.find,
+ 'icon': 'ui-icon-search',
+ 'click': function() { that.find(that.container); }
+ });
+ button.replaceWith(that.find_button);
+
+ var action_panel = that.facet.get_action_panel();
+ var search_buttons = $('.search-buttons', action_panel);
+
+ button = $('input[name=remove]', search_buttons);
+ that.remove_button = IPA.action_button({
+ 'label': IPA.messages.button.remove,
+ 'icon': 'ui-icon-trash',
+ 'click': function() { that.remove(that.container); }
+ });
+ button.replaceWith(that.remove_button);
+
+ button = $('input[name=add]', search_buttons);
+ that.add_button = IPA.action_button({
+ 'label': IPA.messages.button.add,
+ 'icon': 'ui-icon-plus',
+ 'click': function() { that.add(that.container); }
+ });
+ button.replaceWith(that.add_button);
+
+ var filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
+ this.filter.val(filter);
+ };
+
+ that.find = function(container) {
+ var filter = this.filter.val();
+ var state = {};
+ state[that.entity_name + '-filter'] = filter;
+ $.bbq.pushState(state);
+ };
+
+ that.add = function(container) {
+
+ var entity = IPA.get_entity(that.entity_name);
+
+ var dialog = entity.get_dialog('add');
+ dialog.open(that.container);
+
+ return false;
+ };
+
+ that.select_changed = function(){
+ var count = 0;
+ var pkey;
+ $('input[name=select]:checked', that.tbody).each(function(input){
+ count += 1;
+ pkey = $(this).val();
+ });
+
+ var action_panel = that.facet.get_action_panel();
+ if(count == 1){
+ $('li.entity-facet', action_panel).
+ removeClass('entity-facet-disabled');
+ var state = {};
+ $('input[id=pkey]', action_panel).val(pkey);
+ }else{
+ $('li.entity-facet', action_panel).
+ addClass('entity-facet-disabled');
+ $('input', action_panel).val(null);
+
+ }
+ return false;
+ };
+
+
+ that.remove = function(container) {
+
+ var values = that.get_selected_values();
+
+ if (!values.length) {
+ alert('Select '+that.label+' to be removed.');
+ return;
+ }
+
+ var title = 'Remove '+that.label;
+
+ var dialog = IPA.deleter_dialog({
+ 'title': title,
+ 'parent': that.container,
+ 'values': values
+ });
+
+ dialog.remove = function() {
+
+ var batch = IPA.batch_command({
+ 'on_success': function() {
+ that.refresh();
+ dialog.close();
+ },
+ 'on_error': function() {
+ that.refresh();
+ dialog.close();
+ }
+ });
+
+ for (var i=0; iError: '+error_thrown.name+'
');
+ summary.append(''+error_thrown.title+'
');
+ summary.append(''+error_thrown.message+'
');
+ }
+
+ var filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
+ IPA.cmd(
+ 'find', [filter], {all: true}, on_success, on_error,
+ that.entity_name);
+ };
+
+ return that;
+};
+
+IPA.search_facet = function (spec) {
+
+ spec = spec || {};
+
+ spec.display_class = 'search-facet';
+
+ var that = IPA.facet(spec);
+
+ that.init = spec.init || init;
+ that.create = spec.create || create;
+ that.setup = spec.setup || setup;
+ that.refresh = spec.refresh || refresh;
+
+ that.columns = [];
+ that.columns_by_name = {};
+
+ that.__defineGetter__("entity_name", function(){
+ return that._entity_name;
+ });
+
+ that.__defineSetter__("entity_name", function(entity_name){
+ that._entity_name = entity_name;
+
+ for (var i=0; i', {
+ 'href': '#'+value,
+ 'html': value,
+ 'click': function (value) {
+ return function() {
+ var state = IPA.tab_state(that.entity_name);
+ state[that.entity_name + '-facet'] = 'details';
+ state[that.entity_name + '-pkey'] = value;
+ $.bbq.pushState(state);
+ return false;
+ };
+ }(value)
+ }).appendTo(container);
+ };
+ };
+
+ function init() {
+
+ that.facet_init();
+
+ that.table = IPA.search_widget({
+ 'id': that.entity_name+'-search',
+ 'name': 'search', 'label': IPA.metadata[that.entity_name].label,
+ 'entity_name': that.entity_name,
+ 'facet': that
+ });
+
+ for (var i=0; i', { 'name': 'search' }).appendTo(container);
+
+ that.table.create(span);
+
+ }
+
+ function setup(container) {
+ that.facet_setup(container);
+ var span = $('span[name=search]', that.container);
+ that.table.setup(span);
+ }
+
+ function refresh() {
+ that.filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
+ that.table.refresh();
+ }
+
+ if (spec.columns) {
+ for (var i=0; i');
+ var tr = tbody.children().last();
+ search_generate_checkbox_td(tr, pkey_value);
+
+ var ths = thead.find('th');
+ for (var i = 1; i < ths.length; ++i) {
+ var jobj = $(ths[i]);
+ var attr = jobj.attr('abbr');
+ var value = entry_attrs[attr];
+
+ var column = facet ? facet.get_column(attr) : null;
+ var render_call = window[jobj.attr('title')];
+
+ if (column && column.setup) {
+ column.setup(tr, attr, value, entry_attrs);
+
+ } else if (typeof render_call == 'function') {
+ render_call(tr, attr, value, entry_attrs);
+
+ } else
+ search_generate_td(tr, attr, value, entry_attrs);
+ }
+
+ tbody.find('.search-a-pkey').click(function () {
+ var jobj = $(this);
+
+ var state = {};
+ state[obj_name + '-facet'] = 'details';
+ state[obj_name + '-pkey'] = $(this).text();
+ $.bbq.pushState(state);
+
+ return (false);
+ });
+}
+
+function search_generate_checkbox_td(tr, pkey)
+{
+ var checkbox = $('', {
+ name: pkey,
+ title: pkey,
+ type: 'checkbox',
+ 'class': 'search-selector'
+ });
+ var td = $(' | ');
+
+ td.append(checkbox);
+ tr.append(td);
+}
+
+var _search_td_template = 'V | ';
+var _search_a_pkey_template = 'V';
+
+function search_generate_td(tr, attr, value, entry_attrs)
+{
+ var obj_name = tr.closest('.entity-container').attr('title');
+
+ var param_info = IPA.get_param_info(obj_name, attr);
+ if (param_info && param_info['primary_key'])
+ value = _search_a_pkey_template.replace('V', value);
+
+ tr.append(_search_td_template.replace('A', attr).replace('V', value));
+}
--
cgit