diff --git a/src/building_blocks.jl b/src/building_blocks.jl index ffcfc8569c878b8b14dc41caf074a330a3113041..4271bd4a6a24391274c3c6d0e08431dc20d54061 100644 --- a/src/building_blocks.jl +++ b/src/building_blocks.jl @@ -209,7 +209,6 @@ function Base.show(io::IO, printer::BuildingBlockPrinter) ft = fieldtype(typeof(block), name) if ( ft in (VariableType, Model) || - ft <: BuildingBlock || (ft <: AbstractVector && eltype(ft) == VariableType) || string(name)[1] == '_' ) @@ -235,19 +234,6 @@ function Base.show(io::IO, printer::BuildingBlockPrinter) print(io, "$(nameof(fn))=$(printed_value), ") end print(io, ")") - - if block isa ContainerBlock - use_start_time = isnothing(printer.start_time) ? 0. : printer.start_time - print(io, ":") - for (child_index, child_block) in get_children_blocks(block) - child_printer = BuildingBlockPrinter( - child_block, - _robust_value(start_time(block, child_index) + use_start_time), - printer.spaces + 2 - ) - print(io, "\n", repeat(' ', printer.spaces + 2), "- ", child_index, ": ", child_printer) - end - end end diff --git a/src/sequences.jl b/src/sequences.jl index c61ca50362bbb3faf1c6483b1401d1686a6530ed..8430f858e4ada99e101b6091bd9d534b16c5cd9f 100644 --- a/src/sequences.jl +++ b/src/sequences.jl @@ -2,10 +2,11 @@ Define the [`Sequence`](@ref) building block. """ module Sequences +import Printf: @sprintf import JuMP: Model, @constraint import ...BuildSequences: @global_model_constructor import ...Variables: variables, start_time, duration, VariableType, get_free_variable, TR, end_time -import ...BuildingBlocks: BuildingBlock, ContainerBlock, to_block, get_children_indices, scanner_constraints!, fixed, BuildingBlockPrinter +import ...BuildingBlocks: BuildingBlock, ContainerBlock, to_block, get_children_indices, scanner_constraints!, fixed, BuildingBlockPrinter, _robust_value, get_children_blocks """ Sequence(building_blocks...; TR=nothing, scanner=nothing) @@ -64,9 +65,34 @@ variables(::Type{<:Sequence}) = [TR] # print timings when printing sequences Base.show(io::IO, seq::Sequence) = print(io, BuildingBlockPrinter(seq, 0., 0)) +function Base.show(io::IO, printer::BuildingBlockPrinter{<:Sequence}) + seq = printer.bb + print(io, "Sequence(") + d = _robust_value(duration(seq)) + if !isnothing(d) + if !isnothing(printer.start_time) + print(io, "t=", @sprintf("%.3g", printer.start_time), "-", @sprintf("%.3g", printer.start_time + d), ", ") + else + print(io, "duration=", @sprintf("%.3g", d), ",") + end + end + TR = _robust_value(seq.TR) + if !isnothing(TR) + print(io, "TR=", Int(round(TR))) + end + print(io, "):") -end + for (child_index, child_block) in get_children_blocks(seq) + child_printer = BuildingBlockPrinter( + child_block, + isnothing(printer.start_time) ? nothing : _robust_value(start_time(seq, child_index) + printer.start_time), + printer.spaces + 2 + ) + print(io, "\n", repeat(' ', printer.spaces + 2), "- ", child_index, ": ", child_printer) + end +end +end