Jobsets: update schema to align with the API
To further align with the API, we return custom JSON in order to display a `visible` field rather than `hidden` -- a `PUT` request expects `visible`, while a `GET` request returns `hidden`. This also allows us to rename the `jobsetinputs` field to `inputs` for the same reason: `PUT` expects `inputs`, while `GET` returns `jobsetinputs`.
This commit is contained in:
committed by
Graham Christensen
parent
d23f431889
commit
f1dd5d202e
@ -270,8 +270,8 @@ sub updateJobset {
|
||||
$jobset->jobsetinputs->delete;
|
||||
|
||||
if ($type == 0) {
|
||||
foreach my $name (keys %{$c->stash->{params}->{jobsetinputs}}) {
|
||||
my $inputData = $c->stash->{params}->{jobsetinputs}->{$name};
|
||||
foreach my $name (keys %{$c->stash->{params}->{inputs}}) {
|
||||
my $inputData = $c->stash->{params}->{inputs}->{$name};
|
||||
my $type = $inputData->{type};
|
||||
my $value = $inputData->{value};
|
||||
my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;
|
||||
|
@ -410,40 +410,40 @@ __PACKAGE__->add_column(
|
||||
"+id" => { retrieve_on_insert => 1 }
|
||||
);
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
"errortime",
|
||||
"lastcheckedtime",
|
||||
"triggertime",
|
||||
"enabled",
|
||||
"keepnr",
|
||||
"checkinterval",
|
||||
"schedulingshares",
|
||||
"starttime"
|
||||
],
|
||||
string_columns => [
|
||||
"name",
|
||||
"project",
|
||||
"description",
|
||||
"nixexprinput",
|
||||
"nixexprpath",
|
||||
"errormsg",
|
||||
"emailoverride",
|
||||
"fetcherrormsg",
|
||||
"type",
|
||||
"flake"
|
||||
],
|
||||
boolean_columns => [
|
||||
"enableemail",
|
||||
"hidden"
|
||||
],
|
||||
eager_relations => {
|
||||
jobsetinputs => "name"
|
||||
}
|
||||
);
|
||||
sub as_json {
|
||||
my $self = shift;
|
||||
|
||||
sub json_hint {
|
||||
return \%hint;
|
||||
my %json = (
|
||||
# columns
|
||||
"errortime" => $self->get_column("errortime"),
|
||||
"lastcheckedtime" => $self->get_column("lastcheckedtime"),
|
||||
"triggertime" => $self->get_column("triggertime"),
|
||||
"enabled" => $self->get_column("enabled"),
|
||||
"keepnr" => $self->get_column("keepnr"),
|
||||
"checkinterval" => $self->get_column("checkinterval"),
|
||||
"schedulingshares" => $self->get_column("schedulingshares"),
|
||||
"starttime" => $self->get_column("starttime"),
|
||||
|
||||
# string_columns
|
||||
"name" => $self->get_column("name") // "",
|
||||
"project" => $self->get_column("project") // "",
|
||||
"description" => $self->get_column("description") // "",
|
||||
"nixexprinput" => $self->get_column("nixexprinput") // "",
|
||||
"nixexprpath" => $self->get_column("nixexprpath") // "",
|
||||
"errormsg" => $self->get_column("errormsg") // "",
|
||||
"emailoverride" => $self->get_column("emailoverride") // "",
|
||||
"fetcherrormsg" => $self->get_column("fetcherrormsg") // "",
|
||||
"type" => $self->get_column("type") // "",
|
||||
"flake" => $self->get_column("flake") // "",
|
||||
|
||||
# boolean_columns
|
||||
"enableemail" => $self->get_column("enableemail") ? JSON::true : JSON::false,
|
||||
"visible" => $self->get_column("hidden") ? JSON::false : JSON::true,
|
||||
|
||||
"inputs" => { map { $_->name => $_ } $self->jobsetinputs }
|
||||
);
|
||||
|
||||
return \%json;
|
||||
}
|
||||
|
||||
1;
|
||||
|
@ -46,8 +46,8 @@
|
||||
<thead>
|
||||
<tr><th></th><th>Input name</th><th>Type</th><th style="width: 50%">Value</th><th>Notify committers</th></tr>
|
||||
</thead>
|
||||
<tbody class="jobsetinputs">
|
||||
[% jobsetinputs = createFromEval ? eval.jobsetevalinputs : jobset.jobsetinputs; FOREACH input IN jobsetinputs %]
|
||||
<tbody class="inputs">
|
||||
[% inputs = createFromEval ? eval.jobsetevalinputs : jobset.jobsetinputs; FOREACH input IN inputs %]
|
||||
[% INCLUDE renderJobsetInput input=input baseName="input-$input.name" %]
|
||||
[% END %]
|
||||
<tr>
|
||||
@ -220,8 +220,8 @@
|
||||
|
||||
$("#submit-jobset").click(function() {
|
||||
var formElements = $(this).parents("form").serializeArray();
|
||||
var data = { 'jobsetinputs': {} };
|
||||
var jobsetinputs = {};
|
||||
var data = { 'inputs': {} };
|
||||
var inputs = {};
|
||||
for (var i = 0; formElements.length > i; i++) {
|
||||
var elem = formElements[i];
|
||||
var match = elem.name.match(/^input-([\w-]+)-(\w+)$/);
|
||||
@ -233,13 +233,13 @@
|
||||
|
||||
if (baseName === "template") continue;
|
||||
|
||||
if (!(baseName in jobsetinputs))
|
||||
jobsetinputs[baseName] = {};
|
||||
if (!(baseName in inputs))
|
||||
inputs[baseName] = {};
|
||||
|
||||
if (param === "name")
|
||||
data.jobsetinputs[elem.value] = jobsetinputs[baseName];
|
||||
data.inputs[elem.value] = inputs[baseName];
|
||||
else
|
||||
jobsetinputs[baseName][param] = elem.value;
|
||||
inputs[baseName][param] = elem.value;
|
||||
}
|
||||
}
|
||||
redirectJSON({
|
||||
|
Reference in New Issue
Block a user