1717function augment_encoding_type (x:: AbstractDict , data:: Vega.DataValuesNode )
1818 if ! haskey (x, " type" ) && ! haskey (x, " aggregate" ) && haskey (x, " field" ) && haskey (data. columns, Symbol (x[" field" ]))
1919 new_x = copy (x)
20-
20+
2121 jl_type = eltype (data. columns[Symbol (x[" field" ])])
22-
22+
2323 if jl_type <: DataValues.DataValue
2424 jl_type = eltype (jl_type)
2525 end
26-
26+
2727 if jl_type <: Number
2828 new_x[" type" ] = " quantitative"
2929 elseif jl_type <: AbstractString
3030 new_x[" type" ] = " nominal"
3131 elseif jl_type <: Dates.AbstractTime
3232 new_x[" type" ] = " temporal"
3333 end
34-
34+
3535 return new_x
3636 else
3737 return x
38+ end
3839end
40+
41+ function augment_encoding_type (x:: AbstractArray , data:: Vega.DataValuesNode )
42+ x = [augment_encoding_type (k,data) for k in x]
43+ return x
3944end
4045
4146function add_encoding_types (specdict, parentdata= nothing )
42- if (haskey (specdict, " data" ) && haskey (specdict[" data" ], " values" ) && specdict[" data" ][" values" ] isa Vega. DataValuesNode) || parentdata != = nothing
47+ if (haskey (specdict, " data" ) && haskey (specdict[" data" ], " values" ) && specdict[" data" ][" values" ] isa Vega. DataValuesNode) || parentdata != = nothing
4348 data = (haskey (specdict, " data" ) && haskey (specdict[" data" ], " values" ) && specdict[" data" ][" values" ] isa Vega. DataValuesNode) ? specdict[" data" ][" values" ] : parentdata
4449
4550 newspec = OrderedDict {String,Any} (
46- (k == " encoding" && v isa AbstractDict) ? k => OrderedDict {String,Any} (kk => augment_encoding_type (vv, data) for (kk, vv) in v) :
51+ (k == " encoding" && v isa AbstractDict) ? k => OrderedDict {String,Any} (kk => augment_encoding_type (vv, data) for (kk, vv) in v) :
4752 k == " spec" ? k => add_encoding_types (v, data) :
4853 k in (" layer" , " concat" , " vconcat" , " hconcat" ) ? k => [add_encoding_types (i, data) for i in v] : k => v for (k, v) in specdict
4954 )
@@ -59,8 +64,8 @@ function our_json_print(io, spec::VLSpec)
5964end
6065
6166function (p:: VLSpec )(data)
62- TableTraits. isiterabletable (data) || throw (ArgumentError (" 'data' is not a table." ))
63-
67+ TableTraits. isiterabletable (data) || throw (ArgumentError (" 'data' is not a table." ))
68+
6469 it = IteratorInterfaceExtensions. getiterator (data)
6570
6671 datavaluesnode = Vega. DataValuesNode (it)
0 commit comments