blob: e317297fd7798f1fb9ef0ed3689d0f7e5923b4e5 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var App = require('app');
App.ChartPieView = Em.View.extend({
w:90,
h:90,
data:[300, 500],
palette: new Rickshaw.Color.Palette({ scheme: 'munin'}),
stroke: 'black',
strokeWidth: 2,
donut:d3.layout.pie().sort(null),
r:function () {
return Math.min(this.get('w'), this.get('h')) / 2 - this.get('strokeWidth');
}.property('w', 'h'),
outerR:function () {
return this.get('r'); // - 10;
}.property('r'),
innerR:function () {
return 0; // this.get('r') - 20;
}.property('r'),
arc:function () {
return d3.svg.arc().innerRadius(this.get('innerR')).outerRadius(this.get('outerR'));
}.property(),
didInsertElement:function () {
this._super();
this.appendSvg();
},
selector:function () {
return '#' + this.get('elementId');
}.property('elementId'),
appendSvg:function () {
var thisChart = this;
this.set('svg', d3.select(this.get('selector')).append("svg:svg")
.attr("width", thisChart.get('w'))
.attr("height", thisChart.get('h'))
.attr("stroke", this.get('stroke'))
.attr("stroke-width", this.get('strokeWidth'))
.append("svg:g")
.attr("transform", "translate(" + thisChart.get('w') / 2 + "," + thisChart.get('h') / 2 + ")"));
this.set('arcs', this.get('svg').selectAll("path")
.data(thisChart.donut(thisChart.get('data')))
.enter().append("svg:path")
.attr("fill", function (d, i) {
return thisChart.palette.color(i);
})
.attr("d", this.get('arc')));
}
});