An object-oriented API for business analytics

Overview

dimple

Dimple is an object-oriented API allowing you to create flexible axis-based charts using d3.js.

The intention of this project is to allow analysts who are not necessarily expert JavaScript programmers to create standard (and some not-so-standard) business analytics.

The API will also expose the core d3 objects where possible so that as users gain confidence they can extend the base functionality in whatever way they wish.

Please visit the main website dimplejs.org for more information and examples.

Comments
  • Support for Composite Axes

    Support for Composite Axes

    I came across this issue while trying to make a graph today:

    http://stackoverflow.com/questions/18620053/multi-series-in-dimplejs

    Can you share your ideas for the implementation? While your data hack works it requires me to have 3x the amount of objects in memory for this graph. Thanks.

    screen shot 2014-01-14 at 12 23 00 pm

    enhancement 
    opened by bennick 15
  • adding support for AMD with RequireJS

    adding support for AMD with RequireJS

    Using RequireJS to define modules that require dimple is complicated by the fact that d3 doesn't register itself in the global namespace if it detects AMD/RequireJS.

    // sample from d3's end.js....
    
    if (typeof define === "function" && define.amd) {
        define(d3);
      } else if (typeof module === "object" && module.exports) {
        module.exports = d3;
      } else {
        this.d3 = d3;
      }
    

    So while it is possible to "shim" dimple using RequireJS, the d3 global reference that dimple relies on is missing (even though the d3 module is loaded).

    One approach to solving this would be to wrap the entire dimple creation code in a function that serves d3 to dimple via closure. (below example code untested!)

    // Wrap all application code in a self-executing function
    (function () {
        "use strict";
    
        var factory = function(d3) {
            // Create the stub object
            var dimple = {
                version: "1.1.5",
                plot: {},
                aggregateMethod: {}
            };
    
        // IMPLEMENTATION HERE
    
            return dimple;
        }; // end of factory
    
        if (typeof define === "function" && define.amd) {
            define(["d3"], factory);
        } else if (typeof module === "object" && module.exports) {
            var d3 = require("d3");
            module.exports = factory(d3);
        } else {
            this.dimple = factory(this.d3);
        }
    }());
    // End dimple
    

    ... but due to wrapping everything in a second level function (factory) all script files would have to be indented further, or we'd have to modify the grunt task to do that indentation on build. I'm also not convinced that this is most efficient.

    The option presented in this pull request is a load simpler, it retrofits d3 in the global namespace if RequireJS is detected (perhaps bad for namespace pollution, but negligably?) and registers dimple both in the global namespace and as a module.

    the answer to the following stack overflow question might help weigh this up....

    http://stackoverflow.com/questions/17936854/when-designing-a-js-library-should-i-make-it-requirejs-amd-compatible-or-not

    enhancement 
    opened by stephen-james 14
  • Text alignment in labels and legends

    Text alignment in labels and legends

    I'm trying to recreate the grouped bar chart example here, but am experiencing some positioning issues with the labels in certain parts of the chart:

    • Legend labels appear offset above the legend keys: image. The width of the label text is also not being taken into account when placing the next legend item.
    • x and y axis labels are too close to the axis: image and image

    This looks like a styling issue, because when I remove Bootstrap's CSS styles, the chart renders fine. However, I can't pinpoint which styles is affecting the placement of the text. I've tried overriding the line spacing and text size, but that didn't seem to work. The SVG is rendered in a variable width div, but the SVG itself has fixed width.

    Can you shed some light on what assumptions dimple is using the calculate the positioning of the labels?

    bug 
    opened by hxu 12
  • x-axis labels are not handled automatically by dimplejs unlike d3js

    x-axis labels are not handled automatically by dimplejs unlike d3js

    Hello, I am new to dimplejs. I had worked with d3js charts and loved working with them. Recently I switched from d3js to dimplejs charts because of the labels display it is showing is quite impressive and the transition effects gives a better look.

    Previously when I was using d3js the displaying of axis labels both x and y were handled by d3js itself. While in dimplejs there is a label for every one data point. so when there is a lot of data passed for the chart the labels will overlap on each other and are not visible.

    Please specify a way where in the labels section is taken care by dimplejs itself similar to d3js.

    enhancement 
    opened by navenchary 11
  • Resize does not work correctly in latest version

    Resize does not work correctly in latest version

    The code from the resize example worked in version 1.1.3 from the composite-axes branch, but when I upgraded to 1.2.0 it no longer works. It doesn't work in 1.1.6 either. I didn't try any other versions as I was using composite axes, but it looks like the example uses 1.1.5 without issue.

    In 1.1.6 and 1.2.0, when resizing, it seems to recompute the sizes incorrectly causing bars (I only tested bar charts) to overlap and also the grid lines get distorted.

    Currently, my work around is to destroy and recreate the charts every time the window size changes. This is obviously not ideal.

    This is what my chart (correctly) looks like: image

    And this is what it looks like after resizing with one of the non-functioning versions (note the grid lines and the overlapped bars):

    image

    My code looks like this:

    var chartsToResize = {};
    $(window).resize(function(){
        for(var i in chartsToResize){
            chartsToResize[i].draw(0, true);
        }
    });
    function createChart (id,data){
        var svg = dimple.newSvg("#" + id, "100%", 305);
        var chart = new dimple.chart(svg, data);
        chart.setBounds(30, 10, "100%,-30px", "95%,-80px");
        var x = chart.addCategoryAxis("x", "Status");
        var y1 = chart.addMeasureAxis("y", "Current");
        var y2 = chart.addMeasureAxis(y1, "Previous");
        var series = chart.addSeries(" ", dimple.plot.bar, [x, y1]);
        chart.addSeries("", box, [x, y2]);
        chart.draw();
        chartsToResize[id] = chart;
    }
    

    (Note box is just a dimple.plot.bar with a fixed height - ie the red bars in the screenshots)

    bug 
    opened by danielytics 7
  • tooltip font not visible

    tooltip font not visible

    my tooltip font color is blending in with the tooltip (on waterfall). unfortunately 'hovering' with developer tools isn't activating the tooltip so I can't figure out how what classes are being used for tooltips.

    any idea how to change font-color in tooltips?

    bug 
    opened by pkpp1233 7
  • Adding logAxis to line charts (positive or negative range)

    Adding logAxis to line charts (positive or negative range)

    I added the ability for line charts to have a log axis. It's very minor code to add the functionality.

    And since log 0 returns -Infinity, I made it so the domain starts at either 0.1 or -0.1. I use clamp(true) so the chart starts at 0 if there are 0 values. You can't have both positive and negative values in your range since log is either positive or negative, not both.

    I've also added code for logAxis cases in the line.js for the tooltip so it draws the appropriate value and not what is returned by the _getFormat.

    Since d3.scale.log does not allow a set tick amount using the ticks function, I've had to use tickFormat and set it to a value (4 default). This hides the tick labels, but not the tick lines. I added a case in _getFormat.js to return the unique way logs get formatted.

    Let me know what you think (i.e. comments/suggestions). This makes drawing a chart where you have a large variance in values (One value ranges from 8,000 to 10,000, while others from 50 to 500), but staying on a single graph. We're looking to use this scale to see trends over time for several keys with varying values.

    opened by kbuchanan 7
  • TimeAxis labels broken when passing raw Epoch time values

    TimeAxis labels broken when passing raw Epoch time values

    Example: http://jsbin.com/gibudozo/3/edit?html,output

    https://gist.github.com/AndreiLux/10968666

    When passing Epoch values, and omitting the inputFormat parameter in .addTimeAxis("x", "t", null, "%d");, the axis labels and bar labels fail.

    Not sure if I did something wrong, but clearly this should not be the desired functioning of the factory method, given the discussion in https://github.com/PMSI-AlignAlytics/dimple/pull/27 .

    opened by AndreiLux 6
  • Update _parentWidth.js

    Update _parentWidth.js

    The firefox issue (https://bugzilla.mozilla.org/show_bug.cgi?id=649285) was closed as invalid. Chrome is also deprecating offsetWidth and offsetHeight in April 2016. parent.getBoundingClientRect().width is a more explicit call to get the outer object width

    opened by laxgeek 5
  • Vertical 100% bar: allow values > 100%?

    Vertical 100% bar: allow values > 100%?

    Hi

    I have a current requirement that uses something like Vertical 100% Bar, but allows for ratios to be greater than 100%.

    Initially, this seems silly: why have a figure greater than 100%?

    The context is this:

    • each vertical bar represents a quota
    • the bar is divided into Used and Unused parts of the quota, which should total the full amount of the quota
    • however, it is possible for someone to have used more than the quota assigned to them, in which case, the requirement is to indicate this visually by providing a bar that goes beyond the 100% mark

    Any ideas on how to implement this?

    many thanks in advance

    Matt

    question 
    opened by mcalthrop 5
  • Unable to set size of bubble anylonger

    Unable to set size of bubble anylonger

    according to the comments in this stackoverflow question: http://stackoverflow.com/questions/22836594/dimple-js-change-radius-of-circles

    The issue was fixed. But i try it here: http://jsfiddle.net/T6ZDL/43/ it does not seem to work.

    question 
    opened by alpha-insite 5
  • Horizontal scrolling in bar chart

    Horizontal scrolling in bar chart

    I have searched everywhere but it seems there is no horizontal scrolling in dimple chart. Can any one suggest how to implement that. I can see there is n d3 using zoom effect. Can we do something like that as few of the large data get crop from right side.

    opened by kshitijvyas123 0
  • Markers should be drawn after areas so z-order doesn't make tool tips inaccessible

    Markers should be drawn after areas so z-order doesn't make tool tips inaccessible

    I've resorted to using the following code to move the dimple markers to the end of their . I had to do this on area charts because otherwise markers get covered by areas drawn above them. Would be better if dimple just drew the markers last though.

    $(targetId + " .dimple-marker").appendTo(targetId + ' .dimple-series-group-0');

    opened by brandonvmoore 0
  • Running examples locally

    Running examples locally

    Hi, I tried to run example "bars_vertical_grouped.html" on my local machine instead of local server. I modified the code as below -. Basically gave global reference to d3.js and copied example.tsv to my local directory (same as the html file) and gave absolute path. But when I open html, no value is displayed on the chart. Any thoughts on how to correct this please?

    opened by singla 0
  • Dimple seems to be broken with D3 v5.

    Dimple seems to be broken with D3 v5.

    Using a current D3 release, I get: "TypeError: J.sort is not a function" It's definitely OK with D3 4.9.1, and definitely broken with 5.12.0.

    You may want to fix this, or at least warn that v4 is required. Thanks.

    opened by RichardNeill 0
Releases(2.3.0)
  • 2.3.0(Dec 16, 2016)

    This release makes Dimple compatible - and reliant upon - D3 version 4.3. I have not marked this as a major version change because any charts using just dimple functionality should continue to work as before, however this is a slightly grey area, as most advanced implementations of dimple charts are likely to also use D3 functionality and may well run into one of its breaking changes.

    Therefore I would only recommend migrating existing work to this new version if you have reason to move to the latest d3 release.

    Source code(tar.gz)
    Source code(zip)
    dimple.v2.3.0.js(268.08 KB)
    dimple.v2.3.0.min.js(78.02 KB)
  • 2.2.0(Mar 23, 2016)

    This release includes the following fixes and improvements:

    • Area and line chart will correctly handle a single point series
    • setMargins will no longer invoke draw
    • Return value data types from getData have been corrected
    • Totals calculated correctly for proportional axes
    • Line marker custom class added
    • All shapes for a particular series are now grouped
    • Zero pie segments will no longer be sizes as NaN
    • Parent SVG size no longer depends on deprecated offsetWidth or offsetHeight.
    • Adhoc examples fixed
    Source code(tar.gz)
    Source code(zip)
    dimple.v2.2.0.js(269.28 KB)
    dimple.v2.2.0.min.js(77.10 KB)
  • 2.1.6(Jul 13, 2015)

  • 2.1.5(Jul 13, 2015)

  • 2.1.4(Jul 10, 2015)

    Merging in a number of pull requests to deal with the following topics:

    • Opacity changes no longer occur when setFormats = false
    • Axes are correctly classed so that they can be styled with CSS
    • Line marker backs are correctly positioned in the DOM
    • Shape ID's are now clean of illegal characters
    • Charts no longer fall over with null values (thanks to @younesben)
    • Legend spacing can be manually controlled with horizontalPadding and verticalPadding properties (thanks to @guilhermesimoes)
    • Copyright information updated
    • Auto label rotation can be switched off using the autoRotateLabel property of the axis (thanks to Robert Paskowitz)
    • All examples now have html and encoding correctly defined (thanks to @sajith)
    Source code(tar.gz)
    Source code(zip)
    dimple.v2.1.4.js(265.96 KB)
    dimple.v2.1.4.min.js(75.50 KB)
  • 2.1.2(Dec 16, 2014)

    • Custom classes are now supported using the object in chart.customClassList. See covered classes here.
    • Line markers will now draw correctly on redraw (thanks to @ne8il)
    • Empty data arrays will now be handled correctly (#101)
    • Division by zero DOM error is now fixed
    • Handling of small numbers improved (thanks to @ses4j)
    • Erroneous in-line styles have been removed for chart.noFormats = true (thanks to @artsyca)
    • The latest dimple release will also be made available in unversioned links here and minified here
    Source code(tar.gz)
    Source code(zip)
    dimple.v2.1.2.js(264.33 KB)
    dimple.v2.1.2.min.js(74.60 KB)
  • 2.1.0(Jul 24, 2014)

    Dimple version 2.1 contains a few fixes and features including one new feature which I've had a lot of requests for:

    • Pie Charts - After many requests, and despite my own dislike of them, Dimple now supports pie charts in a variety of shapes and sizes. They are really nice to combine with other charts (example) so get creative!
    • Require.js and AMD support - Merged pull request (#81) from Stephen James refactoring dimple so that it plays nicely with Require.js and AMD.
    • It's now simple to define bubble radius using the new series.radius property. This will either define the size of points on a scatter plot or the maximum size of a bubble in a bubble chart.
    • Dual Category Line Charts now order correctly (Issue #71)
    • Line Charts now work correctly with a custom event handler (Issue #75)
    • Fixed an unusual case where dimple didn't display all points of an area chart where some shared rounded x pixel values (Issue #79)
    • Fixed a problem when sorting a list containing a zero string (Issue #84)
    • Fixed a bug with the _getOrderedList function (Issue #87)
    Source code(tar.gz)
    Source code(zip)
    dimple.v2.1.0.js(258.53 KB)
    dimple.v2.1.0.min.js(72.22 KB)
  • 2.0.0(Apr 28, 2014)

    Classes

    All class names have been changed. If you have any old implementations using classes for either styling or shape selection they may break if you choose to migrate them to version 2.

    • To avoid conflicts every class added by dimple will now be prefixed with "dimple-" and they will be made lower case with any non-alphanumeric characters replaced with hyphens. For example a series drawn for a SKU called "Roller Cola 2.0L" will have its shapes classed as "dimple-roller-cola-2-0l".
    • This includes dimples fixed classes, the tooltip for example is now classed as "dimple-tooltip" rather than "tooltip". This example in particular caused a lot of problems due to a conflict with Bootstrap which will no longer occur (Issue #52).
    Transitions

    All transitions have been improved. While the API previously supported adding transitions, they were at often janky and sometimes completely broken. All drawing code has been updated for more reliable entry, exit and storyboard transitions.

    • The chart.ease property has been added, allowing you to specify a particular d3 ease for your transition. By default "cubic-in-out" is used (as in version 1). All d3 ease values are now supported, the linear transition option can be viewed in this example.
    • A new chart.staggerDraw property has been added which when set to true (default false) causes dimple to stagger drawing along a category axis for unconnected series (bars/bubbles). Here's an example showing ease and stagger in action to put a bit of bounce into your standard bar chart.
    • Axis transitions have been fixed so that category axis values no longer go haywire when values are added (Issue #18).
    • A zero length transition is no longer used by default (dimple now uses no transition at all). Although there is no visible difference the zero length transition caused a race condition meaning shape attributes were not accessible immediately after draw.
    • A series.afterDraw property has been added which can receive a function executed against each shape after a transition completes. The bar labels example has been updated to show how - although this chart doesn't use a transition. Setting a transition on draw will cause the chart to work like this.
    • Chart drawing also accounts correctly for missing data both in single dimensions (Issue #44) and the entire set (Issue #29).
    Areas & Lines

    The plotting logic for both the area and line charts has been completely rewritten to fix a number of problems in addition to the transition fixes mentioned above.

    • The series.interpolation property has been added to allow line interpolations to be applied to both the area and line charts (Issue #26). Here's a curvy line chart and a curvy area chart for example (Issue #21).
    • In addition to all the standard d3 interpolations, dimple also supports a custom interpolation called 'step'. It uses d3's 'step-after' interpolation but shifts it and fills in some points to create a nicer stepped chart. See examples for lots of new step line and area examples.
    • Missing values in an area series will no longer cause crashing regions (Issue #7).
    • The order that points are connected is now more useful by default but can be correctly overridden with series.addOrderRule (Issue #61).
    • Markers no longer get left behind when redrawing.
    • Dual measure areas now work. The drawing algorithm connects the fewest number of points necessary to encapsulate all the data points. You can see an example here.
    Composite Axes

    Composite axes (Issue #38) have now been added, meaning that with a slight change to your code you can now mix dimensions on a single axis. Adding a composite axis is as simple as passing an axis reference into the position parameter of a second axis. So this dual axis example (not new in v2.0):

    var monthAxis = myChart.addCategoryAxis("x", "Month");
    var volumeAxis = myChart.addMeasureAxis("y", "Unit Sales");
    var profitAxis = myChart.addMeasureAxis("y", "Operating Profit");
    myChart.addSeries("Quantity",  dimple.plot.line, [monthAxis, volumeAxis]);
    myChart.addSeries("Op. Profit",  dimple.plot.line, [monthAxis, profitAxis]);
    

    see it here

    Could be changed so that both measures go on the left-hand axis as follows:

    var monthAxis = myChart.addCategoryAxis("x", "Month");
    var volumeAxis = myChart.addMeasureAxis("y", "Unit Sales");
    var profitAxis = myChart.addMeasureAxis(volumeAxis, "Operating Profit");
    myChart.addSeries("Quantity",  dimple.plot.line, [monthAxis, volumeAxis]);
    myChart.addSeries("Op. Profit",  dimple.plot.line, [monthAxis, profitAxis]);
    

    see it here

    Notice the slight change to the third line which turns this into a composite axis meaning both lines are drawn against the same y axis. Measures are probably going to be used in almost all instances of composite axes, but you can also use it for categories, see this rather strange example.

    Other Changes

    Version 2.0 also brings a host of other changes:

    • If bar chart series have their .stacked property set to false, the bars will be drawn as a floating bar using the opposing axis floating bar width. This can be seen here, they are unlikely to be overly valuable themselves however they are very good overlayed on other series to provide bounds markers.
    • Previously it was not possible to combine a label and real dimensions in the series dimension array. This has been fixed. E.g. mychart.addSeries(["This dimension exists", "This dimension doesn't"], dimple.plot.line);.
    • Axis titles can now be set with a property on the axis myAxis.title = "New Title"; - This can also be seen in the composite axis examples above.
    • Series specific data sets no longer confuse drop-lines when plotted against separate axes (Issue #62).
    • All objects now have their dynamic font size removed and replaced with a fixed 10 pixel font size. I never had good results with the dynamic sizing so it is no longer the default, instead all objects can have their font manually set (Issue #30). If you would like to use version 2.0 but prefer the original handling this can be set manually myAxis.fontSize = "auto".
    • Axes now default to clamped. This means that overriding minimum values works correctly now (Issue #37) but if you prefer you can still override to the previous behaviour using myAxis.clamp = "false".
    • Measure axes now have an option to override the number of ticks (Issue #66). For example you can draw just 3 ticks on the axes with myAxis.ticks = 3. This continues to default to 10. This doesn't work with category axes, however there is a method in my answer here which allows you to do this after the fact.
    • Tooltip text is now defined in an an accessible method which can be overridden like this.
    • Tooltip placement has also been improved to reduce chances of overlapping the edge of the chart.
    • Drawing an automatically sized chart in Firefox no longer throws an error (Issue #54).
    • Legends (and charts) can now be positioned from the right hand side of the chart using a negative value (Issue #63). This is demonstrated in the responsive sizing example
    • Single points for lines and areas will now force a line marker so that something will always be visible.
    Example Changes

    If you have an implementation based on an example you might want to be aware of these changes:

    • Advanced Bar Labels - Previous code relied on bug where height of segments had not been fully loaded after draw due to a zero length transition causing a race condition. The example code has been significantly changed and simplified using the new .afterDraw property to demonstrate drawing after a transition, however patching the old code to work simply requires you to change the line .attr("y", parseFloat(shape.attr("y")) - height / 2 + 3.5) to .attr("y", parseFloat(shape.attr("y")) + height / 2 + 3.5).
    • Christmas Tree Example - This has been removed - It was only meant to be a seasonal example and its April already! It also doesn't work in version 2 as it exploited a bug with area drawing, which was needed to get around the old limitation regarding datasets. It could be recoded much more elegantly now, but that will have to wait until next christmas!
    • Mekko Matrix - As with the label example this relied on the y coordinate being set at its entry value. This is now correctly set to its actual value and therefore the code needs to be ammended by changing the means of getting the y coordinate from parseFloat(shape.attr("y")) - parseFloat(shape.attr("height")), to the more obvious parseFloat(shape.attr("y")),.
    • Waterfall - The code for the waterfall relies on a class name "pad" derived from the series data. As discussed above, dimple now prefixes all class names with "dimple-" meaning the code just needs to be modified so that svg.selectAll(".pad").remove(); becomes svg.selectAll(".dimple-pad").remove();.
    Source code(tar.gz)
    Source code(zip)
    dimple.v2.0.0.js(242.05 KB)
    dimple.v2.0.0.min.js(68.55 KB)
  • 1.1.5(Feb 14, 2014)

  • 1.1.4(Jan 28, 2014)

    Independent series datasets

    • Data may now be assigned directly to a series, meaning separate filtering or even completely different datasets may now be combined (Pull Request #45).
    • Series category values are now correctly converted to class names by replacing spaces with underscores (Issue #4).
    • Line and area charts now correctly receive event arguments with custom events (Issue #15)
    • Redrawing line or area charts now correctly animate line markers (Issue #28).
    • Tooltips are now correctly classed with the .tooltip class for easier styling (Issue #40).
    Source code(tar.gz)
    Source code(zip)
    dimple.v1.1.4.js(218.54 KB)
    dimple.v1.1.4.min.js(64.72 KB)
  • 1.1.3(Dec 16, 2013)

  • 1.1.2(Nov 8, 2013)

    Mixed Position Attributes

    • Positioning attributes now take comma separated lists of values. For example setting a top margin to "10px,20%,5px" will position the chart 20% of svg height + 15 pixels. This is very helpful when creating visualisations with multiple chart objects which you wish to resize (such as a trellis chart).
    • Fixed issue #19 drop lines are now correctly positioned.
    Source code(tar.gz)
    Source code(zip)
    dimple.v1.1.2.js(210.41 KB)
    dimple.v1.1.2.min.js(61.88 KB)
  • 1.1.1(Oct 2, 2013)

    Chrome v30.x compatibility

    • Chrome v30.x broke the selections used in Dimple for certain cases. Dimple relied on selecting descendants using collection.selectAll(".class type") which doesn't seem to work where the type is a 2nd generation descendant of the class. I can't find documentation to explain the change in Chrome but the 2 step selector is actually unnecessary in Dimple so we have reverted to a single type selector. The collection already restricts the selection sufficiently.
    • Chrome and Safari were also adding a title at position 0,0 for z axes. This was a dimple bug, all browsers were in fact adding the title but only Chrome and Safari were rendering it due to 0 size. Position is now correctly considered when drawing axis titles.
    Source code(tar.gz)
    Source code(zip)
    dimple.v1.1.1.js(209.64 KB)
    dimple.v1.1.1.min.js(61.69 KB)
  • 1.1.0(Sep 13, 2013)

  • 1.0.1(Sep 6, 2013)

  • 1.0.0(Sep 6, 2013)

Owner
AlignAlytics
AlignAlytics
A renderer agnostic two-dimensional drawing api for the web.

Two.js A two-dimensional drawing api meant for modern browsers. It is renderer agnostic enabling the same api to render in multiple contexts: webgl, c

Jono Brandel 7.9k Dec 31, 2022
Beautiful React SVG maps with d3-geo and topojson using a declarative api.

react-simple-maps Create beautiful SVG maps in react with d3-geo and topojson using a declarative api. Read the docs, or check out the examples. Why R

z creative labs 2.7k Dec 29, 2022
A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology.

GraphicsJS GraphicsJS is a lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology. Overview Quick Start Articles

AnyChart 973 Jan 3, 2023
A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology.

GraphicsJS GraphicsJS is a lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology. Overview Quick Start Articles

AnyChart 937 Feb 5, 2021
Chart image and QR code web API

QuickChart QuickChart is a service that generates images of charts from a URL. Because these charts are simple images, they are very easy to embed in

Ian Webster 1.3k Dec 25, 2022
Create PowerPoint presentations with a powerful, concise JavaScript API.

This library creates Open Office XML (OOXML) Presentations which are compatible with Microsoft PowerPoint, Apple Keynote, and other applications.

Brent Ely 1.8k Dec 30, 2022
API to generate candlestick chart data for any time period based on transactions data

candel-maker API to generate candlestick chart data for any time period based on transactions data Installation clone repo git clone https://github.co

null 2 Aug 18, 2022
An implementation of Bézier curve rendering and manipulation, using the HTML5 Canvas API.

Bézier Curves An implementation of Bézier curve rendering and manipulation, using the HTML5 Canvas API. How does it work? Bézier curves can be simply

nethe550 1 Apr 13, 2022
Next-gen mobile first analytics server (think Mixpanel, Google Analytics) with built-in encryption supporting HTTP2 and gRPC. Node.js, headless, API-only, horizontally scaleable.

Introduction to Awacs Next-gen behavior analysis server (think Mixpanel, Google Analytics) with built-in encryption supporting HTTP2 and gRPC. Node.js

Socketkit 52 Dec 19, 2022
Node.js object hash library with properties/arrays sorting to provide constant hashes. It also provides a method that returns sorted object strings that can be used for object comparison without hashes.

node-object-hash Tiny and fast node.js object hash library with properties/arrays sorting to provide constant hashes. It also provides a method that r

Alexander 73 Oct 7, 2022
women who code - object oriented programming exercise

Table of contents General info Technologies Setup General info Authorizer APP Technologies Project is created with: Typescript: 4.2 Setup Requirements

null 3 Oct 1, 2022
A complete guide for learning Object Oriented Programming Pillars, SOLID Principles and Design Patterns with TypeScript!

Object Oriented Programming Expert With TypeScript This repository is a complete guide and tutorial for the principles and techniques of object-orient

Ahmad Jafari 44 Dec 29, 2022
The purpose of this repository is practicing JavaScript Object Oriented Programming.

Portfolio I'm going to build this portfolio in order to show the future projects that I'm going to build and my skills to the employers. Built With HT

Mahdi Rezaei 15 Nov 8, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Generates an embeddable map that displays business info from an OSM object id.

# OSM Business Card Generates an embeddable map that displays business info from an OSM object id. Loads object type (n/w/r) and id from url parameter

Will Bennett 6 May 26, 2022
Types generator will help user to create TS types from JSON. Just paste your single object JSON the Types generator will auto-generate the interfaces for you. You can give a name for the root object

Types generator Types generator is a utility tool that will help User to create TS Interfaces from JSON. All you have to do is paste your single objec

Vineeth.TR 16 Dec 6, 2022
Apilytics for Node.js - Easy API analytics for Node backends

apilytics-node Apilytics is a service that lets you analyze operational, performance and security metrics from your APIs without infrastructure-level

Apilytics 9 Sep 2, 2022