import 'zone.js';
import 'reflect-metadata';
import { Component, enableProdMode, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ViserModule, registerShape } from 'viser-ng';
registerShape('point', 'pointer', {
draw(cfg, container) {
let point = cfg.points[0]; // 获取第一个标记点
point = this.parsePoint(point);
const center = this.parsePoint({ // 获取极坐标系下画布中心点
x: 0,
y: 0
});
// 绘制指针
container.addShape('line', {
attrs: {
x1: center.x,
y1: center.y,
x2: point.x,
y2: point.y + 15,
stroke: cfg.color,
lineWidth: 5,
lineCap: 'round'
}
});
return container.addShape('circle', {
attrs: {
x: center.x,
y: center.y,
r: 9.75,
stroke: cfg.color,
lineWidth: 4.5,
fill: '#fff'
}
});
}
});
const scale = [{
dataKey: 'value',
min: 0,
max: 9,
ticks: [2.25, 3.75, 5.25, 6.75],
nice: false
}];
const data = [
{ value: 6 }
];
@Component({
selector: '#mount',
template: `
`
})
class AppComponent {
forceFit: boolean = true;
height = 400;
data = data;
scale = scale;
axisLabel = {
offset: -20,
formatter: (val: string) => {
if (val === '2.25') {
return '差';
} else if (val === '3.75') {
return '中';
} else if (val === '5.25') {
return '良';
}
return '优';
},
textStyle: {
fontSize: 18,
textAlign: 'center'
}
};
lineGuide1Start = [3, 0.905];
lineGuide1End = [3.0035, 0.85];
lineGuide1LineStyle = {
stroke: '#19AFFA',
lineDash: null,
lineWidth: 3
};
lineGuide2Start = [4.5, 0.905];
lineGuide2End = [4.5, 0.85];
lineGuide2LineStyle = {
stroke: '#19AFFA',
lineDash: null,
lineWidth: 3
};
lineGuide3Start = [6, 0.905];
lineGuide3End = [6.0035, 0.85];
lineGuide3LineStyle = {
stroke: '#19AFFA',
lineDash: null,
lineWidth: 3
};
arcGuide1Start = [0, 0.945];
arcGuide1End = [9, 0.945];
arcGuide1Style = {
stroke: '#CBCBCB',
lineWidth: 18,
};
arcGuide2Start = [0, 0.945];
arcGuide2End = [data[0].value, 0.945];
arcGuide2Style = {
stroke: '#1890FF',
lineWidth: 18,
};
htmlGuidePosition = ['50%', '95%'];
htmlGuideHtml = `
合格率
${data[0].value * 10}%
`;
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
ViserModule
],
providers: [],
bootstrap: [
AppComponent
]
})
export default class AppModule { }