You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by el...@apache.org on 2017/06/22 20:21:02 UTC
[09/17] incubator-trafficcontrol git commit: UI working
UI working
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/2976a25f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/2976a25f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/2976a25f
Branch: refs/heads/master
Commit: 2976a25fb94bf91f5f2e04c6b3bc0a07a7053e3a
Parents: 5a30eaf
Author: Derek Gelinas <de...@cable.comcast.com>
Authored: Thu Jun 1 18:24:58 2017 +0000
Committer: Jeff Elsloo <je...@cable.comcast.com>
Committed: Thu Jun 22 14:18:17 2017 -0600
----------------------------------------------------------------------
.../app/lib/Schema/Result/SteeringTarget.pm | 31 +-
.../app/lib/Schema/Result/SteeringView.pm | 9 +-
traffic_ops/app/lib/UI/Steering.pm | 300 +++++++------------
.../app/templates/steering/index.html.ep | 36 +--
4 files changed, 155 insertions(+), 221 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2976a25f/traffic_ops/app/lib/Schema/Result/SteeringTarget.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/Schema/Result/SteeringTarget.pm b/traffic_ops/app/lib/Schema/Result/SteeringTarget.pm
index a11454f..ec67170 100644
--- a/traffic_ops/app/lib/Schema/Result/SteeringTarget.pm
+++ b/traffic_ops/app/lib/Schema/Result/SteeringTarget.pm
@@ -37,7 +37,7 @@ __PACKAGE__->table("steering_target");
=head2 value
data_type: 'bigint'
- is_nullable: 1
+ is_nullable: 0
=head2 last_updated
@@ -48,9 +48,9 @@ __PACKAGE__->table("steering_target");
=head2 type
- data_type: 'text'
- default_value: 'weight'
- is_nullable: 1
+ data_type: 'bigint'
+ is_foreign_key: 1
+ is_nullable: 0
=cut
@@ -60,7 +60,7 @@ __PACKAGE__->add_columns(
"target",
{ data_type => "bigint", is_nullable => 0 },
"value",
- { data_type => "bigint", is_nullable => 1 },
+ { data_type => "bigint", is_nullable => 0 },
"last_updated",
{
data_type => "timestamp with time zone",
@@ -69,7 +69,7 @@ __PACKAGE__->add_columns(
original => { default_value => \"now()" },
},
"type",
- { data_type => "text", default_value => "weight", is_nullable => 1 },
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
);
=head1 PRIMARY KEY
@@ -118,9 +118,24 @@ __PACKAGE__->belongs_to(
{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },
);
+=head2 type
+
+Type: belongs_to
+
+Related object: L<Schema::Result::Type>
+
+=cut
+
+__PACKAGE__->belongs_to(
+ "type",
+ "Schema::Result::Type",
+ { id => "type" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
+);
+
-# Created by DBIx::Class::Schema::Loader v0.07046 @ 2017-05-31 19:50:30
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iusMfHEMfTfB8egLQfhOJw
+# Created by DBIx::Class::Schema::Loader v0.07046 @ 2017-05-31 20:31:43
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:DYSNby1kQgL/sEtaCwOgbw
# You can replace this text with custom code or comments, and it will be preserved on regeneration
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2976a25f/traffic_ops/app/lib/Schema/Result/SteeringView.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/Schema/Result/SteeringView.pm b/traffic_ops/app/lib/Schema/Result/SteeringView.pm
index f353b8c..eef4ab8 100644
--- a/traffic_ops/app/lib/Schema/Result/SteeringView.pm
+++ b/traffic_ops/app/lib/Schema/Result/SteeringView.pm
@@ -30,9 +30,10 @@ __PACKAGE__->table("SteeringView");
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition(
- "select s.xml_id as steering_xml_id, s.id as steering_id, t.xml_id as target_xml_id, t.id as target_id, value, steering_target.type from steering_target
+ "select s.xml_id as steering_xml_id, s.id as steering_id, t.xml_id as target_xml_id, t.id as target_id, value, tp.name as type from steering_target
join deliveryservice s on s.id = steering_target.deliveryservice
- join deliveryservice t on t.id = steering_target.target"
+ join deliveryservice t on t.id = steering_target.target
+ join type tp on tp.id = steering_target.type"
);
__PACKAGE__->add_columns(
@@ -45,9 +46,9 @@ __PACKAGE__->add_columns(
"target_id",
{ data_type => "integer", is_nullable => 0, size => 11 },
"value",
- { data_type => "integer", extra => { unsigned => 1 }, is_nullable => 1 },
+ { data_type => "integer", extra => { unsigned => 1 }, is_nullable => 0 },
"type",
- { data_type => "text", is_nullable => 1 }
+ { data_type => "integer", is_nullable => 0 }
);
1;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2976a25f/traffic_ops/app/lib/UI/Steering.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Steering.pm b/traffic_ops/app/lib/UI/Steering.pm
index 723fe1c..2bf80ba 100644
--- a/traffic_ops/app/lib/UI/Steering.pm
+++ b/traffic_ops/app/lib/UI/Steering.pm
@@ -27,74 +27,89 @@ use Scalar::Util qw(looks_like_number);
use JSON;
use POSIX qw(strftime);
use Date::Parse;
-use Data::Dumper;
sub index {
my $self = shift;
my $ds_id = $self->param('id');
- #print STDERR Dumper($ds_id);
-
- &navbarpage($self);
-
- # select * from steering_target where deliveryservice = ds_id;
- #my $steering = { ds_id => $ds_id, ds_name => $self->get_ds_name($ds_id) };
my $steering_obj;
my @steering;
- my $st_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => "weight" }, { order_by => 'value DESC' } );
- my $i = 0;
- if ( $st_rs > 0 ) {
- while ( my $row = $st_rs->next ) {
- $steering_obj->{"target_$i"}->{'target_id'} = $row->target;
- $steering_obj->{"target_$i"}->{'target_name'} = $self->get_ds_name( $row->target );
- $steering_obj->{"target_$i"}->{'target_value'} = $row->value;
- if (!defined($steering_obj->{"target_$i"}->{'target_value'})) { $steering_obj->{"target_$i"}->{'target_value'} = 0; }
- $steering_obj->{"target_$i"}->{'target_type'} = $row->type;
- #print STDERR Dumper($steering_obj->{"target_$i"}->{'target_type'});
- push ( @steering, $steering_obj->{"target_$i"} );
+
+ my $t_rs = $self->db->resultset('Type')->search( { use_in_table => 'steering_target'} );
+ my $type_names;
+ my $type_ids;
+
+ if ( $t_rs > 0 ) {
+ while ( my $row = $t_rs->next ) {
+ $type_names->{$row->id} = $row->name;
+ $type_ids->{$row->name} = $row->id;
+ }
+ }
+
+ my $weight_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => $type_ids->{'STEERING_WEIGHT'} }, { order_by => 'value DESC' } );
+
+ if ( $weight_rs > 0 ) {
+ my $i = 0;
+ while ( my $row = $weight_rs->next ) {
+ my $t = $steering_obj->{"target_$i"};
+ $t->{'target_id'} = $row->target;
+ $t->{'target_name'} = $self->get_ds_name( $row->target );
+ $t->{'target_value'} = $row->value;
+ if (!defined($t->{'target_value'})) { $t->{'target_value'} = 0; }
+ $t->{'target_type'} = $row->type->id;
+ push ( @steering, $t );
$i++;
}
+
}
- $st_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => "order" }, { order_by => 'value ASC' } );
- if ( $st_rs > 0 ) {
- while ( my $row = $st_rs->next ) {
- $steering_obj->{"target_$i"}->{'target_id'} = $row->target;
- $steering_obj->{"target_$i"}->{'target_name'} = $self->get_ds_name( $row->target );
- $steering_obj->{"target_$i"}->{'target_value'} = $row->value;
- if (!defined($steering_obj->{"target_$i"}->{'target_value'})) { $steering_obj->{"target_$i"}->{'target_value'} = 0; }
- $steering_obj->{"target_$i"}->{'target_type'} = $row->type;
- #print STDERR Dumper($steering_obj->{"target_$i"}->{'target_type'});
- push ( @steering, $steering_obj->{"target_$i"} );
+ my $order_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => $type_ids->{'STEERING_ORDER'} }, { order_by => 'value ASC' } );
+
+ if ( $order_rs > 0 ) {
+ my $i = 0;
+ while ( my $row = $order_rs->next ) {
+ my $t = $steering_obj->{"target_$i"};
+ $t->{'target_id'} = $row->target;
+ $t->{'target_name'} = $self->get_ds_name( $row->target );
+ $t->{'target_value'} = $row->value;
+ if (!defined($t->{'target_value'})) { $t->{'target_value'} = 0; }
+ $t->{'target_type'} = $row->type->id;
+ push ( @steering, $t );
$i++;
}
+
}
+
+ &navbarpage($self);
$self->stash(
ds_id => $ds_id,
ds_name => $self->get_ds_name($ds_id),
steering => \@steering,
- ds_data => $self->get_deliveryservices(),
+ ds_data => $self->get_deliveryservices($ds_id),
+ types => $type_names,
fbox_layout => 1
);
}
-sub get_target_weight{
- my $self = shift;
- my $ds_id = shift;
- my $target_id = shift;
- my $weight = $self->db->resultset('SteeringTarget')->search( { -and => [target => $target_id, deliveryservice => $ds_id] } )->get_column('weight')->single();
- return $weight;
-}
-
sub get_ds_name {
my $self = shift;
my $ds_id = shift;
return $self->db->resultset('Deliveryservice')->search( { id => $ds_id } )->get_column('xml_id')->single();
}
+sub get_cdn {
+ my $self = shift;
+ my $ds_id = shift;
+ return $self->db->resultset('Deliveryservice')->search( { id => $ds_id } )->get_column('cdn_id')->single();
+
+}
+
sub get_deliveryservices {
my $self = shift;
+ my $ds_id = shift;
+ my $cdn_id = $self->get_cdn($ds_id);
my %ds_data;
- my $rs = $self->db->resultset('Deliveryservice')->search(undef, { prefetch => [ 'type' ] });
+ #search for only the delivery services that match the CDN ID of the supplied delivery service.
+ my $rs = $self->db->resultset('Deliveryservice')->search({ cdn_id => $cdn_id } , { prefetch => [ 'type' ] });
while ( my $row = $rs->next ) {
if ( $row->type->name =~ m/^HTTP/ ) {
$ds_data{ $row->id } = $row->xml_id;
@@ -104,44 +119,17 @@ sub get_deliveryservices {
return \%ds_data;
}
-sub testupdate {
- my $self = shift;
- my $ds_id = $self->param('id');
- my $st = $self->param('st');
- my @target_id = $self->param('st.target_id');
- my @target_value = $self->param('st.target_value');
- my @target_type = $self->param('st.target_type');
- my @target_delete = $self->param('st.target_delete');
- my @all = $self->req->params();
- print STDERR Dumper(\@all);
- print STDERR Dumper(\@target_id);
- print STDERR Dumper(\@target_value);
- print STDERR Dumper(\@target_type);
- foreach my $i (0 .. $#target_id) {
- #foreach my $id, $weight (@{$st->{'target_id'}}, @{$st->{'target_weight'}}) {
- print STDERR Dumper($target_id[$i]);
- print STDERR Dumper($target_value[$i]);
- print STDERR Dumper($target_type[$i]);
- }
- $self->redirect_to("/ds/$ds_id/steering");
-}
-
sub update {
my $self = shift;
my $ds_id = $self->param('id');
my @target_id = $self->param('st.target_id');
my @target_value = $self->param('st.target_value');
my @target_type = $self->param('st.target_type');
- #my $st = $self->param('st');
my @targets;
my $steering_obj;
foreach my $i (0 .. $#target_id) {
- #foreach my $id (@{$st->{'target_id'}}) {
- #print STDERR Dumper($i);
- #print STDERR Dumper(@target_id[$i]);
- #print STDERR Dumper(@target_weight[$i]);
+ #look for and remove the blank entries - this filters out the deleted entries and the unused new target entry.
if ( $target_id[$i] eq '' ) {
- #print STDERR Dumper("This one is blank");
next;
}
if ( $target_value[$i] eq "" ) { $target_value[$i] = 0 };
@@ -150,8 +138,6 @@ sub update {
$steering_obj->{"target_$i"}->{'target_type'} = $target_type[$i];
push ( @targets, $steering_obj->{"target_$i"} );
}
- print STDERR Dumper(\@targets);
- #if ( 1 ==1 ) {
if ( $self->is_valid(\@targets) ) {
#delete current entries
my $delete = $self->db->resultset('SteeringTarget')
@@ -161,9 +147,7 @@ sub update {
}
#add new entries
- #my $i = 0;
foreach my $i ( keys @targets ) {
- print STDERR Dumper($targets[$i]->{'target_id'});
my $insert = $self->db->resultset('SteeringTarget')->create(
{ deliveryservice => $ds_id,
target => $targets[$i]->{'target_id'},
@@ -180,42 +164,60 @@ sub update {
. "!" );
}
else {
- print STDERR Dumper("at else somehow");
- my $steering_obj;
+ my $steering;
my @steering;
- my $st_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => "weight" }, { order_by => 'value DESC' } );
- my $i = 0;
- if ( $st_rs > 0 ) {
- while ( my $row = $st_rs->next ) {
- $steering_obj->{"target_$i"}->{'target_id'} = $row->target;
- $steering_obj->{"target_$i"}->{'target_name'} = $self->get_ds_name( $row->target );
- $steering_obj->{"target_$i"}->{'target_value'} = $row->value;
- if (!defined($steering_obj->{"target_$i"}->{'target_value'})) { $steering_obj->{"target_$i"}->{'target_value'} = 0; }
- $steering_obj->{"target_$i"}->{'target_type'} = $row->type;
- #print STDERR Dumper($steering_obj->{"target_$i"}->{'target_type'});
- push ( @steering, $steering_obj->{"target_$i"} );
+
+ my $t_rs = $self->db->resultset('Type')->search( { use_in_table => 'steering_target'} );
+ my $type_names;
+ my $type_ids;
+
+ if ( $t_rs > 0 ) {
+ while ( my $row = $t_rs->next ) {
+ $type_names->{$row->id} = $row->name;
+ $type_ids->{$row->name} = $row->id;
+ }
+ }
+
+ my $weight_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => $type_ids->{'STEERING_WEIGHT'} }, { order_by => 'value DESC' } );
+
+ if ( $weight_rs > 0 ) {
+ my $i = 0;
+ while ( my $row = $weight_rs->next ) {
+ my $t = $steering_obj->{"target_$i"};
+ $t->{'target_id'} = $row->target;
+ $t->{'target_name'} = $self->get_ds_name( $row->target );
+ $t->{'target_value'} = $row->value;
+ if (!defined($t->{'target_value'})) { $t->{'target_value'} = 0; }
+ $t->{'target_type'} = $row->type->id;
+ push ( @steering, $t );
$i++;
}
+
}
- $st_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => "order" }, { order_by => 'value ASC' } );
- if ( $st_rs > 0 ) {
- while ( my $row = $st_rs->next ) {
- $steering_obj->{"target_$i"}->{'target_id'} = $row->target;
- $steering_obj->{"target_$i"}->{'target_name'} = $self->get_ds_name( $row->target );
- $steering_obj->{"target_$i"}->{'target_value'} = $row->value;
- if (!defined($steering_obj->{"target_$i"}->{'target_value'})) { $steering_obj->{"target_$i"}->{'target_value'} = 0; }
- $steering_obj->{"target_$i"}->{'target_type'} = $row->type;
- #print STDERR Dumper($steering_obj->{"target_$i"}->{'target_type'});
- push ( @steering, $steering_obj->{"target_$i"} );
+ my $order_rs = $self->db->resultset('SteeringTarget')->search( { deliveryservice => $ds_id, type => $type_ids->{'STEERING_ORDER'} }, { order_by => 'value ASC' } );
+
+ if ( $order_rs > 0 ) {
+ my $i = 0;
+ while ( my $row = $order_rs->next ) {
+ my $t = $steering_obj->{"target_$i"};
+ $t->{'target_id'} = $row->target;
+ $t->{'target_name'} = $self->get_ds_name( $row->target );
+ $t->{'target_value'} = $row->value;
+ if (!defined($t->{'target_value'})) { $t->{'target_value'} = 0; }
+ $t->{'target_type'} = $row->type->id;
+ push ( @steering, $t );
$i++;
}
+
}
+
&stash_role($self);
$self->stash(
ds_id => $ds_id,
ds_name => $self->get_ds_name($ds_id),
steering => \@steering,
ds_data => $self->get_deliveryservices(),
+ types => $type_names,
fbox_layout => 1
);
$self->render("steering/index");
@@ -224,113 +226,33 @@ sub update {
$self->redirect_to("/ds/$ds_id/steering");
}
-sub old_update {
- my $self = shift;
- my $ds_id = $self->param('id');
- my $tid1 = $self->param('steering.target_id_1');
- my $tid2 = $self->param('steering.target_id_2');
- my $tid1_weight = $self->param('steering.target_id_1_weight');
- my $tid2_weight = $self->param('steering.target_id_2_weight');
- if ( $tid1_weight eq "" ) { $tid1_weight = 0; }
- if ( $tid2_weight eq "" ) { $tid2_weight = 0; }
- if ( $self->is_valid() ) {
- my $targets;
- $targets->{$tid1} = $tid1_weight;
- $targets->{$tid2} = $tid2_weight;
-
-
- #delete current entries
- my $delete = $self->db->resultset('SteeringTarget')
- ->search( { deliveryservice => $ds_id } );
- if ( defined($delete) ) {
- $delete->delete();
- }
-
- #add new entries
- foreach my $target ( keys %$targets ) {
- my $insert = $self->db->resultset('SteeringTarget')->create(
- { deliveryservice => $ds_id,
- target => $target,
- weight => $targets->{$target},
- }
- );
-
- $insert->insert();
- }
-
- $self->flash(
- message => "Successfully saved steering assignments for "
- . $self->get_ds_name($ds_id)
- . "!" );
-
- $self->redirect_to("/ds/$ds_id/steering");
- }
- else {
- &stash_role($self);
- my $target_name_1;
- my $target_name_2;
- my $target_id_1_weight;
- my $target_id_2_weight;
- if ($tid1 ) {
- $target_name_1 = $self->get_ds_name($tid1);
- $target_id_1_weight = $self->get_target_weight( $ds_id, $tid1 );
- }
- if ($tid2 ) {
- $target_name_2 = $self->get_ds_name($tid2);
- $target_id_2_weight = $self->get_target_weight( $ds_id, $tid2 );
- }
- $self->stash(
- steering => {
- ds_id => $ds_id,
- ds_name => $self->get_ds_name($ds_id),
- target_id_1 => $tid1,
- target_id_2 => $tid2,
- target_name_1 => $target_name_1,
- target_name_2 => $target_name_2,
- target_id_1_weight => $target_id_1_weight,
- target_id_2_weight => $target_id_2_weight
- },
- ds_data => $self->get_deliveryservices(),
- fbox_layout => 1
- );
- $self->render("steering/index");
- }
-}
sub is_valid {
my $self = shift;
my @targets = @{$_[0]};
- my $last_cdn;
-
+ my %tracker;
+
foreach my $i ( keys @targets ) {
- print STDERR Dumper($targets[$i]->{'target_id'});
- my $cdn = $self->get_ds_cdn( $targets[$i]->{'target_id'} );
- if ( defined($last_cdn) ) {
- if ( $cdn == $last_cdn ) {
- next;
- }
- else {
- $self->flash(message => "Target Deliveryservices must be in the same CDN!" );
+ my $t = $targets[$i];
+ my $t_name = $self->db->resultset('Type')->search( { id => "$t->{'target_type'}" } )->get_column('name')->single();
+ if ( $t_name eq "STEERING_ORDER" && $t->{'target_value'} ne int($t->{'target_value'})) {
+ $self->flash(message => "STEERING_ORDER values must be integers." );
+ return;
+ }
+ elsif ( $t_name eq "STEERING_WEIGHT" && ( $t->{'target_value'} ne int($t->{'target_value'}) || ($t->{'target_value'} < 0 ) ) ) {
+ $self->flash(message => "STEERING_WEIGHT values must be integers greater than 0." );
+ return;
+ }
+ if (exists($t->{'target_id'})) {
+ $tracker{$t->{'target_id'}}++;
+ if ( $tracker{$t->{'target_id'}} > 1 ) {
+ $self->flash(message => "Target delivery services must be unique." );
return;
}
}
- else {
- $last_cdn = $cdn;
- next;
- }
-
}
return $self->valid;
-
-}
-
-
-sub get_ds_cdn {
- my $self = shift;
- my $ds_id = shift;
- my $ds = $self->db->resultset('Deliveryservice')->search( { 'me.id' => $ds_id } )->single();
- return $ds->cdn_id;
}
1;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2976a25f/traffic_ops/app/templates/steering/index.html.ep
----------------------------------------------------------------------
diff --git a/traffic_ops/app/templates/steering/index.html.ep b/traffic_ops/app/templates/steering/index.html.ep
index 7c112c4..91b1f8b 100644
--- a/traffic_ops/app/templates/steering/index.html.ep
+++ b/traffic_ops/app/templates/steering/index.html.ep
@@ -81,10 +81,10 @@
<% my $i = 0; %>
<% foreach my $st (@{$steering}) { %>
<div id="target_<%= $i %>" style="visibility: visible">
- <div style="margin-left: 20px;">
+ <div style="margin-left: 0px;">
<h4>Target # <%= $i+1; %></h4>
</div>
- <div style="margin-left: 30px;">
+ <div style="margin-left: 2px;">
<% unless (field('st.target_id')->valid) { %>
<span class="field-with-error"><%= field('st.target_id')->error %></span><br>
<% } %>
@@ -100,41 +100,36 @@
<option value="<%=$id%>"><%=$ds_data->{$id}%></option>
<% } %>
</select>
- <span style="display:inline-block; width: 10px;"></span>
+ <span style="display:inline-block; width: 5px;"></span>
<% unless (field('st.target_type')->valid) { %>
<span class="field-with-error"><%= field('st.target_type')->error %></span><br><br>
<% } %>
%= label_for 'st.target_type' => ' Type: ', class => 'label'
<select style="max-width:250px" name="st.target_type">
- <option value="<%=$st->{target_type}%>" selected><%=$st->{target_type}%></option>
- <% if ( $st->{target_type} =~ /weight/ ) { %>
- <option value="order">order</option>
- <% } elsif ( $st->{target_type} =~ /order/ ) { %>
- <option value="weight">weight</option>
- <% } else { %>
- <option value="order">order</option>
- <option value="weight">weight</option>
+ <option value="<%=$st->{target_type}%>" selected><%=$types->{$st->{target_type}}%></option>
+ <% foreach my $type (keys $types) { %>
+ <option value="<%= $type %>"><%= $types->{$type} %></option>
<% } %>
</select>
- <span style="display:inline-block; width: 10px;"></span>
+ <span style="display:inline-block; width: 5px;"></span>
<% unless (field('st.target_value')->valid) { %>
<span class="field-with-error"><%= field('st.target_value')->error %></span><br><br>
<% } %>
%= label_for 'st.target_value' => 'Value: ', class => 'label'
<input type="text" style="max-width:25px; text-align:right" name="st.target_value" value = "<%= $st->{target_value} %>">
- <span style="display:inline-block; width: 10px;"></span>
+ <span style="display:inline-block; width: 5px;"></span>
<!-- <a id="deleteTarget" href="">Delete Target</a> -->
- <input type="button" onclick="changeText('st.target_id_<%= $i %>', 'target_<%= $i %>', '<%=$st->{target_name}%>')" value="Delete Target">
+ <input type="button" onclick="changeText('st.target_id_<%= $i %>', 'target_<%= $i %>', '<%=$st->{target_name}%>')" value="Delete">
<br>
<% $i++; %>
</div>
</div><br>
<% } %>
<div id="toggleText" style="visibility: hidden">
- <div style="margin-left: 20px;">
+ <div style="margin-left: 0px;">
<h4>New Target</h4>
</div>
- <div style="margin-left: 30px;">
+ <div style="margin-left: 2px;">
<% unless (field('st.target_id')->valid) { %>
<span class="field-with-error"><%= field('st.target_id')->error %></span><br>
<% } %>
@@ -144,16 +139,17 @@
<% foreach my $id (sort{$ds_data->{$a} cmp $ds_data->{$b}} keys %$ds_data) { %>
<option value="<%=$id%>"><%=$ds_data->{$id}%></option><% } %>
</select>
- <span style="display:inline-block; width: 10px;"></span>
+ <span style="display:inline-block; width: 5px;"></span>
<% unless (field('st.target_type')->valid) { %>
<span class="field-with-error"><%= field('st.target_type')->error %></span><br><br>
<% } %>
%= label_for 'st.target_type' => ' Type: ', class => 'label'
<select style="max-width:250px" name="st.target_type">
- <option value="order">order</option>
- <option value="weight" selected>weight</option>
+ <% foreach my $type (keys $types) { %>
+ <option value="<%= $type %>"><%= $types->{$type} %></option>
+ <% } %>
</select>
- <span style="display:inline-block; width: 10px;"></span>
+ <span style="display:inline-block; width: 5px;"></span>
<% unless (field('st.target_value')->valid) { %>
<span class="field-with-error"><%= field('st.target_value')->error %></span><br><br>
<% } %>