bulgur's People
bulgur's Issues
Drop oauth-io to github-oauth
https://www.npmjs.com/package/github-oauth
Because more sustainable (free) when scaling up while oauth-io would require to pay extra fees at some point.
Rationalize and update visual identity
Mockups : https://marvelapp.com/16ja5ag/screen/17484098
New font sets : Source Sans and Source Code (full fonts sets)
-
validate mockups
-
rationalize classes of visual objects and invariant parameters
-
implement
In addition to the current mockups, to reduce and normalize the number of font sizes and gutter sizes, and to think through responsive rules for medium and small screens.
snapshot reset does not always trigger properly
In mapping mode -> create a new slide -> make any change of view (pan/zoom) -> the "take snapshot" button is not present while it should be
setup module to convert input data fields to output invariant visualization parameters
Enable several data sources in a story metadata's model ?
move activeStory state to application state's root
Currently in ui
branch - does not make sense.
Wrap sigma.js for network stories
Persistent state
Reimplement couchdb (currently commented) to avoid loosing one's work when refreshing page accidentally.
setup new data model : reducers/actions / selectors
New active / active presentation
const presentationModel = {
metadata: {},
datasets: { // datasets as a dict of data sources
datauuid: {
metadata: {},
data: [] // the data itself, as provided by user (json or raw string if xml-like or other)
}
},
views: {
[uuid]: {
metadata: {},
dataset: [uuid],
viewParameters: [], // view parameters - will be used as a basis that can be overriden
viewDataMap: [] // data-to-vis transformations
}
}
}
New story model is identical to active story as always.
Slide data model
const slideData = {
views: {
uuid: {
dataset: [uuid],
viewParameters: [], // view parameters - will be used as a basis that can be overriden
viewDataMap: [] // data-to-vis transformations
}
}
}
What if
... a user changes the visualization type (and therefore render slides view params and data mappings irrelevant) of one of the view ?
... a user starts a visualization with two views, then edits the presentation settings and delete one of the two views ?
... a user wants to use the same data mapping / view param settings for several consequent slides ?
Create consistant footer component
View settings pannel
Changes must be directly mirrored in the related vis.
Must not be redundant with components displayed in new presentation/edit presentation modal.
Make more specific require statement to avoid to bundle whole libraries
Setup specific slides preview component
For a cleaner code, and in prevision of migration of the bulgur-reader code.
Setup a timeline existing or new solution
OPtion 1 is Timeline JS3 project : https://github.com/NUKnightLab/TimelineJS3
It does not have any npm package as such.
Solution 2 is to build a new timeline lib for react.
Investigation needed for network mode
Main questions to solve :
-
how to expose data mapping options out of gexf-like data ?
-
how to consistently handle both graphml and gexf data formats ?
Allow for parallel editing of several presentations in state architecture
presentation-editing related part of the state tree should be a dict object of objects representing each a story. This way it could be more easily envisaged to manage temp storing of active presentations with pouchdb and partially persistent state.
Enable multiple linked views in a story
e.g. timeline + map
Draft: load one instance at once
For now there is one draft instance for each slide in the active presentation.
This is problematic for use cases with a lot of slides.
Setup new story dialog basic flow
Wrap timeline.js for time stories
Export to server storage feature
Using a quinoa-server instance.
Should be able to update if working with an existing presentation.
Uncouple bulgur-reader for use in pages and as dependency code
Bulgur composition app requires far more dependencies than it should when used for readonly. And the player should be usable as a dependency in other apps like fonio. In addition, this is going to be problematic when integrating bulgur documents inside other apps.
Structure of this component :
- Visualization container
-- Visualizations components (one way controlled - can be configured when setting a slide state)
- Navbar
-- Navbar content
-- Navbar toggle (visible when navbar is closed)
- Legend container
-- Previous slide button
-- (user-generated) html contents
-- Next slide button
In all-in-one html, the code could be reduced to that component + a footer.
Setup new timeline component
Like in : https://marvelapp.com/16ja5ag/screen/17495635
Continuing to dig in react-visjs, the main changes to make are :
-
add categorization through colors
-
go vertically
-
add periods handling
Purge readonly mode - related code
Now that readonly is automatized as a service, code can be cleaned with this.
Gist publishing : create or update existing gist
- save/parse gist url or id when working with projects' json
- export to github > get or create gist
namespace css with bulgur and unnamespace components and features names
New story dialog enhancements
- add a "parameters" step : colors, label sizes, ...
- display edition parameters (e.g. automatic or manual snapshots) in new story dialog ?
Remove sigma dependencies (handled downstream)
Plug analytics wisely
Save current project in cookie or localstorage
Requires to be able to start over if needed - or display a modal to work on the previous project
Plug quinoa logic and components
Setup app workflow
plug external wisiwyg editor helpers (italic, bold, ...)
Bulgur output : stronger metadata
When exporting to html, in the index.html building module, dynamically build strong metadata in opengraph, twitter and dublincore metadata formats with metadata available about the presentation and the datasets.
setup data validation module
Use quinoa-vis-modules for visualizations interactions
Remove deprecated dependencies
- storybook
load data file through drag and drop
In state, rename invariantParameters to dataMap
... as other invariant parameters than inputData->visData mapping may be provided
Setup new network component
Must be clean in terms of dependencies.
Must be tweakable at least in terms of
- spatialization settings
- nodes categorization
Quinoa library upstream needs
-
being able to plug quinoa's reducer inside a wider redux logic
-
being able to have a read-only mode for components
-
being able to customize fields and appareance of slides
Benchmark best mapping lib/tool for space stories
Setup a consistant categorization display for all types of vis
-
automatic coloration of "items"
-
display a legend for each item
Design decisions to make about various slides miniatures use cases
Do not consume data mapping to keep it customizable
When building presentation metadata out of new story dialog, do not translate data directly but keep it layered
Refactor bulgur with a modular set of miniprojects
Dissociate bulgur components that have to be reused in separate mini-project modules.
quinoa-vis
First the quinoa-visualizations
module which must provide with visualization components wappers for timeline
, graph
and map
visualizations.
They all must feature the same API and functionnalities :
- controllable and declarative state representation
- user-triggered change listeners (pan, zoom, ...)
- possibility to allow/disallow interactivity
quinoa-player
Then the quinoa-player
component which is composed with quinoa-visualizations
modules and allows to display a readonly presentation. This component will be used both for preview in bulgur, as a standalone codebase for exports, and as a dependency in fonio.
Parameters :
- possibility in a specific instance of the player to lock/unlock visualizations navigation
- mode of interaction (scroll / buttons) and parameters
Actions :
- next/previous/jump to slide
- open/close the summary pannel
- lock/unlock visualization navigation
The (s)css code must be highly customizable.
Structure of this component :
- Visualization container
-- Visualizations components (one way controlled - can be configured when setting a slide state)
- Navbar
-- Navbar content
-- Navbar toggle (visible when navbar is closed)
- Legend container
-- Previous slide button
-- (user-generated) html contents
-- Next slide button
In all-in-one html, the code could be reduced to that component + a footer.
Show "reset" and "record" buttons only when it is relevant
Update bulgurProjectModel with new project model
!! don't forget to have a server-storage-id
prop for the version of the presentation synced with server.
Setup output workflow
Todo :
- modal mechanism
- story's json file output (and input as new story)
- standalone html file output
- github.io website generation through oAuth (next level)
Rephrase story to presentation in app
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.