Coder Social home page Coder Social logo

escher.jl's People

Contributors

ahwillia avatar alinchis avatar astrieanna avatar aviks avatar cdsousa avatar dcjones avatar iainnz avatar izaid avatar jgoldfar avatar jiahao avatar kkruups avatar maximsch2 avatar michaeleroy avatar notthemessiah avatar nw11 avatar omus avatar pabloferz avatar pallharaldsson avatar phillc73 avatar randyzwitch avatar ranjanan avatar rohitvarkey avatar sbromberger avatar shashi avatar sjkelly avatar timholy avatar tkelman avatar totalverb avatar vladcocheci avatar vyp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

escher.jl's Issues

Load error after include(Pkg.dir("Escher", "src", "cli", "serve.jl"))

Version 0.4.0-dev+5293 (2015-06-10 09:21 UTC)
julia> using Escher
Warning: New definition
serialize(Any, DataStructures.HashDict) at /apps/infrafs1/dbrowne/.julia/v0.4/DataStructures/src/hashdict.jl:91
is ambiguous with:
serialize(Base.SerializationState, Any) at serialize.jl:399.
To fix, define
serialize(Base.SerializationState, DataStructures.HashDict)
before the new definition.
Warning: New definition
serialize(Any, DataStructures.HashDict) at /apps/infrafs1/dbrowne/.julia/v0.4/DataStructures/src/hashdict.jl:91
is ambiguous with:
serialize(Base.IO, Any) at serialize.jl:421.
To fix, define
serialize(Base.IO, DataStructures.HashDict)
before the new definition.
Warning: New definition
deserialize(Any, Type{DataStructures.HashDict{#K<:Any, #V<:Any, #O<:Any}}) at /apps/infrafs1/dbrowne/.julia/v0.4/DataStructures/src/hashdict.jl:100
is ambiguous with:
deserialize(Base.SerializationState, DataType) at serialize.jl:653.
To fix, define
deserialize(Base.SerializationState, Type{DataStructures.HashDict{#K<:Any, #V<:Any, #O<:Any}})
before the new definition.

julia> include(Pkg.dir("Escher", "src", "cli", "serve.jl"))
ERROR: LoadError: LoadError: LoadError: LoadError: UndefVarError: Range1 not defined
in include at ./boot.jl:253
in include_from_node1 at ./loading.jl:133
in reload_path at ./loading.jl:157
in _require at ./loading.jl:69
in require at ./loading.jl:55
in require at /apps/infrafs1/dbrowne/.julia/v0.4/Requires/src/require.jl:8
in include at ./boot.jl:253
in include_from_node1 at ./loading.jl:133
in reload_path at ./loading.jl:157
in _require at ./loading.jl:69
in require at ./loading.jl:55
in require at /apps/infrafs1/dbrowne/.julia/v0.4/Requires/src/require.jl:8
in include at ./boot.jl:253
in include_from_node1 at ./loading.jl:133
in reload_path at ./loading.jl:157
in _require at ./loading.jl:69
in require at ./loading.jl:52
in require at /apps/infrafs1/dbrowne/.julia/v0.4/Requires/src/require.jl:8
in include at ./boot.jl:253
in include_from_node1 at ./loading.jl:133
while loading /apps/infrafs1/dbrowne/.julia/v0.4/Lazy/src/Lazy.jl, in expression starting on line 106
while loading /apps/infrafs1/dbrowne/.julia/v0.4/Hiccup/src/Hiccup.jl, in expression starting on line 3
while loading /apps/infrafs1/dbrowne/.julia/v0.4/Mux/src/Mux.jl, in expression starting on line 20
while loading /apps/infrafs1/dbrowne/.julia/v0.4/Escher/src/cli/serve.jl, in expression starting on line 5

julia>

Issues with examples

compose.jl

js console ouput:

Uncaught ReferenceError: IPython is not defined1../is-vpatch @ compose.jl:5s @ compose.jl:5e @ compose.jl:5(anonymous function) @ compose.jl:5

latex.jl

type: anonymous: in apply, expected Function, got ASCIIString
 in anonymous at /Users/mac/.julia/v0.3/Escher/src/cli/serve.jl:134
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:15
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in splitquery at /Users/mac/.julia/v0.3/Mux/src/basics.jl:28
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in wcatch at /Users/mac/.julia/v0.3/Mux/src/websockets.jl:12
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in todict at /Users/mac/.julia/v0.3/Mux/src/basics.jl:21
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/server.jl:36
 in handle at /Users/mac/.julia/v0.3/WebSockets/src/WebSockets.jl:287
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:359
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:99
 in http_parser_execute at /Users/mac/.julia/v0.3/HttpParser/src/HttpParser.jl:106
 in add_data at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:148
 in process_client at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:330
 in anonymous at task.jl:340

mc.jl

`lift` has no method matching lift(::Function, ::Type{Any}, ::Input{Bool})
while loading /Users/mac/.julia/v0.3/Escher/examples/mc.jl, in expression starting on line 11
 in loadfile at /Users/mac/.julia/v0.3/Escher/src/cli/serve.jl:24
 in anonymous at /Users/mac/.julia/v0.3/Escher/src/cli/serve.jl:128
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:15
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in splitquery at /Users/mac/.julia/v0.3/Mux/src/basics.jl:28
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in wcatch at /Users/mac/.julia/v0.3/Mux/src/websockets.jl:12
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in todict at /Users/mac/.julia/v0.3/Mux/src/basics.jl:21
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/server.jl:36
 in handle at /Users/mac/.julia/v0.3/WebSockets/src/WebSockets.jl:287
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:359
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:99
 in http_parser_execute at /Users/mac/.julia/v0.3/HttpParser/src/HttpParser.jl:106
 in add_data at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:148
 in process_client at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:330
 in anonymous at task.jl:340

plot.jl

plot not defined
 in anonymous at /Users/mac/.julia/v0.3/Escher/src/cli/serve.jl:134
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:15
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in splitquery at /Users/mac/.julia/v0.3/Mux/src/basics.jl:28
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in wcatch at /Users/mac/.julia/v0.3/Mux/src/websockets.jl:12
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in todict at /Users/mac/.julia/v0.3/Mux/src/basics.jl:21
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/server.jl:36
 in handle at /Users/mac/.julia/v0.3/WebSockets/src/WebSockets.jl:287
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:359
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:99
 in http_parser_execute at /Users/mac/.julia/v0.3/HttpParser/src/HttpParser.jl:106
 in add_data at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:148
 in process_client at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:330
 in anonymous at task.jl:340

plotting.jl

drawing not defined
 in anonymous at /Users/mac/.julia/v0.3/Escher/src/cli/serve.jl:134
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:15
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in splitquery at /Users/mac/.julia/v0.3/Mux/src/basics.jl:28
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in wcatch at /Users/mac/.julia/v0.3/Mux/src/websockets.jl:12
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in todict at /Users/mac/.julia/v0.3/Mux/src/basics.jl:21
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/Mux.jl:8
 in anonymous at /Users/mac/.julia/v0.3/Mux/src/server.jl:36
 in handle at /Users/mac/.julia/v0.3/WebSockets/src/WebSockets.jl:287
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:359
 in on_message_complete at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:99
 in http_parser_execute at /Users/mac/.julia/v0.3/HttpParser/src/HttpParser.jl:106
 in add_data at /Users/mac/.julia/v0.3/HttpServer/src/RequestParser.jl:148
 in process_client at /Users/mac/.julia/v0.3/HttpServer/src/HttpServer.jl:330
 in anonymous at task.jl:340

widgets.jl

Buttons are unresponsive, don't know if that is intentional.

Is 0.4 supported?

I just tried setting up Escher, but the server failed to load. Do you want help tracking down issues for 0.4? My julia version is about a week behind master right now.

[tom@tomoffice bin]$ ./escher --serve
Warning: New definition 
    serialize(Any, DataStructures.HashDict) at /home/tom/.julia/v0.4/DataStructures/src/hashdict.jl:91
is ambiguous with: 
    serialize(Base.SerializationState, Any) at serialize.jl:399.
To fix, define 
    serialize(Base.SerializationState, DataStructures.HashDict)
before the new definition.
Warning: New definition 
    serialize(Any, DataStructures.HashDict) at /home/tom/.julia/v0.4/DataStructures/src/hashdict.jl:91
is ambiguous with: 
    serialize(Base.IO, Any) at serialize.jl:421.
To fix, define 
    serialize(Base.IO, DataStructures.HashDict)
before the new definition.
Warning: New definition 
    deserialize(Any, Type{DataStructures.HashDict{#K<:Any, #V<:Any, #O<:Any}}) at /home/tom/.julia/v0.4/DataStructures/src/hashdict.jl:100
is ambiguous with: 
    deserialize(Base.SerializationState, DataType) at serialize.jl:653.
To fix, define 
    deserialize(Base.SerializationState, Type{DataStructures.HashDict{#K<:Any, #V<:Any, #O<:Any}})
before the new definition.
ERROR: LoadError: LoadError: LoadError: LoadError: LoadError: UndefVarError: Range1 not defined
 in include at ./boot.jl:253
 in include_from_node1 at ./loading.jl:133
 in reload_path at ./loading.jl:157
 in _require at ./loading.jl:69
 in require at ./loading.jl:55
 in require at /home/tom/.julia/v0.4/Requires/src/require.jl:8
 in include at ./boot.jl:253
 in include_from_node1 at ./loading.jl:133
 in reload_path at ./loading.jl:157
 in _require at ./loading.jl:69
 in require at ./loading.jl:55
 in require at /home/tom/.julia/v0.4/Requires/src/require.jl:8
 in include at ./boot.jl:253
 in include_from_node1 at ./loading.jl:133
 in reload_path at ./loading.jl:157
 in _require at ./loading.jl:69
 in require at ./loading.jl:52
 in require at /home/tom/.julia/v0.4/Requires/src/require.jl:8
 in include at ./boot.jl:253
 in include_from_node1 at ./loading.jl:133
 in include at ./boot.jl:253
 in include_from_node1 at loading.jl:133
 in process_options at ./client.jl:312
 in _start at ./client.jl:412
while loading /home/tom/.julia/v0.4/Lazy/src/Lazy.jl, in expression starting on line 106
while loading /home/tom/.julia/v0.4/Hiccup/src/Hiccup.jl, in expression starting on line 3
while loading /home/tom/.julia/v0.4/Mux/src/Mux.jl, in expression starting on line 20
while loading /home/tom/.julia/v0.4/Escher/src/cli/serve.jl, in expression starting on line 5
while loading /home/tom/.julia/v0.4/Escher/bin/escher, in expression starting on line 6

Broken example in docs/index.jl

I'm trying to go through the tutorial on escher-jl.org, but I keep running into examples that won't run. I'm currently having trouble with Pattern 2, Example 1. At first, it wouldn't work because it couldn't find pad, which is in Compose (which is not imported in the text of the example). Even with the added using, it still presents an error message -- one that I'm not sure how to resolve.

Code with added using:

using Compose

function main(window)
    push!(window.assets, "tex")

    txt = tex("T = 2\\pi\\sqrt{L\\over g}")
    txt1 = fontcolor("#499", txt)
    txt2 = pad(5mm, txt1)
    txt3 = fillcolor("#eeb", txt2)

    vbox(txt, txt1, txt2, txt3)
end

Error message (from the terminal; webpage is blank):

Error handling websocket connection:
MethodError: `length` has no method matching length(::Patchwork.Elem{:xhtml,symbol("ka-tex")})
 in convert at /Users/leah/.julia/v0.4/Patchwork/src/Patchwork.jl:53
 in call at /Users/leah/.julia/v0.4/Patchwork/src/Patchwork.jl:74
 in render at /Users/leah/.julia/v0.4/Escher/src/basics/layout.jl:462
 in render at /Users/leah/.julia/v0.4/Escher/src/basics/layout.jl:471
 in render at /Users/leah/.julia/v0.4/Escher/src/basics/tile.jl:89
 in render at /Users/leah/.julia/v0.4/Escher/src/basics/layout.jl:290
 in start_updates at /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl:114
 in anonymous at /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl:180
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:15
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in splitquery at /Users/leah/.julia/v0.4/Mux/src/basics.jl:28
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in wcatch at /Users/leah/.julia/v0.4/Mux/src/websockets_integration.jl:12
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in todict at /Users/leah/.julia/v0.4/Mux/src/basics.jl:21
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/server.jl:38
 in handle at /Users/leah/.julia/v0.4/WebSockets/src/WebSockets.jl:354
 in on_message_complete at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:393
 in on_message_complete at /Users/leah/.julia/v0.4/HttpServer/src/RequestParser.jl:104
 in http_parser_execute at /Users/leah/.julia/v0.4/HttpParser/src/HttpParser.jl:92
 in process_client at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:365
 in anonymous at task.jl:448

Examples fail on tagged version of Escher

When I've just Pkg.add("Escher") and Pkg.checkout("Mux"), none of the examples work. Example errors from minesweeper are below. However, minesweeper does work if I Pkg.checkout("Escher"), so maybe you could tag a new version?

It is really frustrating to add a new package, follow the instructions to run an example, and literally spend an hour encountering and overcoming errors before even one example runs successfully. (...especially when all of the error seem to just be due to packages not being tagged.) Is there any test process setup for Escher to let you know if the currently tagged version "Just Works" on the examples, when installing on a fresh Julia instance with just Pkg.add("Escher")? Because I think that might help prevent this situation in the future.

In the terminal:

WARNING: both Escher and Base export "broadcast"; uses of it in module Main must be qualified

While attempting to load http://localhost:5555/minesweeper.jl:

LoadError: UndefVarError: broadcast not defined
while loading /Users/leah/.julia/v0.4/Escher/examples/minesweeper.jl, in expression starting on line 69
 in loadfile at /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl:24
 in anonymous at /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl:165
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:15
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in splitquery at /Users/leah/.julia/v0.4/Mux/src/basics.jl:28
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in wcatch at /Users/leah/.julia/v0.4/Mux/src/websockets_integration.jl:12
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in todict at /Users/leah/.julia/v0.4/Mux/src/basics.jl:21
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/server.jl:38
 in handle at /Users/leah/.julia/v0.4/WebSockets/src/WebSockets.jl:354
 in on_message_complete at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:393
 in on_message_complete at /Users/leah/.julia/v0.4/HttpServer/src/RequestParser.jl:104
 in http_parser_execute at /Users/leah/.julia/v0.4/HttpParser/src/HttpParser.jl:92
 in process_client at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:365
 in anonymous at task.jl:448

Documentation

While I want to write all of this out myself, my hands don't seem to like the idea so much. Here is a table of contents of the things I want to document. Any help with documentation will be hugely appreciated!

Take a look at docs/index.jl, docs/layout.jl, docs/reactive.jl, docs/layout-api.jl to see how documentation can be written.

API Documentation

  • @api & @apidoc macros
  • Tile & TileList
  • Length
  • Utility functions
  • Layout
  • Content
  • Typography
  • Embellishment
  • Signals & Behaviors
  • Window
  • Higher-order Layouts

User Guide

WIP PR: #67

  • Overview
    • How to install
    • Rules that make Escher
    • Under the hood (Optional)
    • How to read the manual
  • Content
    • Text & Markdown
    • Code
    • LaTeX
    • Vector Graphics (with Compose)
    • Plots (with Gadfly)
    • Tables from dataframes
    • Images
    • Icons
    • Links
    • Abbreviations
    • Table of Contents (TODO)
    • Converting data to Tile
  • Layout
    • Sizing and padding
    • vbox, hbox
    • grow & shrink
    • Packing space
    • Absolute positioning
    • Floating and Image placement (TODO)
  • Borders and Colors
    • How to use Color.jl
    • fillcolor
    • borders
    • rounded corners
  • Typography
    • Higher-level typography functions
    • Lower-level functions
  • Input Widgets
    • How to get input
    • Tiles of the Behavior type
    • Slider
    • Text box
    • Checkbox & Toggle button
    • Dropdown menu
    • Selection (TODO)
    • Radio buttons
    • CodeMirror
  • Pages & higher-order layout
    • Pages
    • Tabs
    • Slideshows
    • Toolbars
    • Menu
    • Items
  • Reactive programming & Interactive UIs
    • Signals
    • Creating signals
    • Interpreters
    • Maintaining state
    • Minesweeper explained

latex.html missing?

trying the latex.jl in examples, the following error is displayed in the console:

Asset file /Users/aviks/.julia/v0.3/Canvas/assets/latex.html doesn't exist
 in push! at /Users/aviks/.julia/v0.3/Reactive/src/Reactive.jl:308
 in main at /Users/aviks/.julia/v0.3/Canvas/examples/latex.jl:7

Can't access a local svg image

I've tried to add an svg in different ways but I can't find I way to make it display. For instance,

Elem{:object, :object}({:data=>"image.svg", :type=>"image/svg+xml"}, EmptyNode)

or

Elem{:img, :img}({:src=>"image.svg"}, EmptyNode)

do not work

Broken examples

As of now, from tests using Julia v0.3.11 on Chromium:

examples/minesweeper.jl

nothing happens when you click on a square

examples/plotting.jl

``|> has no method matching |>(::Plot, ::ComposeGraphic)

This can be circumvented by unchaining the drawing of plot_beta.

examples/latex.jl

Rendered text does not update

docs/index.jl

HTML links broken if served

docs/layout2-api.jl

References functions that are currently commented out (dropdown, item?)

Version of Julia in the README

The use of Markdown.jl suggests that this is best run with Julia 0.3. It would be nice to mention that in the README, since one cannot yet install Canvas.jl as a package.

setup_transport not defined

Getting the following error with Julia 0.3.0-rc3+8 when trying to include using include(Pkg.dir("Escher", "src", "cli", "serve.jl"))

ERROR: setup_transport not defined
in include at /Applications/Julia-0.3.0-rc3-14654867cf.app/Contents/Resources/julia/lib/julia/sys.dylib
in include_from_node1 at /Applications/Julia-0.3.0-rc3-14654867cf.app/Contents/Resources/julia/lib/julia/sys.dylib
while loading --- .julia/v0.3/Escher/src/cli/serve.jl, in expression starting on line 80

I did checkout the latest as well using Pkg.checkout("Escher")

Escher and websockets

When you refresh a page from chrome it appears that Escher/Mux does not always notice the close of the websocket. Since the socket is keyed by the file name when next Escher tries to write to the socket it is in a closed state. This causes the process to bomb out, the symptom being an error from Reactive 'push! called when another signal is still updating'

Any thoughts how to resolve / chase down?

rfc: use a native webview like Electron

This means users don't need to open a browser separately to the server. I've got this working with Patchwork.jl and thought you might already be considering doing it with Escher.jl so here is a link to that project if you want a starting point. Sorry for the noise if you weren't considering it.

[PkgEval] Escher may have a testing issue on Julia 0.3 (2015-05-26)

PackageEvaluator.jl is a script that runs nightly. It attempts to load all Julia packages and run their tests (if available) on both the stable version of Julia (0.3) and the nightly build of the unstable version (0.4). The results of this script are used to generate a package listing enhanced with testing results.

On Julia 0.3

  • On 2015-05-26 the testing status was N/A - new package.
  • On 2015-05-26 the testing status changed to Package doesn't load.

Package doesn't load. means that PackageEvaluator did not find tests for your package. Additionally, trying to load your package with using failed.

This issue was filed because your testing status became worse. No additional issues will be filed if your package remains in this state, and no issue will be filed if it improves. If you'd like to opt-out of these status-change messages, reply to this message saying you'd like to and @IainNZ will add an exception. If you'd like to discuss PackageEvaluator.jl please file an issue at the repository. For example, your package may be untestable on the test machine due to a dependency - an exception can be added.

Test log:

>>> 'Pkg.add("Escher")' log
INFO: Cloning cache of Escher from git://github.com/shashi/Escher.jl.git
INFO: Cloning cache of FunctionalCollections from git://github.com/JuliaLang/FunctionalCollections.jl.git
INFO: Cloning cache of Hiccup from git://github.com/one-more-minute/Hiccup.jl.git
INFO: Cloning cache of HttpServer from git://github.com/JuliaWeb/HttpServer.jl.git
INFO: Cloning cache of Markdown from git://github.com/one-more-minute/Markdown.jl.git
INFO: Cloning cache of Mux from git://github.com/one-more-minute/Mux.jl.git
INFO: Cloning cache of Patchwork from git://github.com/shashi/Patchwork.jl.git
INFO: Cloning cache of Reactive from git://github.com/JuliaLang/Reactive.jl.git
INFO: Cloning cache of WebSockets from git://github.com/JuliaWeb/WebSockets.jl.git
INFO: Installing ArgParse v0.2.11
INFO: Installing ArrayViews v0.6.2
INFO: Installing Benchmark v0.1.0
INFO: Installing BinDeps v0.3.12
INFO: Installing Codecs v0.1.4
INFO: Installing Compat v0.4.4
INFO: Installing DataArrays v0.2.15
INFO: Installing DataFrames v0.6.6
INFO: Installing Dates v0.3.2
INFO: Installing Docile v0.5.3
INFO: Installing Escher v0.0.1
INFO: Installing FactCheck v0.2.7
INFO: Installing FunctionalCollections v0.1.2
INFO: Installing GZip v0.2.15
INFO: Installing GnuTLS v0.0.4
INFO: Installing Hiccup v0.0.0
INFO: Installing HttpCommon v0.0.12
INFO: Installing HttpParser v0.0.11
INFO: Installing HttpServer v0.0.12
INFO: Installing JSON v0.4.3
INFO: Installing Lazy v0.8.4
INFO: Installing Markdown v0.3.0
INFO: Installing Mux v0.0.0
INFO: Installing Nettle v0.1.8
INFO: Installing Options v0.2.3
INFO: Installing Patchwork v0.1.4
INFO: Installing Reactive v0.2.0
INFO: Installing Reexport v0.0.2
INFO: Installing SHA v0.0.4
INFO: Installing SortingAlgorithms v0.0.5
INFO: Installing StatsBase v0.6.15
INFO: Installing TextWrap v0.1.3
INFO: Installing URIParser v0.0.5
INFO: Installing WebSockets v0.0.6
INFO: Building HttpParser
INFO: Building Nettle
INFO: Building GnuTLS
INFO: Package database updated
INFO: METADATA is out-of-date — you may not have the latest version of Escher
INFO: Use `Pkg.update()` to get the latest versions of your packages

>>> 'using Escher' log
Julia Version 0.3.6
Commit 0c24dca (2015-02-17 22:12 UTC)
Platform Info:
  System: Linux (x86_64-unknown-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Nehalem)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3
/home/vagrant/testpkg/v0.3/Escher

ERROR: Color not found
 in require at loading.jl:47
 in include at ./boot.jl:245
 in include_from_node1 at ./loading.jl:128
 in include at ./boot.jl:245
 in include_from_node1 at ./loading.jl:128
 in reload_path at loading.jl:152
 in _require at loading.jl:67
 in require at loading.jl:51
 in include at ./boot.jl:245
 in include_from_node1 at loading.jl:128
 in process_options at ./client.jl:285
 in _start at ./client.jl:354
while loading /home/vagrant/testpkg/v0.3/Escher/src/basics/util.jl, in expression starting on line 1
while loading /home/vagrant/testpkg/v0.3/Escher/src/Escher.jl, in expression starting on line 22
while loading /vagrant/releaseAL/PKGEVAL_Escher_using.jl, in expression starting on line 4

>>> test log
no tests to run
>>> end of log

"subscribe" not defined

On running mc.jl with the latest master, I get the following error:

suscribe not defined
 in >>> at /Users/aviks/.julia/v0.3/Escher/src/library/widgets.jl:17
 in anonymous at /Users/aviks/.julia/v0.3/Escher/examples/mc.jl:143
 in main at /Users/aviks/.julia/v0.3/Escher/examples/mc.jl:19
 in uisocket at /Users/aviks/.julia/v0.3/Escher/bin/escherd:114

Styles not applied on Firefox

After setting the webcomponents config in Firefox, pages load correctly. However, the styles are not applied correctly. Screenshots below.

Chrome 41.0.2272.104

chrome

Firefox 36.0.1

firefox

Running escher throws a requires error

Followed the instructions in the README, but when the time comes to run escher in the examples directory, I face this:


┌[rudimk@Giorgio] [/dev/ttys000] [master]
└[~/.julia/v0.3/Escher/examples]> ../bin/escher --serve
ERROR: Requires not found
 in require at loading.jl:47
 in include at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
 in include_from_node1 at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
 in include at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
 in include_from_node1 at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
 in reload_path at loading.jl:152
 in _require at loading.jl:67
 in require at loading.jl:51
 in include at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
 in include_from_node1 at loading.jl:128
 in process_options at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
 in _start at /usr/local/Cellar/julia/0.3.9/lib/julia/sys.dylib
while loading /Users/rudimk/.julia/v0.3/Escher/src/basics/lazyload.jl, in expression starting on line 1
while loading /Users/rudimk/.julia/v0.3/Escher/src/Escher.jl, in expression starting on line 25
while loading /Users/rudimk/.julia/v0.3/Escher/bin/escher, in expression starting on line 4

Not entirely sure where exactly I'm going wrong.

[PkgEval] Escher may have a testing issue on Julia 0.4 (2015-06-23)

PackageEvaluator.jl is a script that runs nightly. It attempts to load all Julia packages and run their tests (if available) on both the stable version of Julia (0.3) and the nightly build of the unstable version (0.4). The results of this script are used to generate a package listing enhanced with testing results.

On Julia 0.4

  • On 2015-06-22 the testing status was Tests pass.
  • On 2015-06-23 the testing status changed to Tests fail.

This issue was filed because your testing status became worse. No additional issues will be filed if your package remains in this state, and no issue will be filed if it improves. If you'd like to opt-out of these status-change messages, reply to this message saying you'd like to and @IainNZ will add an exception. If you'd like to discuss PackageEvaluator.jl please file an issue at the repository. For example, your package may be untestable on the test machine due to a dependency - an exception can be added.

Test log:

>>> 'Pkg.add("Escher")' log
INFO: Cloning cache of Escher from git://github.com/shashi/Escher.jl.git
INFO: Cloning cache of FunctionalCollections from git://github.com/JuliaLang/FunctionalCollections.jl.git
INFO: Cloning cache of Hiccup from git://github.com/one-more-minute/Hiccup.jl.git
INFO: Cloning cache of HttpServer from git://github.com/JuliaWeb/HttpServer.jl.git
INFO: Cloning cache of Markdown from git://github.com/one-more-minute/Markdown.jl.git
INFO: Cloning cache of Mux from git://github.com/one-more-minute/Mux.jl.git
INFO: Cloning cache of Patchwork from git://github.com/shashi/Patchwork.jl.git
INFO: Cloning cache of Reactive from git://github.com/JuliaLang/Reactive.jl.git
INFO: Cloning cache of WebSockets from git://github.com/JuliaWeb/WebSockets.jl.git
INFO: Installing ArgParse v0.2.11
INFO: Installing ArrayViews v0.6.2
INFO: Installing Benchmark v0.1.0
INFO: Installing BinDeps v0.3.12
INFO: Installing Codecs v0.1.4
INFO: Installing Color v0.4.5
INFO: Installing DataArrays v0.2.15
INFO: Installing DataFrames v0.6.6
INFO: Installing Dates v0.4.4
INFO: Installing Docile v0.5.7
INFO: Installing Escher v0.0.3
INFO: Installing FactCheck v0.2.7
INFO: Installing FixedPointNumbers v0.0.7
INFO: Installing FunctionalCollections v0.1.2
INFO: Installing GZip v0.2.15
INFO: Installing GnuTLS v0.0.4
INFO: Installing Graphics v0.1.0
INFO: Installing Hiccup v0.0.0
INFO: Installing HttpCommon v0.0.12
INFO: Installing HttpParser v0.0.11
INFO: Installing HttpServer v0.0.12
INFO: Installing Lazy v0.8.4
INFO: Installing Markdown v0.3.0
INFO: Installing Mux v0.0.0
INFO: Installing Nettle v0.1.8
INFO: Installing Options v0.2.3
INFO: Installing Patchwork v0.1.4
INFO: Installing Reactive v0.2.0
INFO: Installing Reexport v0.0.2
INFO: Installing Requires v0.1.2
INFO: Installing SHA v0.0.4
INFO: Installing SortingAlgorithms v0.0.5
INFO: Installing StatsBase v0.6.15
INFO: Installing TextWrap v0.1.3
INFO: Installing URIParser v0.0.5
INFO: Installing WebSockets v0.0.6
INFO: Building HttpParser

WARNING: deprecated syntax "[a=>b, ...]" at /home/vagrant/.julia/v0.4/HttpParser/deps/build.jl:42.
Use "Dict(a=>b, ...)" instead.
INFO: Building Nettle

WARNING: deprecated syntax "[a=>b, ...]" at /home/vagrant/.julia/v0.4/Nettle/deps/build.jl:39.
Use "Dict(a=>b, ...)" instead.
WARNING: beginswith is deprecated, use startswith instead.
 in depwarn at ./deprecated.jl:62
 in beginswith at deprecated.jl:30
 in available_versions at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:116
 in package_available at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:111
 in can_provide at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:608
 in _find_library at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:451
 in satisfy! at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:738 (repeats 2 times)
 in anonymous at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:793
 in include at ./boot.jl:254
 in include_from_node1 at ./loading.jl:133
 in evalfile at loading.jl:175 (repeats 2 times)
 in anonymous at pkg/entry.jl:652
 in cd at ./file.jl:22
 in build! at pkg/entry.jl:651
 in build! at pkg/entry.jl:646 (repeats 4 times)
 in build at pkg/entry.jl:663
 in resolve at ./pkg/entry.jl:472
 in edit at pkg/entry.jl:26
 in anonymous at task.jl:365
while loading /home/vagrant/.julia/v0.4/Nettle/deps/build.jl, in expression starting on line 39
WARNING: beginswith is deprecated, use startswith instead.
 in depwarn at ./deprecated.jl:62
 in beginswith at deprecated.jl:30
 in available_versions at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:124
 in package_available at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:111
 in can_provide at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:608
 in _find_library at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:451
 in satisfy! at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:738 (repeats 2 times)
 in anonymous at /home/vagrant/.julia/v0.4/BinDeps/src/dependencies.jl:793
 in include at ./boot.jl:254
 in include_from_node1 at ./loading.jl:133
 in evalfile at loading.jl:175 (repeats 2 times)
 in anonymous at pkg/entry.jl:652
 in cd at ./file.jl:22
 in build! at pkg/entry.jl:651
 in build! at pkg/entry.jl:646 (repeats 4 times)
 in build at pkg/entry.jl:663
 in resolve at ./pkg/entry.jl:472
 in edit at pkg/entry.jl:26
 in anonymous at task.jl:365
while loading /home/vagrant/.julia/v0.4/Nettle/deps/build.jl, in expression starting on line 39
INFO: Building GnuTLS

WARNING: deprecated syntax "{a=>b, ...}" at /home/vagrant/.julia/v0.4/GnuTLS/deps/build.jl:15.
Use "Dict{Any,Any}(a=>b, ...)" instead.

WARNING: deprecated syntax "{a=>b, ...}" at /home/vagrant/.julia/v0.4/GnuTLS/deps/build.jl:48.
Use "Dict{Any,Any}(a=>b, ...)" instead.

WARNING: deprecated syntax "{a=>b, ...}" at /home/vagrant/.julia/v0.4/GnuTLS/deps/build.jl:53.
Use "Dict{Any,Any}(a=>b, ...)" instead.

WARNING: deprecated syntax "[a=>b, ...]" at /home/vagrant/.julia/v0.4/GnuTLS/deps/build.jl:55.
Use "Dict(a=>b, ...)" instead.
INFO: Package database updated

>>> 'Pkg.test("Escher")' log
INFO: Testing Escher
ERROR: LoadError: LoadError: LoadError: syntax: local declaration in global scope
 in include at ./boot.jl:254
 in include_from_node1 at ./loading.jl:133
 in reload_path at ./loading.jl:157
 in _require at ./loading.jl:69
 in require at ./loading.jl:55
 in include at ./boot.jl:254
 in include_from_node1 at ./loading.jl:133
 in reload_path at ./loading.jl:157
 in _require at ./loading.jl:69
 in require at ./loading.jl:52
 in include at ./boot.jl:254
 in include_from_node1 at loading.jl:133
 in process_options at ./client.jl:304
 in _start at ./client.jl:404
while loading /home/vagrant/.julia/v0.4/Reactive/src/Reactive.jl, in expression starting on line 33
while loading /home/vagrant/.julia/v0.4/Escher/src/Escher.jl, in expression starting on line 11
while loading /home/vagrant/.julia/v0.4/Escher/test/runtests.jl, in expression starting on line 1

===============================[ ERROR: Escher ]================================

failed process: Process(`/home/vagrant/julia/bin/julia --check-bounds=yes --code-coverage=none --color=no /home/vagrant/.julia/v0.4/Escher/test/runtests.jl`, ProcessExited(1)) [1]

================================================================================
INFO: No packages to install, update or remove
ERROR: Escher had test errors
 in error at ./error.jl:21
 in test at pkg/entry.jl:746
 in anonymous at pkg/dir.jl:31
 in cd at file.jl:22
 in cd at pkg/dir.jl:31
 in test at pkg.jl:71
 in process_options at ./client.jl:280
 in _start at ./client.jl:404


>>> End of log

"syntax error" when "using Escher"

I see this error:

julia> using Escher
WARNING: module Patchwork should explicitly import << from Base
WARNING: module DataStructures should explicitly import < from Base
WARNING: module DataStructures should explicitly import <= from Base
WARNING: module JSON should explicitly import colon from Base
WARNING: module JSON should explicitly import colon from Base
ERROR: LoadError: LoadError: syntax: malformed expression
 in include at /Users/eschnett/julia/lib/julia/sys.dylib
 in include_from_node1 at /Users/eschnett/julia/lib/julia/sys.dylib
 in include at /Users/eschnett/julia/lib/julia/sys.dylib
 in include_from_node1 at /Users/eschnett/julia/lib/julia/sys.dylib
 in require at /Users/eschnett/julia/lib/julia/sys.dylib
while loading /Users/eschnett/.julia/v0.4/Escher/src/basics/util.jl, in expression starting on line 62
while loading /Users/eschnett/.julia/v0.4/Escher/src/Escher.jl, in expression starting on line 22

This is with a fresh version of Julia/master.

Features Overview

Quick list

  • @api macro to generate API methods
  • a good README
  • convert(::Type{Tile}) methods for Gadfly, Compose, DataFrames, and SymPy
  • Layouts
  • Good typography
  • Basic content like markdown, latex, images, and links
  • DataFrames to tables
  • Theming
    • Will defer this till v0.3 - need to wait for Polymer 0.8
  • Basic behaviors like clicks, keypresses
  • Behaviors from interact.js
  • @manipulate
  • Complex layouts: article, tabs, pages, slides
  • icons and toolbars
  • syntax highlighting and code editing
  • asset management to minimize transfer
  • Blink back-end
  • Compile to static HTML
  • Documentation system
  • Documentation with inline examples

Freezing on include(Pkg.dir("Escher", "src", "cli", "serve.jl")) and escher --serve to API macro's use of `=>` is broken on Julia v0.4

I've been following the installation / usage instructions for Escher here: https://shashi.github.io/Escher.jl/ and am running into a problem on Version 0.4.0-dev+6112 (2015-07-20 17:52 UTC) Commit 189a043 (3 days old master):

julia> using Escher

julia> include(Pkg.dir("Escher", "src", "cli", "serve.jl"))

WARNING: deprecated syntax "tags (" at /Users/seth/.julia/v0.4/Hiccup/src/Hiccup.jl:87.
Use "tags(" instead.

WARNING: deprecated syntax "exporttags (" at /Users/seth/.julia/v0.4/Hiccup/src/Hiccup.jl:95.
Use "exporttags(" instead.

WARNING: deprecated syntax "expand (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:30.
Use "expand(" instead.

WARNING: deprecated syntax "switch (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:62.
Use "switch(" instead.

WARNING: deprecated syntax "> (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:111.
Use ">(" instead.

WARNING: deprecated syntax ">> (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:132.
Use ">>(" instead.

WARNING: deprecated syntax "as (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:159.
Use "as(" instead.

WARNING: deprecated syntax "_ (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:177.
Use "_(" instead.

WARNING: deprecated syntax "or (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:181.
Use "or(" instead.

WARNING: deprecated syntax "dotimes (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:193.
Use "dotimes(" instead.

WARNING: deprecated syntax "oncethen (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:205.
Use "oncethen(" instead.

WARNING: deprecated syntax "defonce (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:222.
Use "defonce(" instead.

WARNING: deprecated syntax "with (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:236.
Use "with(" instead.

WARNING: deprecated syntax "cond (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:252.
Use "cond(" instead.

WARNING: deprecated syntax "errs (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:275.
Use "errs(" instead.

WARNING: deprecated syntax "dynamic (" at /Users/seth/.julia/v0.4/Lazy/src/dynamic.jl:73.
Use "dynamic(" instead.

WARNING: deprecated syntax "rec (" at /Users/seth/.julia/v0.4/Lazy/src/tail.jl:53.
Use "rec(" instead.

WARNING: deprecated syntax "bounce (" at /Users/seth/.julia/v0.4/Lazy/src/tail.jl:89.
Use "bounce(" instead.

WARNING: deprecated syntax "bounce (" at /Users/seth/.julia/v0.4/Lazy/src/tail.jl:102.
Use "bounce(" instead.

WARNING: deprecated syntax "app (" at /Users/seth/.julia/v0.4/Mux/src/server.jl:14.
Use "app(" instead.

... and here it appears to hang. No other output, no listening port, no return to REPL until I hit ^C.

Pages from `escher --serve` appear blank

I'm trying out Escher for the first time. I've just installed the latest julia 0.4 nightly and have updated all my packages (as of 6 Sept 2015). When I try to serve up any of the examples, I just get a blank page in the browser (tested using Chrome and Safari). Selecting "View Source" from the browser clearly shows some HTML with a lot of Javascript code, but I never see a webpage.

$ escher --serve layout.jl 

lots of deprecation warnings....

Listening on 0.0.0.0:5555...

What am I doing wrong?

Make length measures play nicely with Compose

If I change the plot command in plot.jl to the following

plot([x -> sin(x + phase), x -> cos(x + phase)], 0, 6, 
                xintercept=[-.55, +.5], Geom.vline(color="purple", size=0.2mm))

I get the following error on the console:

Error handling websocket connection:
type: typeassert: expected Union(Measure{S,T},Nothing), got Length{:mm}
 in anonymous at /Users/aviks/.julia/v0.3/Canvas/examples/plot.jl:9
 in main at /Users/aviks/.julia/v0.3/Canvas/examples/plot.jl:8
 in uisocket at /Users/aviks/.julia/v0.3/Canvas/bin/canvasd:111
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/Mux.jl:15
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/Mux.jl:8
 in splitquery at /Users/aviks/.julia/v0.3/Mux/src/basics.jl:28
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/Mux.jl:8
 in wcatch at /Users/aviks/.julia/v0.3/Mux/src/websockets.jl:12
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/Mux.jl:8
 in todict at /Users/aviks/.julia/v0.3/Mux/src/basics.jl:21
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/Mux.jl:8
 in anonymous at /Users/aviks/.julia/v0.3/Mux/src/server.jl:36
 in handle at /Users/aviks/.julia/v0.3/WebSockets/src/WebSockets.jl:287
 in on_message_complete at /Users/aviks/.julia/v0.3/HttpServer/src/HttpServer.jl:296
 in on_message_complete at /Users/aviks/.julia/v0.3/HttpServer/src/RequestParser.jl:99
 in http_parser_execute at /Users/aviks/.julia/v0.3/HttpParser/src/HttpParser.jl:106
 in add_data at /Users/aviks/.julia/v0.3/HttpServer/src/RequestParser.jl:148
 in process_client at /Users/aviks/.julia/v0.3/HttpServer/src/HttpServer.jl:267
 in anonymous at task.jl:340

If I change the size=0.2mm to size=0.2em, then the error becomes:
type: typeassert: expected Union(Measure{S,T},Nothing), got Length{:em}

Specify a base directory

Currently, canvasd only serves .jl files out of its current working directory.

There should be of specifying a base directory from which to serve files. Forward relative paths from this directory should be followed. Backward relative paths should not be allowed.

It may be worth thinking about a long term configuration format. Command line flags only? INI/Toml files? JSON?

Better asset loading

Right now, all assets are loaded from Escher's assets folder, uncompressed and un-concatenated. This is of course not ideal.

Here is a rough sketch of what this could look like in the future:

push!(window.assets, ["a.html", "b.css, "c.js"])

a, b, and c would get concatenated and gzipped (the first time they are needed), and cached in a file under assets/cache with some canonical name like

string(join(sort(["a.html", "b.css", "c.js"]), "+")  |> hash) * ".html.gz"

Problem 1: Some polymer files are repeatedly included in others. So if window.assets is pushed to a second time, it should be possible to exclude what was already sent. And the corresponding statements must be stripped. This is not only nice to have, not having this is a fatal error since elements will try to register themselves more than once.

Problem 2: cache invalidation. If one is editing the assets file, when should they be cleared? a manual way to do it can be provided: escher --clear-cache.

pages confuses layout

function main(window)
    push!(window.assets,"layout2")
    A = vbox(md"Hello, world!"|>
             fontcolor("#FFFFFF")|>
             pad(1em)|>
             fillcolor("#006699"),
             md"Howdy!"|>
             fontcolor("#FFFFFF")|>
             pad(1em)|>
             fillcolor("#669933")
             )
end

does what I expect it to do. There are two boxes on top of each other, a blue one which says, "Hello, world!" and a green one which says "Howdy!"

However, say you want to make this layout the first page of a set of pages:

function main(window)
    push!(window.assets,"layout2")
    A = vbox(md"Hello, world!"|>
             pad(1em)|>
             fillcolor("#006699"),
             md"Howdy!"|>
             pad(1em)|>
             fillcolor("#669933")
             )
    pages([A])
end

This collapses the boxes and puts them on top of each other. The text ends up hanging outside the boxes.

Maybe I'm not understanding something about how pages works, but it seems like you should be able to use the layout API on individual pages.

Let me know if I can fix something easily, or if we just need more docs about higher-order layouts.

Daisy Chaining Inputs from one Widget to Another

Shashi,

Is there currently a way to a daisy chain signals from one widget to another?

That is: if I have an Input into one widget, that itself creates an input used by another widget.

Getting error messages about: push! called when another signal is still updating

It looks like there was a reference to something like this in an issue raised by @Keno on JuliaGizmos/Reactive.jl#62.

Any suggestions here or workarounds?

Thanks,
Michael

segmentation fault

Hi! When I try to run and access an example of escher.jl , I have a problem of segment fault...Does anyone know why?

Listening on 0.0.0.0:5555...

signal (11): Falha de segmentação
unknown function (ip: -370066064)
write at /usr/bin/../lib64/julia/sys.so (unknown line)
write at ./iobuffer.jl:235

I am using Fedora 22.

Thanks

Dynamic layouts

@shashi : I was wondering if there are any example of truly dynamic layouts?

For example, do you have an example of some callback that would add a new tab?

In a further step down this road, do you have any thoughts on how to integrate something like a gridstack-like drag/drop capability: http://troolee.github.io/gridstack.js/

In that case, not sure if julia would owns the layout model.

(BTW I see that polymer has some core-drag-drop capability, but the dynamic layout from gridstack is a bit more interesting - https://www.polymer-project.org/0.5/docs/elements/core-drag-drop.html)

Thanks,
Michael

Mux not found in path

What is this trying to get me to do?

HQSML-146932:examples rzwitc200$ ../bin/escherd
ERROR: LoadError: ArgumentError: Mux not found in path
 in require at ./loading.jl:49
 in include at ./boot.jl:250
 in include_from_node1 at loading.jl:129
 in process_options at ./client.jl:308
 in _start at ./client.jl:407
while loading /Users/rzwitc200/.julia/v0.3/Escher/bin/escherd, in expression starting on line 4

Docs

Trying to experiment with using Escher for building a data dashboard. Would love some docs. Conversely, if you need a bit of help with building the docs itself, I can fork the repo and work on a gh-pages branch.

Input field initialization fails, causing empty signal from forms.

Given the following watch! definition, where s is a sample().

watch!(s, textinput( "Initial Value" , name = "field0", label = string( "Enter field0")))

the sampler fails to get the initial value, tracing this through

// Line 22 behavior.html 
// initialize
this.value = elem[self.attr] || elem.getAttribute(self.attr)

On an input field 'elem' references the outer paper-input-decorator and not the input field,

<paper-input-decorator is="undefined">
    <input is="core-input" name="line0" id="line0">
    <watch-state is="undefined"></watch-state>
</paper-input-decorator>

When the signal is sampled the result is an empty value unless the user has updated the field. As a kludge the following works, but is assuming that the first element is the input field.

this.value = elem[self.attr] || elem.getAttribute(self.attr)
        || elem.firstChild && ( elem.firstChild[self.attr] 
            || elem.firstChild.getAttribute(self.attr) )

macro api defines types in a local scope

When i remove the @doc calls in the return expression of macro api

macroexpand(quote @api test => TestType1 begin
    arg(a::FloatingPoint)
end end)

results in

begin 
    immutable TestType1
        a::FloatingPoint
    end
    test(#445#a) = TestType1(#445#a)
end

but normally, it expands to this

begin 
    immutable TestType1
        a::FloatingPoint
    end
    begin  # /home/brian/.julia/v0.3/Docile/src/Legacy/atdoc.jl, line 140:
        begin  # /home/brian/.julia/v0.3/Docile/src/Legacy/atdoc.jl, line 9:
            if Docile.Legacy.!(Docile.Legacy.isdefined(:__DOCILE_STRINGS__)) # line 10:
                const __DOCILE_STRINGS__ = Docile.Legacy.ObjectIdDict() # line 11:
                const __DOCILE_METADATA__ = Docile.Legacy.ObjectIdDict() # line 12:
                Docile.Legacy.nothing
            end
        end # line 141:
        #481#old = if isdefined(:test)
                (Docile.Legacy.Set{Docile.Legacy.Method})(Docile.Legacy.methods(test))
            else 
                (Docile.Legacy.Set{Docile.Legacy.Method})()
            end # line 142:
        test(#480#a) = TestType1(#480#a) # line 143:
        for #482#m = Docile.Legacy.setdiff((Docile.Legacy.Set{Docile.Legacy.Method})(Docile.Legacy.methods(test)),#481#old) # line 144:
            (Docile.Legacy.metadata())[#482#m] = Docile.Legacy.data(#482#m,("",[:typ=>:TestType1,:name=>:test,:args=>{{:type=>:FloatingPoint,:curried=>false,:coerced=>true,:kwarg=>false,:name=>:a}}]); category=:method,codesource=(336,""),code=$(Expr(:copyast, :(:(test(#480#a) = TestType1(#480#a))))))
        end # line 150:
        test
    end
end

eval(ans) results in

error compiling anonymous: type definition not allowed inside a local scope while loading In[15], in expression starting on line 1

Horizontal flow not working on webkit

layout.jl should look like this as it does on Gecko and Blink based browsers:

layout

But on webkit, it looks like this:

brokenlayout

This affects several examples (code.jl, markdown.jl, minesweeper.jl, toolbar.jl)

~/.julia/Escher/bin/escher --serve unresponsive and error running tests

Nothing is served using:

~/.julia/Escher/bin/escher --serve
http://localhost:5555/plotting.jl

results in:

This webpage is not available
ERR_CONNECTION_REFUSED
julia runtests.jl

in ~/.julia/Escher/bin/escher/test results in:

ERROR: test1 not defined
 in include at /Applications/Julia-0.3.9.app/Contents/Resources/julia/lib/julia/sys.dylib
 in include_from_node1 at /Applications/Julia-0.3.9.app/Contents/Resources/julia/lib/julia/sys.dylib
 in include at /Applications/Julia-0.3.9.app/Contents/Resources/julia/lib/julia/sys.dylib
 in include_from_node1 at loading.jl:128
 in process_options at /Applications/Julia-0.3.9.app/Contents/Resources/julia/lib/julia/sys.dylib
 in _start at /Applications/Julia-0.3.9.app/Contents/Resources/julia/lib/julia/sys.dylib
while loading /Users/mac/.julia/Escher/test/macros.jl, in expression starting on line 5
while loading /Users/mac/.julia/Escher/test/runtests.jl, in expression starting on line 4

I am running OSX, using Julia Version 0.3.9 (2015-05-30 11:24 UTC).

Missing file: lazyload.jl

Eager to play around with this, but I think I'm missing a file. Did you forget to commit it, or forget to not include it?

Virtual DOM updates to properties fail to trigger polymer 1.0 observers

I have a property on a DOM node (not an attribute). When a patch is applied which just changes the property it fails to trigger a polymer change event. The property is correctly updated and if I force a redraw it works. Any suggestions? As a workaround have placed a hash of the data as an attribute, which gets triggered correctly, this worked ok in 0.5 but with 1.0 the properties are updated after the attributes, so the data is not updated till after the event is triggered.

I can put the data on the attribute, but that makes for very large documents.

I'm assuming that the virtual dom is not fully using the shady API to make updates? Perhaps there should be an explicit call in the virtual dom for this form of update ?

Any help appreciated.

Open a Gitter chat room.

Gitter/Github integration can be done by adding a Gitter badge to the README.md.

Example for one of my repos:

[![Join the chat at https://gitter.im/Ismael-VC/HydrocarbonNets.jl](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Ismael-VC/HydrocarbonNets.jl?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Join the chat at https://gitter.im/Ismael-VC/HydrocarbonNets.jl

This would allow us to have a good way to communicate and share stuff, it can be used with IRC also.

There are a lot of examples already: https://gitter.im/explore/tags/julia

Broken tex example on escher-jl.org

This is one of the first examples on the escher-jl.org homepage, and it doesn't work.

function main(window)
    push!(window.assets, "tex")

    tex("""f(x) = \int_{-\infty}^\infty
        \hat f(\xi)\,e^{2 \pi i \xi x}
        \,d\xi""")
end

When run, it gives this error message (in the browser window):

LoadError: syntax: invalid escape sequence
while loading /Users/leah/src/learning-julia/code/escher-files/hello.jl, in expression starting on line 24
 in loadfile at /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl:26
 in anonymous at /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl:205
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:15
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in splitquery at /Users/leah/.julia/v0.4/Mux/src/basics.jl:28
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in wcatch at /Users/leah/.julia/v0.4/Mux/src/websockets_integration.jl:12
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in todict at /Users/leah/.julia/v0.4/Mux/src/basics.jl:21
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:12 (repeats 2 times)
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/Mux.jl:8
 in anonymous at /Users/leah/.julia/v0.4/Mux/src/server.jl:38
 in handle at /Users/leah/.julia/v0.4/WebSockets/src/WebSockets.jl:354
 in on_message_complete at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:393
 in on_message_complete at /Users/leah/.julia/v0.4/HttpServer/src/RequestParser.jl:104
 in http_parser_execute at /Users/leah/.julia/v0.4/HttpParser/src/HttpParser.jl:92
 in process_client at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:365
 in anonymous at task.jl:448

I've looked at the code that's actually running (and that does work), and I can't see what the difference is:

tex_eg = """f(x) = \\int_{-\\infty}^\\infty
    \\hat f(\\xi)\,e^{2 \\pi i \\xi x}
    \\,d\\xi
"""

I tried adding an extra backslash in front of the \,e^, since that was the only place with one \, but that did not cause any problems.

Naming clashes

Trying rule 2 example 1 from https://shashi.github.io/Escher.jl/ gives error in padding. Seems to apply to all calls of pad. Escher 0.1.0

Error:
'pad_outer' has no method matching pad_outer(::Measure{MeasureNil,MeasureNil}, ::FontColor)

Following the instructions results in an error

seth@schroeder:~/dev/julia/julia$ julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "help()" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.4.0-dev+6817 (2015-08-18 15:25 UTC)
 _/ |\__'_|_|_|\__'_|  |  Commit 77bef6e (0 days old master)
|__/                   |  x86_64-apple-darwin14.5.0

julia> using Escher
WARNING: module Patchwork should explicitly import << from Base
WARNING: module JSON should explicitly import colon from Base
WARNING: module JSON should explicitly import colon from Base
WARNING: module Escher should explicitly import * from Base
WARNING: module Escher should explicitly import / from Base
WARNING: module Escher should explicitly import + from Base
WARNING: module Escher should explicitly import - from Base

julia> include(Pkg.dir("Escher", "src", "cli", "serve.jl"))

WARNING: deprecated syntax "expand (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:30.
Use "expand(" instead.

WARNING: deprecated syntax "switch (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:62.
Use "switch(" instead.

WARNING: deprecated syntax "> (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:111.
Use ">(" instead.

WARNING: deprecated syntax ">> (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:132.
Use ">>(" instead.

WARNING: deprecated syntax "as (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:159.
Use "as(" instead.

WARNING: deprecated syntax "_ (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:177.
Use "_(" instead.

WARNING: deprecated syntax "or (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:181.
Use "or(" instead.

WARNING: deprecated syntax "dotimes (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:193.
Use "dotimes(" instead.

WARNING: deprecated syntax "oncethen (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:205.
Use "oncethen(" instead.

WARNING: deprecated syntax "defonce (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:222.
Use "defonce(" instead.

WARNING: deprecated syntax "with (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:236.
Use "with(" instead.

WARNING: deprecated syntax "cond (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:252.
Use "cond(" instead.

WARNING: deprecated syntax "errs (" at /Users/seth/.julia/v0.4/Lazy/src/macros.jl:275.
Use "errs(" instead.

WARNING: deprecated syntax "dynamic (" at /Users/seth/.julia/v0.4/Lazy/src/dynamic.jl:73.
Use "dynamic(" instead.

WARNING: deprecated syntax "rec (" at /Users/seth/.julia/v0.4/Lazy/src/tail.jl:53.
Use "rec(" instead.

WARNING: deprecated syntax "bounce (" at /Users/seth/.julia/v0.4/Lazy/src/tail.jl:89.
Use "bounce(" instead.

WARNING: deprecated syntax "bounce (" at /Users/seth/.julia/v0.4/Lazy/src/tail.jl:102.
Use "bounce(" instead.
WARNING: module Lazy should explicitly import * from Base
WARNING: module Lazy should explicitly import == from Base
WARNING: module Lazy should explicitly import + from Base
WARNING: module Lazy should explicitly import - from Base
WARNING: both MacroTools and Lazy export "isexpr"; uses of it in module Hiccup must be qualified
ERROR: LoadError: LoadError: LoadError: UndefVarError: isexpr not defined
 in include at /usr/local/julia-latest/lib/julia/sys.dylib
 in include_from_node1 at /usr/local/julia-latest/lib/julia/sys.dylib
 in require at /usr/local/julia-latest/lib/julia/sys.dylib
 in include at /usr/local/julia-latest/lib/julia/sys.dylib
 in include_from_node1 at /usr/local/julia-latest/lib/julia/sys.dylib
 in require at /usr/local/julia-latest/lib/julia/sys.dylib
 in include at /usr/local/julia-latest/lib/julia/sys.dylib
 in include_from_node1 at /usr/local/julia-latest/lib/julia/sys.dylib
while loading /Users/seth/.julia/v0.4/Hiccup/src/Hiccup.jl, in expression starting on line 102
while loading /Users/seth/.julia/v0.4/Mux/src/Mux.jl, in expression starting on line 20
while loading /Users/seth/.julia/v0.4/Escher/src/cli/serve.jl, in expression starting on line 5

Widgets

Things left to do

  • paper-input-decorator instead of paper-input with features viz.
    • pattern validation
    • error message
  • working mutli-line input
  • layout issues with drop-down
  • similar APIs for radio buttons and drop-downs
  • more usefully allow Dicts
  • date picker
  • color picker

LoadError when trying to run `escher --serve`

I just downloaded this package and tried to run it according to the directions in the readme. This is the output I got:

$ escher --serve
WARNING: `require` is deprecated, use `using` or `import` instead
 in depwarn at ./deprecated.jl:73
 in require at deprecated.jl:663
 in include at ./boot.jl:260
 in include_from_node1 at ./loading.jl:271
 in require at ./loading.jl:210
 in include at ./boot.jl:260
 in include_from_node1 at ./loading.jl:271
 in process_options at ./client.jl:308
 in _start at ./client.jl:411
while loading /Users/leah/.julia/v0.4/ArgParse/src/ArgParse.jl, in expression starting on line 1
WARNING: module Escher should explicitly import * from Base
WARNING: module Escher should explicitly import / from Base
WARNING: module Escher should explicitly import + from Base
WARNING: module Escher should explicitly import - from Base
WARNING: New definition 
    write(#T<:Base.IO, HttpCommon.Response) at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:179
is ambiguous with: 
    write(#T<:Base.AbstractPipe, Any...) at stream.jl:548.
To fix, define 
    write(#T<:Base.AbstractPipe, HttpCommon.Response)
before the new definition.
WARNING: New definition 
    write(#T<:Base.IO, HttpCommon.Response) at /Users/leah/.julia/v0.4/HttpServer/src/HttpServer.jl:179
is ambiguous with: 
    write(#T<:Base.DevNullStream, Any...) at process.jl:95.
To fix, define 
    write(#T<:Base.DevNullStream, HttpCommon.Response)
before the new definition.

WARNING: deprecated syntax "app (" at /Users/leah/.julia/v0.4/Mux/src/server.jl:14.
Use "app(" instead.
ERROR: LoadError: LoadError: LoadError: LoadError: TypeError: Tuple: in parameter, expected Type{T}, got Tuple{DataType,DataType}
 in include at ./boot.jl:260
 in include_from_node1 at ./loading.jl:271
 in include at ./boot.jl:260
 in include_from_node1 at ./loading.jl:271
 in require at ./loading.jl:210
 in include at ./boot.jl:260
 in include_from_node1 at ./loading.jl:271
 in include at ./boot.jl:260
 in include_from_node1 at ./loading.jl:271
 in process_options at ./client.jl:308
 in _start at ./client.jl:411
while loading /Users/leah/.julia/v0.4/Mux/src/websockets.jl, in expression starting on line 3
while loading /Users/leah/.julia/v0.4/Mux/src/Mux.jl, in expression starting on line 26
while loading /Users/leah/.julia/v0.4/Escher/src/cli/serve.jl, in expression starting on line 5
while loading /usr/local/bin/escher, in expression starting on line 7

I'm running on a Julia I built from scratch today. (I ran into other issues with this package when I tried to run with Julia 0.3, which is why I updated.) I'm on a Mac.

$ julia --version
julia version 0.4.0-pre

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.