NOTE:When there are no registered visualisation clients, this predicate succeeds with any arguments, and has no effect.
A viewable which has a flexible dimension (see
viewable_create/3
) may be expanded along that dimension
by adding new elements. The dimension must have been declared
flexible when the viewable was first created. The
ExtraElements argument is of the same format as the
Elements argument of viewable_create/3
.
The number and size of the dimensions of ExtraElements depends on the number and size of dimensions of the viewable being expanded. ExtraElements should have one less dimension than the viewable -- dimension DimensionNumber should be missing. The remaining dimensions should have the same sizes as the corresponding dimensions in the viewable.
For example, a viewable of size 3 x 0 x 0 with all dimensions
flexible, can be expanded along dimenson 3 using an
ExtraElements argument of []([], [], []) which has size 3 x
0. The viewable would then have size 3 x 0 x 1. It could then be
expanded along dimension 1 using []
as
ExtraElements since []
can implicitly have the
size 0 x 1. The viewable would then have the size 4 x 0 x 1. Then
dimension 2 could be expanded using [[W],[X],[Y],[Z]]
for ExtraElements as this has size 4 x 1. The final size of
the viewable would then be 4 x 1 x 1.
The extra viewable elements must each also conform to the element type specified when the viewable was created.
Note that when the viewable has one dimension, the ExtraElements argument will simply become the new element itself.
viewable_expand/3
sets the name of the new location
(e.g. the column or row name) to its number as a string. For example,
adding a third row using viewable_expand/3
will result
in the row being named "3". For more control over the name of the new
location use viewable_expand/4
.
[Assuming that at least one visualisation client is registered] Success: viewable_create(v1, [[X, Y, Z], [A, B, C]], array([flexible, fixed], any)), viewable_expand(v1, 1, [R, S, T]). lib(fd), fd:([X, Y, Z, R] :: 1..10), viewable_create(v1, [X, Y, Z], array([flexible], numeric_bounds)), viewable_expand(v1, 1, R). viewable_create(v1, []([](X, Y, Z), [](A, B, C)), array([fixed, flexible], any)), viewable_expand(v1, 2, [R, S]). viewable_create(v1, [[], [], []], array([flexible, flexible, flexible], any)), viewable_expand(v1, 3, []([], [], [])), viewable_expand(v1, 1, []), viewable_expand(v1, 2, [[W], [X], [Y], [Z]]), viewable_size(v1, Size). [gives Size = [4,1,1]] viewable_create(v1, [], array([flexible], any)), viewable_expand(v1, 1, F), viewable_expand(v1, 1, G), viewable_size(v1, Size). [gives Size = [2]] Failure: viewable_expand(no, 2, [R, S]). viewable_create(v1, [[X, Y, Z], [A, B, C]], array([fixed, flexible], any)), viewable_expand(v1, 1, [R, S, T]). viewable_create(v1, [[X, Y, Z], [A, B, C]], array([flexible, fixed], any)), viewable_expand(v1, 2, [R, S]). Exceptions raised: viewable_create(v1, [[X, Y, Z], [A, B, C]], array([flexible, fixed], any)), viewable_expand(_, 1, [R, S, T]). [gives error 4] viewable_create(v1, [[X, Y, Z], [A, B, C]], array([flexible, fixed], any)), viewable_expand(v1, _, [R, S, T]). [gives error 5] viewable_create(v1, [[X, Y, Z], [A, B, C]], array([flexible, fixed], any)), viewable_expand(v1, 3, [R, S, T]). [gives error 6] viewable_create(v1, []([](X, Y, Z), [](A, B, C)), array([fixed, flexible], any)), viewable_expand(v1, 2, _). [gives error 1] viewable_create(v1, [[X, Y, Z], [A, B, C]], array([flexible, fixed], any)), viewable_expand(v1, 1, [R, S, T, Q]). [gives error 1] lib(fd), fd:([X, Y, Z] :: 1..10), viewable_create(v1, [X, Y, Z], array([flexible], numeric_bounds)), viewable_expand(v1, 1, an_atom) [gives error 5]