feat: rename TFP to MC currency in dashboard UI and analytics
This commit is contained in:
		@@ -310,7 +310,7 @@ class ServiceProviderDashboard {
 | 
				
			|||||||
                    y: {
 | 
					                    y: {
 | 
				
			||||||
                        title: {
 | 
					                        title: {
 | 
				
			||||||
                            display: true,
 | 
					                            display: true,
 | 
				
			||||||
                            text: 'Price per Hour (TFP)'
 | 
					                            text: 'Price per Hour (MC)'
 | 
				
			||||||
                        },
 | 
					                        },
 | 
				
			||||||
                        beginAtZero: true
 | 
					                        beginAtZero: true
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -523,7 +523,7 @@ class ServiceProviderDashboard {
 | 
				
			|||||||
                        <td><span class="badge bg-${statusClass}">${request.status}</span></td>
 | 
					                        <td><span class="badge bg-${statusClass}">${request.status}</span></td>
 | 
				
			||||||
                        <td>${request.requested_date}</td>
 | 
					                        <td>${request.requested_date}</td>
 | 
				
			||||||
                        <td>${request.estimated_hours}</td>
 | 
					                        <td>${request.estimated_hours}</td>
 | 
				
			||||||
                        <td>${request.budget} TFP</td>
 | 
					                        <td>${request.budget} MC</td>
 | 
				
			||||||
                        <td><span class="badge bg-${priorityClass}">${request.priority}</span></td>
 | 
					                        <td><span class="badge bg-${priorityClass}">${request.priority}</span></td>
 | 
				
			||||||
                        <td>
 | 
					                        <td>
 | 
				
			||||||
                            <div class="btn-group">
 | 
					                            <div class="btn-group">
 | 
				
			||||||
@@ -584,7 +584,7 @@ class ServiceProviderDashboard {
 | 
				
			|||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </td>
 | 
					                        </td>
 | 
				
			||||||
                        <td>${request.budget} TFP</td>
 | 
					                        <td>${request.budget} MC</td>
 | 
				
			||||||
                        <td><span class="badge bg-${priorityClass}">${request.priority}</span></td>
 | 
					                        <td><span class="badge bg-${priorityClass}">${request.priority}</span></td>
 | 
				
			||||||
                        <td>
 | 
					                        <td>
 | 
				
			||||||
                            <div class="btn-group">
 | 
					                            <div class="btn-group">
 | 
				
			||||||
@@ -654,7 +654,7 @@ class ServiceProviderDashboard {
 | 
				
			|||||||
                        <td><span class="badge bg-success">${request.status}</span></td>
 | 
					                        <td><span class="badge bg-success">${request.status}</span></td>
 | 
				
			||||||
                        <td>${completedDate}</td>
 | 
					                        <td>${completedDate}</td>
 | 
				
			||||||
                        <td>${totalHours}${typeof totalHours === 'number' ? ' hours' : ''}</td>
 | 
					                        <td>${totalHours}${typeof totalHours === 'number' ? ' hours' : ''}</td>
 | 
				
			||||||
                        <td>${totalAmount}${typeof totalAmount === 'number' ? ' TFP' : ''}</td>
 | 
					                        <td>${totalAmount}${typeof totalAmount === 'number' ? ' MC' : ''}</td>
 | 
				
			||||||
                        <td>
 | 
					                        <td>
 | 
				
			||||||
                            <div class="d-flex align-items-center">
 | 
					                            <div class="d-flex align-items-center">
 | 
				
			||||||
                                <span class="me-2">${rating}</span>
 | 
					                                <span class="me-2">${rating}</span>
 | 
				
			||||||
@@ -1176,8 +1176,8 @@ async function loadServiceAnalytics(serviceId) {
 | 
				
			|||||||
            document.getElementById('serviceOnTimeDelivery').textContent = `${analytics.performance.on_time_delivery.toFixed(0)}%`;
 | 
					            document.getElementById('serviceOnTimeDelivery').textContent = `${analytics.performance.on_time_delivery.toFixed(0)}%`;
 | 
				
			||||||
            document.getElementById('serviceCompletionRate').textContent = `${analytics.performance.completion_rate.toFixed(0)}%`;
 | 
					            document.getElementById('serviceCompletionRate').textContent = `${analytics.performance.completion_rate.toFixed(0)}%`;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            document.getElementById('serviceTotalRevenue').textContent = `${analytics.revenue.total} TFP`;
 | 
					            document.getElementById('serviceTotalRevenue').textContent = `${analytics.revenue.total} MC`;
 | 
				
			||||||
            document.getElementById('serviceMonthlyRevenue').textContent = `${analytics.revenue.monthly} TFP`;
 | 
					            document.getElementById('serviceMonthlyRevenue').textContent = `${analytics.revenue.monthly} MC`;
 | 
				
			||||||
            document.getElementById('serviceTotalProjects').textContent = analytics.project_metrics.total_projects;
 | 
					            document.getElementById('serviceTotalProjects').textContent = analytics.project_metrics.total_projects;
 | 
				
			||||||
            document.getElementById('serviceActiveClients').textContent = analytics.client_metrics.total_clients;
 | 
					            document.getElementById('serviceActiveClients').textContent = analytics.client_metrics.total_clients;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@@ -1300,7 +1300,7 @@ async function loadServiceClients(serviceId) {
 | 
				
			|||||||
                                </div>
 | 
					                                </div>
 | 
				
			||||||
                            </td>
 | 
					                            </td>
 | 
				
			||||||
                            <td>${client.projects.length}</td>
 | 
					                            <td>${client.projects.length}</td>
 | 
				
			||||||
                            <td>${client.total_revenue} TFP</td>
 | 
					                            <td>${client.total_revenue} MC</td>
 | 
				
			||||||
                            <td>
 | 
					                            <td>
 | 
				
			||||||
                                <div class="d-flex align-items-center">
 | 
					                                <div class="d-flex align-items-center">
 | 
				
			||||||
                                    <span class="me-2">${client.avg_rating.toFixed(1)}</span>
 | 
					                                    <span class="me-2">${client.avg_rating.toFixed(1)}</span>
 | 
				
			||||||
@@ -1607,7 +1607,7 @@ function populateRequestDetailsModal(request) {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    document.getElementById('detailRequestedDate').textContent = request.requested_date;
 | 
					    document.getElementById('detailRequestedDate').textContent = request.requested_date;
 | 
				
			||||||
    document.getElementById('detailEstimatedHours').textContent = `${request.estimated_hours} hours`;
 | 
					    document.getElementById('detailEstimatedHours').textContent = `${request.estimated_hours} hours`;
 | 
				
			||||||
    document.getElementById('detailBudget').textContent = `${request.budget} TFP`;
 | 
					    document.getElementById('detailBudget').textContent = `${request.budget} MC`;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Progress bar
 | 
					    // Progress bar
 | 
				
			||||||
    const progress = request.progress || 0;
 | 
					    const progress = request.progress || 0;
 | 
				
			||||||
@@ -1888,7 +1888,7 @@ function populateCompletedRequestModal(request) {
 | 
				
			|||||||
    document.getElementById('completedServiceType').textContent = request.service_name;
 | 
					    document.getElementById('completedServiceType').textContent = request.service_name;
 | 
				
			||||||
    document.getElementById('completedDate').textContent = request.completed_date || 'N/A';
 | 
					    document.getElementById('completedDate').textContent = request.completed_date || 'N/A';
 | 
				
			||||||
    document.getElementById('completedHoursLogged').textContent = `${request.hours_logged || 0} hours`;
 | 
					    document.getElementById('completedHoursLogged').textContent = `${request.hours_logged || 0} hours`;
 | 
				
			||||||
    document.getElementById('completedRevenue').textContent = `${request.revenue || 0} TFP`;
 | 
					    document.getElementById('completedRevenue').textContent = `${request.revenue || 0} MC`;
 | 
				
			||||||
    document.getElementById('completedRating').textContent = request.rating ? `${request.rating}/5 ⭐` : 'Not rated';
 | 
					    document.getElementById('completedRating').textContent = request.rating ? `${request.rating}/5 ⭐` : 'Not rated';
 | 
				
			||||||
    document.getElementById('completedOnTime').textContent = request.on_time ? 'Yes ✅' : 'No ❌';
 | 
					    document.getElementById('completedOnTime').textContent = request.on_time ? 'Yes ✅' : 'No ❌';
 | 
				
			||||||
    document.getElementById('completedSummary').textContent = request.summary || 'No summary available.';
 | 
					    document.getElementById('completedSummary').textContent = request.summary || 'No summary available.';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,13 +23,13 @@ class UserDashboard {
 | 
				
			|||||||
        Chart.defaults.responsive = true;
 | 
					        Chart.defaults.responsive = true;
 | 
				
			||||||
        Chart.defaults.maintainAspectRatio = false;
 | 
					        Chart.defaults.maintainAspectRatio = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.createTFCUsageChart();
 | 
					        this.createMCUsageChart();
 | 
				
			||||||
        this.createResourceUtilizationChart();
 | 
					        this.createResourceUtilizationChart();
 | 
				
			||||||
        this.createUserActivityChart();
 | 
					        this.createUserActivityChart();
 | 
				
			||||||
        this.createDeploymentDistributionChart();
 | 
					        this.createDeploymentDistributionChart();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    createTFCUsageChart() {
 | 
					    createMCUsageChart() {
 | 
				
			||||||
        const ctx = document.getElementById('tfpUsageChart');
 | 
					        const ctx = document.getElementById('tfpUsageChart');
 | 
				
			||||||
        if (!ctx) return;
 | 
					        if (!ctx) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user