Skip to content

Instantly share code, notes, and snippets.

@stephanebruckert
Created September 22, 2014 09:41
Show Gist options
  • Save stephanebruckert/0a90a5ac03faefd0fb9c to your computer and use it in GitHub Desktop.
Save stephanebruckert/0a90a5ac03faefd0fb9c to your computer and use it in GitHub Desktop.
A Pen by Stéphane Bruckert.
<div id="doughnuts">
<div class="doughnuts-out">
<div class="ounch-logo-pieces piece-1 blue"></div>
<div class="ounch-logo-pieces piece-2 blue"></div>
<div class="ounch-logo-pieces piece-3 blue"></div>
<div class="ounch-logo-pieces piece-4 blue"></div>
<div class="ounch-logo-pieces piece-5 green"></div>
<div class="ounch-logo-pieces piece-6 green"></div>
<div class="ounch-logo-pieces piece-7 green"></div>
<div class="ounch-logo-pieces piece-8 green"></div>
<div class="ounch-logo-pieces piece-9 green"></div>
<div class="ounch-logo-pieces piece-10 red"></div>
<div class="ounch-logo-pieces piece-11 red"></div>
<div class="ounch-logo-pieces piece-12 red"></div>
<div class="ounch-logo-pieces piece-13 red"></div>
<div class="ounch-logo-pieces piece-14 red"></div>
<div class="ounch-logo-pieces piece-15 blue"></div>
<div class="ounch-logo-top-piece"></div>
</div>
<div class="doughnuts-mid">
<div class="ounch-logo-pieces piece-1 blue"></div>
<div class="ounch-logo-pieces piece-2 blue"></div>
<div class="ounch-logo-pieces piece-3 blue"></div>
<div class="ounch-logo-pieces piece-4 blue"></div>
<div class="ounch-logo-pieces piece-5 green"></div>
<div class="ounch-logo-pieces piece-6 green"></div>
<div class="ounch-logo-pieces piece-7 green"></div>
<div class="ounch-logo-pieces piece-8 green"></div>
<div class="ounch-logo-pieces piece-9 green"></div>
<div class="ounch-logo-pieces piece-10 red"></div>
<div class="ounch-logo-pieces piece-11 red"></div>
<div class="ounch-logo-pieces piece-12 red"></div>
<div class="ounch-logo-pieces piece-13 red"></div>
<div class="ounch-logo-pieces piece-14 red"></div>
<div class="ounch-logo-pieces piece-15 blue"></div>
</div>
<div class="doughnuts-in">
<div class="ounch-logo-pieces piece-1 blue"></div>
<div class="ounch-logo-pieces piece-2 blue"></div>
<div class="ounch-logo-pieces piece-3 blue"></div>
<div class="ounch-logo-pieces piece-4 blue"></div>
<div class="ounch-logo-pieces piece-5 green"></div>
<div class="ounch-logo-pieces piece-6 green"></div>
<div class="ounch-logo-pieces piece-7 green"></div>
<div class="ounch-logo-pieces piece-8 green"></div>
<div class="ounch-logo-pieces piece-9 green"></div>
<div class="ounch-logo-pieces piece-10 red"></div>
<div class="ounch-logo-pieces piece-11 red"></div>
<div class="ounch-logo-pieces piece-12 red"></div>
<div class="ounch-logo-pieces piece-13 red"></div>
<div class="ounch-logo-pieces piece-14 red"></div>
<div class="ounch-logo-pieces piece-15 blue"></div>
</div>
</div>
<div id="labels">
<div class="label blue" id="piece-1">Reflection</div>
<div class="label blue" id="piece-2">Big-picture thinking</div>
<div class="label blue" id="piece-3">Learning orientation</div>
<div class="label blue" id="piece-4">Developing ideas</div>
<div class="label green" id="piece-5">Competency-oriented</div>
<div class="label green" id="piece-6">Consensus</div>
<div class="label green" id="piece-7">Conflict resolution</div>
<div class="label green" id="piece-8">Emotional intelligence</div>
<div class="label green" id="piece-9">And another
<br />fifth variable</div>
<div class="label red" id="piece-10">Goal setting</div>
<div class="label red" id="piece-11">Coordination</div>
<div class="label red" id="piece-12">Pragmatic
<br />approach</div>
<div class="label red" id="piece-13">Pro-activity</div>
<div class="label red" id="piece-14">Planning</div>
<div class="label blue" id="piece-15">Critical and analytic thinking</div>
</div>
<div id="dialog" class="ui-corner-all" title="Category">
<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
<p id="caution">
<img src="https://dl.dropboxusercontent.com/u/55179154/caution.png" /><span id="text">Contributed by 0 out of 7 members</span>
</p>
</div>
$(document).ready(function () {
/* The data of our chart */
var data = {
1: 3,
2: 1,
3: 3,
4: 2,
5: 2,
6: 1,
7: 3,
8: 1,
9: 3,
10: 2,
11: 2,
12: 3,
13: 1,
14: 2,
15: 2
};
setDoughnut(data);
/* Function that fills the doughtnut with our data */
function setDoughnut(data) {
for (key in data) {
var piece = ".piece-" + key;
var color;
if (key < 5 || key >= 15) {
color = "blue";
} else if (key >= 5 && key < 10) {
color = "green";
} else {
color = "red";
}
if (data[key] > 1) {
$(".doughnuts-in").find(piece).addClass(color + "in");
if (data[key] >= 2) {
$(".doughnuts-mid").find(piece).addClass(color + "mid");
if (data[key] == 3) {
$(".doughnuts-out").find(piece).addClass(color + "out");
} else {
$(".doughnuts-out").find(piece).addClass("grey");
}
} else {
$(".doughnuts-mid").find(piece).addClass("grey");
$(".doughnuts-out").find(piece).addClass("greyout");
}
} else {
$(".doughnuts-in").find(piece).addClass("empty");
$(".doughnuts-mid").find(piece).addClass("grey");
$(".doughnuts-out").find(piece).addClass("greyout");
}
}
}
/* Hovering a piece */
$(".ounch-logo-pieces").hover(function () {
var piece = $(this).attr('class').split(' ')[1];
$("." + piece).darken(30);
}, function () {
var piece = $(this).attr('class').split(' ')[1];
$("." + piece).darken(-44);
});
/* Clicking a piece */
$('.ounch-logo-pieces').click(function () {
var piece = $(this).attr('class').split(' ')[1];
var title = $("#labels #" + piece).html();
$('#dialog').dialog();
$("#dialog").dialog( "option", "title", title);
$("#dialog").dialog().siblings('.ui-dialog-titlebar').removeClass('ui-widget-header');
});
/* jQuery darkener */
jQuery.fn.darken = function (darkenPercent) {
$(this).each(function () {
var rgb = $(this).css('background-color');
rgb = rgb.replace('rgb(', '').replace(')', '').split(',');
var red = $.trim(rgb[0]);
var green = $.trim(rgb[1]);
var blue = $.trim(rgb[2]);
// darken
red = parseInt(red * (100 - darkenPercent) / 100);
green = parseInt(green * (100 - darkenPercent) / 100);
blue = parseInt(blue * (100 - darkenPercent) / 100);
// lighten
/* red = parseInt(red * (100 - darkenPercent) / 100);
green = parseInt(green * (100 - darkenPercent) / 100);
blue = parseInt(blue * (100 - darkenPercent) / 100); */
rgb = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
$(this).css('background-color', rgb);
});
return this;
}
});
/* Doughnut layers */
.doughnuts-out {
margin: 150px;
width: 500px;
height: 500px;
position: absolute;
left: 0;
top: 0;
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
-ms-border-radius: 100%;
border-radius: 100%;
overflow: hidden;
}
.doughnuts-mid {
margin: 150px;
width: 450px;
height: 450px;
position: absolute;
left: 25px;
top: 25px;
background: #f0f0f0;
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
-ms-border-radius: 100%;
border-radius: 100%;
overflow: hidden;
}
.doughnuts-in {
margin: 150px;
width: 320px;
height: 320px;
position: absolute;
left: 90px;
top: 90px;
background: #f0f0f0;
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
-ms-border-radius: 100%;
border-radius: 100%;
overflow: hidden;
}
/* Doughnut composition */
.ounch-logo-pieces {
position: absolute;
top:0%;
left: 50%;
bottom:50%;
right:0%;
width: 50%;
height: 50%;
-webkit-transform-origin: 0% 100%;
-moz-transform-origin: 0% 100%;
-ms-transform-origin: 0% 100%;
transform-origin: 0% 100%;
-webkit-box-shadow: inset 1px 0 0px rgba(255, 255, 255, 0.58);
-moz-box-shadow: inset 1px 0 0px rgba(255, 255, 255, 0.58);
-ms-box-shadow: inset 1px 0 0px rgba(255, 255, 255, 0.58);
box-shadow: inset 1px 0 0px rgba(255, 255, 255, 0.58);
}
.ounch-logo-top-piece {
background-image:url("https://dl.dropboxusercontent.com/u/55179154/TMlogo.png");
background-position:45% 40%;
position: absolute;
border-radius: 100%;
-moz-border-radius: 100%;
-webkit-border-radius: 100%;
-ms-border-radius: 100%;
width:calc(50% - 4px);
height: calc(50% - 4px);
left:50%;
top:50%;
margin: -25% 0 0 -25%;
z-index: 20;
border: 4px solid #a6aac5;
}
/* Doughnut pieces */
.piece-1 {
z-index: 2;
}
.piece-2 {
-webkit-transform: rotate(24deg);
-moz-transform: rotate(24deg);
-ms-transform: rotate(24deg);
transform: rotate(24deg);
z-index: 3;
}
.piece-3 {
-webkit-transform: rotate(48deg);
-moz-transform: rotate(48deg);
-ms-transform: rotate(48deg);
transform: rotate(48deg);
z-index: 4;
}
.piece-4 {
-webkit-transform: rotate(72deg);
-moz-transform: rotate(72deg);
-ms-transform: rotate(72deg);
transform: rotate(72deg);
z-index: 5;
}
.piece-5 {
-webkit-transform: rotate(96deg);
-moz-transform: rotate(96deg);
-ms-transform: rotate(96deg);
transform: rotate(96deg);
z-index: 6;
}
.piece-6 {
-webkit-transform: rotate(120deg);
-moz-transform: rotate(120deg);
-ms-transform: rotate(120deg);
transform: rotate(120deg);
z-index: 7;
}
.piece-7 {
-webkit-transform: rotate(144deg);
-moz-transform: rotate(144deg);
-ms-transform: rotate(144deg);
transform: rotate(144deg);
z-index: 8;
}
.piece-8 {
-webkit-transform: rotate(168deg);
-moz-transform: rotate(168deg);
-ms-transform: rotate(168deg);
transform: rotate(168deg);
z-index: 9;
}
.piece-9 {
-webkit-transform: rotate(192deg);
-moz-transform: rotate(192deg);
-ms-transform: rotate(192deg);
transform: rotate(192deg);
z-index: 10;
}
.piece-10 {
-webkit-transform: rotate(216deg);
-moz-transform: rotate(216deg);
-ms-transform: rotate(216deg);
transform: rotate(216deg);
z-index: 11;
}
.piece-11 {
-webkit-transform: rotate(240deg);
-moz-transform: rotate(240deg);
-ms-transform: rotate(240deg);
transform: rotate(240deg);
z-index: 12;
}
.piece-12 {
-webkit-transform: rotate(264deg);
-moz-transform: rotate(264deg);
-ms-transform: rotate(264deg);
transform: rotate(264deg);
z-index: 13;
}
.piece-13 {
-webkit-transform: rotate(288deg) skewY(-24deg);
-moz-transform: rotate(288deg) skewY(-24deg);
-ms-transform: rotate(288deg) skewY(-24deg);
transform: rotate(288deg) skewY(-24deg);
z-index: 14;
}
.piece-14 {
-webkit-transform: rotate(312deg) skewY(-55deg);
-moz-transform: rotate(312deg) skewY(-55deg);
-ms-transform: rotate(312deg) skewY(-55deg);
transform: rotate(312deg) skewY(-55deg);
z-index: 15;
}
.piece-15 {
-webkit-transform: rotate(336deg) skewY(-66deg);
-moz-transform: rotate(336deg) skewY(-66deg);
-ms-transform: rotate(336deg) skewY(-66deg);
transform: rotate(336deg) skewY(-66deg);
z-index: 16;
}
/* Pieces colors */
.bluemid {
background: #0081c8;
}
.bluein {
background: #80c0e3;
}
.blueout {
background: #015ca1;
}
.blue {
color: #0081c8;
}
.redmid {
background: #e53ba5;
}
.redin {
background: #f29dd2;
}
.redout {
background: #a02a85;
}
.red {
color: #e53ba5;
}
.greenmid {
background: #3ab300;
}
.greenin {
background: #9dd980;
}
.greenout {
background: #288000;
}
.green {
color: #3ab300;
}
.empty {
background: #ffd28a;
}
.grey {
background: #edeef3;
}
.greyout {
background: #f7f8fa;
}
.label {
position: absolute;
font-size: 20px;
}
/* Label positions */
#piece-1 {
top: 120px;
left: 450px;
}
#piece-2 {
top: 170px;
left: 570px;
}
#piece-3 {
top: 260px;
left: 640px;
}
#piece-4 {
top: 360px;
left: 680px;
}
#piece-5 {
top: 470px;
left: 670px;
}
#piece-6 {
top: 560px;
left: 620px;
}
#piece-7 {
top: 620px;
left: 550px;
}
#piece-8 {
top: 660px;
left: 410px;
}
#piece-9 {
top: 640px;
left: 200px;
}
#piece-10 {
top: 560px;
left: 100px;
}
#piece-11 {
top: 460px;
left: 40px;
}
#piece-12 {
top: 350px;
left: 50px;
}
#piece-13 {
top: 260px;
left: 60px;
}
#piece-14 {
top: 180px;
left: 150px;
}
#piece-15 {
top: 120px;
left: 120px;
}
/* jQuery dialog */
#dialog {
display: none;
position: relative;
}
.ui-dialog-title {
padding-top: 20px;
color: #e53ba5;
font-size: 22px;
}
.ui-widget-content {
font-size: 12px;
padding-top: 0px;
margin-top: 0px;
}
#dialog p {
margin-top: 0px;
color: #015ca1;
}
.ui-dialog {
-moz-box-shadow: 0 0 10px #000000;
-webkit-box-shadow: 0 0 10px #000000;
-ms-box-shadow: 0 0 10px #000000;
box-shadow: 0 0 10px #000000;
}
.ui-button-icon-primary {
left: 0 !important;
top: 0 !important;
}
/* Dialog content */
#caution {
margin-top: 0;
padding-top: 0;
}
#caution #text {
font-weight: bold;
}
#caution img {
vertical-align: middle;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment