use plotly implementation for html/js/ijulia
This commit is contained in:
parent
0e79070ad8
commit
7ae43ee9f6
@ -804,9 +804,12 @@ plotly_series_json(plt::Plot) = JSON.json(plotly_series(plt), 4)
|
|||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
|
html_head(plt::Plot{PlotlyBackend}) = plotly_html_head(plt)
|
||||||
|
html_body(plt::Plot{PlotlyBackend}) = plotly_html_body(plt)
|
||||||
|
|
||||||
const ijulia_initialized = Ref(false)
|
const ijulia_initialized = Ref(false)
|
||||||
|
|
||||||
function html_head(plt::Plot{PlotlyBackend})
|
function plotly_html_head(plt::Plot)
|
||||||
local_file = ("file://" * plotly_local_file_path)
|
local_file = ("file://" * plotly_local_file_path)
|
||||||
plotly = use_local_dependencies[] ? local_file : plotly_remote_file_path
|
plotly = use_local_dependencies[] ? local_file : plotly_remote_file_path
|
||||||
if isijulia() && !ijulia_initialized[]
|
if isijulia() && !ijulia_initialized[]
|
||||||
@ -825,7 +828,7 @@ function html_head(plt::Plot{PlotlyBackend})
|
|||||||
return "<script src=$(repr(plotly))></script>"
|
return "<script src=$(repr(plotly))></script>"
|
||||||
end
|
end
|
||||||
|
|
||||||
function html_body(plt::Plot{PlotlyBackend}, style = nothing)
|
function plotly_html_body(plt, style = nothing)
|
||||||
if style == nothing
|
if style == nothing
|
||||||
w, h = plt[:size]
|
w, h = plt[:size]
|
||||||
style = "width:$(w)px;height:$(h)px;"
|
style = "width:$(w)px;height:$(h)px;"
|
||||||
@ -841,17 +844,14 @@ function html_body(plt::Plot{PlotlyBackend}, style = nothing)
|
|||||||
html
|
html
|
||||||
end
|
end
|
||||||
|
|
||||||
function js_body(plt::Plot{PlotlyBackend}, uuid)
|
function js_body(plt::Plot, uuid)
|
||||||
js = """
|
js = """
|
||||||
PLOT = document.getElementById('$(uuid)');
|
PLOT = document.getElementById('$(uuid)');
|
||||||
Plotly.plot(PLOT, $(plotly_series_json(plt)), $(plotly_layout_json(plt)));
|
Plotly.plot(PLOT, $(plotly_series_json(plt)), $(plotly_layout_json(plt)));
|
||||||
"""
|
"""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function plotly_show_js(io::IO, plot::Plot)
|
||||||
# ----------------------------------------------------------------
|
|
||||||
|
|
||||||
function _show(io::IO, ::MIME"application/vnd.plotly.v1+json", plot::Plot{PlotlyBackend})
|
|
||||||
data = []
|
data = []
|
||||||
for series in plot.series_list
|
for series in plot.series_list
|
||||||
append!(data, plotly_series(plot, series))
|
append!(data, plotly_series(plot, series))
|
||||||
@ -860,6 +860,12 @@ function _show(io::IO, ::MIME"application/vnd.plotly.v1+json", plot::Plot{Plotly
|
|||||||
JSON.print(io, Dict(:data => data, :layout => layout))
|
JSON.print(io, Dict(:data => data, :layout => layout))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
|
function _show(io::IO, ::MIME"application/vnd.plotly.v1+json", plot::Plot{PlotlyBackend})
|
||||||
|
plotly_show_js(io, plot)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyBackend})
|
function _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyBackend})
|
||||||
write(io, standalone_html(plt))
|
write(io, standalone_html(plt))
|
||||||
|
|||||||
@ -77,9 +77,17 @@ end
|
|||||||
|
|
||||||
const _plotlyjs_showformats = ["text/html", "application/vnd.plotly.v1+json"]
|
const _plotlyjs_showformats = ["text/html", "application/vnd.plotly.v1+json"]
|
||||||
|
|
||||||
for mime in ["text/html", "application/vnd.plotly.v1+json"]
|
# for mime in ["text/html", "application/vnd.plotly.v1+json"]
|
||||||
@eval _show(io::IO, mime::MIME{Symbol($mime)}, plt::Plot{PlotlyJSBackend}) = show(io, mime, plotlyjs_syncplot(plt))
|
# @eval _show(io::IO, mime::MIME{Symbol($mime)}, plt::Plot{PlotlyJSBackend}) = show(io, mime, plotlyjs_syncplot(plt))
|
||||||
end
|
# end
|
||||||
|
|
||||||
|
# Use the Plotly implementation for json and html:
|
||||||
|
_show(io::IO, mime::MIME"application/vnd.plotly.v1+json", plt::Plot{PlotlyJSBackend}) = plotly_show_js(io, plot)
|
||||||
|
|
||||||
|
html_head(plt::Plot{PlotlyJSBackend}) = plotly_html_head(plt)
|
||||||
|
html_body(plt::Plot{PlotlyJSBackend}) = plotly_html_body(plt)
|
||||||
|
|
||||||
|
_show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = write(io, standalone_html(plt))
|
||||||
|
|
||||||
# _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = show(io, ::MIME"text/html", plt.o)
|
# _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = show(io, ::MIME"text/html", plt.o)
|
||||||
# _show(io::IO, ::MIME"image/svg+xml", plt::Plot{PlotlyJSBackend}) = PlotlyJS.savefig(io, plt.o, format="svg")
|
# _show(io::IO, ::MIME"image/svg+xml", plt::Plot{PlotlyJSBackend}) = PlotlyJS.savefig(io, plt.o, format="svg")
|
||||||
|
|||||||
@ -20,7 +20,10 @@ frontends like jupyterlab and nteract.
|
|||||||
_ijulia__extra_mime_info!(plt::Plot, out::Dict) = out
|
_ijulia__extra_mime_info!(plt::Plot, out::Dict) = out
|
||||||
|
|
||||||
function _ijulia__extra_mime_info!(plt::Plot{PlotlyJSBackend}, out::Dict)
|
function _ijulia__extra_mime_info!(plt::Plot{PlotlyJSBackend}, out::Dict)
|
||||||
out["application/vnd.plotly.v1+json"] = JSON.lower(plt.o)
|
out["application/vnd.plotly.v1+json"] = Dict(
|
||||||
|
:data => plotly_series(plt),
|
||||||
|
:layout => plotly_layout(plt)
|
||||||
|
)
|
||||||
out
|
out
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user