]> _ Git - fluidbook-toolbox.git/commitdiff
wip #5414
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 24 Aug 2022 11:56:06 +0000 (13:56 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 24 Aug 2022 11:56:06 +0000 (13:56 +0200)
app/Http/Controllers/Admin/Operations/Tools/JSON2Excel.php
app/Util/Excel.php [deleted file]
composer.lock
resources/views/fields/fluidbook_chapters.blade.php

index dbd320aa9679d28977fa61277a5cd72d4398c009..b8417bf208307dca89cc4f7d94472557ec311fef 100644 (file)
@@ -5,11 +5,12 @@ namespace App\Http\Controllers\Admin\Operations\Tools;
 use Cubist\Backpack\Magic\Fields\Code;
 use Cubist\Backpack\Magic\Fields\Text;
 use Cubist\Backpack\Magic\Form;
+use Cubist\Excel\Excel;
 use Cubist\Util\Files\Files;
 use Cubist\Util\Str;
-use PhpOffice\PhpSpreadsheet\Spreadsheet;
-use PhpOffice\PhpSpreadsheet\Style\Alignment;
-use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+use PhpOffice\PhpSpreadsheet\Exception;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
 
 trait JSON2Excel
 {
@@ -19,15 +20,20 @@ trait JSON2Excel
         $form->setTitle(__('Convertir du JSON en excel'));
         $form->setSubmitLabel(__('Convertir'));
         $form->setSubmitIcon('la la-file-excel');
-        $form->addField('name', Text::class, __('Nom du fichier'), ['placeholder' => 'json', 'suffix' => '.xlsx']);
+        $form->addField('filename', Text::class, __('Nom du fichier'), ['placeholder' => 'json', 'suffix' => '.xlsx']);
         $form->addField('json', Code::class, __('Contenu JSON'), ['language' => 'js']);
         return view('tools.form', ['form' => $form]);
     }
 
+    /**
+     * @throws NotFoundExceptionInterface
+     * @throws ContainerExceptionInterface
+     * @throws Exception
+     */
     public function dojson2excel()
     {
         $json = request()->get('json');
-        $name = request()->get('name', 'json');
+        $name = request()->get('filename', 'json');
         $safename = Str::slug($name);
         $data = json_decode($json, true);
         $first = true;
@@ -41,22 +47,7 @@ trait JSON2Excel
         }
 
         $tmpfile = Files::tempnam() . '.xlsx';
-
-        $spreadsheet = new Spreadsheet();
-        $sheet = $spreadsheet->getActiveSheet();
-        $sheet->setTitle($name);
-        $sheet->fromArray($excelData);
-
-        $highest = $sheet->getHighestRowAndColumn();
-        $sheet->getStyle('A1:' . $highest['column'] . '1')->applyFromArray(['font' => ['bold' => true,]]);
-
-        foreach ($sheet->getColumnIterator() as $column) {
-            $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
-        }
-        $sheet->getStyle('A1:' . $highest['column'] . $highest['row'])->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
-
-        $writer = new Xlsx($spreadsheet);
-        $writer->save($tmpfile);
+        Excel::fromArray($name, $excelData, null, $tmpfile);
 
         return response()->download($tmpfile, $safename . '.xlsx')->deleteFileAfterSend(true);
 
diff --git a/app/Util/Excel.php b/app/Util/Excel.php
deleted file mode 100644 (file)
index 83ef90f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace App\Util;
-
-class Excel
-{
-
-}
index d5f5e8d706f309693f66da5da0d4a5ce76258c3e..1716e83142d2e022cdf8fce704afed7405b27769 100644 (file)
             "source": {
                 "type": "git",
                 "url": "git://git.cubedesigners.com/cubist_excel.git",
-                "reference": "f5d72b0bbf09fd9d0037ea107839946ac77997e4"
+                "reference": "b6f1ddf50862ffef4dfaf50836d5bfad02a66152"
             },
             "dist": {
                 "type": "tar",
-                "url": "https://composer.cubedesigners.com/dist/cubist/excel/cubist-excel-dev-master-421b6a.tar",
-                "reference": "f5d72b0bbf09fd9d0037ea107839946ac77997e4",
-                "shasum": "d33eed52497f10dab39a583e2f4ed44d66fe646f"
+                "url": "https://composer.cubedesigners.com/dist/cubist/excel/cubist-excel-dev-master-f2dc61.tar",
+                "reference": "b6f1ddf50862ffef4dfaf50836d5bfad02a66152",
+                "shasum": "71e74b43b9740684f4a4bf3cdb151216223fee1d"
             },
             "require": {
                 "cubist/util": "dev-master",
                 }
             ],
             "description": "Excel files manipulation",
-            "time": "2022-08-24T11:02:03+00:00"
+            "time": "2022-08-24T11:32:02+00:00"
         },
         {
             "name": "cubist/gtag",
             "source": {
                 "type": "git",
                 "url": "git://git.cubedesigners.com/cubist_util.git",
-                "reference": "787856a609e73933d86be1bfd65c106b93d01805"
+                "reference": "5d9c2dbf534fb8fa447c9d73c267768107e4433a"
             },
             "dist": {
                 "type": "tar",
-                "url": "https://composer.cubedesigners.com/dist/cubist/util/cubist-util-dev-master-805791.tar",
-                "reference": "787856a609e73933d86be1bfd65c106b93d01805",
-                "shasum": "f00eeb374afc43252615e6ec33c173fd97d694f7"
+                "url": "https://composer.cubedesigners.com/dist/cubist/util/cubist-util-dev-master-5981df.tar",
+                "reference": "5d9c2dbf534fb8fa447c9d73c267768107e4433a",
+                "shasum": "66115893dfef15fe1e08d8632de2200fa3b88c04"
             },
             "require": {
                 "cubist/net": "dev-master",
                 }
             ],
             "description": "Utilities class",
-            "time": "2022-08-24T08:49:41+00:00"
+            "time": "2022-08-24T09:39:22+00:00"
         },
         {
             "name": "cviebrock/eloquent-sluggable",
index 14ad098179681aaaaed13bc4ba57a03d7c4c9fe9..be5eedbcbba78de36d80edbdbe65617442f20fa9 100644 (file)
@@ -1,94 +1,86 @@
 @if (!isset($seenFluidbookChapters))
-@php $seenFluidbookChapters=true;@endphp
-@push('crud_fields_scripts')
-<script>
-    $(function () {
-        $(document).trigger('fluidbook_chapters.level.change');
-        $(document).on('click', '.chaptersExportExcel', function () {
-            var json = $(this).closest('.bunchmultiple[data-values]').find('.hiddenfield').eq(0).val();
-            var form = $('<form action="{{backpack_url('
-            tools / dojson2excel
-            ')}}" method="post">' +
-            '<input type="hidden" name="json" value="" />' +
-            '<input type="hidden" name="name" value="" />' +
-            '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
-            '</form>'
-        )
-            ;
-            $('body').append(form);
-            $(form).find('input[name="json"]').val(json);
-            $(form).find('input[name="name"]').val('chapters_' + $('input[name="id"]').val());
-            form.submit();
-            return false;
-        });
-        $(document).on('click', '.chaptersImportExcel', function () {
-            var form = $('<form style="opacity:0;position:absolute;top:0;left:0;" action="{{backpack_url('
-            opentools / doexcel2json
-            ')}}" enctype="multipart/form-data" method="post">' +
-            '<input type="file" name="file" value="" accept=".xlsx" />' +
-            '<input type="hidden" name="dataorg" value="excelToArrayKeyVars" />' +
-            '<input type="hidden" name="format" value="json" />' +
-            '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
-            '</form>'
-        )
-            ;
-            $('body').append(form);
-            var file = $(form).find('input[type="file"]');
-            $(file).on('change', function () {
-                $(form).ajaxSubmit({
-                    success: function (data) {
-                        var bm = $('[data-bunch-name="{{$field['
-                        name
-                        ']}}"]'
-                    ).
-                        data('bunchmultiple');
-                        bm.replaceData(data[0].data);
-                    }
+    @php $seenFluidbookChapters=true;@endphp
+    @push('crud_fields_scripts')
+        <script>
+            $(function () {
+                $(document).trigger('fluidbook_chapters.level.change');
+                $(document).on('click', '.chaptersExportExcel', function () {
+                    var json = $(this).closest('.bunchmultiple[data-values]').find('.hiddenfield').eq(0).val();
+                    var form = $('<form action="{{backpack_url('tools/dojson2excel')}}" method="post">' +
+                            '<input type="hidden" name="json" value="" />' +
+                            '<input type="hidden" name="filename" value="" />' +
+                            '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
+                            '</form>'
+                        )
+                    ;
+                    $('body').append(form);
+                    $(form).find('input[name="json"]').val(json);
+                    $(form).find('input[name="name"]').val('chapters_' + $('input[name="id"]').val());
+                    form.submit();
+                    return false;
+                });
+                $(document).on('click', '.chaptersImportExcel', function () {
+                    var form = $('<form style="opacity:0;position:absolute;top:0;left:0;" action="{{backpack_url('opentools/doexcel2json')}}" enctype="multipart/form-data" method="post">' +
+                            '<input type="file" name="file" value="" accept=".xlsx" />' +
+                            '<input type="hidden" name="dataorg" value="excelToArrayKeyVars" />' +
+                            '<input type="hidden" name="format" value="json" />' +
+                            '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
+                            '</form>'
+                        )
+                    ;
+                    $('body').append(form);
+                    var file = $(form).find('input[type="file"]');
+                    $(file).on('change', function () {
+                        $(form).ajaxSubmit({
+                            success: function (data) {
+                                var bm = $('[data-bunch-name="{{$field['name']}}"]').data('bunchmultiple');
+                                bm.replaceData(data[0].data);
+                            }
+                        });
+                    });
+                    file.trigger('click');
+                    return false;
                 });
             });
-            file.trigger('click');
-            return false;
-        });
-    });
 
 
-</script>
-@endpush
+        </script>
+    @endpush
 
-@push('crud_fields_styles')
-<style>
-    .bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize .form-group {
-        padding: 0 2px !important;
-    }
+    @push('crud_fields_styles')
+        <style>
+            .bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize .form-group {
+                padding: 0 2px !important;
+            }
 
-    .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="label"] {
-        width: calc(100% - 360px);
-    }
+            .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="label"] {
+                width: calc(100% - 360px);
+            }
 
-    .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="page"] {
-        width: 100px;
-    }
+            .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="page"] {
+                width: 100px;
+            }
 
-    .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="color"] {
-        width: 54px;
-    }
+            .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="color"] {
+                width: 54px;
+            }
 
-    .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="decoration"] {
-        width: 160px;
-    }
-</style>
-@endpush
+            .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="decoration"] {
+                width: 160px;
+            }
+        </style>
+    @endpush
 @endif
 
 @php
-$additionalButtons='<a href="#" class="btn btn-sm btn-secondary chaptersImportExcel"><i class="la la-file-excel"></i>
-    '.__('Remplacer par le contenu d\'un fichier excel').'</a>';
-$additionalButtons.='<a href="#" class="btn btn-sm btn-success chaptersExportExcel"><i class="la la-file-excel"></i>
-    '.__('Exporter au format excel').'</a>';
+    $additionalButtons='<a href="#" class="btn btn-sm btn-secondary chaptersImportExcel"><i class="la la-file-excel"></i>
+        '.__('Remplacer par le contenu d\'un fichier excel').'</a>';
+    $additionalButtons.='<a href="#" class="btn btn-sm btn-success chaptersExportExcel"><i class="la la-file-excel"></i>
+        '.__('Exporter au format excel').'</a>';
 @endphp
 @include('cubist_back::fields.bunch_oneline_multiple')
 @php
-$additionalButtons='';
+    $additionalButtons='';
 @endphp