You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2012/03/07 17:30:22 UTC
svn commit: r1298010 [7/8] - in /lucene/dev/trunk/solr:
core/src/java/org/apache/solr/handler/
core/src/java/org/apache/solr/servlet/ webapp/web/ webapp/web/css/
webapp/web/css/styles/ webapp/web/js/ webapp/web/js/lib/
webapp/web/js/scripts/ webapp/web...
Modified: lucene/dev/trunk/solr/webapp/web/js/scripts/schema-browser.js
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/webapp/web/js/scripts/schema-browser.js?rev=1298010&r1=1298009&r2=1298010&view=diff
==============================================================================
--- lucene/dev/trunk/solr/webapp/web/js/scripts/schema-browser.js (original)
+++ lucene/dev/trunk/solr/webapp/web/js/scripts/schema-browser.js Wed Mar 7 16:30:20 2012
@@ -1,1052 +1,1155 @@
-sammy.bind
-(
- 'schema_browser_navi',
- function( event, params )
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+var cookie_name = 'schema-browser_autoload';
+
+var luke_array_to_struct = function( array )
+{
+ var struct = {
+ keys : [],
+ values : []
+ };
+ for( var i = 0; i < array.length; i += 2 )
+ {
+ struct.keys.push( array[i] );
+ struct.values.push( array[i+1] );
+ }
+ return struct;
+}
+
+var luke_array_to_hash = function( array )
+{
+ var hash = {};
+ for( var i = 0; i < array.length; i += 2 )
+ {
+ hash[ array[i] ] = array[i+1];
+ }
+ return hash;
+}
+
+var load_terminfo = function( trigger_element, core_basepath, field, data_element, terminfo_element )
+{
+ var luke_url = core_basepath + '/admin/luke?wt=json&fl=' + field;
+ var topterms_count_element = $( '.topterms-holder .head input', terminfo_element );
+
+ var term_load_count = parseInt( topterms_count_element.val(), 10 );
+ if( term_load_count )
+ {
+ luke_url += '&numTerms=' + term_load_count;
+ }
+
+ $.ajax
+ (
{
- var related_navigation_element = $( '#related dl#f-df-t', params.schema_browser_element );
- var related_navigation_meta = $( '#related dl.ukf-dsf', params.schema_browser_element );
- var related_select_element = $( '#related select', params.schema_browser_element )
- var type = 'index';
+ url : luke_url,
+ dataType : 'json',
+ context : terminfo_element,
+ beforeSend : function( xhr, settings )
+ {
+ trigger_element
+ .addClass( 'loader' );
+ },
+ success : function( response, text_status, xhr )
+ {
+ trigger_element
+ .removeClass( 'loader' );
- var sammy_basepath = '#/' + $( 'p a', params.active_core ).html() + '/schema-browser';
-
- if( !related_navigation_meta.hasClass( 'done' ) )
+ var field_data = response.fields[field];
+
+ if( !field_data || !( field_data.topTerms && field_data.histogram ) )
+ {
+ terminfo_element
+ .addClass( 'disabled' );
+
+ return false;
+ }
+
+ var topterms_holder_element = $( '.topterms-holder', data_element );
+ var histogram_holder_element = $( '.histogram-holder', data_element );
+
+ if( !field_data.topTerms )
{
- if( app.schema_browser_data.unique_key_field )
+ topterms_holder_element
+ .hide();
+ }
+ else
+ {
+ topterms_holder_element
+ .show();
+
+ var topterms_table_element = $( 'ul', topterms_holder_element );
+
+ var topterms = field_data.topTerms;
+ var topterms_count = topterms.length;
+
+ var topterms_content = '';
+ var topterms_frq_last = null;
+
+ for( var i = 0; i < topterms_count; i += 2 )
+ {
+ if( topterms_frq_last !== topterms[i+1] )
{
- $( '.unique-key-field', related_navigation_meta )
- .show()
- .after
- (
- '<dd class="unique-key-field"><a href="' + sammy_basepath + '/field/' +
- app.schema_browser_data.unique_key_field + '">' +
- app.schema_browser_data.unique_key_field + '</a></dd>'
- );
+ if( topterms_frq_last )
+ {
+ topterms_content += '</ul></li>' + "\n";
}
- if( app.schema_browser_data.default_search_field )
- {
- $( '.default-search-field', related_navigation_meta )
- .show()
- .after
- (
- '<dd class="default-search-field"><a href="' + sammy_basepath + '/field/' +
- app.schema_browser_data.default_search_field + '">' +
- app.schema_browser_data.default_search_field + '</a></dd>'
- );
+ topterms_frq_last = topterms[i+1];
+ topterms_content += '<li class="clearfix">'
+ + '<p><span>' + topterms_frq_last.esc() + '</span></p>' + "\n"
+ + '<ul>' + "\n";
}
- related_navigation_meta
- .addClass( 'done' );
+ topterms_content += '<li><span>' + topterms[i].esc() + '</span></li>' + "\n";
+ }
+
+ topterms_content += '</li>';
+
+ topterms_count = topterms_count / 2;
+
+ $( 'input', trigger_element )
+ .val( topterms_count );
+
+ topterms_table_element
+ .html( topterms_content );
+
+ topterms_count_element
+ .val( topterms_count );
+
+ $( 'p.head .max', topterms_holder_element )
+ .html( field_data.distinct );
+
+ $( 'ul li:even', topterms_table_element )
+ .addClass( 'odd' );
}
- if( params.route_params )
+ if( !field_data.histogram )
{
- var type = params.route_params.splat[3];
- var value = params.route_params.splat[4];
+ histogram_holder_element
+ .hide();
+ }
+ else
+ {
+ histogram_holder_element
+ .show();
- var navigation_data = {
- 'fields' : [],
- 'copyfield_source' : [],
- 'copyfield_dest' : [],
- 'dynamic_fields' : [],
- 'types' : []
- }
+ var histogram_element = $( '.histogram', histogram_holder_element );
- $( 'option[value="' + params.route_params.splat[2] + '"]', related_select_element )
- .attr( 'selected', 'selected' );
+ var histogram_values = luke_array_to_hash( field_data.histogram );
+ var histogram_legend = '';
- if( 'field' === type )
- {
- navigation_data.fields.push( value );
- navigation_data.types.push( app.schema_browser_data.relations.f_t[value] );
+ histogram_holder_element
+ .show();
- if( app.schema_browser_data.relations.f_df[value] )
- {
- navigation_data.dynamic_fields.push( app.schema_browser_data.relations.f_df[value] );
- }
+ for( var key in histogram_values )
+ {
+ histogram_legend += '<dt><span>' + key + '</span></dt>' + "\n" +
+ '<dd title="' + key + '">' +
+ '<span>' + histogram_values[key] + '</span>' +
+ '</dd>' + "\n";
+ }
- if( 0 !== app.schema_browser_data.fields[value].copySources.length )
- {
- navigation_data.copyfield_source = app.schema_browser_data.fields[value].copySources;
- }
+ $( 'dl', histogram_holder_element )
+ .html( histogram_legend );
- if( 0 !== app.schema_browser_data.fields[value].copyDests.length )
- {
- navigation_data.copyfield_dest = app.schema_browser_data.fields[value].copyDests;
- }
- }
- else if( 'dynamic-field' === type )
- {
- navigation_data.dynamic_fields.push( value );
- navigation_data.types.push( app.schema_browser_data.relations.df_t[value] );
+ var histogram_values = luke_array_to_struct( field_data.histogram ).values;
- if( app.schema_browser_data.relations.df_f[value] )
- {
- navigation_data.fields = app.schema_browser_data.relations.df_f[value];
- }
- }
- else if( 'type' === type )
+ histogram_element
+ .sparkline
+ (
+ histogram_values,
{
- navigation_data.types.push( value );
-
- if( app.schema_browser_data.relations.t_f[value] )
- {
- navigation_data.fields = app.schema_browser_data.relations.t_f[value];
- }
-
- if( app.schema_browser_data.relations.t_df[value] )
- {
- navigation_data.dynamic_fields = app.schema_browser_data.relations.t_df[value];
- }
+ type : 'bar',
+ barColor : '#c0c0c0',
+ zeroColor : '#000000',
+ height : histogram_element.height(),
+ barWidth : 46,
+ barSpacing : 3
}
+ );
- var navigation_content = '';
+ 1 === histogram_values.length
+ ? histogram_element.addClass( 'single' )
+ : histogram_element.removClass( 'single' );
+ }
- if( 0 !== navigation_data.fields.length )
- {
- navigation_data.fields.sort();
- navigation_content += '<dt class="field">Fields</dt>' + "\n";
- for( var i in navigation_data.fields )
- {
- var href = sammy_basepath + '/field/' + navigation_data.fields[i];
- navigation_content += '<dd class="field"><a href="' + href + '">' +
- navigation_data.fields[i] + '</a></dd>' + "\n";
- }
- }
+ },
+ error : function( xhr, text_status, error_thrown)
+ {
+ },
+ complete : function( xhr, text_status )
+ {
+ }
+ }
+ );
+}
- if( 0 !== navigation_data.copyfield_source.length )
- {
- navigation_data.copyfield_source.sort();
- navigation_content += '<dt class="copyfield">Copied from</dt>' + "\n";
- for( var i in navigation_data.copyfield_source )
- {
- var href = sammy_basepath + '/field/' + navigation_data.copyfield_source[i];
- navigation_content += '<dd class="copyfield"><a href="' + href + '">' +
- navigation_data.copyfield_source[i] + '</a></dd>' + "\n";
- }
- }
+sammy.bind
+(
+ 'schema_browser_navi',
+ function( event, params )
+ {
+ var related_navigation_element = $( '#related dl#f-df-t', params.schema_browser_element );
+ var related_navigation_meta = $( '#related dl.ukf-dsf', params.schema_browser_element );
+ var related_select_element = $( '#related select', params.schema_browser_element )
+ var type = 'index';
- if( 0 !== navigation_data.copyfield_dest.length )
- {
- navigation_data.copyfield_dest.sort();
- navigation_content += '<dt class="copyfield">Copied to</dt>' + "\n";
- for( var i in navigation_data.copyfield_dest )
- {
- var href = sammy_basepath + '/field/' + navigation_data.copyfield_dest[i];
- navigation_content += '<dd class="copyfield"><a href="' + href + '">' +
- navigation_data.copyfield_dest[i] + '</a></dd>' + "\n";
- }
- }
+ var sammy_basepath = '#/' + $( 'p a', params.active_core ).html() + '/schema-browser';
+
+ if( !related_navigation_meta.hasClass( 'done' ) )
+ {
+ if( app.schema_browser_data.unique_key_field )
+ {
+ $( '.unique-key-field', related_navigation_meta )
+ .show()
+ .after
+ (
+ '<dd class="unique-key-field"><a href="' + sammy_basepath + '?field=' +
+ app.schema_browser_data.unique_key_field + '">' +
+ app.schema_browser_data.unique_key_field + '</a></dd>'
+ );
+ }
+
+ if( app.schema_browser_data.default_search_field )
+ {
+ $( '.default-search-field', related_navigation_meta )
+ .show()
+ .after
+ (
+ '<dd class="default-search-field"><a href="' + sammy_basepath + '?field=' +
+ app.schema_browser_data.default_search_field + '">' +
+ app.schema_browser_data.default_search_field + '</a></dd>'
+ );
+ }
- if( 0 !== navigation_data.dynamic_fields.length )
- {
- navigation_data.dynamic_fields.sort();
- navigation_content += '<dt class="dynamic-field">Dynamic Fields</dt>' + "\n";
- for( var i in navigation_data.dynamic_fields )
- {
- var href = sammy_basepath + '/dynamic-field/' + navigation_data.dynamic_fields[i];
- navigation_content += '<dd class="dynamic-field"><a href="' + href + '">' +
- navigation_data.dynamic_fields[i] + '</a></dd>' + "\n";
- }
- }
+ related_navigation_meta
+ .addClass( 'done' );
+ }
- if( 0 !== navigation_data.types.length )
- {
- navigation_data.types.sort();
- navigation_content += '<dt class="type">Types</dt>' + "\n";
- for( var i in navigation_data.types )
- {
- var href = sammy_basepath + '/type/' + navigation_data.types[i];
- navigation_content += '<dd class="type"><a href="' + href + '">' +
- navigation_data.types[i] + '</a></dd>' + "\n";
- }
- }
+ if( params.route_params )
+ {
+ var type = params.route_params.type;
+ var value = params.route_params.value;
+
+ var navigation_data = {
+ 'fields' : [],
+ 'copyfield_source' : [],
+ 'copyfield_dest' : [],
+ 'dynamic_fields' : [],
+ 'types' : []
+ }
+
+ $( 'option[value="' + params.route_params.path + '"]', related_select_element )
+ .attr( 'selected', 'selected' );
+
+ if( 'field' === type )
+ {
+ navigation_data.fields.push( value );
+ navigation_data.types.push( app.schema_browser_data.relations.f_t[value] );
- related_navigation_element
- .show()
- .attr( 'class', type )
- .html( navigation_content );
+ if( app.schema_browser_data.relations.f_df[value] )
+ {
+ navigation_data.dynamic_fields.push( app.schema_browser_data.relations.f_df[value] );
}
- else
+
+ if( 0 !== app.schema_browser_data.fields[value].copySources.length )
{
- related_navigation_element
- .hide();
-
- $( 'option:selected', related_select_element )
- .removeAttr( 'selected' );
+ navigation_data.copyfield_source = app.schema_browser_data.fields[value].copySources;
}
- if( 'field' === type && value === app.schema_browser_data.unique_key_field )
+ if( 0 !== app.schema_browser_data.fields[value].copyDests.length )
{
- $( '.unique-key-field', related_navigation_meta )
- .addClass( 'active' );
+ navigation_data.copyfield_dest = app.schema_browser_data.fields[value].copyDests;
}
- else
+ }
+ else if( 'dynamic-field' === type )
+ {
+ navigation_data.dynamic_fields.push( value );
+ navigation_data.types.push( app.schema_browser_data.relations.df_t[value] );
+
+ if( app.schema_browser_data.relations.df_f[value] )
{
- $( '.unique-key-field', related_navigation_meta )
- .removeClass( 'active' );
+ navigation_data.fields = app.schema_browser_data.relations.df_f[value];
}
+ }
+ else if( 'type' === type )
+ {
+ navigation_data.types.push( value );
+
+ if( app.schema_browser_data.relations.t_f[value] )
+ {
+ navigation_data.fields = app.schema_browser_data.relations.t_f[value];
+ }
+
+ if( app.schema_browser_data.relations.t_df[value] )
+ {
+ navigation_data.dynamic_fields = app.schema_browser_data.relations.t_df[value];
+ }
+ }
+
+ var navigation_content = '';
- if( 'field' === type && value === app.schema_browser_data.default_search_field )
+ if( 0 !== navigation_data.fields.length )
+ {
+ navigation_data.fields.sort();
+ navigation_content += '<dt class="field">Fields</dt>' + "\n";
+ for( var i in navigation_data.fields )
{
- $( '.default-search-field', related_navigation_meta )
- .addClass( 'active' );
+ var href = sammy_basepath + '?field=' + navigation_data.fields[i];
+ navigation_content += '<dd class="field"><a href="' + href + '">' + navigation_data.fields[i] + '</a></dd>' + "\n";
}
- else
+ }
+
+ if( 0 !== navigation_data.copyfield_source.length )
+ {
+ navigation_data.copyfield_source.sort();
+ navigation_content += '<dt class="copyfield">Copied from</dt>' + "\n";
+ for( var i in navigation_data.copyfield_source )
+ {
+ var href = sammy_basepath + '?field=' + navigation_data.copyfield_source[i];
+ navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_source[i] + '</a></dd>' + "\n";
+ }
+ }
+
+ if( 0 !== navigation_data.copyfield_dest.length )
+ {
+ navigation_data.copyfield_dest.sort();
+ navigation_content += '<dt class="copyfield">Copied to</dt>' + "\n";
+ for( var i in navigation_data.copyfield_dest )
{
- $( '.default-search-field', related_navigation_meta )
- .removeClass( 'active' );
+ var href = sammy_basepath + '?field=' + navigation_data.copyfield_dest[i];
+ navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_dest[i] + '</a></dd>' + "\n";
}
+ }
- if( params.callback )
+ if( 0 !== navigation_data.dynamic_fields.length )
+ {
+ navigation_data.dynamic_fields.sort();
+ navigation_content += '<dt class="dynamic-field">Dynamic Fields</dt>' + "\n";
+ for( var i in navigation_data.dynamic_fields )
{
- params.callback( app.schema_browser_data, $( '#data', params.schema_browser_element ) );
+ var href = sammy_basepath + '?dynamic-field=' + navigation_data.dynamic_fields[i];
+ navigation_content += '<dd class="dynamic-field"><a href="' + href + '">' + navigation_data.dynamic_fields[i] + '</a></dd>' + "\n";
}
+ }
+
+ if( 0 !== navigation_data.types.length )
+ {
+ navigation_data.types.sort();
+ navigation_content += '<dt class="type">Types</dt>' + "\n";
+ for( var i in navigation_data.types )
+ {
+ var href = sammy_basepath + '?type=' + navigation_data.types[i];
+ navigation_content += '<dd class="type"><a href="' + href + '">' + navigation_data.types[i] + '</a></dd>' + "\n";
+ }
+ }
+
+ related_navigation_element
+ .show()
+ .attr( 'class', type )
+ .html( navigation_content );
+ }
+ else
+ {
+ related_navigation_element
+ .hide();
+
+ $( 'option:selected', related_select_element )
+ .removeAttr( 'selected' );
}
+
+ if( 'field' === type && value === app.schema_browser_data.unique_key_field )
+ {
+ $( '.unique-key-field', related_navigation_meta )
+ .addClass( 'active' );
+ }
+ else
+ {
+ $( '.unique-key-field', related_navigation_meta )
+ .removeClass( 'active' );
+ }
+
+ if( 'field' === type && value === app.schema_browser_data.default_search_field )
+ {
+ $( '.default-search-field', related_navigation_meta )
+ .addClass( 'active' );
+ }
+ else
+ {
+ $( '.default-search-field', related_navigation_meta )
+ .removeClass( 'active' );
+ }
+
+ if( params.callback )
+ {
+ params.callback( app.schema_browser_data, $( '#data', params.schema_browser_element ) );
+ }
+ }
);
sammy.bind
(
- 'schema_browser_load',
- function( event, params )
+ 'schema_browser_load',
+ function( event, params )
+ {
+ var core_basepath = params.active_core.attr( 'data-basepath' );
+ var content_element = $( '#content' );
+
+ if( app.schema_browser_data )
{
- var core_basepath = params.active_core.attr( 'data-basepath' );
- var content_element = $( '#content' );
+ params.schema_browser_element = $( '#schema-browser', content_element );
- if( app.schema_browser_data )
+ sammy.trigger
+ (
+ 'schema_browser_navi',
+ params
+ );
+ }
+ else
+ {
+ content_element
+ .html( '<div id="schema-browser"><div class="loader">Loading ...</div></div>' );
+
+ $.ajax
+ (
{
- params.schema_browser_element = $( '#schema-browser', content_element );
+ url : core_basepath + '/admin/luke?numTerms=0&wt=json',
+ dataType : 'json',
+ beforeSend : function( xhr, settings )
+ {
+ },
+ success : function( response, text_status, xhr )
+ {
+ app.schema_browser_data = {
+ default_search_field : null,
+ unique_key_field : null,
+ key : {},
+ fields : {},
+ dynamic_fields : {},
+ types : {},
+ relations : {
+ f_df : {},
+ f_t : {},
+ df_f : {},
+ df_t : {},
+ t_f : {},
+ t_df : {}
+ }
+ };
+
+ app.schema_browser_data.fields = response.fields;
+ app.schema_browser_data.key = response.info.key;
- sammy.trigger
- (
- 'schema_browser_navi',
- params
- );
- }
- else
- {
- content_element
- .html( '<div id="schema-browser"><div class="loader">Loading ...</div></div>' );
-
$.ajax
(
+ {
+ url : core_basepath + '/admin/luke?show=schema&wt=json',
+ dataType : 'json',
+ beforeSend : function( xhr, settings )
+ {
+ },
+ success : function( response, text_status, xhr )
+ {
+ app.schema_browser_data.default_search_field = response.schema.defaultSearchField;
+ app.schema_browser_data.unique_key_field = response.schema.uniqueKeyField;
+
+ app.schema_browser_data.dynamic_fields = response.schema.dynamicFields;
+ app.schema_browser_data.types = response.schema.types;
+
+ for( var field in response.schema.fields )
{
- url : core_basepath + '/admin/luke?numTerms=0&wt=json',
- dataType : 'json',
- beforeSend : function( xhr, settings )
+ app.schema_browser_data.fields[field] = $.extend
+ (
+ {},
+ app.schema_browser_data.fields[field],
+ response.schema.fields[field]
+ );
+ }
+
+ for( var field in app.schema_browser_data.fields )
+ {
+ app.schema_browser_data.fields[field].copySourcesRaw = null;
+
+ if( app.schema_browser_data.fields[field].copySources &&
+ 0 !== app.schema_browser_data.fields[field].copySources.length )
+ {
+ app.schema_browser_data.fields[field].copySourcesRaw =
+ app.schema_browser_data.fields[field].copySources;
+ }
+
+ app.schema_browser_data.fields[field].copyDests = [];
+ app.schema_browser_data.fields[field].copySources = [];
+ }
+
+ for( var field in app.schema_browser_data.fields )
+ {
+ if( app.schema_browser_data.fields[field].copySourcesRaw )
+ {
+ var copy_sources = app.schema_browser_data.fields[field].copySourcesRaw;
+ for( var i in copy_sources )
{
- },
- success : function( response, text_status, xhr )
+ var target = copy_sources[i].replace( /^.+:(.+)\{.+$/, '$1' );
+
+ app.schema_browser_data.fields[field].copySources.push( target );
+ app.schema_browser_data.fields[target].copyDests.push( field );
+ }
+ }
+
+ app.schema_browser_data.relations.f_t[field] = app.schema_browser_data.fields[field].type;
+
+ if( !app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] )
+ {
+ app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] = [];
+ }
+ app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type].push( field );
+
+ if( app.schema_browser_data.fields[field].dynamicBase )
+ {
+ app.schema_browser_data.relations.f_df[field] = app.schema_browser_data.fields[field].dynamicBase;
+
+ if( !app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] )
{
- app.schema_browser_data = {
- default_search_field : null,
- unique_key_field : null,
- key : {},
- fields : {},
- dynamic_fields : {},
- types : {},
- relations : {
- f_df : {},
- f_t : {},
- df_f : {},
- df_t : {},
- t_f : {},
- t_df : {}
- }
- };
-
- app.schema_browser_data.fields = response.fields;
- app.schema_browser_data.key = response.info.key;
-
- $.ajax
- (
- {
- url : core_basepath + '/admin/luke?show=schema&wt=json',
- dataType : 'json',
- beforeSend : function( xhr, settings )
- {
- },
- success : function( response, text_status, xhr )
- {
- app.schema_browser_data.default_search_field = response.schema.defaultSearchField;
- app.schema_browser_data.unique_key_field = response.schema.uniqueKeyField;
-
- app.schema_browser_data.dynamic_fields = response.schema.dynamicFields;
- app.schema_browser_data.types = response.schema.types;
-
- var luke_array_to_struct = function( array )
- {
- var struct = {
- keys : [],
- values : []
- };
- for( var i = 0; i < array.length; i += 2 )
- {
- struct.keys.push( array[i] );
- struct.values.push( array[i+1] );
- }
- return struct;
- }
-
- var luke_array_to_hash = function( array )
- {
- var hash = {};
- for( var i = 0; i < array.length; i += 2 )
- {
- hash[ array[i] ] = array[i+1];
- }
- return hash;
- }
-
- for( var field in response.schema.fields )
- {
- app.schema_browser_data.fields[field] = $.extend
- (
- {},
- app.schema_browser_data.fields[field],
- response.schema.fields[field]
- );
- }
-
- for( var field in app.schema_browser_data.fields )
- {
- app.schema_browser_data.fields[field].copySourcesRaw = null;
-
- if( app.schema_browser_data.fields[field].copySources &&
- 0 !== app.schema_browser_data.fields[field].copySources.length )
- {
- app.schema_browser_data.fields[field].copySourcesRaw =
- app.schema_browser_data.fields[field].copySources;
- }
-
- app.schema_browser_data.fields[field].copyDests = [];
- app.schema_browser_data.fields[field].copySources = [];
- }
-
- for( var field in app.schema_browser_data.fields )
- {
- if( app.schema_browser_data.fields[field].copySourcesRaw )
- {
- var copy_sources = app.schema_browser_data.fields[field].copySourcesRaw;
- for( var i in copy_sources )
- {
- var target = copy_sources[i].replace( /^.+:(.+)\{.+$/, '$1' );
-
- app.schema_browser_data.fields[field].copySources.push( target );
- app.schema_browser_data.fields[target].copyDests.push( field );
- }
- }
-
- app.schema_browser_data.relations.f_t[field] = app.schema_browser_data.fields[field].type;
-
- if( !app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] )
- {
- app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type] = [];
- }
- app.schema_browser_data.relations.t_f[app.schema_browser_data.fields[field].type].push( field );
-
- if( app.schema_browser_data.fields[field].dynamicBase )
- {
- app.schema_browser_data.relations.f_df[field] = app.schema_browser_data.fields[field].dynamicBase;
-
- if( !app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] )
- {
- app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] = [];
- }
- app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase].push( field );
- }
- }
-
- for( var dynamic_field in app.schema_browser_data.dynamic_fields )
- {
- app.schema_browser_data.relations.df_t[dynamic_field] = app.schema_browser_data.dynamic_fields[dynamic_field].type;
-
- if( !app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] )
- {
- app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] = [];
- }
- app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type].push( dynamic_field );
- }
-
- $.get
- (
- 'tpl/schema-browser.html',
- function( template )
- {
- content_element
- .html( template );
-
- var schema_browser_element = $( '#schema-browser', content_element );
- var related_element = $( '#related', schema_browser_element );
- var related_select_element = $( 'select', related_element );
- var data_element = $( '#data', schema_browser_element );
+ app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase] = [];
+ }
+ app.schema_browser_data.relations.df_f[app.schema_browser_data.fields[field].dynamicBase].push( field );
+ }
+ }
+
+ for( var dynamic_field in app.schema_browser_data.dynamic_fields )
+ {
+ app.schema_browser_data.relations.df_t[dynamic_field] = app.schema_browser_data.dynamic_fields[dynamic_field].type;
+
+ if( !app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] )
+ {
+ app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type] = [];
+ }
+ app.schema_browser_data.relations.t_df[app.schema_browser_data.dynamic_fields[dynamic_field].type].push( dynamic_field );
+ }
- var related_options = '';
+ $.get
+ (
+ 'tpl/schema-browser.html',
+ function( template )
+ {
+ content_element
+ .html( template );
- var fields = [];
- for( var field_name in app.schema_browser_data.fields )
- {
- fields.push
- (
- '<option value="/field/' + field_name + '">' + field_name + '</option>'
- );
- }
- if( 0 !== fields.length )
- {
- fields.sort();
- related_options += '<optgroup label="Fields">' + "\n";
- related_options += fields.sort().join( "\n" ) + "\n";
- related_options += '</optgroup>' + "\n";
- }
+ var schema_browser_element = $( '#schema-browser', content_element );
+ var related_element = $( '#related', schema_browser_element );
+ var related_select_element = $( 'select', related_element );
+ var data_element = $( '#data', schema_browser_element );
+
+ var related_options = '';
- var dynamic_fields = [];
- for( var type_name in app.schema_browser_data.dynamic_fields )
- {
- dynamic_fields.push
- (
- '<option value="/dynamic-field/' + type_name + '">' + type_name + '</option>'
- );
- }
- if( 0 !== dynamic_fields.length )
- {
- dynamic_fields.sort();
- related_options += '<optgroup label="DynamicFields">' + "\n";
- related_options += dynamic_fields.sort().join( "\n" ) + "\n";
- related_options += '</optgroup>' + "\n";
- }
+ var fields = [];
+ for( var field_name in app.schema_browser_data.fields )
+ {
+ fields.push
+ (
+ '<option value="?field=' + field_name + '">' + field_name + '</option>'
+ );
+ }
+ if( 0 !== fields.length )
+ {
+ fields.sort();
+ related_options += '<optgroup label="Fields">' + "\n";
+ related_options += fields.sort().join( "\n" ) + "\n";
+ related_options += '</optgroup>' + "\n";
+ }
- var types = [];
- for( var type_name in app.schema_browser_data.types )
- {
- types.push
- (
- '<option value="/type/' + type_name + '">' + type_name + '</option>'
- );
- }
- if( 0 !== types.length )
- {
- types.sort();
- related_options += '<optgroup label="Types">' + "\n";
- related_options += types.sort().join( "\n" ) + "\n";
- related_options += '</optgroup>' + "\n";
- }
-
- related_select_element
- .attr( 'rel', '#/' + $( 'p a', params.active_core ).html() + '/schema-browser' )
- .append( related_options );
+ var dynamic_fields = [];
+ for( var type_name in app.schema_browser_data.dynamic_fields )
+ {
+ dynamic_fields.push
+ (
+ '<option value="?dynamic-field=' + type_name + '">' + type_name + '</option>'
+ );
+ }
+ if( 0 !== dynamic_fields.length )
+ {
+ dynamic_fields.sort();
+ related_options += '<optgroup label="DynamicFields">' + "\n";
+ related_options += dynamic_fields.sort().join( "\n" ) + "\n";
+ related_options += '</optgroup>' + "\n";
+ }
- related_select_element
- .die( 'change' )
- .live
- (
- 'change',
- function( event )
- {
- var select_element = $( this );
- var option_element = $( 'option:selected', select_element );
-
- location.href = select_element.attr( 'rel' ) + option_element.val();
- return false;
- }
- );
-
- params.schema_browser_element = schema_browser_element;
- sammy.trigger
- (
- 'schema_browser_navi',
- params
- );
- }
- );
- },
- error : function( xhr, text_status, error_thrown)
- {
- },
- complete : function( xhr, text_status )
- {
- }
- }
- );
-
- },
- error : function( xhr, text_status, error_thrown)
+ var types = [];
+ for( var type_name in app.schema_browser_data.types )
{
- },
- complete : function( xhr, text_status )
+ types.push
+ (
+ '<option value="?type=' + type_name + '">' + type_name + '</option>'
+ );
+ }
+ if( 0 !== types.length )
{
+ types.sort();
+ related_options += '<optgroup label="Types">' + "\n";
+ related_options += types.sort().join( "\n" ) + "\n";
+ related_options += '</optgroup>' + "\n";
}
- }
+
+ related_select_element
+ .attr( 'rel', '#/' + $( 'p a', params.active_core ).html() + '/schema-browser' )
+ .append( related_options );
+
+ related_select_element
+ .die( 'change' )
+ .live
+ (
+ 'change',
+ function( event )
+ {
+ var select_element = $( this );
+ var option_element = $( 'option:selected', select_element );
+
+ location.href = select_element.attr( 'rel' ) + option_element.val();
+ return false;
+ }
+ );
+
+ params.schema_browser_element = schema_browser_element;
+ sammy.trigger
+ (
+ 'schema_browser_navi',
+ params
+ );
+ }
+ );
+ },
+ error : function( xhr, text_status, error_thrown)
+ {
+ },
+ complete : function( xhr, text_status )
+ {
+ }
+ }
);
+
+ },
+ error : function( xhr, text_status, error_thrown)
+ {
+ },
+ complete : function( xhr, text_status )
+ {
+ }
}
+ );
}
+ }
);
// #/:core/schema-browser
sammy.get
(
- /^#\/([\w\d-]+)\/(schema-browser)$/,
- function( context )
+ /^#\/([\w\d-]+)\/(schema-browser)$/,
+ function( context )
+ {
+ var core_basepath = this.active_core.attr( 'data-basepath' );
+
+ var trigger_params = {
+ active_core : this.active_core
+ };
+
+ var path = context.path.split( '?' );
+ if( path && path[1] )
{
- var callback = function( schema_browser_data, data_element )
+ var param = path[1].split( '=' );
+ trigger_params.route_params = {
+ path : '?' + path[1],
+ type : param[0],
+ value : param[1]
+ }
+
+ trigger_params.callback = function( schema_browser_data, data_element )
+ {
+ var field = trigger_params.route_params.value;
+
+ var type = trigger_params.route_params.type;
+ var is_f = 'field' === type;
+ var is_df = 'dynamic-field' === type;
+ var is_t = 'type' === type;
+
+ var options_element = $( '.options', data_element );
+ var sammy_basepath = context.path.indexOf( '/', context.path.indexOf( '/', 2 ) + 1 );
+
+ data_element
+ .show();
+
+ var keystring_to_list = function( keystring, element_class )
{
- data_element
- .hide();
- };
+ var key_list = keystring.replace( /-/g, '' ).split( '' );
+ var list = [];
- delete app.schema_browser_data;
+ for( var i in key_list )
+ {
+ var option_key = schema_browser_data.key[key_list[i]];
- sammy.trigger
- (
- 'schema_browser_load',
+ if( !option_key )
{
- callback : callback,
- active_core : this.active_core
+ option_key = schema_browser_data.key[key_list[i].toLowerCase()];
}
- );
- }
-);
-// #/:core/schema-browser/field|dynamic-field|type/$field
-sammy.get
-(
- /^#\/([\w\d-]+)\/(schema-browser)(\/(field|dynamic-field|type)\/(.+))$/,
- function( context )
- {
- var core_basepath = this.active_core.attr( 'data-basepath' );
+ if( !option_key )
+ {
+ option_key = schema_browser_data.key[key_list[i].toUpperCase()];
+ }
+
+ if( option_key )
+ {
+ list.push
+ (
+ '<dd ' + ( element_class ? ' class="' + element_class + '"' : '' ) + '>' +
+ option_key +
+ ',</dd>'
+ );
+ }
+ }
+
+ list[list.length-1] = list[key_list.length-1].replace( /,/, '' );
- var callback = function( schema_browser_data, data_element )
+ return list;
+ }
+
+ var flags = null;
+
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].flags )
{
- var field = context.params.splat[4];
+ flags = schema_browser_data.fields[field].flags;
+ }
+ else if( is_df && schema_browser_data.dynamic_fields[field] && schema_browser_data.dynamic_fields[field].flags )
+ {
+ flags = schema_browser_data.dynamic_fields[field].flags;
+ }
- var type = context.params.splat[3];
- var is_f = 'field' === type;
- var is_df = 'dynamic-field' === type;
- var is_t = 'type' === type;
-
- var options_element = $( '.options', data_element );
- var sammy_basepath = context.path.indexOf( '/', context.path.indexOf( '/', 2 ) + 1 );
+ // -- head
- data_element
- .show();
+ var head_element = $( '.head', data_element );
+ if( is_f )
+ {
+ $( '.type', head_element ).html( 'Field' );
+ }
+ else if( is_df )
+ {
+ $( '.type', head_element ).html( 'Dynamic Field' );
+ }
+ else if( is_t )
+ {
+ $( '.type', head_element ).html( 'Type' );
+ }
+ $( '.name', head_element ).html( field.esc() );
- var keystring_to_list = function( keystring, element_class )
- {
- var key_list = keystring.replace( /-/g, '' ).split( '' );
- var list = [];
+ // -- properties
+ var properties_element = $( 'dt.properties', options_element );
+ if( flags )
+ {
+ var properties_keys = keystring_to_list( flags, 'properties' );
- for( var i in key_list )
- {
- var option_key = schema_browser_data.key[key_list[i]];
+ $( 'dd.properties', options_element )
+ .remove();
- if( !option_key )
- {
- option_key = schema_browser_data.key[key_list[i].toLowerCase()];
- }
+ properties_element
+ .show()
+ .after( properties_keys.join( "\n" ) );
+ }
+ else
+ {
+ $( '.properties', options_element )
+ .hide();
+ }
- if( !option_key )
- {
- option_key = schema_browser_data.key[key_list[i].toUpperCase()];
- }
+ // -- schema
+ var schema_element = $( 'dt.schema', options_element );
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].schema )
+ {
+ var schema_keys = keystring_to_list( schema_browser_data.fields[field].schema, 'schema' );
- if( option_key )
- {
- list.push
- (
- '<dd ' + ( element_class ? ' class="' + element_class + '"' : '' ) + '>' +
- option_key +
- ',</dd>'
- );
- }
- }
+ $( 'dd.schema', options_element )
+ .remove();
- list[list.length-1] = list[key_list.length-1].replace( /,/, '' );
+ schema_element
+ .show()
+ .after( schema_keys.join( "\n" ) );
+ }
+ else
+ {
+ $( '.schema', options_element )
+ .hide();
+ }
- return list;
- }
+ // -- index
+ var index_element = $( 'dt.index', options_element );
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].index )
+ {
+ var index_keys = [];
- var flags = null;
+ if( 0 === schema_browser_data.fields[field].index.indexOf( '(' ) )
+ {
+ index_keys.push( '<dd class="index">' + schema_browser_data.fields[field].index + '</dd>' );
+ }
+ else
+ {
+ index_keys = keystring_to_list( schema_browser_data.fields[field].index, 'index' );
+ }
+
+ $( 'dd.index', options_element )
+ .remove();
+
+ index_element
+ .show()
+ .after( index_keys.join( "\n" ) );
+ }
+ else
+ {
+ $( '.index', options_element )
+ .hide();
+ }
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].flags )
- {
- flags = schema_browser_data.fields[field].flags;
- }
- else if( is_df && schema_browser_data.dynamic_fields[field] && schema_browser_data.dynamic_fields[field].flags )
- {
- flags = schema_browser_data.dynamic_fields[field].flags;
- }
+ // -- docs
+ var docs_element = $( 'dt.docs', options_element );
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].docs )
+ {
+ $( 'dd.docs', options_element )
+ .remove();
- // -- properties
- var properties_element = $( 'dt.properties', options_element );
- if( flags )
- {
- var properties_keys = keystring_to_list( flags, 'properties' );
+ docs_element
+ .show()
+ .after( '<dd class="docs">' + schema_browser_data.fields[field].docs + '</dd>' );
+ }
+ else
+ {
+ $( '.docs', options_element )
+ .hide();
+ }
- $( 'dd.properties', options_element )
- .remove();
+ // -- distinct
+ var distinct_element = $( 'dt.distinct', options_element );
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].distinct )
+ {
+ $( 'dd.distinct', options_element )
+ .remove();
- properties_element
- .show()
- .after( properties_keys.join( "\n" ) );
- }
- else
- {
- $( '.properties', options_element )
- .hide();
- }
+ distinct_element
+ .show()
+ .after( '<dd class="distinct">' + schema_browser_data.fields[field].distinct + '</dd>' );
+ }
+ else
+ {
+ $( '.distinct', options_element )
+ .hide();
+ }
- // -- schema
- var schema_element = $( 'dt.schema', options_element );
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].schema )
- {
- var schema_keys = keystring_to_list( schema_browser_data.fields[field].schema, 'schema' );
+ // -- position-increment-gap
+ var pig_element = $( 'dt.position-increment-gap', options_element );
+ if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].positionIncrementGap )
+ {
+ $( 'dt.position-increment-gap', options_element )
+ .remove();
- $( 'dd.schema', options_element )
- .remove();
+ pig_element
+ .show()
+ .after( '<dd class="position-increment-gap">' + schema_browser_data.fields[field].positionIncrementGap + '</dd>' );
+ }
+ else
+ {
+ $( '.position-increment-gap', options_element )
+ .hide();
+ }
+
+ var analyzer_element = $( '.analyzer', data_element );
+ var analyzer_data = null;
- schema_element
- .show()
- .after( schema_keys.join( "\n" ) );
- }
- else
- {
- $( '.schema', options_element )
- .hide();
- }
+ if( is_f )
+ {
+ analyzer_data = schema_browser_data.types[schema_browser_data.relations.f_t[field]];
+ }
+ else if( is_df )
+ {
+ analyzer_data = schema_browser_data.types[schema_browser_data.relations.df_t[field]];
+ }
+ else if( is_t )
+ {
+ analyzer_data = schema_browser_data.types[field];
+ }
- // -- index
- var index_element = $( 'dt.index', options_element );
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].index )
- {
- var index_keys = [];
+ if( analyzer_data )
+ {
+ var transform_analyzer_data_into_list = function( analyzer_data )
+ {
+ var args = [];
+ for( var key in analyzer_data.args )
+ {
+ var arg_class = '';
+ var arg_content = '';
+
+ if( 'true' === analyzer_data.args[key] || '1' === analyzer_data.args[key] )
+ {
+ arg_class = 'ico-1';
+ arg_content = key;
+ }
+ else if( 'false' === analyzer_data.args[key] || '0' === analyzer_data.args[key] )
+ {
+ arg_class = 'ico-0';
+ arg_content = key;
+ }
+ else
+ {
+ arg_content = key + ': ';
- if( 0 === schema_browser_data.fields[field].index.indexOf( '(' ) )
+ if( 'synonyms' === key || 'words' === key )
{
- index_keys.push( '<dd class="index">' + schema_browser_data.fields[field].index + '</dd>' );
+ // @TODO: set link target for file
+ arg_content += '<a>' + analyzer_data.args[key] + '</a>';
}
else
{
- index_keys = keystring_to_list( schema_browser_data.fields[field].index, 'index' );
+ arg_content += analyzer_data.args[key];
}
+ }
- $( 'dd.index', options_element )
- .remove();
-
- index_element
- .show()
- .after( index_keys.join( "\n" ) );
+ args.push( '<dd class="' + arg_class + '">' + arg_content + '</dd>' );
}
- else
+
+ var list_content = '<dt>' + analyzer_data.className + '</dt>';
+ if( 0 !== args.length )
{
- $( '.index', options_element )
- .hide();
+ args.sort();
+ list_content += args.join( "\n" );
}
- // -- docs
- var docs_element = $( 'dt.docs', options_element );
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].docs )
- {
- $( 'dd.docs', options_element )
- .remove();
+ return list_content;
+ }
- docs_element
- .show()
- .after( '<dd class="docs">' + schema_browser_data.fields[field].docs + '</dd>' );
- }
- else
- {
- $( '.docs', options_element )
- .hide();
- }
+ // -- field-type
+ var field_type_element = $( 'dt.field-type', options_element );
- // -- distinct
- var distinct_element = $( 'dt.distinct', options_element );
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].distinct )
- {
- $( 'dd.distinct', options_element )
- .remove();
+ $( 'dd.field-type', options_element )
+ .remove();
- distinct_element
- .show()
- .after( '<dd class="distinct">' + schema_browser_data.fields[field].distinct + '</dd>' );
- }
- else
- {
- $( '.distinct', options_element )
- .hide();
- }
+ field_type_element
+ .show()
+ .after( '<dd class="field-type">' + analyzer_data.className + '</dd>' );
- // -- position-increment-gap
- var pig_element = $( 'dt.position-increment-gap', options_element );
- if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].positionIncrementGap )
- {
- $( 'dt.position-increment-gap', options_element )
- .remove();
+ $( '.toggle', analyzer_element )
+ .die( 'click' )
+ .live
+ (
+ 'click',
+ function( event )
+ {
+ $( this ).closest( 'li' )
+ .toggleClass( 'open' );
- pig_element
- .show()
- .after( '<dd class="position-increment-gap">' + schema_browser_data.fields[field].positionIncrementGap + '</dd>' );
- }
- else
- {
- $( '.position-increment-gap', options_element )
- .hide();
- }
-
- var analyzer_element = $( '.analyzer', data_element );
- var analyzer_data = null;
+ return false;
+ }
+ );
- if( is_f )
- {
- analyzer_data = schema_browser_data.types[schema_browser_data.relations.f_t[field]];
- }
- else if( is_df )
- {
- analyzer_data = schema_browser_data.types[schema_browser_data.relations.df_t[field]];
- }
- else if( is_t )
+ for( var key in analyzer_data )
+ {
+ var key_match = key.match( /^(.+)Analyzer$/ );
+ if( !key_match )
{
- analyzer_data = schema_browser_data.types[field];
+ continue;
}
- if( analyzer_data )
- {
- var transform_analyzer_data_into_list = function( analyzer_data )
- {
- var args = [];
- for( var key in analyzer_data.args )
- {
- var arg_class = '';
- var arg_content = '';
+ var analyzer_key_element = $( '.' + key_match[1], analyzer_element );
+ var analyzer_key_data = analyzer_data[key];
- if( 'true' === analyzer_data.args[key] || '1' === analyzer_data.args[key] )
- {
- arg_class = 'ico-1';
- arg_content = key;
- }
- else if( 'false' === analyzer_data.args[key] || '0' === analyzer_data.args[key] )
- {
- arg_class = 'ico-0';
- arg_content = key;
- }
- else
- {
- arg_content = key + ': ';
+ analyzer_element.show();
+ analyzer_key_element.show();
- if( 'synonyms' === key || 'words' === key )
- {
- // @TODO: set link target for file
- arg_content += '<a>' + analyzer_data.args[key] + '</a>';
- }
- else
- {
- arg_content += analyzer_data.args[key];
- }
- }
+ $( 'ul li', analyzer_key_element )
+ .removeClass( 'data' )
+ .hide();
- args.push( '<dd class="' + arg_class + '">' + arg_content + '</dd>' );
- }
+ for( var type in analyzer_key_data )
+ {
+ if( 'object' !== typeof analyzer_key_data[type] )
+ {
+ continue;
+ }
- var list_content = '<dt>' + analyzer_data.className + '</dt>';
- if( 0 !== args.length )
- {
- args.sort();
- list_content += args.join( "\n" );
- }
+ var type_element = $( '.' + type, analyzer_key_element );
+ var type_content = [];
+
+ type_element
+ .addClass( 'data' )
+ .show();
- return list_content;
+ if( analyzer_key_data[type].className )
+ {
+ type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type] ) );
+ }
+ else
+ {
+ for( var entry in analyzer_key_data[type] )
+ {
+ type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type][entry] ) );
}
+ }
- // -- field-type
- var field_type_element = $( 'dt.field-type', options_element );
+ $( 'dl', type_element )
+ .empty()
+ .append( type_content.join( "\n" ) );
+ }
- $( 'dd.field-type', options_element )
- .remove();
+ var name_element = $( 'dl:first dt a', analyzer_key_element );
+ if( analyzer_key_data.className )
+ {
+ name_element
+ .html( analyzer_key_data.className );
+ }
- field_type_element
- .show()
- .after( '<dd class="field-type">' + analyzer_data.className + '</dd>' );
+ 0 === $( 'ul li.data', analyzer_key_element ).size()
+ ? name_element.removeClass( 'toggle' )
+ : name_element.addClass( 'toggle' );
+ }
+ }
+ var terminfo_element = $( '.terminfo-holder', data_element );
- for( var key in analyzer_data )
- {
- var key_match = key.match( /^(.+)Analyzer$/ );
- if( !key_match )
- {
- continue;
- }
+ terminfo_element
+ .removeClass( 'disabled' )
+ .removeClass( 'loaded' );
- var analyzer_key_element = $( '.' + key_match[1], analyzer_element );
- var analyzer_key_data = analyzer_data[key];
+ var trigger_element = $( '.trigger button', terminfo_element );
+ var form_element = $( 'form', terminfo_element );
- analyzer_element.show();
- analyzer_key_element.show();
+ trigger_element
+ .die( 'click' )
+ .live
+ (
+ 'click',
+ function( event )
+ {
+ form_element
+ .trigger( 'submit' );
- if( analyzer_key_data.className )
- {
- $( 'dl:first dt', analyzer_key_element )
- .html( analyzer_key_data.className );
- }
+ return false;
+ }
+ );
- $( 'ul li', analyzer_key_element )
- .hide();
+ form_element
+ .clearForm()
+ .die( 'submit' )
+ .live
+ (
+ 'submit',
+ function( event )
+ {
+ load_terminfo( trigger_element, core_basepath, field, data_element, terminfo_element );
- for( var type in analyzer_key_data )
- {
- if( 'object' !== typeof analyzer_key_data[type] )
- {
- continue;
- }
+ terminfo_element
+ .addClass( 'loaded' );
+
+ return false;
+ }
+ );
- var type_element = $( '.' + type, analyzer_key_element );
- var type_content = [];
+ $( '.max-holder', terminfo_element )
+ .die( 'click' )
+ .live
+ (
+ 'click',
+ function( event )
+ {
+ var element = $( this );
- type_element.show();
+ $( 'input', element.closest( 'form' ) )
+ .val( $( '.max', element ).text() );
- if( analyzer_key_data[type].className )
- {
- type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type] ) );
- }
- else
- {
- for( var entry in analyzer_key_data[type] )
- {
- type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type][entry] ) );
- }
- }
+ form_element
+ .trigger( 'submit' );
- $( 'dl', type_element )
- .empty()
- .append( type_content.join( "\n" ) );
- }
- }
+ return false;
}
+ );
- var terminfo_element = $( '.terminfo-holder', data_element );
+ $( '.trigger .autoload', terminfo_element )
+ .die( 'click' )
+ .live
+ (
+ 'click',
+ function( event )
+ {
+ $.cookie( cookie_name, $.cookie( cookie_name ) ? null : true );
+ $( this ).trigger( 'state' );
- if( !is_f )
+ return false;
+ }
+ )
+ .die( 'state' )
+ .live
+ (
+ 'state',
+ function( event )
{
- terminfo_element
- .hide();
+ $.cookie( cookie_name )
+ ? $( this ).addClass( 'on' )
+ : $( this ).removeClass( 'on' );
}
- else
+ )
+ .die( 'init' )
+ .live
+ (
+ 'init',
+ function( event )
{
- terminfo_element
- .show();
-
- var status_element = $( '.status', terminfo_element );
-
- $.ajax
- (
- {
- url : core_basepath + '/admin/luke?numTerms=50&wt=json&fl=' + field,
- dataType : 'json',
- context : terminfo_element,
- beforeSend : function( xhr, settings )
- {
- },
- success : function( response, text_status, xhr )
- {
- status_element
- .hide();
-
- var field_data = response.fields[field];
-
- var topterms_holder_element = $( '.topterms-holder', data_element );
- var histogram_holder_element = $( '.histogram-holder', data_element );
+ if( !$.cookie( cookie_name ) )
+ {
+ return false;
+ }
- var luke_array_to_struct = function( array )
- {
- var struct = {
- keys : [],
- values : []
- };
- for( var i = 0; i < array.length; i += 2 )
- {
- struct.keys.push( array[i] );
- struct.values.push( array[i+1] );
- }
- return struct;
- }
-
- var luke_array_to_hash = function( array )
- {
- var hash = {};
- for( var i = 0; i < array.length; i += 2 )
- {
- hash[ array[i] ] = array[i+1];
- }
- return hash;
- }
-
- if( !field_data.topTerms )
- {
- topterms_holder_element
- .hide();
- }
- else
- {
- topterms_holder_element
- .show();
-
- var topterms_table_element = $( 'table', topterms_holder_element );
-
- var topterms_navi_less = $( 'p.navi .less', topterms_holder_element );
- var topterms_navi_more = $( 'p.navi .more', topterms_holder_element );
-
- var topterms_count = luke_array_to_struct( field_data.topTerms ).keys.length;
- var topterms_hash = luke_array_to_hash( field_data.topTerms );
- var topterms_content = '<tbody>';
-
- var i = 1;
- for( var term in topterms_hash )
- {
- topterms_content += '<tr>' + "\n" +
- '<td class="position">' + i + '</td>' + "\n" +
- '<td class="term">' + term + '</td>' + "\n" +
- '<td class="frequency">' + topterms_hash[term] + '</td>' + "\n" +
- '</tr>' + "\n";
-
- if( i !== topterms_count && 0 === i % 10 )
- {
- topterms_content += '</tbody><tbody>';
- }
-
- i++;
- }
-
- topterms_content += '</tbody>';
-
- topterms_table_element
- .empty()
- .append( topterms_content );
-
- $( 'tbody', topterms_table_element )
- .die( 'change' )
- .live
- (
- 'change',
- function()
- {
- var blocks = $( 'tbody', topterms_table_element );
- var visible_blocks = blocks.filter( ':visible' );
- var hidden_blocks = blocks.filter( ':hidden' );
-
- $( 'p.head .shown', topterms_holder_element )
- .html( $( 'tr', visible_blocks ).size() );
-
- 0 < hidden_blocks.size()
- ? topterms_navi_more.show()
- : topterms_navi_more.hide();
-
- 1 < visible_blocks.size()
- ? topterms_navi_less.show()
- : topterms_navi_less.hide();
- }
- );
-
- $( 'tbody tr:odd', topterms_table_element )
- .addClass( 'odd' );
-
- $( 'tbody:first', topterms_table_element )
- .show()
- .trigger( 'change' );
-
- $( 'p.head .max', topterms_holder_element )
- .html( field_data.distinct );
-
- topterms_navi_less
- .die( 'click' )
- .live
- (
- 'click',
- function( event )
- {
- $( 'tbody:visible', topterms_table_element ).last()
- .hide()
- .trigger( 'change' );
- }
- );
-
- topterms_navi_more
- .die( 'click' )
- .live
- (
- 'click',
- function( event )
- {
- $( 'tbody:hidden', topterms_table_element ).first()
- .show()
- .trigger( 'change' );
- }
- );
- }
-
- if( !field_data.histogram )
- {
- histogram_holder_element
- .hide();
- }
- else
- {
- histogram_holder_element
- .show();
-
- var histogram_element = $( '.histogram', histogram_holder_element );
-
- var histogram_values = luke_array_to_hash( field_data.histogram );
- var histogram_legend = '';
-
- histogram_holder_element
- .show();
-
- for( var key in histogram_values )
- {
- histogram_legend += '<dt><span>' + key + '</span></dt>' + "\n" +
- '<dd title="' + key + '">' +
- '<span>' + histogram_values[key] + '</span>' +
- '</dd>' + "\n";
- }
-
- $( 'dl', histogram_holder_element )
- .html( histogram_legend );
-
- histogram_element
- .sparkline
- (
- luke_array_to_struct( field_data.histogram ).values,
- {
- type : 'bar',
- barColor : '#c0c0c0',
- zeroColor : '#ffffff',
- height : histogram_element.height(),
- barWidth : 46,
- barSpacing : 3
- }
- );
- }
+ $( this ).trigger( 'state' );
+ trigger_element.trigger( 'click' );
+ }
+ )
+ .trigger( 'init' );
- },
- error : function( xhr, text_status, error_thrown)
- {
- },
- complete : function( xhr, text_status )
- {
- }
- }
- );
+ $( 'div[class$="-holder"]', terminfo_element )
+ .hide();
- }
+ if( !is_f )
+ {
+ terminfo_element
+ .hide();
+ }
+ else
+ {
+ terminfo_element
+ .show();
}
+ }
+ }
+ else
+ {
+ trigger_params.callback = function( schema_browser_data, data_element )
+ {
+ data_element
+ .hide();
+ };
- sammy.trigger
- (
- 'schema_browser_load',
- {
- callback : callback,
- active_core : this.active_core,
- route_params : this.params
- }
- );
+ delete app.schema_browser_data;
}
+
+ sammy.trigger
+ (
+ 'schema_browser_load',
+ trigger_params
+ );
+ }
);
\ No newline at end of file