/* eslint-disable @typescript-eslint/ban-ts-comment */ import {FC, useEffect, useRef} from 'react' import {KTIcon} from '../../../../helpers' import {getCSSVariableValue} from '../../../../assets/ts/_utils' import {useThemeMode} from '../../../layout/theme-mode/ThemeModeProvider' import { DashDataProps } from '../../../../../app/pages/dashboard/model' import { FormatAmount } from '../../../../helpers/formatNumbers' type Props = { className: string chartSize?: number chartLine?: number chartRotate?: number dashData?: DashDataProps } const CardsWidget17: FC = ({ className, chartSize = 70, chartLine = 11, chartRotate = 145, dashData }) => { const chartRef = useRef(null) const {mode} = useThemeMode() useEffect(() => { refreshChart() // eslint-disable-next-line react-hooks/exhaustive-deps }, [mode]) const refreshChart = () => { if (!chartRef.current) { return } setTimeout(() => { initChart(chartSize, chartLine, chartRotate) }, 10) } return (
{/* $ */} {FormatAmount('69,700')} 2.2%
Application in {dashData?.loading ? 'Loading...': dashData?.data?.dash_data?.curr_month}
Ready
{dashData?.loading ? 'Loading...': FormatAmount(dashData?.data?.dash_data?.ready_loans)}
Verified
{dashData?.loading ? 'Loading...': FormatAmount(dashData?.data?.dash_data?.verified_loans)}
Approved
{dashData?.loading ? 'Loading...': FormatAmount(dashData?.data?.dash_data?.approved_loans)}
) } const initChart = function ( chartSize: number = 70, chartLine: number = 11, chartRotate: number = 145 ) { const el = document.getElementById('kt_card_widget_17_chart') if (!el) { return } el.innerHTML = '' const options = { size: chartSize, lineWidth: chartLine, rotate: chartRotate, //percent: el.getAttribute('data-kt-percent') , } const canvas = document.createElement('canvas') const span = document.createElement('span') //@ts-ignore if (typeof G_vmlCanvasManager !== 'undefined') { //@ts-ignore G_vmlCanvasManager.initElement(canvas) } const ctx = canvas.getContext('2d') canvas.width = canvas.height = options.size el.appendChild(span) el.appendChild(canvas) ctx?.translate(options.size / 2, options.size / 2) // change center ctx?.rotate((-1 / 2 + options.rotate / 180) * Math.PI) // rotate -90 deg //imd = ctx.getImageData(0, 0, 240, 240); const radius = (options.size - options.lineWidth) / 2 const drawCircle = function (color: string, lineWidth: number, percent: number) { percent = Math.min(Math.max(0, percent || 1), 1) if (!ctx) { return } ctx.beginPath() ctx.arc(0, 0, radius, 0, Math.PI * 2 * percent, false) ctx.strokeStyle = color ctx.lineCap = 'round' // butt, round or square ctx.lineWidth = lineWidth ctx.stroke() } // Init 2 drawCircle('#E4E6EF', options.lineWidth, 100 / 100) drawCircle(getCSSVariableValue('--bs-primary'), options.lineWidth, 100 / 150) drawCircle(getCSSVariableValue('--bs-success'), options.lineWidth, 100 / 250) } export {CardsWidget17}