From 5f48df48d4af740ba09197d0f07415e8e76e608e Mon Sep 17 00:00:00 2001 From: Pavel Vomacka Date: Jun 09 2016 12:20:02 +0000 Subject: DNS Locations: WebUI part WebUI part of DNS Location feature. https://fedorahosted.org/freeipa/ticket/5905 Reviewed-By: Petr Vobornik --- diff --git a/install/ui/src/freeipa/navigation/menu_spec.js b/install/ui/src/freeipa/navigation/menu_spec.js index fb64cca..0afc7da 100644 --- a/install/ui/src/freeipa/navigation/menu_spec.js +++ b/install/ui/src/freeipa/navigation/menu_spec.js @@ -226,6 +226,11 @@ var nav = {}; hidden: true }, { + entity: 'location', + facet: 'search', + hidden: true + }, + { facet: 'topology-graph', hidden: true } diff --git a/install/ui/src/freeipa/topology.js b/install/ui/src/freeipa/topology.js index c26dc68..290dc38 100644 --- a/install/ui/src/freeipa/topology.js +++ b/install/ui/src/freeipa/topology.js @@ -51,7 +51,8 @@ var topology = IPA.topology = { suffix_search: 'topologysuffix_search', server_search: 'server_search', domainlevel: 'domainlevel_details', - topologygraph: 'topology-graph' + topologygraph: 'topology-graph', + location_search: 'location_search' } } }; @@ -193,6 +194,14 @@ return { var make_server_spec = function() { return { name: 'server', + policies: [ + { + $factory: IPA.facet_update_policy, + source_facet: 'details', + dest_entity: 'location', + dest_facet: 'details' + } + ], facets: [ { $type: 'search', @@ -212,7 +221,6 @@ return { }, { $type: 'details', - no_update: true, disable_facet_tabs: true, sections: [ { @@ -221,7 +229,18 @@ return { { name: 'cn', read_only: true }, { name: 'ipamindomainlevel', read_only: true }, { name: 'ipamaxdomainlevel', read_only: true }, - { $type: 'multivalued', name: 'iparepltopomanagedsuffix_topologysuffix', read_only: true } + { $type: 'multivalued', name: 'iparepltopomanagedsuffix_topologysuffix', read_only: true }, + { + $type: 'entity_select', + name: 'ipalocation_location', + other_entity: 'location', + other_field: 'idnsname', + flags: ['w_if_no_aci'] + }, + { + name: 'ipalocationweight', + placeholder: '100' + } ] } ] @@ -272,6 +291,227 @@ topology.domainlevel_adapter = declare([mod_field.Adapter], { }); +var make_location_spec = function() { +return { + name: 'location', + policies: [ + { + $factory: IPA.facet_update_policy, + source_facet: 'details', + dest_entity: 'server', + dest_facet: 'details' + }, + { + $factory: IPA.facet_update_policy, + source_facet: 'details', + dest_entity: 'location', + dest_facet: 'search' + } + ], + facets: [ + { + $type: 'search', + disable_facet_tabs: false, + tabs_in_sidebar: true, + tab_label: '@mo:location.label', + facet_groups: [topology.search_facet_group], + facet_group: 'search', + columns: [ + 'idnsname', + 'description' + ] + }, + { + $type: 'details', + disable_facet_tabs: true, + section_layout_class: 'col-sm-12', + sections: [ + { + name: 'general', + label: '@i18n:details.general', + fields: [ + 'idnsname', + { + $type: 'textarea', + name: 'description' + } + ] + }, + { + $factory: IPA.section, + name: 'servers', + label: '@mo:server.label', + fields: [ + { + $type: 'location_association_table', + adapter: topology.location_adapter, + other_entity: 'server', + footer: false, + name: 'cn', + columns: [ + { + name: 'cn', + link: true + }, + { + name: 'ipalocationweight' + }, + { + name: 'location_relative_weight' + } + ] + } + ] + } + ] + } + ], + adder_dialog: { + fields: [ + { + $type: 'text', + name: 'idnsname', + required: true + }, + 'description' + ] + } +};}; + +topology.location_adapter = declare([mod_field.Adapter], { + load: function(data) { + var result = this.get_record(data); + if (result.servers_server === undefined) return []; + + result = result.servers_server; + + this.result_name = 'servers'; + var servers = this.get_record(data); + this.result_name = 'result'; + + var output = []; + + for (var i=0, l=result.length; i