mirror of
https://github.com/frappe/books.git
synced 2025-01-23 23:28:24 +00:00
fix: charts scaling issues
This commit is contained in:
parent
52c5e03e31
commit
fc7130e776
@ -133,8 +133,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { prefixFormat } from './chartUtils';
|
|
||||||
import Tooltip from '../Tooltip.vue';
|
import Tooltip from '../Tooltip.vue';
|
||||||
|
import { prefixFormat } from './chartUtils';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
@ -172,9 +172,6 @@ export default {
|
|||||||
drawZeroLine: { type: Boolean, default: true },
|
drawZeroLine: { type: Boolean, default: true },
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
inverseMatrix() {
|
|
||||||
return this.$refs.chartSvg.getScreenCTM().inverse();
|
|
||||||
},
|
|
||||||
fontStyle() {
|
fontStyle() {
|
||||||
return { fontSize: this.fontSize, fill: this.fontColor };
|
return { fontSize: this.fontSize, fill: this.fontColor };
|
||||||
},
|
},
|
||||||
@ -255,6 +252,16 @@ export default {
|
|||||||
ys.map((y, j) => this.getRect(x, y, i, j))
|
ys.map((y, j) => this.getRect(x, y, i, j))
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
hMin() {
|
||||||
|
return Math.min(this.yMin ?? this.min, 0);
|
||||||
|
},
|
||||||
|
hMax() {
|
||||||
|
let hMax = Math.max(this.yMax ?? this.max, 0);
|
||||||
|
if (hMax === this.hMin) {
|
||||||
|
return hMax + 1000;
|
||||||
|
}
|
||||||
|
return hMax;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return { xi: -1, yi: -1, activeColor: 'rgba(0, 0, 0, 0.2)' };
|
return { xi: -1, yi: -1, activeColor: 'rgba(0, 0, 0, 0.2)' };
|
||||||
@ -264,12 +271,15 @@ export default {
|
|||||||
return Math.min(...this.ys[i]).toFixed();
|
return Math.min(...this.ys[i]).toFixed();
|
||||||
},
|
},
|
||||||
getViewBoxY(value) {
|
getViewBoxY(value) {
|
||||||
const min = this.yMin ?? this.min;
|
const min = this.hMin;
|
||||||
const max = this.yMax ?? this.max;
|
const max = this.hMax;
|
||||||
|
let percent = 1 - (value - min) / (max - min);
|
||||||
|
if (percent === -Infinity) {
|
||||||
|
percent = 0;
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
this.padding +
|
this.padding +
|
||||||
(1 - (value - min) / (max - min)) *
|
percent * (this.viewBoxHeight - 2 * this.padding - this.bottom)
|
||||||
(this.viewBoxHeight - 2 * this.padding - this.bottom)
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
getRect(px, py, i, j) {
|
getRect(px, py, i, j) {
|
||||||
@ -299,8 +309,8 @@ export default {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
yScalerValue(i) {
|
yScalerValue(i) {
|
||||||
const max = this.yMax ?? this.max;
|
const min = this.hMin;
|
||||||
const min = this.yMin ?? this.min;
|
const max = this.hMax;
|
||||||
return this.formatY((i * (max - min)) / this.yLabelDivisions + min);
|
return this.formatY((i * (max - min)) / this.yLabelDivisions + min);
|
||||||
},
|
},
|
||||||
getLine(i) {
|
getLine(i) {
|
||||||
|
@ -131,8 +131,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { euclideanDistance, prefixFormat } from './chartUtils';
|
|
||||||
import Tooltip from '../Tooltip.vue';
|
import Tooltip from '../Tooltip.vue';
|
||||||
|
import { euclideanDistance, prefixFormat } from './chartUtils';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
@ -190,8 +190,8 @@ export default {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
ys() {
|
ys() {
|
||||||
const min = this.yMin ?? this.min;
|
const min = this.hMin;
|
||||||
const max = this.yMax ?? this.max;
|
const max = this.hMax;
|
||||||
return this.points.map((pp) =>
|
return this.points.map((pp) =>
|
||||||
pp.map(
|
pp.map(
|
||||||
(p) =>
|
(p) =>
|
||||||
@ -235,6 +235,16 @@ export default {
|
|||||||
const r = this.viewBoxWidth - this.padding;
|
const r = this.viewBoxWidth - this.padding;
|
||||||
return { l, r };
|
return { l, r };
|
||||||
},
|
},
|
||||||
|
hMin() {
|
||||||
|
return Math.min(this.yMin ?? this.min, 0);
|
||||||
|
},
|
||||||
|
hMax() {
|
||||||
|
let hMax = Math.max(this.yMax ?? this.max, 0);
|
||||||
|
if (hMax === this.hMin) {
|
||||||
|
return hMax + 1000;
|
||||||
|
}
|
||||||
|
return hMax;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return { cx: -1, cy: -1, xi: -1, yi: -1 };
|
return { cx: -1, cy: -1, xi: -1, yi: -1 };
|
||||||
@ -252,8 +262,8 @@ export default {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
yScalerValue(i) {
|
yScalerValue(i) {
|
||||||
const max = this.yMax ?? this.max;
|
const min = this.hMin;
|
||||||
const min = this.yMin ?? this.min;
|
const max = this.hMax;
|
||||||
return this.formatY((i * (max - min)) / this.yLabelDivisions + min);
|
return this.formatY((i * (max - min)) / this.yLabelDivisions + min);
|
||||||
},
|
},
|
||||||
getLine(i) {
|
getLine(i) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user