181 lines
4.2 KiB

package NGCP::Panel::Form::TimeSet::API;
use HTML::FormHandler::Moose;
extends 'NGCP::Panel::Form::TimeSet::Reseller';
has_field 'reseller_id' => (
type => 'Integer',
required => 1,
);
has_field 'times' => (
type => 'Repeatable',
do_wrapper => 1,
do_label => 0,
element_attr => {
rel => ['tooltip'],
title => ['An array of time definitions with a number of optional and mandatory keys.']
},
);
has_field 'times.id' => (
type => 'Hidden',
);
has_field 'times.start' => (
type => '+NGCP::Panel::Field::DateTime',
label => 'Start',
required => 1,
);
has_field 'times.end' => (
type => '+NGCP::Panel::Field::DateTime',
label => 'End',
);
has_field 'times.freq' => (
type => 'Select',
label => 'Frequency',
options => [
map { +{value => $_, label => $_}; } (qw/secondly minutely hourly daily weekly monthly yearly/)
],
);
has_field 'times.until' => (
label => 'Until',
type => '+NGCP::Panel::Field::DateTime',
element_attr => {
rel => ['tooltip'],
title => ['Can\'t be defined together with "Count".']
},
);
has_field 'times.count' => (
type => 'PosInteger',
label => 'Count',
element_attr => {
rel => ['tooltip'],
title => ['Valid value is a positive integer. Can\'t be defined together with "Until".']
},
);
has_field 'times.interval' => (
type => 'PosInteger',
label => 'Interval',
element_attr => {
rel => ['tooltip'],
title => ['Valid value is a positive integer.']
},
);
has_field 'times.bysecond' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By second',
min_value => 0,
max_value => 59,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 0 to 59, i.e. 1,3,59.']
},
);
has_field 'times.byminute' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By minute',
min_value => 0,
max_value => 59,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 0 to 59, i.e. 1,3,59.']
},
);
has_field 'times.byhour' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By hour',
min_value => 0,
max_value => 23,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 0 to 23, i.e. 1,3,23.']
},
);
has_field 'times.byday' => (
type => 'Text', # (\+|-)?\d*(MO|DI|MI|DO|FR|SA|SU)
label => 'By day',
element_attr => {
rel => ['tooltip'],
title => ['Value format is ~[+|-~]~[NUMBER~](MO|DI|MI|DO|FR|SA|SU). Example: 5FR (means fifth friday).']
},
# example: 5FR (means fifth friday)
);
has_field 'times.bymonthday' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By month day',
min_value => 1,
max_value => 31,
plusminus => 1,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 1 to 31, i.e. 1,3,31.']
},
);
has_field 'times.byyearday' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By year day',
min_value => 1,
max_value => 366,
plusminus => 1,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 1 to 366, i.e. 1,3,366.']
},
);
has_field 'times.byweekno' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By week number',
min_value => 1,
max_value => 53,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 1 to 53, i.e. 1,3,53.']
},
);
has_field 'times.bymonth' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By month',
min_value => 1,
max_value => 12,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 1 to 12, i.e. 1,3,12.']
},
);
has_field 'times.bysetpos' => (
type => '+NGCP::Panel::Field::IntegerList',
label => 'By set position',
min_value => 1,
max_value => 366,
plusminus => 1,
element_attr => {
rel => ['tooltip'],
title => ['Value is set of numbers from 1 to 366, i.e. 1,3,366.']
},
);
has_field 'times.comment' => (
type => 'Text',
label => 'Comment',
);
1;
# vim: set tabstop=4 expandtab: