Fix Calculation

This commit is contained in:
Ibnu Maksum 2024-02-05 14:25:23 +07:00
parent 00ac91903f
commit 80cecabfb0
No known key found for this signature in database
GPG Key ID: 7FC82848810579E5
3 changed files with 186 additions and 185 deletions

View File

@ -427,3 +427,4 @@ $_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active p
$_L['Monthly_Registered_Customers'] = 'Monthly Registered Customers'; $_L['Monthly_Registered_Customers'] = 'Monthly Registered Customers';
$_L['Total_Monthly_Sales'] = 'Total Monthly Sales'; $_L['Total_Monthly_Sales'] = 'Total Monthly Sales';
$_L['Active_Users'] = 'Active Users'; $_L['Active_Users'] = 'Active Users';
$_L['All_Users_Insights'] = 'All Users Insights';

View File

@ -99,34 +99,34 @@
<div class="row"> <div class="row">
<div class="col-md-7"> <div class="col-md-7">
{if $_c['disable_voucher'] != 'yes' && $stocks['unused']>0 || $stocks['used']>0} {if $_c['disable_voucher'] != 'yes' && $stocks['unused']>0 || $stocks['used']>0}
<div class="panel panel-primary mb20 panel-hovered project-stats table-responsive"> <div class="panel panel-primary mb20 panel-hovered project-stats table-responsive">
<div class="panel-heading">Vouchers Stock</div> <div class="panel-heading">Vouchers Stock</div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table"> <table class="table">
<thead> <thead>
<tr>
<th>{$_L['Plan_Name']}</th>
<th>unused</th>
<th>used</th>
</tr>
</thead>
<tbody>
{foreach $plans as $stok}
<tr>
<td>{$stok['name_plan']}</td>
<td>{$stok['unused']}</td>
<td>{$stok['used']}</td>
</tr>
</tbody>
{/foreach}
<tr> <tr>
<th>{$_L['Plan_Name']}</th> <td>Total</td>
<th>unused</th> <td>{$stocks['unused']}</td>
<th>used</th> <td>{$stocks['used']}</td>
</tr> </tr>
</thead> </table>
<tbody> </div>
{foreach $plans as $stok}
<tr>
<td>{$stok['name_plan']}</td>
<td>{$stok['unused']}</td>
<td>{$stok['used']}</td>
</tr>
</tbody>
{/foreach}
<tr>
<td>Total</td>
<td>{$stocks['unused']}</td>
<td>{$stocks['used']}</td>
</tr>
</table>
</div> </div>
</div>
{/if} {/if}
<div class="panel panel-warning mb20 panel-hovered project-stats table-responsive"> <div class="panel panel-warning mb20 panel-hovered project-stats table-responsive">
<div class="panel-heading">{$_L['User_Expired_Today']}</div> <div class="panel-heading">{$_L['User_Expired_Today']}</div>
@ -143,15 +143,15 @@
<tbody> <tbody>
{$no = 1} {$no = 1}
{foreach $expire as $expired} {foreach $expire as $expired}
<tr> <tr>
<td>{$no++}</td> <td>{$no++}</td>
<td><a href="{$_url}customers/viewu/{$expired['username']}">{$expired['username']}</a></td> <td><a href="{$_url}customers/viewu/{$expired['username']}">{$expired['username']}</a></td>
<td>{Lang::dateAndTimeFormat($expired['recharged_on'],$expired['recharged_time'])} <td>{Lang::dateAndTimeFormat($expired['recharged_on'],$expired['recharged_time'])}
</td> </td>
<td>{Lang::dateAndTimeFormat($expired['expiration'],$expired['time'])} <td>{Lang::dateAndTimeFormat($expired['expiration'],$expired['time'])}
</td> </td>
</tr> </tr>
</tbody> </tbody>
{/foreach} {/foreach}
</table> </table>
</div> </div>
@ -175,11 +175,11 @@
<div class="panel-body"> <div class="panel-body">
<ul class="list-unstyled"> <ul class="list-unstyled">
{foreach $dlog as $dlogs} {foreach $dlog as $dlogs}
<li class="primary"> <li class="primary">
<span class="point"></span> <span class="point"></span>
<span class="time small text-muted">{time_elapsed_string($dlogs['date'],true)}</span> <span class="time small text-muted">{time_elapsed_string($dlogs['date'],true)}</span>
<p>{$dlogs['description']}</p> <p>{$dlogs['description']}</p>
</li> </li>
{/foreach} {/foreach}
</ul> </ul>
</div> </div>
@ -192,171 +192,171 @@
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.5.1/dist/chart.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/chart.js@3.5.1/dist/chart.min.js"></script>
{literal} {literal}
<script type="text/javascript"> <script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function() {
var counts = JSON.parse('{/literal}{$counts|json_encode}{literal}'); var counts = JSON.parse('{/literal}{$counts|json_encode}{literal}');
var monthNames = [ var monthNames = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
]; ];
var labels = []; var labels = [];
var data = []; var data = [];
for (var i = 1; i <= 12; i++) { for (var i = 1; i <= 12; i++) {
var month = counts.find(count => count.date === i); var month = counts.find(count => count.date === i);
labels.push(month ? monthNames[i - 1] : monthNames[i - 1].substring(0, 3)); labels.push(month ? monthNames[i - 1] : monthNames[i - 1].substring(0, 3));
data.push(month ? month.count : 0); data.push(month ? month.count : 0);
}
var ctx = document.getElementById('chart').getContext('2d');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Registered Members',
data: data,
backgroundColor: 'rgba(0, 0, 255, 0.5)',
borderColor: 'rgba(0, 0, 255, 0.7)',
borderWidth: 1
}]
},
options: {
responsive: true,
scales: {
x: {
grid: {
display: false
}
},
y: {
beginAtZero: true,
grid: {
color: 'rgba(0, 0, 0, 0.1)'
}
}
}
}
});
});
</script>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var monthlySales = JSON.parse('{/literal}{$monthlySales|json_encode}{literal}');
var monthNames = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
];
var labels = [];
var data = [];
for (var i = 1; i <= 12; i++) {
var month = findMonthData(monthlySales, i);
labels.push(month ? monthNames[i - 1] : monthNames[i - 1].substring(0, 3));
data.push(month ? month.totalSales : 0);
}
var ctx = document.getElementById('salesChart').getContext('2d');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Monthly Sales',
data: data,
backgroundColor: 'rgba(2, 10, 242)', // Customize the background color
borderColor: 'rgba(255, 99, 132, 1)', // Customize the border color
borderWidth: 1
}]
},
options: {
responsive: true,
scales: {
x: {
grid: {
display: false
}
},
y: {
beginAtZero: true,
grid: {
color: 'rgba(0, 0, 0, 0.1)'
}
}
}
}
});
});
function findMonthData(monthlySales, month) {
for (var i = 0; i < monthlySales.length; i++) {
if (monthlySales[i].month === month) {
return monthlySales[i];
}
}
return null;
} }
var ctx = document.getElementById('chart').getContext('2d');
var chart = new Chart(ctx, { document.addEventListener("DOMContentLoaded", function() {
type: 'bar', // Get the data from PHP and assign it to JavaScript variables
data: { var u_act = '{/literal}{$u_act}{literal}';
labels: labels, var c_all = '{/literal}{$c_all}{literal}';
var u_all = '{/literal}{$u_all}{literal}';
//lets calculate the inactive users as reported
var expired = u_all - u_act;
var inactive = c_all - u_all;
// Create the chart data
var data = {
labels: ['Active Users', 'Expired Users', 'Inactive Users'],
datasets: [{ datasets: [{
label: 'Registered Members', label: 'User Recharges',
data: data, data: [parseInt(u_act), parseInt(expired), parseInt(inactive)],
backgroundColor: 'rgba(0, 0, 255, 0.5)', backgroundColor: ['rgba(4, 191, 13)', 'rgba(191, 35, 4)', 'rgba(0, 0, 255, 0.5'],
borderColor: 'rgba(0, 0, 255, 0.7)', borderColor: ['rgba(0, 255, 0, 1)', 'rgba(255, 99, 132, 1)', 'rgba(0, 0, 255, 0.7'],
borderWidth: 1 borderWidth: 1
}] }]
}, };
options: {
// Create chart options
var options = {
responsive: true, responsive: true,
scales: { aspectRatio: 1,
x: { plugins: {
grid: { legend: {
display: false position: 'bottom',
} labels: {
}, boxWidth: 15
y: {
beginAtZero: true,
grid: {
color: 'rgba(0, 0, 0, 0.1)'
} }
} }
} }
} };
// Get the canvas element and create the chart
var ctx = document.getElementById('userRechargesChart').getContext('2d');
var chart = new Chart(ctx, {
type: 'pie',
data: data,
options: options
});
}); });
}); </script>
</script>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () {
var monthlySales = JSON.parse('{/literal}{$monthlySales|json_encode}{literal}');
var monthNames = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
];
var labels = [];
var data = [];
for (var i = 1; i <= 12; i++) {
var month = findMonthData(monthlySales, i);
labels.push(month ? monthNames[i - 1] : monthNames[i - 1].substring(0, 3));
data.push(month ? month.totalSales : 0);
}
var ctx = document.getElementById('salesChart').getContext('2d');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Monthly Sales',
data: data,
backgroundColor: 'rgba(2, 10, 242)', // Customize the background color
borderColor: 'rgba(255, 99, 132, 1)', // Customize the border color
borderWidth: 1
}]
},
options: {
responsive: true,
scales: {
x: {
grid: {
display: false
}
},
y: {
beginAtZero: true,
grid: {
color: 'rgba(0, 0, 0, 0.1)'
}
}
}
}
});
});
function findMonthData(monthlySales, month) {
for (var i = 0; i < monthlySales.length; i++) {
if (monthlySales[i].month === month) {
return monthlySales[i];
}
}
return null;
}
document.addEventListener("DOMContentLoaded", function () {
// Get the data from PHP and assign it to JavaScript variables
var u_act = '{/literal}{$u_act}{literal}';
var c_all = '{/literal}{$c_all}{literal}';
var u_all = '{/literal}{$u_all}{literal}';
//lets calculate the inactive users as reported
var inactive = u_all - u_act;
// Create the chart data
var data = {
labels: ['Active Users', 'Inactive Users', 'Total Users'],
datasets: [{
label: 'User Recharges',
data: [parseInt(u_act), parseInt(inactive), parseInt(c_all)],
backgroundColor: ['rgba(4, 191, 13)', 'rgba(191, 35, 4)', 'rgba(0, 0, 255, 0.5'],
borderColor: ['rgba(0, 255, 0, 1)', 'rgba(255, 99, 132, 1)', 'rgba(0, 0, 255, 0.7'],
borderWidth: 1
}]
};
// Create chart options
var options = {
responsive: true,
aspectRatio: 1,
plugins: {
legend: {
position: 'bottom',
labels: {
boxWidth: 15
}
}
}
};
// Get the canvas element and create the chart
var ctx = document.getElementById('userRechargesChart').getContext('2d');
var chart = new Chart(ctx, {
type: 'pie',
data: data,
options: options
});
});
</script>
{/literal} {/literal}
<script> <script>
window.addEventListener('DOMContentLoaded', function () { window.addEventListener('DOMContentLoaded', function() {
$.getJSON("./version.json?" + Math.random(), function (data) { $.getJSON("./version.json?" + Math.random(), function(data) {
var localVersion = data.version; var localVersion = data.version;
$('#version').html('Version: ' + localVersion); $('#version').html('Version: ' + localVersion);
$.getJSON( $.getJSON(
"https://raw.githubusercontent.com/hotspotbilling/phpnuxbill/master/version.json?" + "https://raw.githubusercontent.com/hotspotbilling/phpnuxbill/master/version.json?" +
Math Math
.random(), .random(),
function (data) { function(data) {
var latestVersion = data.version; var latestVersion = data.version;
if (localVersion !== latestVersion) { if (localVersion !== latestVersion) {
$('#version').html('Latest Version: ' + latestVersion); $('#version').html('Latest Version: ' + latestVersion);

View File

@ -1,3 +1,3 @@
{ {
"version": "2024.2.5" "version": "2024.2.5.1"
} }