From f781158e36d75792a920a629f9a8011e0473ccf9 Mon Sep 17 00:00:00 2001 From: Ludovic CANDELLIER Date: Thu, 8 Apr 2021 16:59:06 +0200 Subject: [PATCH] Fix typo --- app/Datatables/Botanic/FamiliesDataTable.php | 32 +++ app/Datatables/Botanic/GenresDataTable.php | 43 ++++ app/Datatables/Botanic/SpeciesDataTable.php | 43 ++++ app/Datatables/Botanic/VarietiesDataTable.php | 30 +++ app/Datatables/ParentDataTable.php | 204 ++++++++++++++++++ .../Shop/ArticleFamiliesDataTable.php | 28 +++ app/Datatables/Shop/ArticlesDataTable.php | 31 +++ app/Datatables/Shop/CategoriesDataTable.php | 28 +++ app/Datatables/Shop/CustomersDataTable.php | 29 +++ app/Datatables/Shop/InvoicesDataTable.php | 28 +++ app/Datatables/Shop/OrdersDataTable.php | 26 +++ app/Datatables/Shop/PackagesDataTable.php | 35 +++ .../Shop/PriceGenericCategoriesDataTable.php | 28 +++ .../Shop/PriceGenericsDataTable.php | 31 +++ app/Datatables/Shop/TagGroupsDataTable.php | 28 +++ app/Datatables/Shop/TagsDataTable.php | 30 +++ app/Datatables/Shop/UnitiesDataTable.php | 36 ++++ 17 files changed, 710 insertions(+) create mode 100644 app/Datatables/Botanic/FamiliesDataTable.php create mode 100644 app/Datatables/Botanic/GenresDataTable.php create mode 100644 app/Datatables/Botanic/SpeciesDataTable.php create mode 100644 app/Datatables/Botanic/VarietiesDataTable.php create mode 100644 app/Datatables/ParentDataTable.php create mode 100644 app/Datatables/Shop/ArticleFamiliesDataTable.php create mode 100644 app/Datatables/Shop/ArticlesDataTable.php create mode 100644 app/Datatables/Shop/CategoriesDataTable.php create mode 100644 app/Datatables/Shop/CustomersDataTable.php create mode 100644 app/Datatables/Shop/InvoicesDataTable.php create mode 100644 app/Datatables/Shop/OrdersDataTable.php create mode 100644 app/Datatables/Shop/PackagesDataTable.php create mode 100644 app/Datatables/Shop/PriceGenericCategoriesDataTable.php create mode 100644 app/Datatables/Shop/PriceGenericsDataTable.php create mode 100644 app/Datatables/Shop/TagGroupsDataTable.php create mode 100644 app/Datatables/Shop/TagsDataTable.php create mode 100644 app/Datatables/Shop/UnitiesDataTable.php diff --git a/app/Datatables/Botanic/FamiliesDataTable.php b/app/Datatables/Botanic/FamiliesDataTable.php new file mode 100644 index 00000000..aa35023d --- /dev/null +++ b/app/Datatables/Botanic/FamiliesDataTable.php @@ -0,0 +1,32 @@ +title('Nom'), + Column::make('alias'), + Column::make('latin'), + Column::make('genres_count')->title('Nb genres')->searchable(false)->addClass('text-right'), + Column::make('species_count')->title('Nb espèces')->searchable(false)->addClass('text-right'), + Column::make('varieties_count')->title('Nb variétés')->searchable(false)->addClass('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Botanic/GenresDataTable.php b/app/Datatables/Botanic/GenresDataTable.php new file mode 100644 index 00000000..0d28db6c --- /dev/null +++ b/app/Datatables/Botanic/GenresDataTable.php @@ -0,0 +1,43 @@ +withCount('species')->withCount('varieties'); + return self::buildQuery($model); + } + + public function modifier($datatables) + { + $datatables + ->editColumn('family_name', function(Genre $genre) { + return $genre->family ? $genre->family->name : ''; + }) + ->rawColumns(['genre_name', 'action']) + ; + return Parent::modifier($datatables); + } + + protected function getColumns() + { + return [ + Column::make('name')->title('Nom'), + Column::make('alias'), + Column::make('latin'), + Column::make('family.name')->data('family_name')->title('Famille'), + Column::make('species_count')->title('Nb Espèces')->searchable(false)->addClass('text-right'), + Column::make('varieties_count')->title('Nb Variétés')->searchable(false)->addClass('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Botanic/SpeciesDataTable.php b/app/Datatables/Botanic/SpeciesDataTable.php new file mode 100644 index 00000000..babe4dfc --- /dev/null +++ b/app/Datatables/Botanic/SpeciesDataTable.php @@ -0,0 +1,43 @@ +with('genre'); + return self::buildQuery($model); + } + + public function modifier($datatables) + { + $datatables + ->editColumn('genre_name', function(Specie $specie) { + return $specie->genre ? $specie->genre->name : ''; + }) + ->rawColumns(['genre_name', 'action']) + ; + return Parent::modifier($datatables); + } + + + protected function getColumns() + { + return [ + Column::make('name')->title('Nom'), + Column::make('alias'), + Column::make('genre.name')->data('genre_name')->title('Genre'), + Column::make('latin'), + Column::make('varieties_count')->title('Nb variétés')->searchable(false)->addClass('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Botanic/VarietiesDataTable.php b/app/Datatables/Botanic/VarietiesDataTable.php new file mode 100644 index 00000000..69aee4ea --- /dev/null +++ b/app/Datatables/Botanic/VarietiesDataTable.php @@ -0,0 +1,30 @@ +withCount('Articles')->select('botanic_varieties.*'); + $model = $model::joinRelations('Specie')->select('botanic_varieties.*','botanic_species.name as specie_name')->with('Specie')->withCount('Articles'); + return self::buildQuery($model); + } + + protected function getColumns() + { + return [ + Column::make('Specie.name')->data('specie_name')->title('Espèce'), + Column::make('name')->title('Nom'), + Column::make('articles_count')->title('Nb articles')->class('text-right')->searchable(false), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/ParentDataTable.php b/app/Datatables/ParentDataTable.php new file mode 100644 index 00000000..399293f1 --- /dev/null +++ b/app/Datatables/ParentDataTable.php @@ -0,0 +1,204 @@ + 'tr'] + public $colReorder = false; + public $fixedColumns = false; + public $scrollX = false; + public $scrollCollapse = true; + public $sortedColumn = 0; + public $sortedOrder = 'asc'; + public $stateSave = false; + + /** + * Build DataTable class. + * + * @param mixed $query Results from query() method. + * @return \Yajra\DataTables\DataTableAbstract + */ + public function dataTable($query) + { + return $this->modifier(datatables()->eloquent($query)); + } + + public function modifier($datatables) + { + return $this->addButtons($datatables->setRowId('{{$id}}')); + } + + /** + * Add buttons DataTable class. + * + * @param mixed $query Results from query() method. + * @return \Yajra\DataTables\DataTableAbstract + */ + public function addButtons($datatables) + { + return $datatables->addColumn('action', $this->getHtmlButtons()); + } + + public function getHtmlButtons() + { + $buttons = ''; + + // $buttons .= ''; + // $buttons .= ''; + $buttons .= ''; + $buttons .= ''; + return $buttons; + // return view('components.datatables.buttons.row_action'); + } + + public function makeColumnButtons() + { + return Column::computed('action') + ->title('') + ->exportable(false) + ->printable(false) + ->searchable(false) + ->width("74") + ->addClass('text-center text-nowrap'); + } + + public static function isFilteredByField($field) + { + return (request()->has('filters.' . $field)) ? request()->input('filters.'. $field) : (request()->has($field) ? request()->input($field) : false); + } + + /** + * Get query source of dataTable. + * + * @param \App\Family $model + * @return \Illuminate\Database\Eloquent\Builder + */ + public function buildQuery($model) + { + return $model->newQuery(); + } + + /** + * Optional method if you want to use html builder. + * + * @return \Yajra\DataTables\Html\Builder + */ + public function html() + { + return $this->buildHtml(strtolower($this->model_name) . '-table'); + } + + /** + * Optional method if you want to use html builder. + * + * @return \Yajra\DataTables\Html\Builder + */ + public function buildHtml($table_id = false, $selector = false) + { + $table_id = $table_id ? $table_id : strtolower($this->model_name) . '-table'; + $selector = $selector ? $selector : '#' . $this->model_name . '-filters'; + return $this->builder() + ->setTableId($table_id) + ->parameters($this->getParameters()) + ->columns($this->getColumns()) + ->ajax([ + 'data' => 'function(d) { d.filters = $("' . $selector . '").serializeJSON(); }', + 'url' => isset($this->url) ? $this->url : '' + ]) + ->dom($this->getDom()) + ->orderBy($this->sortedColumn,$this->sortedOrder) + ->buttons($this->getButtons()); + } + + public function getButtons() { + return [ + Button::make('export'), + Button::make('print'), + Button::make('colvis'), + Button::make('columnsToggle') + ]; + } + + public function getParameters() + { + $data = [ + 'pageLength' => 5, + 'scrollX' => $this->scrollX, + 'scrollCollapse' => $this->scrollCollapse, + 'searchDelay' => 500, + 'colReorder' => $this->colReorder, + 'fixedColumns' => $this->fixedColumns, + // 'autoWidth' => false, + 'stateSave' => $this->stateSave + ]; + if ($this->rowReorder) { + $data['rowReorder'] = ['selector' => $this->rowReorderSelector]; + } + return $data; + } + + public function getDom() + { + $dom = ''; + // $dom .= $this->getDatatablesHeaderDefault(); + $dom .= "rt"; + $dom .= $this->getDatatablesFooterDefault(); + return $dom; + } + + public function getDatatablesHeader() { + return view('components.datatables.header'); + } + + public function getDatatablesHeaderDefault() { + // return "
"; + /* + + $dom = 't<"row datatable-pager light"<"col-md-12"' + . '<"datatable-more-export-buttons filter-buttons pull-left">' + . '<"datatable-more-export-favorites-buttons filter-buttons pull-left">' + . '<"datatable-more-export-basket-buttons filter-buttons pull-left">' + . '<"datatable-download-buttons filter-buttons pull-left">' + . '>>' + . '<"dt-toolbar-footer"<"col"i><"col pull-right datatable-pager light nopadding-right"p>>'; + + */ + + $dom = "<'row dt-toolbar-header'<'col-lg-4'l><'col-lg-4'B><'col-lg-4 text-right add'f>>"; + return $dom; + // return 't<"row datatable-pager light"<"col-md-12"<"datatable-more-export-buttons filter-buttons pull-left"><"datatable-more-export-favorites-buttons filter-buttons pull-left"><"datatable-more-export-basket-buttons filter-buttons pull-left"><"datatable-download-buttons filter-buttons pull-left">>><"dt-toolbar-footer"<"col-md-6"i><"col-md-6 pull-right datatable-pager light nopadding-right"p>>'; + + } + + public function getDatatablesFooterDefault() { + return "<'row pt-3 dt-toolbar-footer'<'col-md-6'i><'col-md-6'p>>"; + } + + /** + * Get filename for export. + * + * @return string + */ + protected function filename() + { + return self::buildFilename($this->model_name); + } + + /** + * Get filename for export. + * + * @return string + */ + protected function buildFilename($name) + { + return $name . '_' . date('YmdHis'); + } +} \ No newline at end of file diff --git a/app/Datatables/Shop/ArticleFamiliesDataTable.php b/app/Datatables/Shop/ArticleFamiliesDataTable.php new file mode 100644 index 00000000..af307353 --- /dev/null +++ b/app/Datatables/Shop/ArticleFamiliesDataTable.php @@ -0,0 +1,28 @@ +title('Nom'), + Column::make('articles_count')->title('Nb articles')->addClass('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/ArticlesDataTable.php b/app/Datatables/Shop/ArticlesDataTable.php new file mode 100644 index 00000000..3bb7143a --- /dev/null +++ b/app/Datatables/Shop/ArticlesDataTable.php @@ -0,0 +1,31 @@ +select('shop_articles.*','family.name as family_name')->join('shop_article_families as family', 'family.id', '=', 'shop_articles.article_family_id')->groupBy('shop_articles.id'); + $model = $model::with('article_family')->select('shop_articles.*'); + // $model = $model::joinRelations('Family')->select('shop_articles.*','shop_article_families.name as family_name'); + return self::buildQuery($model); + } + + protected function getColumns() + { + return [ + Column::make('article_family.name')->title('Famille')->orderable(false), + Column::make('name')->title('Nom'), + self::makeColumnButtons(), + ]; + + } + +} diff --git a/app/Datatables/Shop/CategoriesDataTable.php b/app/Datatables/Shop/CategoriesDataTable.php new file mode 100644 index 00000000..d70a2955 --- /dev/null +++ b/app/Datatables/Shop/CategoriesDataTable.php @@ -0,0 +1,28 @@ +title('Nom'), + Column::make('articles_count')->title('Nb Articles')->class('text-right')->searchable(false), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/CustomersDataTable.php b/app/Datatables/Shop/CustomersDataTable.php new file mode 100644 index 00000000..a8fddbe0 --- /dev/null +++ b/app/Datatables/Shop/CustomersDataTable.php @@ -0,0 +1,29 @@ +title('Nom'), + Column::make('address')->title('Adresse'), + Column::make('zipcode')->title('Code postal'), + Column::make('city')->title('Ville'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/InvoicesDataTable.php b/app/Datatables/Shop/InvoicesDataTable.php new file mode 100644 index 00000000..f13b576e --- /dev/null +++ b/app/Datatables/Shop/InvoicesDataTable.php @@ -0,0 +1,28 @@ +select('shop_packages.*'); + $model = self::filterByFamily($model); + return self::buildQuery($model); + } + + public static function filterByFamily($model, $family_id = false) + { + $family_id = $family_id ? $family_id : self::isFilteredByField('family_id'); + return $family_id ? $model->byArticleFamily($family_id) : $model; + } + + protected function getColumns() + { + return [ + Column::make('article_family.name')->title('Famille d\'articles'), + Column::make('value')->title('Valeur'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/PriceGenericCategoriesDataTable.php b/app/Datatables/Shop/PriceGenericCategoriesDataTable.php new file mode 100644 index 00000000..95e21596 --- /dev/null +++ b/app/Datatables/Shop/PriceGenericCategoriesDataTable.php @@ -0,0 +1,28 @@ +withCount('price_generics'); + return self::buildQuery($model); + } + + protected function getColumns() + { + return [ + Column::make('name')->title('Nom'), + Column::make('price_generics_count')->title('Nb Tarifs')->class('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/PriceGenericsDataTable.php b/app/Datatables/Shop/PriceGenericsDataTable.php new file mode 100644 index 00000000..320eb3fd --- /dev/null +++ b/app/Datatables/Shop/PriceGenericsDataTable.php @@ -0,0 +1,31 @@ +withCount('prices'); + return self::buildQuery($model); + } + + protected function getColumns() + { + return [ + Column::make('category.name')->title('Catégorie'), + Column::make('name')->title('Nom'), + Column::make('price_by_unit.price')->title('Prix HT')->class('text-right'), + Column::make('price_by_unit.price_taxed')->title('Prix TTC')->class('text-right'), + Column::make('prices_count')->title('Nb tarifs')->class('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/TagGroupsDataTable.php b/app/Datatables/Shop/TagGroupsDataTable.php new file mode 100644 index 00000000..93d18d1a --- /dev/null +++ b/app/Datatables/Shop/TagGroupsDataTable.php @@ -0,0 +1,28 @@ +title('Nb de tags')->searchable(false)->addClass('text-right'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/TagsDataTable.php b/app/Datatables/Shop/TagsDataTable.php new file mode 100644 index 00000000..7fe2a3aa --- /dev/null +++ b/app/Datatables/Shop/TagsDataTable.php @@ -0,0 +1,30 @@ + 'tr']; + + public function query(Tag $model) + { + $model = $model::with('group')->select(['tags.*']); + return self::buildQuery($model); + } + + protected function getColumns() + { + return [ + Column::make('group.name')->title('Groupe'), + Column::make('sort_order')->title('Ordre'), + Column::make('name')->title('Nom'), + self::makeColumnButtons(), + ]; + } + +} diff --git a/app/Datatables/Shop/UnitiesDataTable.php b/app/Datatables/Shop/UnitiesDataTable.php new file mode 100644 index 00000000..4d1d32ba --- /dev/null +++ b/app/Datatables/Shop/UnitiesDataTable.php @@ -0,0 +1,36 @@ +select('shop_unities.*'); + $model = self::filterByFamily($model); + return self::buildQuery($model); + } + + public static function filterByFamily($model, $family_id = false) + { + $family_id = $family_id ? $family_id : self::isFilteredByField('family_id'); + return $family_id ? $model->byArticleFamily($family_id) : $model; + } + + protected function getColumns() + { + return [ + Column::make('package.article_family.name')->title('Famille'), + Column::make('package.value')->title('Package'), + Column::make('value')->title('Valeur'), + self::makeColumnButtons(), + ]; + } + +}