Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluent-smtp/assets/libs/chartjs/Chart.BarFunnel.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
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 +