Files
shopdb/charts/udcchart.asp
cproudlock 7b6ae1ad4c Fix reports charts to count only PCs, exclude PCs from equipment list
charts/udcchart.asp, charts/ma3chart.asp:
- Add COALESCE to handle NULL aggregate values
- Add NULL checks for VBScript CInt operations
- Change machinecount to only count PCs (pctypeid IS NOT NULL)
- UDC/CLM/MA3 apps only exist on PCs, not equipment

displaymachines.asp:
- Add machinetypeid < 33 filter to exclude PC machine types
- PCs with NULL pctypeid were incorrectly showing on equipment list

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 16:37:12 -05:00

97 lines
3.4 KiB
Plaintext

<link href="assets/css/app-style.css" rel="stylesheet"/>
<script src="assets/js/jquery.min.js"></script>
<%
' Count only PCs (pctypeid IS NOT NULL) for UDC/CLM stats
strSQL = "SELECT COALESCE(sum(case when appid = '4' then 1 else 0 end), 0) AS clmcount," &_
"COALESCE(sum(case when appid = '2' then 1 else 0 end), 0) AS udccount, "&_
"(SELECT COUNT(*) FROM machines WHERE machines.isactive=1 AND machines.pctypeid IS NOT NULL) AS machinecount "& _
"FROM installedapps WHERE appid IN (2,4) and installedapps.isactive=1"
set rs = objconn.Execute(strSQL)
clmcount = rs("clmcount")
udccount = rs("udccount")
machinecount = rs("machinecount")
If IsNull(clmcount) Or clmcount = "" Then clmcount = 0
If IsNull(udccount) Or udccount = "" Then udccount = 0
If IsNull(machinecount) Or machinecount = "" Or CInt(machinecount) = 0 Then machinecount = 1
nocollections = CInt(machinecount) - CInt(clmcount) - CInt(udccount)
udcpct = FormatNumber(CInt(udccount)/Cint(machinecount)*100,2)
clmpct = FormatNumber(CInt(clmcount)/Cint(machinecount)*100,2)
nocollectionspct = FormatNumber(Cint(nocollections)/Cint(machinecount)*100,2)
%>
<script>
$(function() {
var ctx = document.getElementById("chart1").getContext('2d');
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ["CLM", "UDC","No Collections"],
datasets: [{
backgroundColor: [
"#ffffff",
"rgba(255, 255, 255, 0.70)",
"rgba(255, 255, 255, 0.50)",
"rgba(255, 255, 255, 0.20)"
],
data: [<%Response.Write(rs("clmcount"))%>,<%Response.Write(rs("udccount"))%>,<%Response.Write(nocollections)%>],
borderWidth: [1, 1,1]
}]
},
options: {
maintainAspectRatio: false,
legend: {
position :"bottom",
display: false,
labels: {
fontColor: '#ddd',
boxWidth:15
}
}
,
tooltips: {
displayColors:false
}
}
});
});
</script>
<div class="col-lg-4">
<div class="card">
<div class="card-header">Collection Installs
<div class="card-action">
</div>
</div>
<div class="card-body">
<div class="chart-container-1">
<canvas id="chart1"></canvas>
</div>
</div>
<div class="table-responsive">
<table class="table align-items-center">
<tbody>
<tr>
<td><i class="fa fa-circle text-white mr-2"></i><a href="./displayinstalledapps.asp?appid=2">UDC</a></td>
<td><%Response.Write(udccount)%></td>
<td><%Response.Write(udcpct)%>%</td>
</tr>
<tr>
<td><i class="fa fa-circle text-light-1 mr-2"></i><a href="./displayinstalledapps.asp?appid=4">CLM<a></td>
<td><%Response.Write(clmcount)%></td>
<td><%Response.Write(clmpct)%>%</td>
</tr>
<tr>
<td><i class="fa fa-circle text-light-4 mr-3"></i>No Collections</td>
<td><%Response.Write(nocollections)%></td>
<td><%Response.Write(nocollectionspct)%>%</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>