RapidApp
view release on metacpan or search on metacpan
lib/RapidApp/TableSpec/Role/DBIC.pm view on Meta::CPAN
# These can be overridden
header => $conf->{header},
win_title => $title,
win_height => 450,
win_width => 650,
%{$conf->{editor}},
# These can't be overridden
name => $colname,
xtype => 'datastore-app-field',
valueField => $conf->{valueField},
displayField => $conf->{displayField},
load_url => $GridModule->base_url,
};
}
elsif($aet eq 'custom') {
# Use whatever is already in 'editor' plus some sane defaults
my $title = $conf->{header} ? 'Select ' . $conf->{header} : 'Select Record';
$conf->{editor} = {
# These can be overridden
header => $conf->{header},
win_title => $title,
win_height => 450,
win_width => 650,
valueField => $conf->{valueField},
displayField => $conf->{displayField},
name => $colname,
%{$conf->{auto_editor_params}},
%{$conf->{editor}},
};
}
############# ---
return (name => $colname, %$conf);
}
sub get_multi_relationship_column_cnf {
my $self = shift;
my $rel = shift;
my %opt = (ref($_[0]) eq 'HASH') ? %{ $_[0] } : @_; # <-- arg as hash or hashref
return $self->get_m2m_multi_relationship_column_cnf($rel,\%opt)
if ($opt{relationship_cond_data}->{attrs}->{m2m_attrs});
my $conf = \%opt;
my $rel_data = clone($conf->{relationship_cond_data});
## -- allow override of the associated TabsleSpec cnfs from the relationship attrs:
$conf->{title_multi} = delete $rel_data->{attrs}->{title_multi} if ($rel_data->{attrs}->{title_multi});
$conf->{multiIconCls} = delete $rel_data->{attrs}->{multiIconCls} if ($rel_data->{attrs}->{multiIconCls});
$conf->{open_url_multi} = delete $rel_data->{attrs}->{open_url_multi} if ($rel_data->{attrs}->{open_url_multi});
$conf->{open_url_multi_rs_join_name} = delete $rel_data->{attrs}->{open_url_multi_rs_join_name} if ($rel_data->{attrs}->{open_url_multi_rs_join_name});
delete $rel_data->{attrs}->{cascade_copy};
delete $rel_data->{attrs}->{cascade_delete};
delete $rel_data->{attrs}->{join_type};
delete $rel_data->{attrs}->{accessor};
$rel_data->{attrs}->{join} = [ $rel_data->{attrs}->{join} ] if (
defined $rel_data->{attrs}->{join} and
ref($rel_data->{attrs}->{join}) ne 'ARRAY'
);
if($rel_data->{attrs}->{join}) {
@{$rel_data->{attrs}->{join}} = grep { $_ ne $conf->{open_url_multi_rs_join_name} } @{$rel_data->{attrs}->{join}};
delete $rel_data->{attrs}->{join} unless (scalar @{$rel_data->{attrs}->{join}} > 0);
}
my $title = $conf->{title_multi} ? $conf->{title_multi} : 'Related "' . $rel . '" Rows';
my $loadCfg = {
title => $title,
iconCls => $conf->{multiIconCls} ,
autoLoad => {
url => $conf->{open_url_multi},
params => {}
}
};
my $div_open =
'<div' .
( $conf->{multiIconCls} ? ' class="with-inline-icon ' . $conf->{multiIconCls} . '"' : '' ) . '><span>' .
$title .
' <span class="superscript-navy">';
my $cur_renderer = $conf->{renderer};
my $open_url = $self->ResultClass->TableSpec_get_conf('open_url');
my $rel_rest_key = try{$self->ResultClass->getRestKey};
my $orgnCol = $rel_rest_key ? join('',$self->column_prefix,$rel_rest_key) : undef;
$conf->{required_fetch_columns} ||= [];
push @{$conf->{required_fetch_columns}}, $orgnCol if ($orgnCol);
my $rSelfCol = $rel_data->{self} ? join('',$self->column_prefix,$rel_data->{self}) : undef;
push @{$conf->{required_fetch_columns}}, $rSelfCol if ($rSelfCol && $rSelfCol ne ($orgnCol || ''));
# Allow old apps to turn off using this source as a rest origin and force fallback to
# the fugly, original loadCnf inlineLink
my $use_rest =
$rel_data->{attrs}{allow_rel_rest_origin}
// try{$rel_data->{class}->TableSpec_get_conf('allow_rel_rest_origin')};
$use_rest = 1 unless (defined $use_rest);
if($use_rest && $orgnCol && $open_url) {
$conf->{renderer} = jsfunc(
'function(value, metaData, record) { return Ext.ux.RapidApp.DbicRelRestRender({' .
'value:value,record:record,' .
"disp: '" . $div_open . "' + value + '</span>'," .
'key_col: "' . $orgnCol . '",' .
'open_url: "' . $open_url . '",' .
'multi_rel: true,' .
'rs: "' . $rel . '"' .
'})}',$cur_renderer
( run in 0.690 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )