Giter VIP home page Giter VIP logo

Comments (2)

benpickles avatar benpickles commented on June 10, 2024

That's a really good idea (both adding a class option and exposing the added elements), I can't believe it hasn't been suggested before now 💯

You're right, there's nothing available that exposes the added elements directly but there is a possible workaround using the official (but undocumented 😬) after hook. The following includes two cases, styling based the segment position (simple and generic), and styling based on the value of the segment (a bit more complicated and app-specific).

CodeSandbox: https://codesandbox.io/s/happy-sara-y08767

$(".donut").peity("donut", {
  radius: 40,
  after() {
    const children = this.$svg.children();
    children.each(function () {
      this.removeAttribute("fill");
      let className;
      if (children.length === 2) {
        className = "slice";
      } else {
        const value = parseInt(this.getAttribute("data-value"));
        className = value > 30 ? "large" : "medium";
      }
      this.setAttribute("class", className);
    });
  }
});
.slice:nth-child(odd) {
  fill: purple;
}
.slice:nth-child(even) {
  fill: pink;
}

.medium:nth-child(odd) {
  fill: yellow;
}
.medium:nth-child(even) {
  fill: orange;
}

.large {
  fill: red;
}

If you only want to style based on the position of the segment then you'd only remove all fills in the after hook and could rely entirely on CSS selectors:

.donut + svg > path:nth-child(odd) {
  fill: yellow;
}

from peity.

LordMike avatar LordMike commented on June 10, 2024

You could also add attributes or classes (by default) to the rendered items, which I can affect w/ CSS. Something like:

<svg ..>
  <path .. data-peity-part="1" /> <-- one slice of pie
  <path .. data-peity-part="2" /> <-- two slice of pie
</svg>

This could allow others to also interact with the SVG elements, like adding click handlers and whatnot. :)

from peity.

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.