|
|
@ -101,9 +101,30 @@ export class ChartwerkBarPod extends ChartwerkPod<BarTimeSerie, BarOptions> { |
|
|
|
// (x, y) - top left corner
|
|
|
|
// (x, y) - top left corner
|
|
|
|
const Y_OFFSET = 2; |
|
|
|
const Y_OFFSET = 2; |
|
|
|
const correctedY = Math.max(y, Y_OFFSET); |
|
|
|
const correctedY = Math.max(y, Y_OFFSET); |
|
|
|
return `M ${x - Y_OFFSET} ${correctedY - Y_OFFSET} |
|
|
|
const correctedLength = length <= 10 ? length : 10; |
|
|
|
L ${x + length + Y_OFFSET} ${correctedY - Y_OFFSET} |
|
|
|
|
|
|
|
L ${x + length / 2} ${correctedY + length - Y_OFFSET} z`;
|
|
|
|
let x1 = x - Y_OFFSET; |
|
|
|
|
|
|
|
let x2 = x + length + Y_OFFSET; |
|
|
|
|
|
|
|
let x1x2Len = x2 - x1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let y1 = correctedY - Y_OFFSET; |
|
|
|
|
|
|
|
let yM = correctedY + length - Y_OFFSET; |
|
|
|
|
|
|
|
if (x1x2Len > correctedLength) { |
|
|
|
|
|
|
|
const xDiff = x1x2Len - correctedLength; |
|
|
|
|
|
|
|
x1 += xDiff / 2; |
|
|
|
|
|
|
|
x2 -= xDiff / 2; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const yDiff = yM - y1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (xDiff < yDiff) { |
|
|
|
|
|
|
|
y1 += (yDiff - xDiff) + Y_OFFSET*3; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const x3 = x + length / 2; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return `M ${x1} ${y1} |
|
|
|
|
|
|
|
L ${x2} ${y1} |
|
|
|
|
|
|
|
L ${x3} ${yM} z`;
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
getBarOpacity(rowValues: RowValues): number { |
|
|
|
getBarOpacity(rowValues: RowValues): number { |
|
|
@ -164,7 +185,7 @@ export class ChartwerkBarPod extends ChartwerkPod<BarTimeSerie, BarOptions> { |
|
|
|
const tagrets = _.map(series, serie => serie.target); |
|
|
|
const tagrets = _.map(series, serie => serie.target); |
|
|
|
const zippedData = _.zip(keysColumn, zippedValuesColumn, zippedAdditionalValuesColumn, tagrets); |
|
|
|
const zippedData = _.zip(keysColumn, zippedValuesColumn, zippedAdditionalValuesColumn, tagrets); |
|
|
|
const data = _.map(zippedData, row => { return { key: row[0], values: row[1], additionalValues: row[2], colors, serieTarget: tagrets } }); |
|
|
|
const data = _.map(zippedData, row => { return { key: row[0], values: row[1], additionalValues: row[2], colors, serieTarget: tagrets } }); |
|
|
|
return data; |
|
|
|
return data.filter(v => v.key !== undefined); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public renderSharedCrosshair(values: { x?: number, y?: number }): void { |
|
|
|
public renderSharedCrosshair(values: { x?: number, y?: number }): void { |
|
|
|