Code Monkey home page Code Monkey logo

idyll-studio's Introduction

Idyll Studio

Toward an integrated interactive publishing engine.

USAGE GUIDE

See USER_GUIDE.md

DEVELOPING

See CONTRIBUTING.md

CITATION

If you use or build on Idyll Studio in academic work, please use this citation:

Conlen, et al., "Idyll Studio: A Structured Editor for Authoring Interactive & Data-Driven Articles", ACM User Interface Software & Technology (UIST), 2021.

Bibtext format:

@inproceedings{2021-idyll-studio,
 title = {Idyll Studio: A Structured Editor for Authoring Interactive & Data-Driven Articles},
 author = {Matthew Conlen, Megan Vo, Alan Tan, Jeffrey Heer},
 booktitle = {ACM User Interface Software & Technology (UIST)},
 year = {2021}
}

idyll-studio's People

Contributors

baryon2 avatar dependabot[bot] avatar mathisonian avatar megan-vo avatar tanalan 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

idyll-studio's Issues

Properties editor should not go off the edge of the app

If you open the properties editor on a component near the bottom of the page, it will go off the edge of the app and cause some weird scrolling issues.

If the props editor is going to be placed near the bottom of the page it should scroll gracefully

Screen Shot 2021-02-15 at 8 34 53 PM

Collapse sidebar

There should be a way to show / hide the sidebar details panel

How do you "Hello World" this?

Are there getting started instructions for building / deploying idyll-studio? I've poked through the sub directories and didn't see anything that indicated as much. Also, does publishing via this simply output idyll markeup the we'd then need to host/render somewhere? Or is this more of a full blown content management / publishing system?

Datasets

There should be a new tab for datasets, that enables drag-and-drop addition of new datasets from CSV and JSON files, and enables inspection in the form of a table or tree viewer

Type-specific property editors

Variables should be a dropdown of all existing variables:

Screen Shot 2021-02-22 at 11 19 26 PM

Expression should be a code cell, which expands to multiple lines with its content, and execute only on shift+enter
Screen Shot 2021-02-22 at 11 21 00 PM

reactivity bugs

  • author view - prop "current value" doesn't immediately re-render on value change
  • var "current value" in sidebar doesn't immediately re-render on value change

Variable-viewer: Removing old derived variables from context

When you rename a derived variable, the context.data() still retains its old name and value, although it no longer tracks changes under the old name.

We might want to delete these from the context to avoid confusion if someone types in a variable name that shouldn't exist

Better components view

The components view could use some love. It currently looks like this:

Screen Shot 2019-06-07 at 1 14 58 PM

We should:

  1. Add structure so the components are grouped as they are in the docs. There should be an additional section for custom components.
  2. Add thumbnail images for each components, we can re-use the images from the docs to start. We should also create a default thumbnail for the case where components don't have an associated image.

Additional drag and drop behavior

We should support additional drag and drop behavior such as dragging javascript files to automatically add them as new custom components, and the same with json/csv files to add them as new datasets.

Scroll position jumps on drag and drop

When dragging and dropping a component into a document, sometimes the position jumps down, which makes a user lose their position.

We could find a way to stick that position on drag and drop so the scroller doesn't jump and the position isn't lost

Components are non-recoverable after error is thrown

When an error is thrown do to invalid input, we can't recover the component back:

Changing the properties:

properties-error

Changing the code cell

(In this case, deleting the entire component markup). I'm wondering if this is a separate issue and should result in removing the component entirely?
code-cell-error

Add debouncing when updating properties to prevent lag

Right now, when properties' values are changed for a component, the document gets updated each time which causes a bit of a lag.

Look into debouncing so that the updates occur less frequently to improve performance

Mobile view

The interface should expose an option to preview the article as it would appear on a mobile device, similar to how chrome/firefox devtools allow you to do this

Add persistence

The editor should store some information to disk in order to be able to remember where you left off when quitting and restarting.

The easiest way would probably be storing a SQLite database in a local tmp directory. This database should store information such as

  • which project you were working on
  • mapping from deploy token to URL
  • etc

Memory leak in properties viewer

If you open the property viewer for a component and then close it, the listeners should be detached. Currently it throws an error:

Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
    in Component (created by Context.Consumer)
    in Unknown (created by Context.Consumer)
    in DropTarget(Component) (created by PropertyList)
    in div (created by PropertyList)
    in div (created by PropertyList)
    in div (created by PropertyList)
    in PropertyList (created by Properties)
    in div (created by Properties)
    in Properties (created by Context.Consumer)
    in Unknown (created by AuthorView)

Open from Github

Feature request: load a project from GitHub (or plain git).

It doesn't need to be smart about pushing changes back to Git, can just clone / download the project from a git repository and then continue to function as it does currently.

Install components from NPM

The "components" view should provide a way to add additional components. This could be in the form of local files (i.e. drag and drop a JS file), or install them from NPM. When installing from npm, having a search field that autocompletes your query against a list of known packages would be ideal.

handle overlapping editor buttons

When you have a short component directly followed by another component, their edit buttons will overlap. Example a short (empty) Table followed by a Chart

Screen Shot 2021-01-14 at 12 59 11 PM

Recently opened posts

Nice to have:

The loading screen should make available "recently opened" posts, to facilitate quickly re-opening projects you've worked on.

On preview mode, dataset values disappear

It seems like on preview, dataset values are disappearing.

On "preview" and "edit" toggle, the dataset values in context.data() disappear and are not reloaded until "Variables" tab is hit.

preview

Create new project

The launch screen should allow you to create a new project in addition to just opening an existing one. This should allow you to choose from all available templates.

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.