JavisNB
How to use JavisNB
JavisNB is a small package for use Javis.jl within Jupyter and Pluto notebooks.
It is very straightforward to use. First write all your code for an animation just like you would with Javis and then replace Javis.render with JavisNB.embed. Alongside sending the rendered animation to a file, the gif will be shown in the notebook.
The liveview argument that in Javis.render would activate the Javis Live Viewer tool is available in JavisNB.embed as well but works differently. In Pluto it returns an array of the frames composing a gif. In Jupyter it creates an interactive view of the animation and lets you scroll through the frames of the gif.
Pluto
You will need to use two packages:
Pluto - simple reactive notebooks for Julia
PlutoUI - enables the creation of widgets in Pluto notebooks
To install these packages, run the following in your Julia REPL:
] add Pluto, PlutoUIAfter adding the packages run:
using Pluto
Pluto.run()Now you should have a working Pluto environment. For more information about Pluto check the package home page.
Once Pluto is running one can easily use Javis within a notebook using embed in place of render:

Copy and paste each of the code blocks into different cells
# Top cell
using JavisNB, Javis
# Bottom cell
begin
function ground(args...)
background("blue")
sethue("black")
end
vid = Video(500, 150)
Background(1:50, ground)
o = Object(JCircle(Point(-100, 0), 20, action = :fill, color = "orange"))
act!(o, Action(1:25, anim_translate(Point(200, 0))))
act!(o, Action(26:50, anim_translate(Point(-200, 0))))
a = embed(vid, pathname = "test.gif")
endOne can also have the animation returned as an array of frames to work on it more carefully, this is done setting liveview=true. Together with PlutoUI this allows an interactive interface:

Copy and paste each of the code blocks into different cells
# Cell 1
using JavisNB, Javis, PlutoUI
# Cell 2
begin
function ground(args...)
background("blue")
sethue("black")
end
vid = Video(500, 150)
Background(1:50, ground)
o = Object(JCircle(Point(-100, 0), 20, action = :fill, color = "orange"))
act!(o, Action(1:25, anim_translate(Point(200, 0))))
act!(o, Action(26:50, anim_translate(Point(-200, 0))))
a = embed(vid, pathname = "test.gif", liveview = true)
end
# Cell 3
@bind idx Slider(1:length(a), show_value=true)
# Cell 4
a[idx]Jupyter
You will need to use one package:
To install it run the following in the Julia REPL
] add IJuliaAfter the package is installed type
using IJulia
notebook()You should now have a running Jupyter notebook. If that is not the case check the IJulia documentation for possible solutions.
To make the Jupyter Notebook experience with Javis as easy as possible, calling embed to render a gif will directly show the video as MIME element in the notebook as seen below:

Copy and paste each of the code blocks into different cells
# Top cell
using JavisNB, Javis
# Bottom cell
begin
function ground(args...)
background("blue")
sethue("black")
end
vid = Video(500, 150)
Background(1:50, ground)
o = Object(JCircle(Point(-100, 0), 20, action = :fill, color = "orange"))
act!(o, Action(1:25, anim_translate(Point(200, 0))))
act!(o, Action(26:50, anim_translate(Point(-200, 0))))
a = embed(vid, pathname = "test.gif")
endJavis supports a minimal version of the Javis viewer using the Interact.jl package. If embed is called with liveview=true it automatically detects IJulia (the Jupyter Notebook environment) and allow for interactive scrolling of the gif frames, as seen below:

Copy and paste each of the code blocks into different cells
# Top cell
using JavisNB, Javis
# Bottom cell
begin
function ground(args...)
background("blue")
sethue("black")
end
vid = Video(500, 150)
Background(1:50, ground)
o = Object(JCircle(Point(-100, 0), 20, action = :fill, color = "orange"))
act!(o, Action(1:25, anim_translate(Point(200, 0))))
act!(o, Action(26:50, anim_translate(Point(-200, 0))))
a = embed(vid, pathname = "test.gif", liveview=true)
endCommon Problems:
WebIO error (WebIO is not installed)
The comment in discussion here should help out with the problem.
No change on dragging the silder/changing the value in textbox
Try restarting the kernel. This might problably be an error with the WebIO integration.