my $rel_configs = $self->relationship_column_configs;
return @$colspecs unless (keys %$rel_configs > 0);

my $match_data = {};
my @rel_cols = $self->colspec_select_columns({
	colspecs => $colspecs,
	columns => [ keys %$rel_configs ],
	best_match_look_ahead => 1,
	match_data => $match_data
});

scream_color(RED.ON_BLUE,\@rel_cols);

my %exist = map{$_=>1} @$colspecs;
my $added = [];

my @new_colspecs = @$colspecs;
my $adj = 0;
foreach my $rel (@rel_cols) {
	my @insert = ();
	push @insert, $rel . '.' . $rel_configs->{$rel}->{displayField} unless ($update);
	push @insert, $rel . '.' . $rel_configs->{$rel}->{valueField} unless ($update);
	push @insert, $rel_configs->{$rel}->{keyField};
	
	# Remove any expanded colspecs that were already defined (important to honor the user supplied column order)
	@insert = grep { !$exist{$_} } @insert;
	
	push @$added,@insert;
	unshift @insert, $rel unless ($exist{$rel});
	
	my $offset = $adj + $match_data->{$rel}->{index} + 1;
	
	splice(@new_colspecs,$offset,0,@insert);
	
	%exist = map{$_=>1} @new_colspecs;
	$adj += scalar @insert;
}

my @new_adds = grep { ! $self->colspecs_to_colspec_test($colspecs,$_) } @$added;

@{$self->added_relationship_column_relspecs} = uniq(
	@{$self->added_relationship_column_relspecs},
	@new_adds
);

return @new_colspecs;
}
my $info = $self->ResultClass->relationship_info($rel) or die "Relationship '$rel' not found.";
my $class = $info->{class};

# Manually load and initialize the TableSpec component if it's missing from the
# related result class:
#unless($class->can('TableSpec')) {
#	$class->load_components('+RapidApp::DBIC::Component::TableSpec');
#	$class->apply_TableSpec(%opt);
#}

my $relspec_prefix = $self->relspec_prefix;
$relspec_prefix .= '.' if ($relspec_prefix and $relspec_prefix ne '');
$relspec_prefix .= $rel;

my $TableSpec = $self->new_TableSpec(
	name => $class->table,
	ResultClass => $class,
	relation_sep => $self->relation_sep,
	relspec_prefix => $relspec_prefix,
	%opt
);

return $TableSpec;
}
#return $self;

my $Flattened = $self->new_TableSpec(
	name => $self->name,
	ResultClass => $self->ResultClass,
	relation_sep => $self->relation_sep,
	include_colspec => $self->include_colspec->colspecs,
	relspec_prefix => $self->relspec_prefix
);

$Flattened->add_all_related_TableSpecs_recursive;

#scream_color(CYAN,$Flattened->column_name_relationship_map);

return $Flattened;
}
	my $TableSpec = $self->related_TableSpec->{$rel} or die "Failed to find related TableSpec $rel";
	local $_{rel} = $rel;
	$_{return} = $TableSpec->walk_columns_deep($code,@cols)
}

my @local_cols = grep { !/^\@/ } keys %$tree;

my $pre = $self->column_prefix;
my %name_map = map { my $name = $_; $name =~ s/^${pre}//; $name => $_ } @local_cols;
local $_{name_map} = \%name_map;

return $code->($self,@local_cols);
local $_{depth} = $_{depth}; $_{depth}++;
local $_{return};
foreach my $rel (keys %map) {
	my $TableSpec = $self->related_TableSpec->{$rel} or die "Failed to find related TableSpec $rel";
	local $_{rel} = $rel;
	$_{return} = $TableSpec->walk_columns_deep($code,@{$map{$rel}});
}

my $pre = $self->column_prefix;
my %name_map = map { my $name = $_; $name =~ s/^${pre}//; $name => $_ } @local_cols;
local $_{name_map} = \%name_map;

return $code->($self,@local_cols);
foreach my $rel (@{$self->relation_order}) {
	next if ($rel eq '');
	my $TableSpec = $self->addIf_related_TableSpec($rel);
	#my $TableSpec = $self->add_related_TableSpec( $rel, {
		#include_colspec => $self->relation_colspecs->{$rel}
	#});
	
	$TableSpec->add_all_related_TableSpecs_recursive;
}

foreach my $rel (@{$self->related_TableSpec_order}) {
	my $TableSpec = $self->related_TableSpec->{$rel};
	for my $name ($TableSpec->column_names_ordered) {
		#die "Column name conflict: $name is already defined (rel: $rel)" if ($self->has_column($name));
		$self->column_name_relationship_map->{$name} = $rel;
	}
}

return $self;
}

$tableSpec->resolve_dbic_colname( $fieldName, \%merge_join, $get_render_col )

Returns a value which can be added to DBIC's ->{attr}{select} in order to select the column.

$fieldName is the ExtJS column name to resolve. %merge_join is a in/out parameter which collects the total required joins for this query. $get_render_col is a boolean of whether this function should instead return the DBIC name of the render column.

7 POD Errors

The following errors were encountered while parsing the POD:

Around line 44:

=pod directives shouldn't be over one line long! Ignoring all 15 lines of content

Around line 329:

=pod directives shouldn't be over one line long! Ignoring all 5 lines of content

Around line 799:

=pod directives shouldn't be over one line long! Ignoring all 5 lines of content

Around line 831:

=pod directives shouldn't be over one line long! Ignoring all 5 lines of content

Around line 938:

=pod directives shouldn't be over one line long! Ignoring all 7 lines of content

Around line 983:

=pod directives shouldn't be over one line long! Ignoring all 2 lines of content

Around line 1033:

=pod directives shouldn't be over one line long! Ignoring all 3 lines of content