diff options
author | Adam Young <ayoung@redhat.com> | 2011-01-19 12:26:14 -0500 |
---|---|---|
committer | Endi Sukma Dewata <edewata@people01.fedoraproject.org> | 2011-01-20 14:12:47 +0000 |
commit | b9ad279ad2d8d93dd501115a028783cf8fe7fcbd (patch) | |
tree | 3c3bd271231ff635278b1cf88bfbd79d792de23d /install/static/entity.js | |
parent | 835436df1549578932705f5722bc78ec985c2f69 (diff) | |
download | freeipa.git-b9ad279ad2d8d93dd501115a028783cf8fe7fcbd.tar.gz freeipa.git-b9ad279ad2d8d93dd501115a028783cf8fe7fcbd.tar.xz freeipa.git-b9ad279ad2d8d93dd501115a028783cf8fe7fcbd.zip |
rename static to ui
Directory rename
Diffstat (limited to 'install/static/entity.js')
-rw-r--r-- | install/static/entity.js | 592 |
1 files changed, 0 insertions, 592 deletions
diff --git a/install/static/entity.js b/install/static/entity.js deleted file mode 100644 index 9c58ee3d..00000000 --- a/install/static/entity.js +++ /dev/null @@ -1,592 +0,0 @@ -/*jsl:import ipa.js */ -/*jsl:import navigation.js */ - -/* Authors: - * Pavel Zuna <pzuna@redhat.com> - * Endi S. Dewata <edewata@redhat.com> - * Adam Young <ayoung@redhat.com> - * - * 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 <http://www.gnu.org/licenses/>. - */ - -/* REQUIRES: ipa.js, details.js, search.js, add.js */ - -IPA.facet = function (spec) { - - spec = spec || {}; - - var that = {}; - that.display_class = spec.display_class || 'entity-facet'; - that.name = spec.name; - that.label = spec.label; - that._entity_name = spec.entity_name; - - that.init = spec.init || init; - that.create = spec.create || create; - that.setup = spec.setup || setup; - that.load = spec.load || load; - - that.__defineGetter__("entity_name", function(){ - return that._entity_name; - }); - - that.__defineSetter__("entity_name", function(entity_name){ - that._entity_name = entity_name; - }); - - that.create_action_panel = IPA.facet_create_action_panel; - - function init() { - } - - function create(container) { - } - - function setup(container) { - that.container = container; - } - - function load() { - } - - that.get_client_area = function() { - return $('.client', that.container); - }; - - that.get_action_panel = function() { - return $('.action-panel', that.container); - }; - - that.facet_init = that.init; - that.facet_create = that.create; - that.facet_setup = that.setup; - - return that; -}; - - -IPA.entity = function (spec) { - - spec = spec || {}; - - var that = {}; - that.name = spec.name; - that.label = spec.label; - - that.setup = spec.setup || IPA.entity_setup; - - that.dialogs = []; - that.dialogs_by_name = {}; - - that.facets = []; - that.facets_by_name = {}; - - that.facet_name = null; - - that.autogenerate_associations = false; - - that.associations = []; - that.associations_by_name = {}; - - that.get_dialog = function(name) { - return that.dialogs_by_name[name]; - }; - - that.add_dialog = function(dialog) { - dialog.entity_name = that.name; - that.dialogs.push(dialog); - that.dialogs_by_name[dialog.name] = dialog; - }; - - that.get_facet = function(name) { - return that.facets_by_name[name]; - }; - - that.add_facet = function(facet) { - facet.entity_name = that.name; - that.facets.push(facet); - that.facets_by_name[facet.name] = facet; - }; - - that.get_associations = function() { - return that.associations; - }; - - that.get_association = function(name) { - return that.associations_by_name[name]; - }; - - that.add_association = function(config) { - that.associations.push(config); - that.associations_by_name[config.name] = config; - }; - - that.create_association = function(spec) { - var config = IPA.association_config(spec); - that.add_association(config); - return config; - }; - - that.create_association_facet = function(attribute_member, other_entity, label, facet_group) { - - if (!attribute_member) { - attribute_member = IPA.get_member_attribute( - that.entity_name, other_entity); - } - - return IPA.association_facet({ - 'name': attribute_member+'_'+other_entity, - 'label': label, - 'other_entity': other_entity, - 'facet_group': facet_group, - 'attribute_member': attribute_member - }); - }; - - that.create_association_facets = function() { - - var attribute_members = IPA.metadata[that.name].attribute_members; - - for (var attribute_member in attribute_members) { - - // skip non-assignable associations - if (attribute_member === 'memberindirect') continue; - if (attribute_member === 'enrolledby') continue; - - var other_entities = attribute_members[attribute_member]; - - for (var j = 0; j < other_entities.length; j++) { - var other_entity = other_entities[j]; - var other_entity_name = IPA.metadata[other_entity].label; - - var label = other_entity_name; - - var relationships = IPA.metadata[that.name].relationships; - - var relationship = relationships[attribute_member]; - if (!relationship) - relationship = ['Member', '', 'no_']; - var facet_group = relationship[0]; - - var facet = that.create_association_facet( - attribute_member, other_entity, label, facet_group); - - if (that.get_facet(facet.name)) continue; - - that.add_facet(facet); - } - } - }; - - that.init = function() { - - if (!that.label) { - that.label = IPA.metadata[that.name].label; - } - - if (that.autogenerate_associations) { - that.create_association_facets(); - } - - for (var i=0; i<that.facets.length; i++) { - var facet = that.facets[i]; - facet.init(); - } - }; - - that.entity_init = that.init; - - return that; -}; - - -/* use this to track individual changes between two hashchange events */ -var window_hash_cache = {}; - -/*renamed to avoid clash with IPA.get_entity*/ -IPA.fetch_entity = function (entity_name) { - - var entity = IPA.get_entity(entity_name); - if (entity) return entity; - - entity = IPA.entity({ - 'name': entity_name - }); - - IPA.add_entity(entity); - return entity; -}; - - -IPA.entity_get_search_facet = function (entity_name) { - - var entity = IPA.fetch_entity(entity_name); - - var facet = entity.get_facet('search'); - if (facet) return facet; - - facet = IPA.search_facet({ - 'name': 'search', - 'label': 'Search' - }); - entity.add_facet(facet); - - return facet; -}; - - -IPA.entity_set_search_definition = function (entity_name, data) { - - var facet = IPA.entity_get_search_facet(entity_name); - - for (var i=0; i<data.length; i++) { - var defn = data[i]; - facet.create_column({ - 'name': defn[0], - 'label': defn[1], - 'setup': defn[2] - }); - } -}; - - -IPA.entity_set_add_definition = function (entity_name, data) { - - var entity = IPA.fetch_entity(entity_name); - - var dialog = IPA.add_dialog({ - 'name': 'add', - 'title': data[1] - }); - entity.add_dialog(dialog); - - for (var i=0; i<data[2].length; i++) { - var field = data[2][i]; - dialog.add_field(IPA.text_widget({ - name: field[0], - label: field[1], - setup: field[2], - undo: false - })); - } - - dialog.init(); -}; - - -IPA.entity_get_add_dialog = function (entity_name) { - - var entity = IPA.fetch_entity(entity_name); - return entity.get_add_dialog(); -}; - - -IPA.entity_get_details_facet = function (entity_name) { - - var entity = IPA.fetch_entity(entity_name); - - var facet = entity.get_facet('details'); - if (facet) return facet; - - facet = IPA.details_facet({ - 'name': 'details' - }); - entity.add_facet(facet); - - return facet; -}; - - -IPA.entity_set_details_definition = function (entity_name, sections) { - - var facet = IPA.entity_get_details_facet(entity_name); - - for (var i=0; i<sections.length; i++) { - var section = sections[i]; - facet.add_section(section); - } -}; - - -IPA.entity_set_association_definition = function (entity_name, data) { - - var entity = IPA.fetch_entity(entity_name); - - entity.autogenerate_associations = true; - - for (var other_entity in data) { - var config = data[other_entity]; - entity.create_association({ - 'name': other_entity, - 'associator': config.associator, - 'add_method': config.add_method, - 'remove_method': config.remove_method - }); - } -}; - - -IPA.entity_set_facet_definition = function (entity_name, list) { - - var entity = IPA.fetch_entity(entity_name); - - for (var i=0; i<list.length; i++) { - var facet = list[i]; - entity.add_facet(facet); - } -}; - - -IPA.current_facet = function (entity){ - var facet_name = $.bbq.getState(entity.name + '-facet', true); - if (!facet_name && entity.facets.length) { - facet_name = entity.facets[0].name; - } - return facet_name; -}; - - -IPA.entity_setup = function (container) { - - var entity = this; - - var facet_name = IPA.current_facet(entity); - - - var facet = entity.get_facet(facet_name); - if (!facet) return; - - if (IPA.entity_name == entity.name) { - if (entity.facet_name == facet_name) { - if (!facet.is_dirty()) return; - - } else { - entity.facet_name = facet_name; - } - } else { - IPA.entity_name = entity.name; - } - - container.empty(); - - facet.create_action_panel(container); - facet.create(container); - container.children().last().addClass('client'); - facet.setup(container); - facet.refresh(); -}; - - -/*Returns the entity requested, as well as: - any nested tabs underneath it or - its parent tab and the others nested at the same level*/ - -IPA.nested_tabs = function(entity_name){ - - var siblings = []; - var nested_index; - var nested_entities; - - if (!IPA.tab_set) { - siblings.push(entity_name); - return siblings; - } - - for (var top_tab_index = 0; - top_tab_index < IPA.tab_set.length; - top_tab_index += 1){ - var top_tab = IPA.tab_set[top_tab_index]; - for (var subtab_index = 0; - subtab_index < top_tab.children.length; - subtab_index += 1){ - if(top_tab.children[subtab_index].name){ - if (top_tab.children[subtab_index].name === entity_name){ - siblings.push(entity_name); - if (top_tab.children[subtab_index].children){ - nested_entities = top_tab.children[subtab_index].children; - for ( nested_index = 0; - nested_index < nested_entities.length; - nested_index += 1){ - siblings.push (nested_entities[nested_index].name); - } - } - }else{ - if (top_tab.children[subtab_index].children){ - nested_entities = top_tab.children[subtab_index].children; - for (nested_index = 0; - nested_index < nested_entities.length; - nested_index += 1){ - if (nested_entities[nested_index].name === entity_name){ - siblings.push(top_tab.children[subtab_index].name); - for (var nested_index2 = 0; - nested_index2 < nested_entities.length; - nested_index2 += 1){ - siblings.push(nested_entities[nested_index2].name); - } - } - } - } - } - } - } - } - return siblings; -}; - -IPA.selected_icon = '▶ '; -IPA.back_icon = '◀ '; - -IPA. facet_create_action_panel = function(container) { - - var that = this; - var entity_name = that.entity_name; - var action_panel = $('<div/>', { - "class": "action-panel", - html: $('<h3>',{ - text: IPA.metadata[entity_name].label - }) - }).appendTo(container); - function build_link(other_facet,label){ - var li = $('<li/>', { - "class" : other_facet.display_class, - title: other_facet.name, - text: label, - click: function(entity_name, other_facet_name) { - return function() { - if($(this).hasClass('entity-facet-disabled')){ - return false; - } - var this_pkey = $('input[id=pkey]', action_panel).val(); - IPA.switch_and_show_page( - entity_name, other_facet_name, - this_pkey); - return false; - }; - }(entity_name, other_facet_name) - }); - return li; - } - /*Note, for debugging purposes, it is useful to set var pkey_type = 'text';*/ - var pkey_type = 'hidden'; - $('<input/>', { - 'type': pkey_type, - id:'pkey', - name:'pkey' - }).appendTo(action_panel); - var ul = $('<ul/>', {'class': 'action'}).appendTo(action_panel); - var entity = IPA.get_entity(entity_name); - var facet_name = IPA.current_facet(entity); - var other_facet = entity.facets[0]; - var other_facet_name = other_facet.name; - var nested_tabs = IPA.nested_tabs(entity_name); - var main_facet = build_link(other_facet,other_facet.label); - for (var nested_index = 0 ; - nested_index < nested_tabs.length; - nested_index += 1){ - if (nested_tabs[nested_index] === entity_name){ - /*assume for now that entities with only a single facet - do not have search*/ - if (entity.facets.length > 0 ){ - if ( entity.facets[0].name === IPA.current_facet( entity)){ - ul.append($('<li><span class="action-controls"/></li>')); - - }else{ - main_facet.html( - $('<span />',{ - "class":"input_link" - }). - append(IPA.back_icon + ' Back to List ')); - main_facet.addClass('back-to-search'); - main_facet.appendTo(ul); - } - ul.append($('<li><hr/></li>')); - - } - var facet_groups = {}; - var li; - for (var i=1; i<entity.facets.length; i++) { - other_facet = entity.facets[i]; - other_facet_name = other_facet.name; - - if (other_facet.facet_group) { - var facet_group = other_facet.facet_group; - if (!facet_groups[facet_group]) { - li = $('<li/>', { - 'class': 'entity-facet entity-facet-relation-label', - 'text': other_facet.facet_group, - 'title': other_facet.facet_group - }); - ul.append(li); - facet_groups[facet_group] = li; - } - li = facet_groups[facet_group]; - var link = build_link(other_facet, other_facet.label); - link.addClass('facet-group-member'); - li.after(link ); - /* - If we are on the current facet, we make the text black, non-clickable, - add an icon and make sure the action controls are positioned underneath it. - */ - if ( other_facet.name === IPA.current_facet( entity)){ - var text = link.text(); - link.text(''); - link.append($('<ul>'). - append($('<li />',{ - 'class': 'entity-facet-selected', - html: IPA.selected_icon + text - })). - append($('<li/>',{ - html:$('<span />',{ - 'class':"action-controls" - }) - }))); - } - facet_groups[facet_group] = li.next(); - } else { - var innerlist = $('<ul/>').appendTo(ul); - var facet_link = build_link(other_facet, other_facet.label); - facet_link.addClass('entity-facet-selected'); - facet_link.prepend(IPA.selected_icon); - innerlist.append(facet_link); - if ( other_facet.name === IPA.current_facet( entity)){ - - innerlist.append($('<li class="entity-facet"><span class="action-controls" /></li>')); - } - } - } - }else{ - $('<li/>', { - title: nested_tabs[nested_index], - text: IPA.metadata[nested_tabs[nested_index]].label, - "class": "search-facet", - click: function() { - var state = {}; - state[nested_tabs[0]+'-entity'] = - this.title; - nav_push_state(state); - return false; - } - }).appendTo(ul); - } - } - /*When we land on the search page, disable all facets - that require a pkey until one is selected*/ - if (facet_name === 'search'){ - $('.entity-facet', action_panel).addClass('entity-facet-disabled'); - } - return action_panel; -}; |