🚀 Auto-deploy: TrackSteelAPP atualizado em 21/08/2026 18:49:15
This commit is contained in:
@@ -177,6 +177,7 @@ export const GraficoMestre: React.FC<GraficoMestreProps> = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const datasOrdenadas = Array.from(todasAsDatas).sort();
|
const datasOrdenadas = Array.from(todasAsDatas).sort();
|
||||||
|
const ultimosValoresKg: Record<string, number> = {};
|
||||||
|
|
||||||
return datasOrdenadas.map(data => {
|
return datasOrdenadas.map(data => {
|
||||||
const dataFormatada = format(parseISO(data), 'dd/MM', { locale: ptBR });
|
const dataFormatada = format(parseISO(data), 'dd/MM', { locale: ptBR });
|
||||||
@@ -187,7 +188,15 @@ export const GraficoMestre: React.FC<GraficoMestreProps> = ({
|
|||||||
|
|
||||||
processosOrdenados.forEach(processo => {
|
processosOrdenados.forEach(processo => {
|
||||||
const pontoProcesso = processo.dadosGrafico.find(p => p.data === data);
|
const pontoProcesso = processo.dadosGrafico.find(p => p.data === data);
|
||||||
const valorKg = pontoProcesso ? pontoProcesso.realizado : 0;
|
|
||||||
|
let valorKg: number;
|
||||||
|
if (pontoProcesso && pontoProcesso.realizado > 0) {
|
||||||
|
valorKg = pontoProcesso.realizado;
|
||||||
|
ultimosValoresKg[processo.nome] = valorKg;
|
||||||
|
} else {
|
||||||
|
// Se não houver novo ponto ou for 0, mantém o acumulado anterior para a linha NUNCA cair
|
||||||
|
valorKg = ultimosValoresKg[processo.nome] || 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (modoExibicao === 'percent') {
|
if (modoExibicao === 'percent') {
|
||||||
const pesoTotal = processo.pesoTotal > 0 ? processo.pesoTotal : 1;
|
const pesoTotal = processo.pesoTotal > 0 ? processo.pesoTotal : 1;
|
||||||
|
|||||||
@@ -430,7 +430,11 @@ export const useDashboardProducaoOtimizado = (ofNumber: string) => {
|
|||||||
// Antes do início planejado, o planejado fica 0
|
// Antes do início planejado, o planejado fica 0
|
||||||
|
|
||||||
// Calcular progresso real até esta data - soma dos pesos apontados
|
// Calcular progresso real até esta data - soma dos pesos apontados
|
||||||
const apontamentosAteData = apontamentosProcesso.filter(a => a.data_apontamento <= dataStr);
|
const apontamentosAteData = apontamentosProcesso.filter(a => {
|
||||||
|
if (!a.data_apontamento) return false;
|
||||||
|
const dataAptStr = typeof a.data_apontamento === 'string' ? a.data_apontamento.substring(0, 10) : '';
|
||||||
|
return dataAptStr <= dataStr;
|
||||||
|
});
|
||||||
let realizado = 0;
|
let realizado = 0;
|
||||||
apontamentosAteData.forEach(a => {
|
apontamentosAteData.forEach(a => {
|
||||||
let pesoUnitario = 0;
|
let pesoUnitario = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user