fix second

This commit is contained in:
hafifierahman
2022-01-20 16:16:00 +08:00
parent 9c1825bab0
commit ee1dfed215
7 changed files with 635 additions and 231 deletions
+8 -5
View File
@@ -90,14 +90,17 @@ class AnalisaController extends Controller
}
}
//Harga Emas
$financemonth = Http::get(config('api.url') .'/portal/financeMonth/',['icno' => $kpbaru])->json();
// dd(json_encode($financemonth));
// $StatistikBulanan = Http::get(config('api.url') .'/portal/financeMonth/',['icno' => $kpbaru])->json();
$financemonth = json_encode(array_values($financemonth));
// dd($financemonth);
// return view('analisa.index', compact("totalgadai",'bilangan_belum_tebus','belum_tebus','hargaemasterdahulu','bilangan_melebihi_6_bulan','bilakandilelong'));
return view('includes.analisaportal', compact("totalgadai",'bilangan_belum_tebus','belum_tebus','hargaemasterdahulu','bilangan_melebihi_6_bulan','bilakandilelong'));
return view('includes.analisaportal', compact("totalgadai",'bilangan_belum_tebus','belum_tebus','hargaemasterdahulu','bilangan_melebihi_6_bulan','bilakandilelong','financemonth'));
}
}
-212
View File
@@ -905,215 +905,3 @@ var Charts = (function() {
};
})();
//
// Orders chart
//
var OrdersChart = (function() {
//
// Variables
//
var $chart = $('#chart-orders');
var $ordersSelect = $('[name="ordersSelect"]');
//
// Methods
//
// Init chart
function initChart($chart) {
var datafinance = [];
var PembiayaanBulanan = new Array();
var BayaranBulanan = new Array();
var NamaBulan = new Array();
$.ajax({
url: api_url + '/portal/financeMonth/',
data:{'icno' : icno},
method:'GET',
async:false,
success:function(data){
datafinance = data;
}
});
$.each(datafinance,function(index,finance){
PembiayaanBulanan.push(finance['pembiayaan']);
BayaranBulanan.push(finance['bayaran']);
NamaBulan.push(finance['namabulan']);
});
PembiayaanBulanan.reverse();
BayaranBulanan.reverse();
NamaBulan.reverse();
const formatter = new Intl.NumberFormat('en-US', {
});
// Create chart
var ordersChart = new Chart($chart, {
type: 'bar',
options: {
scales: {
yAxes: [{
ticks: {
callback: function(value) {
if (!(value % 10)) {
//return '$' + value + 'k'
return formatter.format(value)
}
}
}
}]
},
tooltips: {
callbacks: {
label: function(item, data) {
var label = data.datasets[item.datasetIndex].label || '';
var yLabel = item.yLabel;
var content = '';
if (data.datasets.length > 1) {
content += '<span class="popover-body-label mr-auto">' + label + '</span>';
}
content += '<span class="popover-body-value">' + yLabel + '</span>';
return content;
}
}
}
},
data: {
labels: NamaBulan,
datasets: [{
label: 'Pembiayaan',
data: PembiayaanBulanan
}]
}
});
// Save to jQuery object
$chart.data('chart', ordersChart);
}
// Init chart
if ($chart.length) {
initChart($chart);
}
})();
//
// Charts
//
'use strict';
//
// Sales chart
//
var SalesChart = (function() {
// Variables
var $chart = $('#chart-sales');
// Methods
function init($chart) {
var datafinance = [];
var PembiayaanBulanan = new Array();
var BayaranBulanan = new Array();
var NamaBulan = new Array();
$.ajax({
url: api_url + '/portal/financeMonth/',
data:{'icno' : icno},
method:'GET',
async:false,
success:function(data){
datafinance = data;
}
});
$.each(datafinance,function(index,finance){
PembiayaanBulanan.push(finance['pembiayaan']);
BayaranBulanan.push(finance['bayaran']);
NamaBulan.push(finance['namabulan']);
});
PembiayaanBulanan.reverse();
BayaranBulanan.reverse();
NamaBulan.reverse();
const formatter = new Intl.NumberFormat('en-US', {
});
var salesChart = new Chart($chart, {
type: 'line',
options: {
scales: {
yAxes: [{
gridLines: {
color: Charts.colors.gray[900],
zeroLineColor: Charts.colors.gray[900]
},
ticks: {
callback: function(value) {
if (!(value % 10)) {
return 'RM' + formatter.format(value);
}
}
}
}]
},
tooltips: {
callbacks: {
label: function(item, data) {
var label = data.datasets[item.datasetIndex].label || '';
var yLabel = item.yLabel;
var content = '';
if (data.datasets.length > 1) {
content += '<span class="popover-body-label mr-auto">' + label + '</span>';
}
content += '<span class="popover-body-value">RM' + formatter.format(yLabel) + '</span>';
return content;
}
}
}
},
data: {
labels: NamaBulan,
datasets: [{
label: 'Prestasi',
data: BayaranBulanan
}]
}
});
// Save to jQuery object
$chart.data('chart', salesChart);
};
// Events
if ($chart.length) {
init($chart);
}
})();
@@ -191,7 +191,7 @@
@foreach($belum_tebus as $index1=>$bt)
<tr>
<td>{{ $bt['norujukan'] }}</td>
<td>{{ $bt['pinjaman'] }}</td>
<td>{{ number_format($bt['pinjaman'],2) }}</td>
</tr>
@endforeach
<!-- <tr>
@@ -266,7 +266,11 @@
<script>
var api_url = "{{ config('api.url') }}";
var icno = "{{ Auth::User()->icno }}";
var datafin = "{{ $financemonth }}";
datafin = datafin.replace(/&quot;/g, '\"');
datafin = JSON.parse(datafin);
var hargaemastable = $('#harga_emas').DataTable({
"bLengthChange": false,
"bFilter": false,
@@ -295,6 +299,601 @@
}
}
});
//
// Charts
//
'use strict';
var Charts = (function() {
// Variable
var $toggle = $('[data-toggle="chart"]');
var mode = 'light';//(themeMode) ? themeMode : 'light';
var fonts = {
base: 'Open Sans'
}
// Colors
var colors = {
gray: {
100: '#f6f9fc',
200: '#e9ecef',
300: '#dee2e6',
400: '#ced4da',
500: '#adb5bd',
600: '#8898aa',
700: '#525f7f',
800: '#32325d',
900: '#212529'
},
theme: {
'default': '#172b4d',
'primary': '#5e72e4',
'secondary': '#f4f5f7',
'info': '#11cdef',
'success': '#2dce89',
'danger': '#f5365c',
'warning': '#fb6340'
},
black: '#12263F',
white: '#FFFFFF',
transparent: 'transparent',
};
// Methods
// Chart.js global options
function chartOptions() {
// Options
var options = {
defaults: {
global: {
responsive: true,
maintainAspectRatio: false,
defaultColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600],
defaultFontColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600],
defaultFontFamily: fonts.base,
defaultFontSize: 13,
layout: {
padding: 0
},
legend: {
display: false,
position: 'bottom',
labels: {
usePointStyle: true,
padding: 16
}
},
elements: {
point: {
radius: 0,
backgroundColor: colors.theme['primary']
},
line: {
tension: .4,
borderWidth: 4,
borderColor: colors.theme['primary'],
backgroundColor: colors.transparent,
borderCapStyle: 'rounded'
},
rectangle: {
backgroundColor: colors.theme['warning']
},
arc: {
backgroundColor: colors.theme['primary'],
borderColor: (mode == 'dark') ? colors.gray[800] : colors.white,
borderWidth: 4
}
},
tooltips: {
enabled: false,
mode: 'index',
intersect: false,
custom: function(model) {
// Get tooltip
var $tooltip = $('#chart-tooltip');
// Create tooltip on first render
if (!$tooltip.length) {
$tooltip = $('<div id="chart-tooltip" class="popover bs-popover-top" role="tooltip"></div>');
// Append to body
$('body').append($tooltip);
}
// Hide if no tooltip
if (model.opacity === 0) {
$tooltip.css('display', 'none');
return;
}
function getBody(bodyItem) {
return bodyItem.lines;
}
// Fill with content
if (model.body) {
var titleLines = model.title || [];
var bodyLines = model.body.map(getBody);
var html = '';
// Add arrow
html += '<div class="arrow"></div>';
// Add header
titleLines.forEach(function(title) {
html += '<h3 class="popover-header text-center">' + title + '</h3>';
});
// Add body
bodyLines.forEach(function(body, i) {
var colors = model.labelColors[i];
var styles = 'background-color: ' + colors.backgroundColor;
var indicator = '<span class="badge badge-dot"><i class="bg-primary"></i></span>';
var align = (bodyLines.length > 1) ? 'justify-content-left' : 'justify-content-center';
html += '<div class="popover-body d-flex align-items-center ' + align + '">' + indicator + body + '</div>';
});
$tooltip.html(html);
}
// Get tooltip position
var $canvas = $(this._chart.canvas);
var canvasWidth = $canvas.outerWidth();
var canvasHeight = $canvas.outerHeight();
var canvasTop = $canvas.offset().top;
var canvasLeft = $canvas.offset().left;
var tooltipWidth = $tooltip.outerWidth();
var tooltipHeight = $tooltip.outerHeight();
var top = canvasTop + model.caretY - tooltipHeight - 16;
var left = canvasLeft + model.caretX - tooltipWidth / 2;
// Display tooltip
$tooltip.css({
'top': top + 'px',
'left': left + 'px',
'display': 'block',
'z-index': '100'
});
},
callbacks: {
label: function(item, data) {
var label = data.datasets[item.datasetIndex].label || '';
var yLabel = item.yLabel;
var content = '';
if (data.datasets.length > 1) {
content += '<span class="badge badge-primary mr-auto">' + label + '</span>';
}
content += '<span class="popover-body-value">' + yLabel + '</span>' ;
return content;
}
}
}
},
doughnut: {
cutoutPercentage: 83,
tooltips: {
callbacks: {
title: function(item, data) {
var title = data.labels[item[0].index];
return title;
},
label: function(item, data) {
var value = data.datasets[0].data[item.index];
var content = '';
content += '<span class="popover-body-value">' + value + '</span>';
return content;
}
}
},
legendCallback: function(chart) {
var data = chart.data;
var content = '';
data.labels.forEach(function(label, index) {
var bgColor = data.datasets[0].backgroundColor[index];
content += '<span class="chart-legend-item">';
content += '<i class="chart-legend-indicator" style="background-color: ' + bgColor + '"></i>';
content += label;
content += '</span>';
});
return content;
}
}
}
}
// yAxes
Chart.scaleService.updateScaleDefaults('linear', {
gridLines: {
borderDash: [2],
borderDashOffset: [2],
color: (mode == 'dark') ? colors.gray[900] : colors.gray[300],
drawBorder: false,
drawTicks: false,
lineWidth: 0,
zeroLineWidth: 0,
zeroLineColor: (mode == 'dark') ? colors.gray[900] : colors.gray[300],
zeroLineBorderDash: [2],
zeroLineBorderDashOffset: [2]
},
ticks: {
beginAtZero: true,
padding: 10,
callback: function(value) {
if (!(value % 10)) {
return value
}
}
}
});
// xAxes
Chart.scaleService.updateScaleDefaults('category', {
gridLines: {
drawBorder: false,
drawOnChartArea: false,
drawTicks: false
},
ticks: {
padding: 20
},
maxBarThickness: 10
});
return options;
}
// Parse global options
function parseOptions(parent, options) {
for (var item in options) {
if (typeof options[item] !== 'object') {
parent[item] = options[item];
} else {
parseOptions(parent[item], options[item]);
}
}
}
// Push options
function pushOptions(parent, options) {
for (var item in options) {
if (Array.isArray(options[item])) {
options[item].forEach(function(data) {
parent[item].push(data);
});
} else {
pushOptions(parent[item], options[item]);
}
}
}
// Pop options
function popOptions(parent, options) {
for (var item in options) {
if (Array.isArray(options[item])) {
options[item].forEach(function(data) {
parent[item].pop();
});
} else {
popOptions(parent[item], options[item]);
}
}
}
// Toggle options
function toggleOptions(elem) {
var options = elem.data('add');
var $target = $(elem.data('target'));
var $chart = $target.data('chart');
if (elem.is(':checked')) {
// Add options
pushOptions($chart, options);
// Update chart
$chart.update();
} else {
// Remove options
popOptions($chart, options);
// Update chart
$chart.update();
}
}
// Update options
function updateOptions(elem) {
var options = elem.data('update');
var $target = $(elem.data('target'));
var $chart = $target.data('chart');
// Parse options
parseOptions($chart, options);
// Toggle ticks
toggleTicks(elem, $chart);
// Update chart
$chart.update();
}
// Toggle ticks
function toggleTicks(elem, $chart) {
if (elem.data('prefix') !== undefined || elem.data('prefix') !== undefined) {
var prefix = elem.data('prefix') ? elem.data('prefix') : '';
var suffix = elem.data('suffix') ? elem.data('suffix') : '';
// Update ticks
$chart.options.scales.yAxes[0].ticks.callback = function(value) {
if (!(value % 10)) {
return prefix + value + suffix;
}
}
// Update tooltips
$chart.options.tooltips.callbacks.label = function(item, data) {
var label = data.datasets[item.datasetIndex].label || '';
var yLabel = item.yLabel;
var content = '';
if (data.datasets.length > 1) {
content += '<span class="popover-body-label mr-auto">' + label + '</span>';
}
content += '<span class="popover-body-value">' + prefix + yLabel + suffix + '</span>';
return content;
}
}
}
// Events
// Parse global options
if (window.Chart) {
parseOptions(Chart, chartOptions());
}
// Toggle options
$toggle.on({
'change': function() {
var $this = $(this);
if ($this.is('[data-add]')) {
toggleOptions($this);
}
},
'click': function() {
var $this = $(this);
if ($this.is('[data-update]')) {
updateOptions($this);
}
}
});
// Return
return {
colors: colors,
fonts: fonts,
mode: mode
};
})();
//
// Orders chart
//
var OrdersChart = (function() {
//
// Variables
//
var $chart = $('#chart-orders');
var $ordersSelect = $('[name="ordersSelect"]');
//
// Methods
//
// Init chart
function initChart($chart) {
var PembiayaanBulanan = new Array();
var BayaranBulanan = new Array();
var NamaBulan = new Array();
$.each(datafin,function(index,finance){
PembiayaanBulanan.push(finance['pembiayaan']);
BayaranBulanan.push(finance['bayaran']);
NamaBulan.push(finance['namabulan']);
});
const formatter = new Intl.NumberFormat('en-US', {
});
// Create chart
var ordersChart = new Chart($chart, {
type: 'bar',
options: {
scales: {
yAxes: [{
ticks: {
callback: function(value) {
if (!(value % 10)) {
//return '$' + value + 'k'
return formatter.format(value)
}
}
}
}]
},
tooltips: {
callbacks: {
label: function(item, data) {
var label = data.datasets[item.datasetIndex].label || '';
var yLabel = item.yLabel;
var content = '';
if (data.datasets.length > 1) {
content += '<span class="popover-body-label mr-auto">' + label + '</span>';
}
content += '<span class="popover-body-value">' + yLabel + '</span>';
return content;
}
}
}
},
data: {
labels: NamaBulan,
datasets: [{
label: 'Pembiayaan',
data: PembiayaanBulanan
}]
}
});
// Save to jQuery object
$chart.data('chart', ordersChart);
}
// Init chart
if ($chart.length) {
initChart($chart);
}
})();
//
// Charts
//
'use strict';
//
// Sales chart
//
var SalesChart = (function() {
// Variables
var $chart = $('#chart-sales');
// Methods
function init($chart) {
var PembiayaanBulanan = new Array();
var BayaranBulanan = new Array();
var NamaBulan = new Array();
$.each(datafin,function(index,finance){
PembiayaanBulanan.push(finance['pembiayaan']);
BayaranBulanan.push(finance['bayaran']);
NamaBulan.push(finance['namabulan']);
});
const formatter = new Intl.NumberFormat('en-US', {
});
var salesChart = new Chart($chart, {
type: 'bar',
options: {
scales: {
yAxes: [{
gridLines: {
color: Charts.colors.gray[900],
zeroLineColor: Charts.colors.gray[900]
},
ticks: {
callback: function(value) {
if (!(value % 10)) {
return 'RM' + formatter.format(value);
}
}
}
}]
},
tooltips: {
callbacks: {
label: function(item, data) {
var label = data.datasets[item.datasetIndex].label || '';
var yLabel = item.yLabel;
var content = '';
if (data.datasets.length > 1) {
content += '<span class="popover-body-label mr-auto">' + label + '</span>';
}
content += '<span class="popover-body-value">RM' + formatter.format(yLabel) + '</span>';
return content;
}
}
}
},
data: {
labels: NamaBulan,
datasets: [{
label: 'Prestasi',
data: BayaranBulanan
}]
}
});
// Save to jQuery object
$chart.data('chart', salesChart);
};
// Events
if ($chart.length) {
init($chart);
}
})();
</script>
@endsection
@@ -266,7 +266,7 @@
{{ $bayar['norujukan'] }}
</td>
<td>
<p></p>
<p id="spantransaksi{{ $counter }}"></p>
</td>
</tr>
@@ -426,7 +426,7 @@
$(this).closest('tr').find('.bayaran').val(upah);
calculateall(jenis, taglel);
return false;
}else if(bayar < parseFloat(upah))
}else if(bayar < parseFloat(upah) && parseFloat(upah) !== 0.00)
{
$("#bayarsbmt").prop('disabled', false);
Swal.fire(
@@ -460,7 +460,10 @@
});
$('#selepas_tawarruq').find('input[name=txtbayarantawarruq]').each(function() {
$('#selepas_tawarruq').find('input[name=txtbayarantawarruq]').each(function(index) {
$('#spantransaksi' + (index+1)).text(formatter.format(this.value));
sumtawarruq += parseFloat(this.value) || 0;
if (this.value <= 0 || this.value == '') {
@@ -36,7 +36,7 @@
</nav>
</div>
</div>
{{--
<div class="row justify-space-between py-2">
<div class="col-lg-6 col-md-8 col-sm-6 mx-auto">
<div class="nav-wrapper position-relative end-0">
@@ -49,7 +49,7 @@
</ul>
</div>
</div>
</div>
</div> --}}
<div class="container col-11 shadow-lg p-3 bg-white rounded">
<div class="tab-content tab-space">
@@ -66,11 +66,12 @@
<thead class="thead-light">
<tr>
<th>#</th>
<th>Ar-Rahn</th>
<th>No Rujukan</th>
<th>Pembiayaan Asal</th>
<th>Baki Pembiayaan</th>
{{-- <th>Keuntungan (6bulan)</th> --}}
<th>Keuntungan Semasa</th>
<th>Status</th>
</tr>
</thead>
<tbody class="list">
@@ -107,6 +108,12 @@
<input type="checkbox" name="chkboxsag[]" value="{{ $bt['norujukan'] }}" id="sag-{{ $loop->iteration }}" data-norujukan="{{ $bt['norujukan'] }}" {{ ($searchonline) ? 'disabled' : '' }} />
{{-- <i data-toggle="tooltip" title="Hooray!" class="fas fa-exclamation-circle ml-3 text-right" style="font-size: 20px;"></i> --}}
</td>
<td>
@php
$namacawangan = Http::get(config('api.url') . '/api/cawangan/detail/' . $bt['kodcaw'] )->json();
echo substr($namacawangan[0]['namacaw'],8);
@endphp
</td>
<th scope="row">
<div class="media align-items-center">
<div class="media-body">
@@ -123,12 +130,14 @@
<td>
{{ number_format($bt['bakipjm'],2) }}
</td>
{{-- <td>
{{ number_format($bt['bakiupah'],2) }}
</td> --}}
<td>
{{ is_numeric($koskeuntungan) ? number_format($koskeuntungan,2) : $koskeuntungan }}
</td>
<td>
@if($bt['taglel'] === 1)
<span class="badge alert-danger">Akan Dilelong</span>
@endif
</td>
</tr>
@endif
@endforeach
@@ -142,7 +151,7 @@
</div>
<div class="d-flex justify-content-end mt-2">
<button type="submit" class="btn btn-primary" onclick="loadingbtn();">Checkout <span class="rounded bg-red ml-2 pr-1 pl-1" id="totalsag">0</span></button>
<button type="submit" class="btn btn-primary" onclick="loadingbtn();">Checkout <span class="badge alert-warning text-light font-weight-bold" style="font-size:12px;" id="totalsag">0</span></button>
</div>
</form>
+1 -1
View File
@@ -82,7 +82,7 @@
</div>
<div class="card-body text-center">
<h5 class="font-weight-normal">
<a>Ringkasan Transaksi</a>
<a>Ringkasan Transaksi Pembiayaan</a>
</h5>
<a type="button" href="{{ route('analisa.index') }}" class="btn bg-gradient-primary btn-sm mb-0 mt-3">Enter</a>
</div>
@@ -84,7 +84,7 @@
<hr class="dark my-md-6 mt-2 mx-7"> -->
<div class="container col-11 shadow-lg p-3 mb-5 bg-white rounded">
<div class="card-header border-0">
<h5 class="mb-0 text-primary">Tawarruq</h5>
<h5 class="mb-0 text-primary">Transaksi Bayaran</h5>
</div>
<!-- Light table -->
<div class="table-responsive table-bordered">
@@ -144,7 +144,7 @@
<!-- <hr class="dark my-md-6 mt-2 mx-7"> -->
<div class="container col-11 shadow-lg p-3 mb-5 bg-white rounded">
<div class="card-header border-0">
<h5 class="mb-0 text-primary">Penyata Terdahulu</h5>
<h5 class="mb-0 text-primary">Penyata Yang Sudah Ditebus</h5>
</div>
<!-- Light table -->
<div class="table-responsive table-bordered">
@@ -163,6 +163,7 @@
</thead>
<tbody class="list">
@foreach($sudah_tebus as $index=>$st)
@if($st['hargajualan'] != '')
<tr style="text-align: center;">
<th scope="row">
<div class="media align-items-center">
@@ -193,6 +194,7 @@
{{ $st['t_update'] }}
</td>
</tr>
@endif
@endforeach
</tbody>
</table>