Enterprise Dashboard
Real-time consultancy intelligence platform
<%= stats.total %>
Cliënten
<%= stats.active %> actief · <%= stats.leads %> leads
<%= stats.activeEngagements %>
Actieve Engagements
van <%= stats.totalEngagements %> totaal
<%= totalRackDevices + totalNetworkDevices %>
Infra Devices
<%= totalRacks %> racks · <%= totalDiagrams %> diagrammen
<%= overdueTasks %>
Overdue Taken
<%= completedTasks %>/<%= totalTasks %> voltooid
<%= assessmentsCount %>
Assessments
Data quality engine
Cliënten Status
<% var sts={active:'Actief',lead:'Lead',paused:'Gepauzeerd',archived:'Gearchiveerd'};var clrs={active:'var(--green)',lead:'var(--accent)',paused:'var(--orange)',archived:'var(--text-dim)'};var maxC=Math.max(stats.active,stats.leads,stats.paused,stats.archived,1);
for(var k in sts){var cnt=stats[k]||0;%><%= sts[k] %><%= cnt %>
<% } %>
Engagements per Type
<% var tCol={assessment:'var(--cyan)',architecture:'var(--purple)',implementation:'var(--green)',monitoring:'var(--orange)',consulting:'var(--pink)',training:'var(--red)'};var maxE=Math.max(...engagementByType.map(function(e){return e.cnt}),1);
engagementByType.forEach(function(e){ %><%= e.type %><%= e.cnt %>
<% }) %>
Recente Assessments
<% if(recentAssessments.length===0){ %>Nog geen assessments
<% }else{ %><% recentAssessments.forEach(function(a){ %><% }) %>
<% } %>
Assessment voor <%= a.client_name %>
<%= new Date(a.created_at).toLocaleDateString('nl-NL',{hour:'2-digit',minute:'2-digit'}) %>
Cliënten
<%= stats.total %> totaal · <%= stats.active %> actief
Nog geen cliënten
<% } else { %>
<% clients.forEach(function(c){ %><% if(c.industry){ %><% } %><% if(c.last_assessment){ %><% }else{ %><% } %><% }) %>
<% } %><%= c.name %>
<%= c.status %>Engagements
<%= stats.totalEngagements %> totaal · <%= stats.activeEngagements %> actief
Per Type
<% engagementByType.forEach(function(e){ %><%= e.type %><%= e.cnt %>
<% }) %>Per Status
<% engagementByStatus.forEach(function(e){ %><%= e.status.replace('_',' ') %><%= e.cnt %>
<% }) %>Alle Engagements
<% if(allEngagements.length===0){ %>Nog geen engagements
<% }else{ %>
| Titel | Cliënt | Type | Status | |
|---|---|---|---|---|
| <%= e.title %> | <%= e.client_name %> | <%= e.type %> | <%= e.status %> | Details |
Financiën
Urenregistratie en facturatie
<%= totalHours.toFixed(1) %>
Totaal uren
<%= billableHours.toFixed(1) %> facturabel
€<%= totalInvoiced.toFixed(0) %>
Gefactureerd
€<%= totalPaid.toFixed(0) %> betaald
€<%= totalOutstanding.toFixed(0) %>
Openstaand
Recente uren
<% if(timeEntries.length===0){ %>Nog geen uren
<% }else{ %>| Datum | Uren | Cliënt | Omschrijving |
|---|---|---|---|
| <%= t.date %> | <%= t.hours %> | <%= t.client_name||'-' %> | <%= t.description||'' %> |
Recente facturen
<% if(invoices.length===0){ %>Nog geen facturen
<% }else{ %>| Nr | Cliënt | Totaal | Status |
|---|---|---|---|
| <%= i.number %> | <%= i.client_name %> | €<%= (i.total||0).toFixed(2) %> | <%= i.status %> |
Infrastructuur
Racks, netwerk & architectuur
<%= totalRacks %>
Racks
<%= totalRackDevices %> devices
<%= totalNetworkDevices %>
Netwerk
<%= totalDiagrams %>
Diagrammen
Server Racks
<% if(racks.length===0){ %>Nog geen racks
<% }else{ %><% racks.forEach(function(r){ %><% for(var i=0;i<% } %>
<%= r.name %>
<%= r.client_name %> · <%= r.device_count||0 %>/<%= r.total_units||42 %>U
Netwerk Devices
<% if(netDevices.length===0){ %>Nog geen devices
<% }else{ %><% netDevices.forEach(function(d){ %><%= d.name %>
<%= d.model||'' %> · <%= d.client_name %>
<% }) %><% } %><%= d.model||'' %> · <%= d.client_name %>
Taken
<%= completedTasks %>/<%= totalTasks %> voltooid <% if(overdueTasks>0){ %><%= overdueTasks %> over tijd<% } %>
<%= completedTasks %>
Voltooid
<%= totalTasks-completedTasks %>
Open
<%= overdueTasks %>
Over tijd
Nog geen taken
<% }else{ %><% allTasks.forEach(function(t){ var io=t.status!=='done'&&t.status!=='cancelled'&&t.due_date&&new Date(t.due_date)
<% } %><%= t.priority %>
<% }) %><%= t.title %><%= t.client_name %> · <%= t.engagement_title %>
<%= t.status.replace('_',' ') %><% if(t.due_date){ %><%= new Date(t.due_date).toLocaleDateString('nl-NL') %><% } %>Advies & Acties
Automatisch advies op basis van cliënt data
Geen advies items
<% }else{ %><% activeAdvice.forEach(function(a){ %><% }) %>
<% } %><%= a.priority %>
<%= a.advice_text %>
Markt Intelligence
Datacenters & prospects — vind je volgende klant
Agenda
Planning en afspraken
Data Quality
Data profiling, kwaliteitschecks & dbt modellen
Recente Activiteit
Recente Assessments
<% if(recentAssessments.length===0){ %>Nog geen activiteit
<% }else{ %><% recentAssessments.forEach(function(a){ %><% }) %>
<% } %>Rapport voor <%= a.client_name %>
<%= new Date(a.created_at).toLocaleString('nl-NL') %>