1 package Reaction::UI::ViewPort::Field;
4 use aliased 'Reaction::InterfaceModel::Object';
5 use aliased 'Reaction::Meta::InterfaceModel::Object::ParameterAttribute';
7 class Field is 'Reaction::UI::ViewPort', which {
9 has value => (is => 'rw', lazy_build => 1);
10 has name => (is => 'rw', isa => 'Str', lazy_build => 1);
11 has label => (is => 'rw', isa => 'Str', lazy_build => 1);
12 has value_string => (is => 'rw', isa => 'Str', lazy_build => 1);
14 has model => (is => 'ro', isa => Object, required => 1);
15 has attribute => (is => 'ro', isa => ParameterAttribute, required => 1);
17 implements adopt_value => as {};
19 implements _build_name => as { shift->attribute->name };
20 implements _build_value_string => as { shift->value };
22 implements _build_label => as {
23 join(' ', map { ucfirst } split('_', shift->name));
26 #unlazify and move it to build. to deal with array use typeconstraints and coercions
27 implements _build_value => as {
29 my $reader = $self->attribute->get_read_method;
30 my $predicate = $self->attribute->predicate;
31 #this is bound to blow the fuck if !model->$predicate what to do?
32 return $self->model->$reader ; #if (!$predicate || $self->model->$predicate);
34 print STDERR "weird!\n";