// ==UserScript==
// @name Alterar Valores, Cálculos e Cores no Dashboard UTMify
// @namespace [Link]
// @version 2.1
// @description Altera valores, faz cálculos e aplica cores no dashboard da
UTMify.
// @author Você
// @match [Link]
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Função para formatar valores no padrão brasileiro
function formatarValorBR(valor) {
return `R$ ${[Link]('pt-BR', { minimumFractionDigits: 2,
maximumFractionDigits: 2 })}`;
}
// Função para formatar faturamento com "K" para valores acima de 1000
function formatarFaturamentoComK(valor) {
if (valor >= 1000) {
const valorEmK = (valor / 1000).toFixed(1);
return `R$ ${valorEmK}K`;
} else {
return formatarValorBR(valor);
}
}
// Função para salvar valores no Local Storage
function salvarNoLocalStorage(chave, valor) {
[Link](chave, [Link](2));
}
// Função para recuperar valores do Local Storage
function recuperarDoLocalStorage(chave, valorPadrao) {
const valor = [Link](chave);
return valor !== null ? parseFloat(valor) : valorPadrao;
}
// Função para atualizar valores e aplicar estilos
function atualizarValorComEstilo(dataType, valor, isCurrency = false, cor =
null) {
const elemento = [Link](`[data-type="${dataType}"] h2`);
if (elemento) {
[Link] = isCurrency ? formatarValorBR(valor) : valor;
if (cor) {
[Link] = cor;
}
const titulo = [Link]('.card-body').querySelector('h6');
if (titulo && cor) {
[Link] = cor;
}
const svgIcon = [Link]('.card-body').querySelector('svg');
if (svgIcon && cor) {
[Link]('stroke', cor);
}
} else {
[Link](`Elemento não encontrado para data-type: ${dataType}`);
}
}
// Função para calcular o ROAS (Faturamento Líquido / Gastos com Anúncios)
function calcularRoas(faturamento, gastos) {
return gastos > 0 ? (faturamento / gastos).toFixed(2) : 0;
}
// Função para calcular o ROI (Faturamento Líquido - Gastos com Anúncios) /
Gastos com Anúncios
function calcularRoi(faturamento, gastos) {
return gastos > 0 ? (faturamento / gastos).toFixed(2) : 0;
}
// Função para calcular a Margem de Lucro
function calcularMargem(faturamento, gastos) {
const margem = ((faturamento - gastos) / faturamento) * 100;
return `${[Link](1)}%`;
}
// Função para calcular o Lucro
function calcularLucro(faturamento, gastos) {
return faturamento - gastos;
}
// Função para alterar o valor "R$ 17.4K" com base no faturamento total
function alterarValorDinamico(valor) {
const valorElement = [Link]('[Link]-bolder');
if (valorElement) {
[Link] = formatarFaturamentoComK(valor);
} else {
[Link]('Elemento com classe "fw-bolder" não encontrado.');
}
}
// Função para preencher a barra de progresso com base no faturamento total
function preencherBarraDeProgresso(valor) {
const barra = [Link]('.progress-bar');
const valorMaximo = 1000000;
if (barra) {
const porcentagem = [Link]((valor / valorMaximo) * 100, 100);
[Link] = `${porcentagem}%`;
} else {
[Link]('Elemento da barra de progresso não encontrado.');
}
}
// Função para gerar um valor aleatório entre 300 e 2000
function gerarValorAleatorio(min, max) {
return ([Link]() * (max - min) + min).toFixed(2);
}
// Função para inicializar as alterações
function init() {
const verificarElementos = setInterval(() => {
const cards = [Link]('[data-type]');
if ([Link] > 0) {
clearInterval(verificarElementos);
// Recuperar valores salvos ou definir valores padrão
let faturamentoLiquido =
recuperarDoLocalStorage('faturamentoLiquido', 56450.81);
let faturamentoTotal = recuperarDoLocalStorage('faturamentoTotal',
512200.00);
const gastosAnuncios = 8544.65;
const vendasPendentes = 15645.15;
const vendasRembolsada = 2042.56;
// Função para recalcular os valores no dashboard
function recalcularValores() {
const roas = calcularRoas(faturamentoLiquido, gastosAnuncios);
const roi = calcularRoi(faturamentoLiquido, gastosAnuncios);
const margem = calcularMargem(faturamentoLiquido,
gastosAnuncios);
const lucro = calcularLucro(faturamentoLiquido,
gastosAnuncios);
atualizarValorComEstilo('NetRevenue', faturamentoLiquido,
true);
atualizarValorComEstilo('Spend', gastosAnuncios, true);
atualizarValorComEstilo('Roas', roas, false, '#2c9231');
atualizarValorComEstilo('Profit', lucro, true, '#2c9231');
atualizarValorComEstilo('Roi', roi, false, '#2c9231');
atualizarValorComEstilo('PendingCommission', vendasPendentes,
true); // Vendas Pendentes
atualizarValorComEstilo('ProfitMargin', margem, false,
'#2c9231');
atualizarValorComEstilo('RefundedCommission', vendasRembolsada,
true);
alterarValorDinamico(faturamentoTotal);
preencherBarraDeProgresso(faturamentoTotal);
}
// Atualizar valores ao carregar a página
recalcularValores();
// Selecionar o botão "Atualizar"
const botaoAtualizar = [Link]('[Link]-
[Link]-primary');
if (botaoAtualizar) {
[Link]('click', () => {
const incremento = parseFloat(gerarValorAleatorio(50,
121));
faturamentoLiquido += incremento;
faturamentoTotal += incremento;
salvarNoLocalStorage('faturamentoLiquido',
faturamentoLiquido);
salvarNoLocalStorage('faturamentoTotal', faturamentoTotal);
recalcularValores();
});
}
}
}, 100);
}
// Inicializar as alterações após o carregamento da página
[Link]('load', init);
})();