Giter Club home page Giter Club logo

deck's People

Contributors

ajstarks 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

deck's Issues

partial rendering to increase perf.

We can increase perf by using partial rendering

At the moment a change to decksh produces all of the xml and then the GIO Rendering system renders with that xml.

What we can look at is doing on partials updates. Because there is a one to one mapping of a decksh line to xml its possible and not boiling the ocean. The GIO rendering engine would then update the screen of just the changed xml.

Deckd

Are you still using it ?

I was thinking of extending it so users can have a web gui for interacting with deck.

I noticed the html code is not used …

A simple htmx pattern ( you can google it ) to make a html driven gui to talk to der kd basically , so that users can interact with the system .

Deckd usage

Hey

i could not work out how to configure / deckd

any chance you can add a readme for newbies ?

Any plan to add a table support

Hello, I was experimenting this library, found useful, are you planning for any table support like list you provided, and whats the future roadmap on this library ? Is there any active development happening?

i18n aspects

Lots a graphics people have a situation where they need to produce graphics with the text in different languages.

.dsp already supports text substitution, so the fundamentals are there.

I just wanted to write down my own thoughts on this:

  • I like to have a data file where i have the translation field, and the translation-override field. The translation is the machine translation, and the translation-override is the human checker overriding it. I actually model this in google sheets and set it up to do the translation, and then wrote a golang package to extract it as a csv from the google sheet. Its one way to approach this area.

  • https://github.com/cameronkinsella/manga-translator is pretty cool GIO proejct that does OCR on images, extracts the text, and translates it, and puts the text back into the image. I mention this because it's got some good code to help with talking to the google trans api and also setting up configs. I also reference this because its another way to do it as opposed to the google sheet approach i have used. I can dig out this code if needed ...

  • caching can really be useful here, because you get a translation memory, and so dont have to hit a Google sheet or the google trans api if you already have a translation for that "key" in your files.

  • i expect we might need a first class element in the .dsp DSL for trans, but not sure. Pluralisation i think will be the thing that forces the need for a first class element, as well the Data Format, etc.

  • Date Format, Currency Format are very often needed. There are a few light and simple golang packages out there that do this. It should be presumed that Time is always UTC when coming from any DB, and then converted to the User timezone format. Because Deck needs to output PDF, etc in many languages the "user timezone, locale" would be a config, not a runtime lookup. However for presentations with deckd, It would need to check the user runtime to determine the "user timezone, locale"

  • GIO is getting there with RTL and LTR support. So eventually that would also be an aspect.

pdfdeck: open times.json: no such file or directory

pdfdeck gives me an error. It seems that some font files missing, do I have to specify the fonts somewhere? Anyway .. sometimes helvetica is missing and sometimes courier ..

maigl@dreggnbox:~/devel/deck_test$ pdfdeck countdown.xml 
pdfdeck: open courier.json: no such file or directory
maigl@dreggnbox:~/devel/deck_test$ pdfdeck countdown.xml 
pdfdeck: open helvetica.json: no such file or directory

I pulled from master (commit e8d9980) and used your countdown example .. and with svgdeck I get the expected results ..

Eventhough pdfdeck fails, there is an empty result-file 'countdown.pdf' in my folder.

decksh and gcdeck and variables editing.

Hey

I was wondering if we can extend gcdeck with more gui to help designers work on their designed without having to know too much Deck markdown or .dsh

This is just an idea to help make it easier for graphics people to not have to edit .dsh directly.
The biomimicry people using this are non technical and i am trying to make it easier for them to use the gcdeck tool.

Here is one of your examples: https://speakerdeck.com/ajstarks/decksh-a-little-language-for-decks?slide=5

Its has a variable called "gy=10" that affects the elements placement.

How is the Layout --

Left Pane: Preview area of Deck
Right Upper Pane: Elements List
Right Lower Pane. Properties List

How is the description of each and how they interact.

The Elements list shows a representation of the elements in the .dsh file. It could be a tree or a list.
The Properties list shows properties.
If no element is selected it shows the global variables of the .dsh
If an element is selected it shows the elements properties in the Property List.

When they click on an element in that list , highlight it in the Preview pane with some sort of border. We can do that by just injecting into the rendering stream using a "HighlightFocus" context variable, so that it looks for the element passing through the buffer and injects the deck markup to put a border around it.
At the same time, show the properties of that element on a Property List . Just like the "HighlightFocus" this is just a global context listening for a variable called "PropertyFocus", so it knows what Element to show the properties for.

When they change the global .dsh variable like "gy=10", , the file updates and so then does the Preview Deck, and and hence the properties affected by it in the Properties List.

The idea with the HighlightFocus and PropertyFocus variables is so that GCDeck can be told what to render in its Panes. These variables are set globally. Once it knows the element its looking for it can look it up in the Deck Markup and pass the string along the context allows the Properties List to update.

Hope you get the gist of my explanation above. I imagine you have also thought about how to make things easier for designers who find it hard to deal with markup / dsl files too, so if you have some thought on this let me know.

If you want to have a video chat to discuss

speed up xml

https://github.com/clbanning/mxj

this will also make it faster and remove any reflection.
it will also allow use to run the deck libs in a browser using wasm.

The current Generate command can then use this and all he golang structs will not have tags, ut instead use this lib to bind the xml to the structs and visa versa.

Let me know if you interested.

vdeck support

Just tried to run vgdeck on a Mac but it has c dependencies

vgdeck % go run .
# github.com/ajstarks/openvg
/Users/apple/go/pkg/mod/github.com/ajstarks/[email protected]/openvg.go:7:10: fatal error: 'VG/openvg.h' file not found
#include "VG/openvg.h"
         ^~~~~~~~~~~~~
1 error generated.

Do we even want to both because gcdeck is its replacement in a way ?

Runaway rendering in gcdeck

gcdeck test.xml # from the the decksh repo

after several pages. the rendering loops through the file at rapid speed with no user intervention.

fonts in many locations

Hey

I am needing to allow someone to be able to tell Deck multiply places to look for fonts, as well as guess where they typically are.

https://github.com/flopp/go-findfont works for me, and finds all fonts on the users system by searching in the standard paths per OS. It can also search for a particular font.

I am not sure of the best approach in terms of usability. I think that Deck could look into the standard system folders using go-findfont, and then allow the DECK_FONTS env variable to be an array, so that the user can hint for other non system folders
what do you think ?

Maps

Been talking to the science users and one thing that is coming up is the ability to have basic poly line style maps at the global , country , city level .

The use case is that often they have csv data that relates to locations. For example Covid by geography.

Often they combine it with dcharts so that the end user can see the data via a bar chart ( or other ) and a map.

In the map there are a few ways they display the data representation:

Country poly line is filled with a colour that relates back to a legend.

Circle ( filled in ) in the centre of the country or state or city. The size ( and perhaps colour ) of the circle represents the quantity that relates back to a legend ( if also using colour ).

I was doing a little bit of research and it seems geojson is popular as a data format to describe maps so that might be a good data source.

I don’t know if this should be part of dcharts but I suspect it’s the right area.

Decksh could then compose a map chart and other charts ? I am presuming that decksh can make calls to the dcharts package to output deck markup, but have not checked.

There is another related requirement with this that I might as well bring up here. They are finding that sonetines they need to have the chart zoomable.

For example in a map you might want to zoom and pan. Or to click on a country and to then see the map chart for that country should the map chart of the states of that country. Then in a state the cities etc. Presume that the user can go back out also.

in addition when composing using decksh they would want to be able to layout slides with each country map on each slide. So to me the zoom feature is perhaps u der the hood in actual fact just navigating to different slides !! It would mean adding the ability to navigate decks via sone sort of data driven meta.

In a heat map chart ( do we even have these ) they want to click an area and god to the next level , and also go back out.

I know there are many different things to what I described above. I wanted to show a reasonable expansive use case to show all the aspects so that the technical aspects can be dissected out of the epic use case.

there may be a need in general for routing for example not just for maps but in general.

Go module definitions, more package APIs

Hi, I'm super excited to have found this excellent project!

A couple of quick things:

  1. It would be great if both the base deck and generate packages had go module definitions.
  2. All of the command line tools (especially decksh, dchart and the export tools e.g. svgdeck) are excellent. I just wish they each had exported golang package APIs (with module definitions) so that it was possible to build on top of all of this great work you've done in a platform independent way without relying on external command line dependencies.

Specifically, I'd love to be able to go from data to writing (or serving) an SVG slide/chart in a self-contained statically-linked go program, without resorting to piping together exec.Command("dchart",...) type code (with the attendant brittleness of depending on those execs being correctly installed, in the path, etc.)

Item 1 above is easy. Item 2 is obviously more work, but doing it would also make it much easier to maintain those command line tools over time by abstracting the core functionality of each away from the command line processing parts.

Anyway, I'm sure you know all of this, but I can imagine so many uses for all of the hard work you've done here, if only it was a little easier to access from golang itself!

upgrade to go 1.8 and use of go.mod files

I am having working on extending the code.

One reason is the fact that we are not using the go work functionality for golang 1.8.
It allows module overrides that are private. It also ensures that the go.mod does not need any replace directives.
here is a simple example : https://github.com/xmlking/go-workspace


Also 2nd thing is that deck/generate has its own go.mod. Having go.mods inside go.mods recursively like this screws up the gopls for vscode for me. vscode Workspaces does not help either.

Interaction

This issue follows on from the Maps Issue .

One aspect that I keep needing with Science decks is the ability for users to add interactions to a deck slide.

Typically this can be two types of higher level interaction.

1 Routing , where a slide has a wider ( like a button ) that navigates the user from the current slide to another slide in the same deck.

2 layers, where a slide has the ability to replace part of he slide with something else.

The overriding use case driving all this is that they want to be able to make decks where the end use is able to interact with the the finished deck in very simple ways so that the users can explore the visualisations.

So maybe we could add this concept to the Decksh ? Is it something others are I retested in ?

I have sone more in depth notes on my laptop about more precise aspects of this but I am away from it for another week.

makefont installation?

Greeting! I am trying out this package and having trouble figuring out how to install makefont

I tried installing gofpdf but that doesn't seem to help.

go version go1.13.5 darwin/amd64

Thank you!

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.