Coder Social home page Coder Social logo

retort's Introduction

Retort - A Reaction Plugin for Discourse

Retort allows you and your users to add slack-style reactions to your discourse posts.

Check out a quick gif of it in action here!

Installation

You're done!

Limiting the possible emoji set

Some communities will want to limit the possible reactions to just a few, rather than all possible emojis. Retort now supports this!

limited reactions

In order to use a limited emoji set, simply visit admin/site_settings/category/plugins, and check the box which says 'Constrain the list of reactions to the list specified below'.

admin_panel

Then, enter the list of emojis you'd like to support, delimited by the '|' character. (So, for example, if you only wanted to support thumbs up / thumbs down reactions, you'd put in +1|-1)

Feel free to style elements underneath the .retort-picker class in Admin > Customize > HTML/CSS, if you need further customizations like emoji size, spacing, etc.

Limiting the number of reactions per post

There's an additional site setting, 'retort allow multiple reactions', which determines whether users can react to a single post multiple times or not. (It is enabled by default). If you only want users to be able to create one reaction per post (if you're using Retort as a voting system, for example), set this option to false.

Disabling retort for particular categories

The 'retort disabled categories' site setting allows disabling particular reacting in particular categories by name. These category names are case-insensitive.

For example, entering staff|announcements into this field will disallow all users from reacting to topics in the categories name 'Staff' or 'Announcements'.

Contributing

Pull requests welcome! To contribute:

  • [Fork it] (../../fork )
  • Create your feature branch (git checkout -b your-new-feature)
  • Commit your changes (git commit -am 'Add some feature)
  • Push to the branch (git push origin your-new-feature)
  • Create a new Pull Request

retort's People

Contributors

alfonsomunozpomer avatar angusmcleod avatar cfstras avatar davidgnavas avatar dtraleigh avatar gdpelican avatar jbrw avatar lze3 avatar merefield avatar pmusaraj avatar r-zander avatar rizka10 avatar schungx avatar yiabiten 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

retort's Issues

Icons After Selection Showing as Undefined

After an upgrade to HTTPS and a migration to a new URL, our Retort icon selector still pops up and shows the externally pulled icon set. However it fails to populate the selected image into the icon line. (As shown).

image

Not sure if I'm missing a configuration step or if this is something with the conversion to HTTPS from HTTP where the plug-in doesn't like the conversion? Ideas welcome to try to resolve. Have done the usual remapping and rebake of posts, but that didn't matter for this plugin as it's not 'baking' in the Discourse sense likely.

Retort does not Honor User Silences

Retort does not honor the silenced status of users, allowing them to keep using the plugin to react and insult users during a posting ban.

Retort-button just dims the site

After a recent update, where I lost the retort-button, it's now back, but clicking it just dims the website (apart from some replies and buttons) - See screenshot. I tried clearing the cache etc, but it does the same...

Screenshot of it not working...

My users really love Retort, so I hope it gets fixed soon :)

Uncaught TypeError: r is not a function

After enabling retort, as a user, they click on an emoji in the retort emoji picker. There is a console log per emoji click, which is as follows:

Uncaught TypeError: r is not a function

Picker Is Not Shown Anymore

After the recent updates the picker is not shown anymore when clicking on the emoji symbol on our discourse. Can somebody confirm this issue?

Allow reactions to be removed

Once a user leaves a reaction, there is no apparent way to delete it (in case they change their mind).
Users should be able to simply click the reaction to remove it, to behave like reactions on Slack.

Reaction hover tooltip on mobile is cut off intermittently

While using Discourse on a mobile device, if a user long presses the retort emoji in order to see the tooltip (the one that shows which users reacted with that emoji) in some cases the tooltip is cut off. This does not happen every time and I have not found a pattern to this behavior.

Discourse community is at: https://community.dtraleigh.com/

Two examples of unexpected behavior:

Example of expected behavior:

Reaction background is not consistent with the page

Disclaimer: I am opening this issue on behalf of Caddy for this issue. Hopefully one of the admins there will come to this thread shortly with more details on the implementation if necessary.

Using the most recent version v1.2.3, the background of the reactions does not match the page, although according to #35 this issue should have been fixed. Here's a screenshot for reference:
Screen Shot 2021-02-12 at 15 22 05

I'm not personally familiar with this plugin and whether this is just a misconfiguration somewhere. In the most recent version, do the emoji set have a coloured background or is it transparent?

TypeError: _.find is not a function.

Somewhere before/around 2.3.0.beta9 +442, Retort is unable to load causing Discourse to display no posts or post content.

Disabling Retort and rebuilding the Discourse container gets things working again.


Discourse error logs

Info:

TypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),function(e){return e.id==t})', '_.find' is undefined)
Url: https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js
Line: 2
Column: 11636
Window Location: https://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572

Backtrace:

postFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a3e4bad782571c555107c5f5.js:1:749
https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a3e4bad782571c555107c5f5.js:1:6104
map@[native code]
html@https://forum.manjaro.org/assets/application-2cd2499ced2a6d4b1405ef1136783491b0ab6a9f3ff659514bf0cdd8aeb8c8de.js:71:15014
m@https://forum.manjaro.org/assets/application-2cd2499ced2a6d4b1405ef1136783491b0ab6a9f3ff659514bf0cdd8aeb8c8de.js:73:2261
i@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:16266
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:16191
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:9652
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:9950
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:9950
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:9950
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:9950
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:9950
u@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:11711
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:11084
o@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:12807
i@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:12671
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:11196
o@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:12807
i@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:12671
r@https://forum.manjaro.org/assets/vendor-85930c8f453e9c7ad1b20fa9864078717dd550a559ca233eb6873a3b40da79e7.js:5:12498
rerenderWidget@https://forum.manjaro.org/assets/application-2cd2499ced2a6d4b1405ef1136783491b0ab6a9f3ff659514bf0cdd8aeb8c8de.js:32:30119
invoke@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:6931
flush@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:5931
flush@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:7985
_end@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:12659
end@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:9321
_run@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:13146
h@https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:2:9942
https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:2:10241

Env:


hostname | forum-app
-- | --
process_id | 558
application_version | f41aa5cb989d209e3c115ff9cd0d8b269c565dda
HTTP_HOST | forum.manjaro.org
REQUEST_URI | /logs/report_js_error
REQUEST_METHOD | POST
HTTP_USER_AGENT | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15
HTTP_ACCEPT | */*
HTTP_REFERER | https://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572
HTTP_X_FORWARDED_FOR | xx.xx.xx.xx
HTTP_X_REAL_IP | xx.xx.xx.xx
  | paramsmessageTypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),f urlhttps://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee line2 column11636 window_locationhttps://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572 stacktracepostFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a | params | messageTypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),f urlhttps://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee line2 column11636 window_locationhttps://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572 stacktracepostFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a | message | TypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),f | url | https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee | line | 2 | column | 11636 | window_location | https://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572 | stacktrace | postFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a
params | messageTypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),f urlhttps://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee line2 column11636 window_locationhttps://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572 stacktracepostFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a | message | TypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),f | url | https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee | line | 2 | column | 11636 | window_location | https://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572 | stacktrace | postFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a
message | TypeError: _.find is not a function. (In '_.find(this.get("topicController.model.postStream.posts"),f
url | https://forum.manjaro.org/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee
line | 2
column | 11636
window_location | https://forum.manjaro.org/t/cant-get-wifi-to-work-on-a-2014-macbook-pro/26572
stacktrace | postFor@https://forum.manjaro.org/assets/plugin-third-party-cb9e0bf42da8c2341d6e53c6d5db170604bf0bb7a

Icon popup not appearing

Hi,

I just installed this plugin for an up-to-date Discourse installation. It was working nicely until I tried to limit the icon selection. I tried to set it to this:

slight_smile|smile|sunglasses|dizzyface|stuc_out_tongue|dizzy_face|upside_down|+1|-1|clap|wave|ok_hand|raised_hand|heart|rage

There's probably an invalid icon in the list. After saving this setting, the icon popup would not appear anymore. Neither when clicking on the retort button, nor on the emoji button in the post editor. The page would be dimmed, but no popup shown. Resetting the plugin's settings to default didn't help. Neither did disabling the plug-in, nor rebuilding the container.

The inspector reports this error: Uncaught TypeError: Cannot read property 'icons' of undefined, which apparently happens in a render method (last line in the (uglified code below):

function render(page, offset, options) {
  keyValueStore.set({ key: "emojiPage", value: page });
  keyValueStore.set({ key: "emojiOffset", value: offset });

  var toolbarItems = toolbar(page);
  var rows = [];
  var row = [];
  var icons = groups[page].icons;

Any idea now to fix it?

A way to see who reacted

My users have requested a way to see who has reacted - Doing mouse-over reveals a couple of names, but not the rest - Clicking it just reacts - Holding LMB on the icon reveals the same couple of names...

Thanks! :)

Custom emojis no longer working

Related to #52. After the fix was applied to issue #52, custom emojis no longer display correctly. Bear in mind that reactions made prior to the fix still display. Please fix this.

Example of a Retort reaction being made after the fix (not working):
https://forum.farfarawaynews.com/t/star-wars-episode-i-racer-coming-to-ps4-and-switch-in-may/837

Example of a Retort reaction that was already made before the fix (still working):
https://forum.farfarawaynews.com/t/taylor-gray-gives-his-thoughts-on-the-rumored-rebels-sequel/822

Disable / Enable reactions for each category

Currently the plugin only gives the option to enable / disable the entire plugin. In addition to that, put the option to (not)use retort in the "Settings" when editing a category (similar to the star "ratings" plugin).

This would make retort more suitable for forums where some categories are "srs biznes" 😼 (where reactions are good) and then others "actually serious business" 👮 (where reactions are distracting / contribute nothing (or because I don't care about the reaction I just want ppl to read)).

Feature Request: User Based Emoji Set

Simple version: Allow full emoji list for Admins when using a limited emoji set.
More extensive version: Allow separate emoji sets by user group or trust level.

Feature request: type to filter emojis

I kind of like the emoji picker built into macOS since I can just type a few letters to quickly find the emoji I want. Would love to see this ability in retort!

And thanks for making it, helps the community feel a little more integrated.

Does not work with 2.5.0.beta4

I upgraded from 2.5.0.beta2 to 2.5.0.beta4 today and this plugin caused the entire forum to break due to a JS error in this plugin.

The error in the console is unfortunately not very helpful:

_ember_jquery-3a388c5a0562670ed1eea762f12e041d92b4a418316d3f9f83e793d3ba6be5d7.js:4060 jQuery.Deferred exception: Cannot read property 'find' of undefined TypeError: Cannot read property 'find' of undefined
    at t.postFor (https://forum.ohmydollar.com/assets/plugins/retort-2b5f24e04afd560bb80ec54c5a13ff2bb05edb69aa06e7aa11af1be8275a56c0.js:1:1494)

I have to disable this plugin for now until this is fixed.

Can't see the button

Hey there, I've installed the plugin, however, the button/emoji are not appearing below the topics. Is there any additional step i need to take of is it not working with the latest Discourse version?

The plugin is activated!

use before_action instead of before_filter

When upgrading Discourse I get this error:

$ bundle exec rake multisite:migrate
rake aborted!
NoMethodError: undefined method `before_filter' for Retort::RetortsController:Class Did you mean? before_action

I have no clue, but it seems they upgraded rails and you're supposed to use before_action now?

Delete reactions for edited posts.

Similar to how votes are cleared if a poll changes, all reactions should be removed if the post being reacted to is edited (maybe excluding "wiki" posts).

To illustrate the need for this:

  1. userAlice posts something nice.
  2. userBob reacts with: 👍
  3. OP userAlice changes their post to the exact opposite of what userBob 👍'ed
  4. Now it looks like userBob is 👍'ing something he disagrees with

Change the background font to match the used theme

Hi !

We use a dark theme on our Discourse instance and the reaction background color doesn't match our theme.

While I could fork the project and edit the color as I see fit, it would be great that this background color could match the user theme or to at least have an option to change it.

Thanks !

Issue #57 not resolved before closing

Issue #57 was incorrectly marked as resolved; adding a check for suspended users is useless here, as a suspended user cannot even login. It needs to be a check for a silenced user.

~H

Long delay between clicking emoji and it showing up.

Hi!

The time it takes between when a user clicks the emoji in the picker and until it shows up (to the user) is really long. From what I gather from the code, the insertion in the DOM awaits response from the server and the response is depending on the polling time. This makes the delay span up to 3-4 seconds in some cases!

A nice "fix" to this issue could be that the client side code adds the emoji right away, then "corrects" it in case the server answers with another response than the expected value, cause as of right now, from the users perspective, it seems like we have a huge issue with delay on the forum.

Emoji-button - No on-click reaction (Widget not showing)

Hi,

Our reaction button got broken after the latest update. By clicking it, nothing happens. No JS-errors is thrown in the console, by clicking it. I can't really tell what's going on.

We're on the latest build, with all plugins updated, too.

image

Plugin gives warnings in javascript console - needs minor update for api change

When I use your great retort plugin with the latest Discourse, I get javascript console warnings:

be @ plugin-api.js:19
plugin-api.js:19 [PLUGIN retort] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.

Is there any chance you could fix this? I imagine it would be quite easy to fix, and might prevent problems in the future.

Limit the number of reactions displayed on a single post

Need a way to limit the number of reactions shown. A setting like "maxReactionsShown" might be set to 1 (show only the most recent reaction), or set to higher like 10. Btw 10 reactions looks like:

🎱 💯 👎 👍 🎅 👿 🌵 🐶 👮 :finnadie:

^ As you can see this is quickly eating up screen real-estate.

Having it set to 2 should show only the two most recent reactions and then at the end show "..." to 'expand' the reactions to see more. Example:

👮 :finnadie: ...

Error after updating to latest version.

I'm getting the following error after upgrading to

Uncaught TypeError: _.contains is not a function
    at i.disabledFor (retort-e41b596fc8d6a1bf400b10ff3f24ecd72b4c75a88fd986dcb98b22615139d65f.js:sourcemap:1)
    at retort-e41b596fc8d6a1bf400b10ff3f24ecd72b4c75a88fd986dcb98b22615139d65f.js:sourcemap:1
    at application-cffbb65a89dd77321a977b2a67e2c545f3fe228ef17b85c18ac3278a4e42a85f.js:sourcemap:75
    at Array.map (<anonymous>)
    at u (application-cffbb65a89dd77321a977b2a67e2c545f3fe228ef17b85c18ac3278a4e42a85f.js:sourcemap:75)
    at t.html (application-cffbb65a89dd77321a977b2a67e2c545f3fe228ef17b85c18ac3278a4e42a85f.js:sourcemap:73)
    at t.value (application-cffbb65a89dd77321a977b2a67e2c545f3fe228ef17b85c18ac3278a4e42a85f.js:sourcemap:75)
    at t.value (application-cffbb65a89dd77321a977b2a67e2c545f3fe228ef17b85c18ac3278a4e42a85f.js:sourcemap:75)
    at i (vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:sourcemap:5)
    at r (vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:sourcemap:5)

Are we relying on lodash dependency from Discourse?

Limit the maximum number(s) of reactions a user can leave

A global setting is needed to control the maximum number of reactions users are able to leave.
A setting "maxReactionsPerPost" might be have valid values of 0-10, where 0 would be unlimited reactions, and 10 would allow up to 10 unique reactions per-post per-user.

Reaction count is not visible clearly due to white background

Due to full white background the number of likes are not visible, also after giving reaction it takes time to reflect or we have to refresh the page to see if it reacted or not....

Check the heart reaction, it reacted 3 times, but the number of times, is not clearly visible.

image

Feature request: Prevent manipulation

When using the plugin with a limited emoji set for users to choose from, it can very easily be manipulated:

A user simply has to edit the title-attribute of any of the displayed emojis in the picker to an emoji-shortcode of his choice (doable with the browser developer tools), then click the altered emoji, and without any checks, his custom emoji is inserted as a reaction to the post.
This allows manipulation and trolling, and since there are no ways for the staff to edit or remove reactions, the selected emoji should be checked against the list of allowed emojis, before it is added to the post.

Uncaught Error: Could not find module `@popperjs/core`

Expected behaviour:
The reaction picker should be shown under each post.

Actual behaviour:
The retort picker is not visible in any post and a console error is thrown instead.

We recently updated our forum to 2.5.1 stable, then installed the retort plugin for the very first time.
The plugin seems to by installed correctly, I can access its settings and everything.
But inside threads, there is no reaction picker.

This JS error is thrown in the console:
2020-09-09_15-01-16

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.