comparison Lib/IMPL/Web/View/Metadata/FormMeta.pm @ 368:010ceafd0c5a

form metadata + tests
author cin
date Wed, 04 Dec 2013 17:31:53 +0400
parents 608e74bc309f
children d5c8b955bf8d
comparison
equal deleted inserted replaced
367:608e74bc309f 368:010ceafd0c5a
107 ); 107 );
108 108
109 my ($model,$type); 109 my ($model,$type);
110 110
111 if ($decl->isMultiple) { 111 if ($decl->isMultiple) {
112 $model = \@nodes; 112 $model = \@nodes;
113 $type = 'ARRAY'; 113 $type = 'ARRAY';
114 $args{holdingType} = $decl->type; 114 $args{holdingType} = $schema->type;
115 } else { 115 } else {
116 $model = shift @nodes; 116 $model = shift @nodes;
117 $type = $decl->type; 117 $type = $schema->type;
118 } 118 }
119 119
120 push @props, Meta->new($model,$type,\%args); 120 push @props, Meta->new($model,$type,\%args);
121 } 121 }
122 122
130 unless $this->isMultiple; 130 unless $this->isMultiple;
131 131
132 my $i = 0; 132 my $i = 0;
133 133
134 return [ 134 return [
135 map $this->_GetItemMeta($_,$i++), @{$this->model || []} 135 map $this->_GetItemMeta($_,$i++), @{$this->nodes}
136 ]; 136 ];
137 } 137 }
138 138
139 sub GetItem { 139 sub GetItem {
140 my ($this,$index) = @_; 140 my ($this,$index) = @_;
141 141
142 die OpException->new("The operation must be performed on the container") 142 die OpException->new("The operation must be performed on the container")
143 unless $this->isMultiple; 143 unless $this->isMultiple;
144 144
145 my $node = $this->model->[$index]; 145 my $node = $this->nodes->[$index];
146 146
147 return $this->GetItemMeta($node,$index); 147 return $this->_GetItemMeta($node,$index);
148 } 148 }
149 149
150 sub _GetItemMeta { 150 sub _GetItemMeta {
151 my ($this,$node,$index) = @_; 151 my ($this,$node,$index) = @_;
152 152
153 my @nodes;
154 push @nodes,$node if $node;
155
153 return Meta->new( 156 return Meta->new(
154 $node, 157 $node,
155 $this->decl->type, 158 $this->schema->type,
156 { 159 {
157 name => $index, 160 name => $index,
158 schema => $this->schema, 161 schema => $this->schema,
159 errors => [grep _IsOwnError([$node],$this->decl,$_), @{$this->errors ||[]} ], 162 errors => [grep _IsErrorRelates([$node],$this->decl,$_), @{$this->errors ||[]} ],
160 group => $this 163 group => $this,
164 nodes => \@nodes
161 } 165 }
162 ); 166 );
163 } 167 }
164 168
165 1; 169 1;