Переглянути джерело

Bump up to 1.0.0

tags/1.2.0
Prateeksha Singh 7 роки тому
джерело
коміт
d7194c5010
21 змінених файлів з 186 додано та 207 видалено
  1. +17
    -12
      README.md
  2. +127
    -134
      dist/frappe-charts.esm.js
  3. +1
    -1
      dist/frappe-charts.min.cjs.js
  4. +1
    -1
      dist/frappe-charts.min.esm.js
  5. +1
    -1
      dist/frappe-charts.min.iife.js
  6. +1
    -1
      dist/frappe-charts.min.iife.js.map
  7. +1
    -1
      docs/assets/js/frappe-charts.min.js
  8. +1
    -1
      docs/assets/js/frappe-charts.min.js.map
  9. +1
    -1
      docs/index.html
  10. +1
    -1
      docs/old_index.html
  11. +5
    -5
      package-lock.json
  12. +1
    -1
      package.json
  13. +1
    -1
      src/js/charts/AggregationChart.js
  14. +1
    -1
      src/js/charts/AxisChart.js
  15. +3
    -17
      src/js/charts/BaseChart.js
  16. +1
    -3
      src/js/objects/ChartComponents.js
  17. +3
    -3
      src/js/utils/animate.js
  18. +3
    -3
      src/js/utils/axis-chart-utils.js
  19. +14
    -17
      src/js/utils/draw.js
  20. +1
    -1
      src/js/utils/helpers.js
  21. +1
    -1
      src/js/utils/intervals.js

+ 17
- 12
README.md Переглянути файл

@@ -42,9 +42,9 @@
* ...or include within your HTML

```html
<script src="https://cdn.jsdelivr.net/npm/frappe-charts@0.0.8/dist/frappe-charts.min.iife.js"></script>
<script src="https://cdn.jsdelivr.net/npm/frappe-charts@1.0.0/dist/frappe-charts.min.iife.js"></script>
<!-- or -->
<script src="https://unpkg.com/frappe-charts@0.0.8/dist/frappe-charts.min.iife.js"></script>
<script src="https://unpkg.com/frappe-charts@1.0.0/dist/frappe-charts.min.iife.js"></script>
```

#### Usage
@@ -55,27 +55,22 @@ const data = {
],
datasets: [
{
title: "Some Data",
title: "Some Data", type: "bar",
values: [25, 40, 30, 35, 8, 52, 17, -4]
},
{
title: "Another Set",
title: "Another Set", type: "line",
values: [25, 50, -10, 15, 18, 32, 27, 14]
}
]
}

const chart = new Chart({
parent: "#chart", // or a DOM element
const chart = new Chart("#chart", { // or a DOM element
title: "My Awesome Chart",
data: data,
type: 'bar', // or 'line', 'scatter', 'pie', 'percentage'
type: 'axis-mixed', // or 'bar', 'line', 'scatter', 'pie', 'percentage'
height: 250,

colors: ['#7cd6fd', '#743ee2'],

format_tooltip_x: d => (d + '').toUpperCase(),
format_tooltip_y: d => d + ' pts'
colors: ['#7cd6fd', '#743ee2']
})
```

@@ -88,6 +83,16 @@ If you want to contribute:

#### Updates

##### v1.0.0
- Major rewrite out. Some new features include:
- Mixed type axis datasets
- Stacked bar charts
- Value over data points
- Y Markers and regions
- Dot size, Bar space size, and other options
- Legend for axis charts
- We would be looking to incorporate existing PRs and issues in the meantime.

##### Please read [#93](https://github.com/frappe/charts/issues/93) for v0.1.0 updates on rework and development.

##### v0.0.7


+ 127
- 134
dist/frappe-charts.esm.js Переглянути файл

@@ -230,6 +230,10 @@ const DEFAULT_CHAR_WIDTH = 7;
const ANGLE_RATIO = Math.PI / 180;
const FULL_ANGLE = 360;

/**
* Returns the value of a number upto 2 decimal places.
* @param {Number} d Any number
*/
function floatTwo(d) {
return parseFloat(d.toFixed(2));
}
@@ -306,113 +310,11 @@ function equilizeNoOfElements(array1, array2,
return [array1, array2];
}

const UNIT_ANIM_DUR = 350;
const PATH_ANIM_DUR = 350;
const MARKER_LINE_ANIM_DUR = UNIT_ANIM_DUR;
const REPLACE_ALL_NEW_DUR = 250;

const STD_EASING = 'easein';

function translate(unit, oldCoord, newCoord, duration) {
let old = typeof oldCoord === 'string' ? oldCoord : oldCoord.join(', ');
return [
unit,
{transform: newCoord.join(', ')},
duration,
STD_EASING,
"translate",
{transform: old}
];
}

function translateVertLine(xLine, newX, oldX) {
return translate(xLine, [oldX, 0], [newX, 0], MARKER_LINE_ANIM_DUR);
}

function translateHoriLine(yLine, newY, oldY) {
return translate(yLine, [0, oldY], [0, newY], MARKER_LINE_ANIM_DUR);
}

function animateRegion(rectGroup, newY1, newY2, oldY2) {
let newHeight = newY1 - newY2;
let rect = rectGroup.childNodes[0];
let width = rect.getAttribute("width");
let rectAnim = [
rect,
{ height: newHeight, 'stroke-dasharray': `${width}, ${newHeight}` },
MARKER_LINE_ANIM_DUR,
STD_EASING
];

let groupAnim = translate(rectGroup, [0, oldY2], [0, newY2], MARKER_LINE_ANIM_DUR);
return [rectAnim, groupAnim];
}

function animateBar(bar, x, yTop, width, offset=0, index=0, meta={}) {
let [height, y] = getBarHeightAndYAttr(yTop, meta.zeroLine);
y -= offset;
if(bar.nodeName !== 'rect') {
let rect = bar.childNodes[0];
let rectAnim = [
rect,
{width: width, height: height},
UNIT_ANIM_DUR,
STD_EASING
];

let oldCoordStr = bar.getAttribute("transform").split("(")[1].slice(0, -1);
let groupAnim = translate(bar, oldCoordStr, [x, y], MARKER_LINE_ANIM_DUR);
return [rectAnim, groupAnim];
} else {
return [[bar, {width: width, height: height, x: x, y: y}, UNIT_ANIM_DUR, STD_EASING]];
}
// bar.animate({height: args.newHeight, y: yTop}, UNIT_ANIM_DUR, mina.easein);
}

function animateDot(dot, x, y) {
if(dot.nodeName !== 'circle') {
let oldCoordStr = dot.getAttribute("transform").split("(")[1].slice(0, -1);
let groupAnim = translate(dot, oldCoordStr, [x, y], MARKER_LINE_ANIM_DUR);
return [groupAnim];
} else {
return [[dot, {cx: x, cy: y}, UNIT_ANIM_DUR, STD_EASING]];
}
// dot.animate({cy: yTop}, UNIT_ANIM_DUR, mina.easein);
}

function animatePath(paths, newXList, newYList, zeroLine) {
let pathComponents = [];

let pointsStr = newYList.map((y, i) => (newXList[i] + ',' + y));
let pathStr = pointsStr.join("L");

const animPath = [paths.path, {d:"M"+pathStr}, PATH_ANIM_DUR, STD_EASING];
pathComponents.push(animPath);

if(paths.region) {
let regStartPt = `${newXList[0]},${zeroLine}L`;
let regEndPt = `L${newXList.slice(-1)[0]}, ${zeroLine}`;

const animRegion = [
paths.region,
{d:"M" + regStartPt + pathStr + regEndPt},
PATH_ANIM_DUR,
STD_EASING
];
pathComponents.push(animRegion);
}

return pathComponents;
}

function animatePathStr(oldPath, pathStr) {
return [oldPath, {d: pathStr}, UNIT_ANIM_DUR, STD_EASING];
}

const AXIS_TICK_LENGTH = 6;
const LABEL_MARGIN = 4;
const FONT_SIZE = 10;
const BASE_LINE_COLOR = '#dadada';

function $$1(expr, con) {
return typeof expr === "string"? (con || document).querySelector(expr) : expr || null;
}
@@ -647,6 +549,8 @@ function yLine(y, label, width, options={}) {
x2 = width;
}

// let offset = options.pos === 'left' ? -1 * options.offset : options.offset;

x1 += options.offset;
x2 += options.offset;

@@ -793,7 +697,7 @@ function datasetBar(x, yTop, width, color, label='', index=0, offset=0, meta={})
}
}

function datasetDot(x, y, radius, color, label='', index=0, meta={}) {
function datasetDot(x, y, radius, color, label='', index=0) {
let dot = createSVG('circle', {
style: `fill: ${color}`,
'data-point-index': index,
@@ -904,10 +808,10 @@ let updateOverlay = {
}
let attributes = ['x', 'y', 'width', 'height'];
Object.values(unit.attributes)
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});

if(transformValue) {
overlay.setAttribute('transform', transformValue);
@@ -922,10 +826,10 @@ let updateOverlay = {
}
let attributes = ['cx', 'cy'];
Object.values(unit.attributes)
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});

if(transformValue) {
overlay.setAttribute('transform', transformValue);
@@ -1027,6 +931,109 @@ function getDifferentChart(type, current_type, parent, args) {
return new Chart(parent, args);
}

const UNIT_ANIM_DUR = 350;
const PATH_ANIM_DUR = 350;
const MARKER_LINE_ANIM_DUR = UNIT_ANIM_DUR;
const REPLACE_ALL_NEW_DUR = 250;

const STD_EASING = 'easein';

function translate(unit, oldCoord, newCoord, duration) {
let old = typeof oldCoord === 'string' ? oldCoord : oldCoord.join(', ');
return [
unit,
{transform: newCoord.join(', ')},
duration,
STD_EASING,
"translate",
{transform: old}
];
}

function translateVertLine(xLine, newX, oldX) {
return translate(xLine, [oldX, 0], [newX, 0], MARKER_LINE_ANIM_DUR);
}

function translateHoriLine(yLine, newY, oldY) {
return translate(yLine, [0, oldY], [0, newY], MARKER_LINE_ANIM_DUR);
}

function animateRegion(rectGroup, newY1, newY2, oldY2) {
let newHeight = newY1 - newY2;
let rect = rectGroup.childNodes[0];
let width = rect.getAttribute("width");
let rectAnim = [
rect,
{ height: newHeight, 'stroke-dasharray': `${width}, ${newHeight}` },
MARKER_LINE_ANIM_DUR,
STD_EASING
];

let groupAnim = translate(rectGroup, [0, oldY2], [0, newY2], MARKER_LINE_ANIM_DUR);
return [rectAnim, groupAnim];
}

function animateBar(bar, x, yTop, width, offset=0, meta={}) {
let [height, y] = getBarHeightAndYAttr(yTop, meta.zeroLine);
y -= offset;
if(bar.nodeName !== 'rect') {
let rect = bar.childNodes[0];
let rectAnim = [
rect,
{width: width, height: height},
UNIT_ANIM_DUR,
STD_EASING
];

let oldCoordStr = bar.getAttribute("transform").split("(")[1].slice(0, -1);
let groupAnim = translate(bar, oldCoordStr, [x, y], MARKER_LINE_ANIM_DUR);
return [rectAnim, groupAnim];
} else {
return [[bar, {width: width, height: height, x: x, y: y}, UNIT_ANIM_DUR, STD_EASING]];
}
// bar.animate({height: args.newHeight, y: yTop}, UNIT_ANIM_DUR, mina.easein);
}

function animateDot(dot, x, y) {
if(dot.nodeName !== 'circle') {
let oldCoordStr = dot.getAttribute("transform").split("(")[1].slice(0, -1);
let groupAnim = translate(dot, oldCoordStr, [x, y], MARKER_LINE_ANIM_DUR);
return [groupAnim];
} else {
return [[dot, {cx: x, cy: y}, UNIT_ANIM_DUR, STD_EASING]];
}
// dot.animate({cy: yTop}, UNIT_ANIM_DUR, mina.easein);
}

function animatePath(paths, newXList, newYList, zeroLine) {
let pathComponents = [];

let pointsStr = newYList.map((y, i) => (newXList[i] + ',' + y));
let pathStr = pointsStr.join("L");

const animPath = [paths.path, {d:"M"+pathStr}, PATH_ANIM_DUR, STD_EASING];
pathComponents.push(animPath);

if(paths.region) {
let regStartPt = `${newXList[0]},${zeroLine}L`;
let regEndPt = `L${newXList.slice(-1)[0]}, ${zeroLine}`;

const animRegion = [
paths.region,
{d:"M" + regStartPt + pathStr + regEndPt},
PATH_ANIM_DUR,
STD_EASING
];
pathComponents.push(animRegion);
}

return pathComponents;
}

function animatePathStr(oldPath, pathStr) {
return [oldPath, {d: pathStr}, UNIT_ANIM_DUR, STD_EASING];
}

// Leveraging SMIL Animations

const EASING = {
@@ -1178,7 +1185,7 @@ class BaseChart {
}

configure(args) {
this.setColors();
this.setColors(args);
this.setMargins();

// Bind window events
@@ -1331,8 +1338,8 @@ class BaseChart {
updateNav() {
if(this.config.isNavigable) {
// if(!this.overlayGuides){
this.makeOverlay();
this.bindUnits();
this.makeOverlay();
this.bindUnits();
// } else {
// this.updateOverlay();
// }
@@ -1403,19 +1410,6 @@ class BaseChart {
onDownArrow() {}
onEnterKey() {}

getDataPoint(index = 0) {}
setCurrentDataPoint(point) {}

updateDataset(dataset, index) {}
addDataset(dataset, index) {}
removeDataset(index = 0) {}

updateDatasets(datasets) {}

updateDataPoint(dataPoint, index = 0) {}
addDataPoint(dataPoint, index = 0) {}
removeDataPoint(index = 0) {}

getDifferentChart(type) {
return getDifferentChart(type, this.type, this.parent, this.rawChartArgs);
}
@@ -1795,8 +1789,6 @@ let componentConfigs = {
return this.units;
},
animateElements(newData) {
let c = this.constants;

let newXPos = newData.xPositions;
let newYPos = newData.yPositions;
let newOffsets = newData.offsets;
@@ -1827,7 +1819,7 @@ let componentConfigs = {

this.store.map((bar, i) => {
animateElements = animateElements.concat(animateBar(
bar, newXPos[i], newYPos[i], newData.barWidth, newOffsets[i], c.index,
bar, newXPos[i], newYPos[i], newData.barWidth, newOffsets[i],
{zeroLine: newData.zeroLine}
));
});
@@ -2305,7 +2297,7 @@ function getValueRange(orderedArray) {
}

function scale(val, yAxis) {
return floatTwo(yAxis.zeroLine - val * yAxis.scaleMultiplier)
return floatTwo(yAxis.zeroLine - val * yAxis.scaleMultiplier);
}

function calcDistribution(values, distributionSize) {
@@ -2602,7 +2594,7 @@ function dataPrep(data, type) {
}];
}

datasets.map((d, i)=> {
datasets.map(d=> {
// Set values
if(!d.values) {
d.values = zeroArray;
@@ -2656,7 +2648,7 @@ function zeroDataPrep(realData) {
name: '',
values: zeroArray.slice(0, -1),
chartType: d.chartType
}
};
}),
};

@@ -3256,6 +3248,7 @@ class AxisChart extends BaseChart {
// removeDataPoint(index = 0) {}
}

// import MultiAxisChart from './charts/MultiAxisChart';
const chartTypes = {
// multiaxis: MultiAxisChart,
percentage: PercentageChart,


+ 1
- 1
dist/frappe-charts.min.cjs.js
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 1
dist/frappe-charts.min.esm.js
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 1
dist/frappe-charts.min.iife.js
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 1
dist/frappe-charts.min.iife.js.map
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 1
docs/assets/js/frappe-charts.min.js
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 1
docs/assets/js/frappe-charts.min.js.map
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 1
docs/index.html Переглянути файл

@@ -289,7 +289,7 @@
<p class="step-explain">And include it in your project</p>
<pre><code class="hljs javascript"> import Chart from "frappe-charts/dist/frappe-charts.min.esm"</code></pre>
<p class="step-explain">... or include it directly in your HTML</p>
<pre><code class="hljs html"> &lt;script src="https://unpkg.com/frappe-charts@0.0.8/dist/frappe-charts.min.iife.js"&gt;&lt;/script&gt;</code></pre>
<pre><code class="hljs html"> &lt;script src="https://unpkg.com/frappe-charts@1.0.0/dist/frappe-charts.min.iife.js"&gt;&lt;/script&gt;</code></pre>

</div>
</div>


+ 1
- 1
docs/old_index.html Переглянути файл

@@ -53,7 +53,7 @@
<p class="step-explain">And include it in your project</p>
<pre><code class="hljs javascript"> import Chart from "frappe-charts/dist/frappe-charts.min.esm"</code></pre>
<p class="step-explain">... or include it directly in your HTML</p>
<pre><code class="hljs html"> &lt;script src="https://unpkg.com/frappe-charts@0.0.8/dist/frappe-charts.min.iife.js"&gt;&lt;/script&gt;</code></pre>
<pre><code class="hljs html"> &lt;script src="https://unpkg.com/frappe-charts@1.0.0/dist/frappe-charts.min.iife.js"&gt;&lt;/script&gt;</code></pre>
<p class="step-explain">Make a new Chart</p>
<pre><code class="hljs html"> &lt!--HTML--&gt;
&lt;div id="chart"&gt;&lt;/div&gt;</code></pre>


+ 5
- 5
package-lock.json Переглянути файл

@@ -2572,7 +2572,7 @@
}
},
"minimist": {
"version": "0.0.8",
"version": "1.0.0",
"bundled": true,
"dev": true
},
@@ -2581,7 +2581,7 @@
"bundled": true,
"dev": true,
"requires": {
"minimist": "0.0.8"
"minimist": "1.0.0"
}
},
"ms": {
@@ -4054,8 +4054,8 @@
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.0.0.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
@@ -4065,7 +4065,7 @@
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
"minimist": "1.0.0"
}
},
"ms": {


+ 1
- 1
package.json Переглянути файл

@@ -1,6 +1,6 @@
{
"name": "frappe-charts",
"version": "0.0.8",
"version": "1.0.0",
"description": "https://frappe.github.io/charts",
"main": "dist/frappe-charts.min.cjs.js",
"module": "dist/frappe-charts.min.esm.js",


+ 1
- 1
src/js/charts/AggregationChart.js Переглянути файл

@@ -1,5 +1,5 @@
import BaseChart from './BaseChart';
import { $, getOffset } from '../utils/dom';
import { $ } from '../utils/dom';

export default class AggregationChart extends BaseChart {
constructor(parent, args) {


+ 1
- 1
src/js/charts/AxisChart.js Переглянути файл

@@ -174,7 +174,7 @@ export default class AxisChart extends BaseChart {
if(this.data.yRegions) {
this.data.yRegions.map(d => {
allValueLists.push([d.end, d.start]);
})
});
}

return [].concat(...allValueLists);


+ 3
- 17
src/js/charts/BaseChart.js Переглянути файл

@@ -1,7 +1,6 @@
import SvgTip from '../objects/SvgTip';
import { $, isElementInViewport, getElementContentWidth } from '../utils/dom';
import { makeSVGContainer, makeSVGDefs, makeSVGGroup } from '../utils/draw';
import { getStringWidth } from '../utils/helpers';
import { VERT_SPACE_OUTSIDE_BASE_CHART, TRANSLATE_Y_BASE_CHART, LEFT_MARGIN_BASE_CHART,
RIGHT_MARGIN_BASE_CHART, INIT_CHART_UPDATE_TIMEOUT, CHART_POST_ANIMATE_TIMEOUT } from '../utils/constants';
import { getColor, DEFAULT_COLORS } from '../utils/colors';
@@ -44,7 +43,7 @@ export default class BaseChart {
}

configure(args) {
this.setColors();
this.setColors(args);
this.setMargins();

// Bind window events
@@ -197,8 +196,8 @@ export default class BaseChart {
updateNav() {
if(this.config.isNavigable) {
// if(!this.overlayGuides){
this.makeOverlay();
this.bindUnits();
this.makeOverlay();
this.bindUnits();
// } else {
// this.updateOverlay();
// }
@@ -269,19 +268,6 @@ export default class BaseChart {
onDownArrow() {}
onEnterKey() {}

getDataPoint(index = 0) {}
setCurrentDataPoint(point) {}

updateDataset(dataset, index) {}
addDataset(dataset, index) {}
removeDataset(index = 0) {}

updateDatasets(datasets) {}

updateDataPoint(dataPoint, index = 0) {}
addDataPoint(dataPoint, index = 0) {}
removeDataPoint(index = 0) {}

getDifferentChart(type) {
return getDifferentChart(type, this.type, this.parent, this.rawChartArgs);
}


+ 1
- 3
src/js/objects/ChartComponents.js Переглянути файл

@@ -235,8 +235,6 @@ let componentConfigs = {
return this.units;
},
animateElements(newData) {
let c = this.constants;

let newXPos = newData.xPositions;
let newYPos = newData.yPositions;
let newOffsets = newData.offsets;
@@ -267,7 +265,7 @@ let componentConfigs = {

this.store.map((bar, i) => {
animateElements = animateElements.concat(animateBar(
bar, newXPos[i], newYPos[i], newData.barWidth, newOffsets[i], c.index,
bar, newXPos[i], newYPos[i], newData.barWidth, newOffsets[i],
{zeroLine: newData.zeroLine}
));
});


+ 3
- 3
src/js/utils/animate.js Переглянути файл

@@ -36,13 +36,13 @@ export function animateRegion(rectGroup, newY1, newY2, oldY2) {
{ height: newHeight, 'stroke-dasharray': `${width}, ${newHeight}` },
MARKER_LINE_ANIM_DUR,
STD_EASING
]
];

let groupAnim = translate(rectGroup, [0, oldY2], [0, newY2], MARKER_LINE_ANIM_DUR);
return [rectAnim, groupAnim];
}

export function animateBar(bar, x, yTop, width, offset=0, index=0, meta={}) {
export function animateBar(bar, x, yTop, width, offset=0, meta={}) {
let [height, y] = getBarHeightAndYAttr(yTop, meta.zeroLine);
y -= offset;
if(bar.nodeName !== 'rect') {
@@ -52,7 +52,7 @@ export function animateBar(bar, x, yTop, width, offset=0, index=0, meta={}) {
{width: width, height: height},
UNIT_ANIM_DUR,
STD_EASING
]
];

let oldCoordStr = bar.getAttribute("transform").split("(")[1].slice(0, -1);
let groupAnim = translate(bar, oldCoordStr, [x, y], MARKER_LINE_ANIM_DUR);


+ 3
- 3
src/js/utils/axis-chart-utils.js Переглянути файл

@@ -1,4 +1,4 @@
import { floatTwo, fillArray } from '../utils/helpers';
import { fillArray } from '../utils/helpers';
import { DEFAULT_AXIS_CHART_TYPE, AXIS_DATASET_CHART_TYPES, DEFAULT_CHAR_WIDTH } from '../utils/constants';

export function dataPrep(data, type) {
@@ -16,7 +16,7 @@ export function dataPrep(data, type) {
}];
}

datasets.map((d, i)=> {
datasets.map(d=> {
// Set values
if(!d.values) {
d.values = zeroArray;
@@ -70,7 +70,7 @@ export function zeroDataPrep(realData) {
name: '',
values: zeroArray.slice(0, -1),
chartType: d.chartType
}
};
}),
};



+ 14
- 17
src/js/utils/draw.js Переглянути файл

@@ -1,13 +1,11 @@
import { getBarHeightAndYAttr } from './draw-utils';
import { getStringWidth } from './helpers';
import { STD_EASING, UNIT_ANIM_DUR, MARKER_LINE_ANIM_DUR, PATH_ANIM_DUR } from './animate';
import { DOT_OVERLAY_SIZE_INCR } from './constants';

const AXIS_TICK_LENGTH = 6;
const LABEL_MARGIN = 4;
export const FONT_SIZE = 10;
const BASE_LINE_COLOR = '#dadada';
const BASE_BG_COLOR = '#F7FAFC';

function $(expr, con) {
return typeof expr === "string"? (con || document).querySelector(expr) : expr || null;
@@ -245,11 +243,11 @@ export function yLine(y, label, width, options={}) {
let x2 = options.mode === 'span' ? width + AXIS_TICK_LENGTH : 0;

if(options.mode === 'tick' && options.pos === 'right') {
x1 = width + AXIS_TICK_LENGTH
x1 = width + AXIS_TICK_LENGTH;
x2 = width;
}

let offset = options.pos === 'left' ? -1 * options.offset : options.offset;
// let offset = options.pos === 'left' ? -1 * options.offset : options.offset;

x1 += options.offset;
x2 += options.offset;
@@ -397,7 +395,7 @@ export function datasetBar(x, yTop, width, color, label='', index=0, offset=0, m
}
}

export function datasetDot(x, y, radius, color, label='', index=0, meta={}) {
export function datasetDot(x, y, radius, color, label='', index=0) {
let dot = createSVG('circle', {
style: `fill: ${color}`,
'data-point-index': index,
@@ -448,7 +446,7 @@ export function getPaths(xList, yList, color, options={}, meta={}) {

let paths = {
path: path
}
};

// Region
if(options.regionFill) {
@@ -497,7 +495,7 @@ export let makeOverlay = {
}
return overlay;
}
}
};

export let updateOverlay = {
'bar': (unit, overlay) => {
@@ -508,10 +506,10 @@ export let updateOverlay = {
}
let attributes = ['x', 'y', 'width', 'height'];
Object.values(unit.attributes)
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});

if(transformValue) {
overlay.setAttribute('transform', transformValue);
@@ -526,14 +524,13 @@ export let updateOverlay = {
}
let attributes = ['cx', 'cy'];
Object.values(unit.attributes)
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});
.filter(attr => attributes.includes(attr.name) && attr.specified)
.map(attr => {
overlay.setAttribute(attr.name, attr.nodeValue);
});

if(transformValue) {
overlay.setAttribute('transform', transformValue);
}
}
}

};

+ 1
- 1
src/js/utils/helpers.js Переглянути файл

@@ -70,7 +70,7 @@ export function bindChange(obj, getFn, setFn) {
setFn();
return Reflect.set(target, prop, value);
},
get: function(target, prop, value) {
get: function(target, prop) {
getFn();
return Reflect.get(target, prop);
}


+ 1
- 1
src/js/utils/intervals.js Переглянути файл

@@ -197,7 +197,7 @@ export function getValueRange(orderedArray) {
}

export function scale(val, yAxis) {
return floatTwo(yAxis.zeroLine - val * yAxis.scaleMultiplier)
return floatTwo(yAxis.zeroLine - val * yAxis.scaleMultiplier);
}

export function calcDistribution(values, distributionSize) {


Завантаження…
Відмінити
Зберегти