Live
Job flight.job which made the allocation
+ ClientNotes
+ map from note key
+ to one of
+ scalar
+ array of values supplied by clients
+ hash of keys/values supplied by clients
+
* = internal to plan
** = computed by launder_check_plan
+ = as shown to clients
Share optional struct containing
Type
Shares
+ [ClientNotes]
+ as for Plan; merged by
+ for scalar, updating from Booking if specified
+ for array, appending Booking to Plan
+ for hash, updating individual values from Booking
+ type must not have changed!
Sharing resources:
Note that whether a resource is free, or simply nonexistent, is not
represented.
+
+
+Note keys
+---------
+
+Note key name (key in ClientNotes):
+ Note value format:
+
+(none yet defined)
$plan->{Start}= time;
$plan->{Events}= { };
$plan->{Unprocessed}= [ ];
+ $plan->{ClientNotes}= { };
my %magictask;
foreach my $taskrefkey (qw(preparing shared)) {
}
$jplan->{Events}{$reso}= \@jevts;
}
+
+ $jplan->{ClientNotes} = $plan->{ClientNotes};
+
print to_json($jplan),"\n" or die $!;
}
);
}
+ my $jnotes = $jbookings->{ClientNotes} // { };
+ foreach my $k (sort keys %$jnotes) {
+ my $v = $jnotes->{$k};
+ my $newt = ref $v // '(none)';
+ if (exists $plan->{ClientNotes}{$k}) {
+ my $oldt = ref $plan->{ClientNotes}{$k} // '(none)';
+ die "$k $oldt -> $newt" unless $oldt eq $newt;
+ }
+ if (!ref $v) {
+ $plan->{ClientNotes}{$k} = $v;
+ } elsif (ref $v eq 'HASH') {
+ $plan->{ClientNotes}{$k}{$_} = $v->{$_} foreach keys %$v;
+ } elsif (ref $v eq 'ARRAY') {
+ push @{ $plan->{ClientNotes}{$_} }, @{ $jnotes->{$_} };
+ } else {
+ die "$k $newt";
+ }
+ }
+
check_write_new_plan();
}