Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluent-smtp/assets/libs/chartjs/Chart.BarFunnel.js
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
/*!
2
+
* Chart.BarFunnel.js
3
+
* http://chartjs.org/
4
+
* Version: 0.1.0
5
+
*
6
+
* Copyright 2016 Jorge Conde
7
+
* Released under the MIT license
8
+
* https://github.com/chartjs/Chart.Zoom.js/blob/master/LICENSE.md
9
+
*/
10
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
11
+
(function(Chart) {
12
+
var helpers = Chart.helpers;
13
+
14
+
Chart.defaults.barFunnel = {
15
+
hover: {
16
+
mode: "label"
17
+
},
18
+
19
+
region: {
20
+
display: true,
21
+
borderColor: "#F6C85F",
22
+
backgroundColor: "rgba(246, 200, 95, 0.2)"
23
+
},
24
+
25
+
elements: {
26
+
rectangle: {
27
+
stepLabel: {
28
+
display: true,
29
+
fontSize: 20
30
+
// color: "red"
31
+
}
32
+
}
33
+
},
34
+
35
+
scales: {
36
+
xAxes: [{
37
+
type: "category",
38
+
39
+
// Specific to Bar Controller
40
+
categoryPercentage: 0.8,
41
+
barPercentage: 0.7,
42
+
43
+
// grid line settings
44
+
gridLines: {
45
+
offsetGridLines: true
46
+
}
47
+
}],
48
+
yAxes: [{
49
+
type: "linear"
50
+
}]
51
+
}
52
+
};
53
+
54
+
Chart.controllers.barFunnel = Chart.controllers.bar.extend({
55
+
updateElement: function updateElement(rectangle, index, reset, numBars) {
56
+
var meta = this.getMeta();
57
+
var xScale = this.getScaleForId(meta.xAxisID);
58
+
var yScale = this.getScaleForId(meta.yAxisID);
59
+
60
+
var yScalePoint;
61
+
62
+
if (yScale.min < 0 && yScale.max < 0) {
63
+
// all less than 0. use the top
64
+
yScalePoint = yScale.getPixelForValue(yScale.max);
65
+
} else if (yScale.min > 0 && yScale.max > 0) {
66
+
yScalePoint = yScale.getPixelForValue(yScale.min);
67
+
} else {
68
+
yScalePoint = yScale.getPixelForValue(0);
69
+
}
70
+
71
+
var chartOptions = this.chart.options;
72
+
var rectangleElementOptions = this.chart.options.elements.rectangle;
73
+
var custom = rectangle.custom || {};
74
+
var dataset = this.getDataset();
75
+
var ruler = this.getRuler(this.index);
76
+
77
+
helpers.extend(rectangle, {
78
+
// Utility
79
+
_chart: this.chart.chart,
80
+
_xScale: xScale,
81
+
_yScale: yScale,
82
+
_datasetIndex: this.index,
83
+
_index: index,
84
+
85
+
86
+
// Desired view properties
87
+
_model: {
88
+
x: this.calculateBarX(index, this.index, ruler),
89
+
y: reset ? yScalePoint : this.calculateBarY(index, this.index),
90
+
91
+
// Tooltip
92
+
label: this.chart.data.labels[index],
93
+
datasetLabel: dataset.label,
94
+
95
+
// Appearance
96
+
base: reset ? yScalePoint : this.calculateBarBase(this.index, index),
97
+
width: this.calculateBarWidth(ruler),
98
+
backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),
99
+
borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,
100
+
borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor),
101
+
borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth),
102
+
stepLabelColor: rectangleElementOptions.stepLabel.color ? rectangleElementOptions.stepLabel.color : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor),
103
+
stepLabelFontSize: rectangleElementOptions.stepLabel.fontSize ? rectangleElementOptions.stepLabel.fontSize : chartOptions.defaultFontSize
104
+
},
105
+
106
+
draw: function () {
107
+
108
+
var ctx = this._chart.ctx;
109
+
var vm = this._view;
110
+
var options = this._chart.config.options;
111
+
112
+
var halfWidth = vm.width / 2,
113
+
leftX = vm.x - halfWidth,
114
+
rightX = vm.x + halfWidth,
115
+
top = vm.base - (vm.base - vm.y),
116
+
halfStroke = vm.borderWidth / 2;
117
+
118
+
// Canvas doesn't allow us to stroke inside the width so we can
119
+
// adjust the sizes to fit if we're setting a stroke on the line
120
+
if (vm.borderWidth) {
121
+
leftX += halfStroke;
122
+
rightX -= halfStroke;
123
+
top += halfStroke;
124
+
}
125
+
126
+
ctx.beginPath();
127
+
ctx.fillStyle = vm.backgroundColor;
128
+
ctx.strokeStyle = vm.borderColor;
129
+
ctx.lineWidth = vm.borderWidth;
130
+
131
+
// Corner points, from bottom-left to bottom-right clockwise
132
+
// | 1 2 |
133
+
// | 0 3 |
134
+
var corners = [
135
+
[leftX, vm.base],
136
+
[leftX, top],
137
+
[rightX, top],
138
+
[rightX, vm.base]
139
+
];
140
+
141
+
// Find first (starting) corner with fallback to 'bottom'
142
+
var borders = ['bottom', 'left', 'top', 'right'];
143
+
var startCorner = borders.indexOf(vm.borderSkipped, 0);
144
+
if (startCorner === -1)
145
+
startCorner = 0;
146
+
147
+
function cornerAt(index) {
148
+
return corners[(startCorner + index) % 4];
149
+
}
150
+
151
+
// Draw rectangle from 'startCorner'
152
+
ctx.moveTo.apply(ctx, cornerAt(0));
153
+
for (var i = 1; i < 4; i++)
154
+
ctx.lineTo.apply(ctx, cornerAt(i));
155
+
156
+
ctx.fill();
157
+
if (vm.borderWidth) {
158
+
ctx.stroke();
159
+
}
160
+
161
+
if(rectangleElementOptions.stepLabel.display && (index != 0)) {
162
+
var label = (dataset.data[index] / dataset.data[0]) * 100;
163
+
164
+
if (dataset.data[index] > 0) {
165
+
// Draw Step Label
166
+
ctx.font = vm.stepLabelFontSize + "px " + options.defaultFontFamily;
167
+
ctx.fillStyle = vm.stepLabelColor;
168
+
ctx.textAlign = "center";
169
+
ctx.fillText(label.toFixed(0) + "%", vm.x, vm.y - vm.stepLabelFontSize);
170
+
}
171
+
}
172
+
173
+
if (chartOptions.region.display && (index < meta.data.length - 1)) {
174
+
var nextVm = meta.data[index + 1]._view;
175
+
176
+
var regionCorners = [
177
+
[vm.x + halfWidth, top],
178
+
[nextVm.x - halfWidth, nextVm.base - (nextVm.base - nextVm.y - 1)],
179
+
[nextVm.x - halfWidth, nextVm.base],
180
+
[vm.x + halfWidth, vm.base]
181
+
];
182
+
183
+
ctx.beginPath();
184
+
ctx.strokeStyle = chartOptions.region.borderColor;
185
+
ctx.moveTo.apply(ctx, regionCorners[0]);
186
+
ctx.lineTo.apply(ctx, regionCorners[1]);
187
+
ctx.stroke();
188
+
189
+
ctx.beginPath();
190
+
ctx.strokeStyle = "transparent";
191
+
ctx.fillStyle = chartOptions.region.backgroundColor;
192
+
ctx.moveTo.apply(ctx, regionCorners[1]);
193
+
ctx.lineTo.apply(ctx, regionCorners[2]);
194
+
ctx.lineTo.apply(ctx, regionCorners[3]);
195
+
ctx.lineTo.apply(ctx, regionCorners[0]);
196
+
ctx.fill();
197
+
ctx.stroke();
198
+
}
199
+
200
+
}
201
+
});
202
+
rectangle.pivot();
203
+
}
204
+
});
205
+
}).call(this, Chart);
206
+
207
+
},{}]},{},[1]);
208
+