Giter VIP home page Giter VIP logo

Comments (7)

uhrjun avatar uhrjun commented on May 27, 2024

When a value on a dataset is null or a dataset is incomplete, a gap appears at that place.

I am marking this as a feature request and looking into it but I'm leaning towards this being a simple oversight. Possibly should be the default behavior. Thanks for filing the issue.

NOTE: This is also replicated in bar charts so look into AxisChart.js

from charts.

uhrjun avatar uhrjun commented on May 27, 2024

Successfully tracked this down to most definitely being a bug.

export function fillArray(array, count, element, start = false) {
if (!element) {
element = start ? array[0] : array[array.length - 1];
}
let fillerArray = new Array(Math.abs(count)).fill(element);
array = start ? fillerArray.concat(array) : array.concat(fillerArray);
return array;
}

The function for fillArray(). Does not correctly validate the element argument. Check if (!element)

Causing it to fail when it's called here when initializing an AxisChart with a value of 0. Since 0 is a falsy in JS it's no different than false or undefined causing if (!element) to be true always. Whereas, I infer the desired behaviour would be it actually being the value of 0 and not a falsy.

Effectively killing the desired functionality.

vals = fillArray(vals, datasetLength - vals.length, 0);

As for the fix right now. I am just going to patch the correct element type validation. But that breaks the animation lifecycle entirely which is rather hacky so the animate option is going to default to false from this point forward.

from charts.

uhrjun avatar uhrjun commented on May 27, 2024

Validate this and let me know :D

from charts.

rafalou38 avatar rafalou38 commented on May 27, 2024

I installed from the GitHub

yarn add https://github.com/frappe/charts  
cd node_modules
npm i
npm run build

But I can't get it t work, I still get the continuous line 😕

from charts.

uhrjun avatar uhrjun commented on May 27, 2024

Yeah sorry, I should've expanded on the implementation more. Also need to update the docs. So the value continuous defaults to true, as to not break the existing configs.

Here's how to use the continuous property to not fill the remaining dataset

const data = {
  labels: ["1", "2", "3", "4", "5", "6", "7"],
  datasets: [
    {
      name: "Another Set",
      chartType: "line",
      values: [10, 20, 25],
    },
  ],
};

const chart = new frappe.Chart("#chart",
  title: "My Awesome Chart",
  data: data,
  type: "line",
  height: 800
  continuous: 0,
});

from charts.

rafalou38 avatar rafalou38 commented on May 27, 2024

Hi,

I tried with continuous, but it is still not working as expected.

Image

I would have liked the dots to stop:
image
(obtained with the inspector)

Ps: I had a hard time getting the latest version to load. Could you publish a release after that?

from charts.

uhrjun avatar uhrjun commented on May 27, 2024

Yes this is the expected behavior right now. Need to review #243 or something similar for null value support in line charts. This is a stop gap solution right now to draw 0s. Bar charts exhibit the desired behavior.

Ps: I had a hard time getting the latest version to load. Could you publish a release after that?

Yeah thats also work that needs to be done. New release is going to most likely be after I'm done updating the docs and adding CI

from charts.

Related Issues (20)

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.