export functionality refactored
This commit is contained in:
parent
9eb1deb3fa
commit
9578f7609b
|
|
@ -21,7 +21,7 @@ class DataGridExport implements FromView, ShouldAutoSize
|
|||
*
|
||||
* @var mixed
|
||||
*/
|
||||
public $gridData;
|
||||
protected $gridData = array();
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
|
|
@ -40,23 +40,17 @@ class DataGridExport implements FromView, ShouldAutoSize
|
|||
*/
|
||||
public function view(): View
|
||||
{
|
||||
$pagination = false;
|
||||
$results = [];
|
||||
$columns = [];
|
||||
$columns = array();
|
||||
|
||||
foreach($this->gridData as $key => $data) {
|
||||
if ($key == 'collection') {
|
||||
$results = $data['data'];
|
||||
}
|
||||
foreach($this->gridData as $key => $gridData) {
|
||||
$columns = array_keys((array) $gridData);
|
||||
|
||||
if ($key == 'columns') {
|
||||
$columns = $data;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return view('admin::export.export', [
|
||||
'results' => $results,
|
||||
return view('admin::export.temp', [
|
||||
'columns' => $columns,
|
||||
'records' => $this->gridData,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -37,28 +37,43 @@ class ExportController extends Controller
|
|||
public function export()
|
||||
{
|
||||
$criteria = request()->all();
|
||||
$format = $criteria['format'];
|
||||
|
||||
$gridName = explode('\\', $criteria['gridName']);
|
||||
|
||||
$path = '\Webkul\Admin\DataGrids'.'\\'.last($gridName);
|
||||
|
||||
$gridInstance = new $path;
|
||||
$proceed = false;
|
||||
|
||||
dd($gridInstance->export());
|
||||
foreach($this->exportableGrids as $exportableGrid) {
|
||||
if(last($gridName) == $exportableGrid) {
|
||||
$proceed = true;
|
||||
}
|
||||
}
|
||||
|
||||
die;
|
||||
// $results = request()->input('gridData');
|
||||
if($proceed) {
|
||||
$gridInstance = new $path;
|
||||
|
||||
// $data = json_decode($results, true);
|
||||
$records = array();
|
||||
$records = $gridInstance->export();
|
||||
|
||||
// $results = (object) $data;
|
||||
if(count($records) == 0) {
|
||||
session()->flash('warning', trans('admin::app.export.no-records'));
|
||||
|
||||
// $file_name = request()->all('file_name');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
if ($format == 'csv') {
|
||||
return Excel::download(new DataGridExport($records), last($gridName).'.csv');
|
||||
} else if($format == 'xls') {
|
||||
return Excel::download(new DataGridExport($records), last($gridName).'.xlsx');
|
||||
} else {
|
||||
session()->flash('warning', trans('admin::app.export.illegal-format'));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
} else {
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
// if (request()->all()['format'] == 'csv') {
|
||||
// return Excel::download(new DataGridExport($results), $file_name.'.csv');
|
||||
// } else {
|
||||
// return Excel::download(new DataGridExport($results), $file_name.'.xlsx');
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
|
@ -786,7 +786,9 @@ return [
|
|||
'duplicate-error' => 'Identifier must be unique, duplicate identifier :identifier at row :position.',
|
||||
'enough-row-error' => 'file has not enough rows',
|
||||
'allowed-type' => 'Allowed Type :',
|
||||
'file-type' => 'csv, xls, xlsx.'
|
||||
'file-type' => 'csv, xls, xlsx.',
|
||||
'no-records' => 'Nothing to export',
|
||||
'illegal-format' => 'Error! This type of format is either not supported or its illegal format'
|
||||
],
|
||||
|
||||
'response' => [
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@
|
|||
</div>
|
||||
|
||||
<div class="page-content">
|
||||
@inject('customer','Webkul\Admin\DataGrids\CustomerDataGrid')
|
||||
{!! $customer->render() !!}
|
||||
@inject('customerGrid','Webkul\Admin\DataGrids\CustomerDataGrid')
|
||||
{!! $customerGrid->render() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -41,51 +41,6 @@
|
|||
@stop
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="export-form-template">
|
||||
<form method="POST" action="{{ route('admin.datagrid.export') }}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<?php
|
||||
$data = json_encode((array) $customer);
|
||||
?>
|
||||
|
||||
<input type="hidden" name="gridData" value="{{ $data }}">
|
||||
<input type="hidden" name="file_name" value="Customer">
|
||||
|
||||
<div class="control-group">
|
||||
<label for="format" class="required">
|
||||
{{ __('admin::app.export.format') }}
|
||||
</label>
|
||||
<select name="format" class="control" v-validate="'required'">
|
||||
<option value="xls">{{ __('admin::app.export.xls') }}</option>
|
||||
<option value="csv">{{ __('admin::app.export.csv') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
|
||||
{{ __('admin::app.export.export') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('export-form', {
|
||||
template: '#export-form-template',
|
||||
methods: {
|
||||
closeModal () {
|
||||
this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@include('admin::export.export', ['gridName' => $customerGrid])
|
||||
@endpush
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,39 @@
|
|||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@foreach ($columns as $column)
|
||||
<th>{{ $column['index'] }}</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($results as $result)
|
||||
<tr>
|
||||
@foreach ($columns as $column)
|
||||
<td class="">{{ $result[$column['index']] }} </td>
|
||||
@endforeach
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<script type="text/x-template" id="export-form-template">
|
||||
<form method="POST" action="{{ route('admin.datagrid.export') }}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<input type="hidden" name="gridName" value="{{ get_class($gridName) }}">
|
||||
|
||||
<div class="control-group">
|
||||
<label for="format" class="required">
|
||||
{{ __('admin::app.export.format') }}
|
||||
</label>
|
||||
|
||||
<select name="format" class="control" v-validate="'required'">
|
||||
<option value="xls">{{ __('admin::app.export.xls') }}</option>
|
||||
<option value="csv">{{ __('admin::app.export.csv') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
|
||||
{{ __('admin::app.export.export') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('export-form', {
|
||||
template: '#export-form-template',
|
||||
methods: {
|
||||
closeModal () {
|
||||
this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@foreach ($columns as $key => $value)
|
||||
<th>{{ $value }}</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($records as $record)
|
||||
<tr>
|
||||
@foreach($record as $column => $value)
|
||||
<td>{{ $value }} </td>
|
||||
@endforeach
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -37,50 +37,5 @@
|
|||
@stop
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="export-form-template">
|
||||
<form method="POST" action="{{ route('admin.datagrid.export') }}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<?php
|
||||
$data = json_encode((array) $orderInvoicesGrid);
|
||||
?>
|
||||
|
||||
<input type="hidden" name="gridData" value="{{ $data }}">
|
||||
<input type="hidden" name="file_name" value="Invoice">
|
||||
|
||||
<div class="control-group">
|
||||
<label for="format" class="required">
|
||||
{{ __('admin::app.export.format') }}
|
||||
</label>
|
||||
<select name="format" class="control" v-validate="'required'">
|
||||
<option value="xls">XLS</option>
|
||||
<option value="csv">CSV</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
|
||||
{{ __('admin::app.export.export') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('export-form', {
|
||||
template: '#export-form-template',
|
||||
methods: {
|
||||
closeModal () {
|
||||
this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@include('admin::export.export', ['gridName' => $orderInvoicesGrid])
|
||||
@endpush
|
||||
|
|
@ -37,49 +37,5 @@
|
|||
@stop
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="export-form-template">
|
||||
<form method="POST" action="{{ route('admin.datagrid.export') }}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<?php
|
||||
$data = json_encode((array) $orderGrid);
|
||||
?>
|
||||
|
||||
<input type="hidden" name="gridName" value="{{ get_class($orderGrid) }}">
|
||||
|
||||
<div class="control-group">
|
||||
<label for="format" class="required">
|
||||
{{ __('admin::app.export.format') }}
|
||||
</label>
|
||||
<select name="format" class="control" v-validate="'required'">
|
||||
<option value="xls">XLS</option>
|
||||
<option value="csv">CSV</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
|
||||
{{ __('admin::app.export.export') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('export-form', {
|
||||
template: '#export-form-template',
|
||||
methods: {
|
||||
closeModal () {
|
||||
this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@include('admin::export.export', ['gridName' => $orderGrid])
|
||||
@endpush
|
||||
|
|
@ -37,50 +37,5 @@
|
|||
@stop
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="export-form-template">
|
||||
<form method="POST" action="{{ route('admin.datagrid.export') }}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<?php
|
||||
$data = json_encode((array) $orderShipmentsGrid);
|
||||
?>
|
||||
|
||||
<input type="hidden" name="gridData" value="{{ $data }}">
|
||||
<input type="hidden" name="file_name" value="Shipment">
|
||||
|
||||
<div class="control-group">
|
||||
<label for="format" class="required">
|
||||
{{ __('admin::app.export.format') }}
|
||||
</label>
|
||||
<select name="format" class="control" v-validate="'required'">
|
||||
<option value="xls">XLS</option>
|
||||
<option value="csv">CSV</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
|
||||
{{ __('admin::app.export.export') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('export-form', {
|
||||
template: '#export-form-template',
|
||||
methods: {
|
||||
closeModal () {
|
||||
this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@include('admin::export.export', ['gridName' => $orderShipmentsGrid])
|
||||
@endpush
|
||||
|
|
@ -32,8 +32,8 @@
|
|||
</div>
|
||||
|
||||
<div class="page-content">
|
||||
@inject('taxrates', 'Webkul\Admin\DataGrids\TaxRateDataGrid')
|
||||
{!! $taxrates->render() !!}
|
||||
@inject('taxRateGrid', 'Webkul\Admin\DataGrids\TaxRateDataGrid')
|
||||
{!! $taxRateGrid->render() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -69,50 +69,5 @@
|
|||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script type="text/x-template" id="export-form-template">
|
||||
<form method="POST" action="{{ route('admin.datagrid.export') }}">
|
||||
|
||||
<div class="page-content">
|
||||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<?php
|
||||
$data = json_encode((array) $taxrates);
|
||||
?>
|
||||
|
||||
<input type="hidden" name="gridData" value="{{ $data }}">
|
||||
<input type="hidden" name="file_name" value="Tax rates">
|
||||
|
||||
<div class="control-group">
|
||||
<label for="format" class="required">
|
||||
{{ __('admin::app.export.format') }}
|
||||
</label>
|
||||
<select name="format" class="control" v-validate="'required'">
|
||||
<option value="xls">{{ __('admin::app.export.xls') }}</option>
|
||||
<option value="csv">{{ __('admin::app.export.csv') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary" @click="closeModal">
|
||||
{{ __('admin::app.export.export') }}
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('export-form', {
|
||||
template: '#export-form-template',
|
||||
methods: {
|
||||
closeModal () {
|
||||
this.$parent.closeModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@include('admin::export.export', ['gridName' => $taxRateGrid])
|
||||
@endpush
|
||||
Loading…
Reference in New Issue