You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
8.5 KiB
PHTML
214 lines
8.5 KiB
PHTML
@extends('temp.admin')
|
|
@php
|
|
use NN\Module\DB;
|
|
use NN\Module\View;
|
|
@endphp
|
|
@section("content")
|
|
|
|
<div class="content-header row">
|
|
<div class="content-header-left col-md-6 col-12 mb-2 breadcrumb-new">
|
|
<h3 class="content-header-title mb-0 d-inline-block">Import Data</h3>
|
|
<div class="row breadcrumbs-top d-inline-block">
|
|
<div class="breadcrumb-wrapper col-12">
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item active" id="importdata">Rekening</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="content-header-right col-md-6 col-12">
|
|
<div class="btn-group float-md-right">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="content-body">
|
|
<section id="dasbor">
|
|
<div class="row mb-4">
|
|
|
|
<div class="col-sm-12">
|
|
<div class="card">
|
|
<div class="card-content">
|
|
<div class="card-body sales-growth-chart">
|
|
<p style="padding: 5px 10px;border-radius:10px; border: 1px solid #ddddff;"><i class="la la-info-circle"></i>
|
|
Perhatian import data rekening akan mereset semua data rekening
|
|
, funsi ini hanya didilakukan untuk database awal. untuk kode app pada table format diisi (usp) untuk koperasi dan (acc) untuk accounting.
|
|
<a href="{{ASSET}}/excel/main.xlsx">disini</a>
|
|
</p>
|
|
<div style="display:grid;grid-template-columns: auto 150px; grid-gap:5px;">
|
|
<input type="file" class="form-control" id="demo" accept=".xls,.xlsx">
|
|
<button class="btn btn-primary btn-sm" onclick="window._uploadData()">Update Data Anggota</button>
|
|
</div>
|
|
</div>
|
|
<div class="card-body sales-growth-chart" id="table-x">
|
|
<div onclick="_id('demo').click()" style="padding: 20px; border: 1px solid #ddd; border-radius: 10px; cursor: pointer; text-align :center;"> Upload file excel </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
|
|
@endsection
|
|
|
|
@section('css')
|
|
<style>
|
|
td{
|
|
white-space:nowrap;
|
|
}
|
|
</style>
|
|
@endsection
|
|
@section('script')
|
|
<script>
|
|
Array.prototype.addItem = function (kode, val) {
|
|
var t = this;
|
|
return t.map(function(e){
|
|
var f = e;
|
|
f[kode] = val;
|
|
return f;
|
|
})
|
|
};
|
|
setTimeout(() => {
|
|
document.querySelector('.modern-nav-toggle').click();
|
|
}, 1000);
|
|
const xTable = _id('table-x');
|
|
document.getElementById("demo").onchange = evt => {
|
|
var _ld = cssLoader();
|
|
var reader = new FileReader();
|
|
reader.addEventListener("loadend", evt => {
|
|
var workbook = XLSX.read(evt.target.result, {type: "binary"}),
|
|
worksheet = workbook.Sheets[workbook.SheetNames[0]],
|
|
range = XLSX.utils.decode_range(worksheet["!ref"]);
|
|
|
|
var data = [];
|
|
for (let row=range.s.r; row<=range.e.r; row++) {
|
|
let i = data.length;
|
|
data.push([]);
|
|
for (let col=range.s.c; col<=range.e.c; col++) {
|
|
let cell = worksheet[XLSX.utils.encode_cell({r:row, c:col})];
|
|
if(cell != undefined){
|
|
data[i].push(cell.v);
|
|
}else{
|
|
data[i].push('-');
|
|
}
|
|
}
|
|
}
|
|
if(data[0] != undefined){
|
|
var nod = [];
|
|
data[0].forEach(function(s, i){
|
|
if(s != '-'){
|
|
nod.push({
|
|
id: i,
|
|
val: s
|
|
});
|
|
}
|
|
});
|
|
var snod = data;
|
|
snod.shift();
|
|
var sObject = snod.map(function(df, i){
|
|
var f ={};
|
|
nod.forEach(function(o){
|
|
if(o.val == 'tgllahir'){
|
|
if(typeof df[o.id] === 'number'){
|
|
f[o.val] = tanggal(ExcelDateToJSDate(df[o.id])).normal;
|
|
}else{
|
|
f[o.val] = df[o.id].fixMonth();
|
|
}
|
|
}else if(o.val == 'masuk'){
|
|
var q = df[o.id].toString().replaceMonth().split(' ');
|
|
if(q.length > 1){
|
|
f[o.val] = q[1]+'-'+q[0]+'-01';
|
|
}else{
|
|
f[o.val] = q[0]+'-01-01';
|
|
}
|
|
}else{
|
|
f[o.val] = df[o.id];
|
|
}
|
|
});
|
|
return f;
|
|
});
|
|
var sArray = snod.map(function(df, i){
|
|
var f =[];
|
|
nod.forEach(function(o){
|
|
if(o.val == 'tgllahir'){
|
|
if(typeof df[o.id] === 'number'){
|
|
f.push(tanggal(ExcelDateToJSDate(df[o.id])).normal);
|
|
}else{
|
|
if(df[o.id] == '-'){
|
|
f.push('0000-00-00');
|
|
}else{
|
|
f.push(df[o.id].fixMonth());
|
|
}
|
|
};
|
|
}else if(o.val == 'masuk'){
|
|
var q = df[o.id].toString().replaceMonth().split(' ');
|
|
if(q.length > 1){
|
|
f.push(q[1]+'-'+q[0]+'-01');
|
|
}else{
|
|
f.push(q[0]+'-01-01');
|
|
}
|
|
}else{
|
|
f.push(df[o.id]);
|
|
}
|
|
});
|
|
return f;
|
|
});
|
|
var nId = 'table-'+Date.now();
|
|
xTable.innerHTML = ``;
|
|
xTable.innerHTML = `
|
|
<table id="${nId}" style="width:100%;" class="table table-bordered">
|
|
<thead class="bg-primary text-white">
|
|
<tr>
|
|
${nod.map(function(o){
|
|
return `<th>${o.val}</th>`;
|
|
}).join('')}
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
`;
|
|
setTimeout(() => {
|
|
var op = {
|
|
dom: 'Bfrtip',
|
|
scrollY: '250px',
|
|
scrollX: true,
|
|
scrollCollapse: true,
|
|
paging: true,
|
|
"lengthChange": true,
|
|
"lengthMenu": [[25, 50, 100, 500, 1000], [25, 50, 100, 500, "Max"]],
|
|
"pageLength": 50
|
|
};
|
|
var tbx = $('#'+nId).DataTable(op);
|
|
console.log(nod);
|
|
console.log(sObject);
|
|
window.sArray = sArray;
|
|
window.sObject = sObject;
|
|
window.proccess = [
|
|
{
|
|
table: DeleteTable('acc', {}, '{{PATH}}/upload/excel/rekening'),
|
|
data: sObject.addItem('username', username).addItem('userlog',timestamp()).ToInsert('acc')
|
|
}
|
|
];
|
|
sArray.forEach(function(d){
|
|
tbx.row.add(d);
|
|
});
|
|
tbx.draw(true);
|
|
_ld.remove();
|
|
}, 10);
|
|
};
|
|
});
|
|
reader.readAsArrayBuffer(evt.target.files[0]);
|
|
};
|
|
window._uploadData = function(){
|
|
var _ld = cssLoader();
|
|
upload('{{PATH}}/upload/data/excel/api', '', 'req.data', btoa(JSON.stringify(window.proccess)), (a) => { }, (b) => {
|
|
console.log(b);
|
|
_ld.remove();
|
|
Swal('Info', 'Data update', 'success')
|
|
});
|
|
};
|
|
</script>
|
|
@endsection |