Add refreshing for inherited data

This commit is contained in:
Ludovic CANDELLIER
2021-08-30 22:59:50 +02:00
parent 0cd0e1f126
commit 8842b7eea7
10 changed files with 73 additions and 15 deletions

View File

@@ -3,18 +3,20 @@
namespace App\Datatables\Shop; namespace App\Datatables\Shop;
use Yajra\DataTables\Html\Column; use Yajra\DataTables\Html\Column;
use App\Datatables\ParentDataTable as DataTable; use App\Datatables\ParentDataTable as DataTable;
use App\Models\Shop\Article; use App\Models\Shop\Article;
class ArticlesDataTable extends DataTable class ArticlesDataTable extends DataTable
{ {
public $model_name = 'articles'; public $model_name = 'articles';
public $sortedColumn = 1;
public function query(Article $model) public function query(Article $model)
{ {
// $model = $model::with('Family')->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('Family')->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_nature')->select('shop_articles.*'); // $model = $model::with('article_nature')->select('shop_articles.*');
// $model = $model::joinRelations('Family')->select('shop_articles.*','shop_article_families.name as family_name'); $model = $model::with('article_nature')->joinRelationship('article_nature')->select('shop_articles.*','shop_article_natures.name as nature_name');
$model = self::filterByArticleNature($model); $model = self::filterByArticleNature($model);
return self::buildQuery($model); return self::buildQuery($model);
} }
@@ -28,7 +30,7 @@ class ArticlesDataTable extends DataTable
protected function getColumns() protected function getColumns()
{ {
return [ return [
Column::make('article_nature.name')->title('Nature')->orderable(false), Column::make('article_nature.name')->data('nature_name')->title('Nature'),
Column::make('name')->title('Nom'), Column::make('name')->title('Nom'),
self::makeColumnButtons(), self::makeColumnButtons(),
]; ];

View File

@@ -45,6 +45,8 @@ class ArticleController extends Controller
public function edit($id) public function edit($id)
{ {
$data = Articles::getFull($id); $data = Articles::getFull($id);
// dump($data);
// exit;
return view('Admin.Shop.Articles.edit', $data); return view('Admin.Shop.Articles.edit', $data);
} }
@@ -53,6 +55,24 @@ class ArticleController extends Controller
return Articles::destroy($id); return Articles::destroy($id);
} }
public function getProductDescription($product_id, $model)
{
$data['article']['inherited'] = Articles::getInheritedByProduct($product_id, base64_decode($model));
return view('Admin.Shop.Articles.partials.product.description', $data);
}
public function getProductTags($product_id, $model)
{
$data = Articles::getInheritedByProduct($product_id, base64_decode($model));
return view('Admin.Shop.Articles.partials.product.tags', $data);
}
public function getProductImages($product_id, $model)
{
$data = Articles::getInheritedByProduct($product_id, base64_decode($model));
return view('Admin.Shop.Articles.partials.product.images', $data);
}
public function getImages(Request $request, $id = false) public function getImages(Request $request, $id = false)
{ {
$id = $id ? $id : $request->input('id'); $id = $id ? $id : $request->input('id');

View File

@@ -31,7 +31,7 @@ class CategoryController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$ret = Categories::store($request->all()); $ret = Categories::storeFull($request->all());
return redirect()->route('Admin.Shop.Categories.index'); return redirect()->route('Admin.Shop.Categories.index');
} }

View File

@@ -14,12 +14,13 @@ use Spatie\MediaLibrary\MediaCollections\Models\Media;
use BeyondCode\Comments\Traits\HasComments; use BeyondCode\Comments\Traits\HasComments;
use Rinvex\Categories\Traits\Categorizable; use Rinvex\Categories\Traits\Categorizable;
use Rinvex\Tags\Traits\Taggable; use Rinvex\Tags\Traits\Taggable;
use Kirschbaum\PowerJoins\PowerJoins;
use Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin; use Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin;
use Wildside\Userstamps\Userstamps; use Wildside\Userstamps\Userstamps;
class Article extends Model implements HasMedia class Article extends Model implements HasMedia
{ {
use Categorizable, EloquentJoin, HasComments, InteractsWithMedia, Taggable, SoftDeletes, UserStamps; use Categorizable, EloquentJoin, HasComments, InteractsWithMedia, Powerjoins, Taggable, SoftDeletes, UserStamps;
protected $guarded = ['id']; protected $guarded = ['id'];
protected $table = 'shop_articles'; protected $table = 'shop_articles';

View File

@@ -35,7 +35,7 @@ class Articles
public static function getArticle($id) public static function getArticle($id)
{ {
$article = Article::with('product.tags')->findOrFail($id); $article = self::get($id);
$data = $article->toArray(); $data = $article->toArray();
$data['inherited'] = self::getInherited($id); $data['inherited'] = self::getInherited($id);
$data['categories'] = self::getCategoriesNameByArticle($article); $data['categories'] = self::getCategoriesNameByArticle($article);
@@ -53,7 +53,7 @@ class Articles
public static function getArticleEdit($id) public static function getArticleEdit($id)
{ {
$article = Article::with('product.tags')->findOrFail($id); $article = self::get($id);
$data = $article->toArray(); $data = $article->toArray();
$data['inherited'] = self::getInherited($id); $data['inherited'] = self::getInherited($id);
$data['categories'] = self::getCategoriesByArticle($article); $data['categories'] = self::getCategoriesByArticle($article);
@@ -81,6 +81,26 @@ class Articles
return $data; return $data;
} }
public static function getInheritedByProduct($product_id, $product_type)
{
switch ($product_type) {
case 'App\Models\Botanic\Variety':
$product = Varieties::get($product_id);
$data[] = ['name' => 'Espèces', 'description' => Species::getDescription($product->specie_id), 'tags' => Species::getTags($product->specie_id)];
$data[] = ['name' => 'Variétés', 'description' => $product->description, 'tags' => $product->tags->toArray()];
break;
case 'App\Models\Botanic\Specie':
$product = Species::get($product_id);
$data[] = ['name' => 'Espèces', 'description' => $product->description, 'tags' => $product->tags->toArray()];
break;
case 'App\Models\Shop\Merchandise':
$product = Merchandises::get($product_id);
$data[] = ['name' => 'Marchandise', 'description' => $product->description, 'tags' => $product->tags->toArray()];
break;
}
return $data;
}
public static function getMeta(&$data = []) public static function getMeta(&$data = [])
{ {
$data['products'] = (($data['article']['product_type'] ?? false) == 'App\Models\Botanic\Variety') ? Varieties::getOptionsWithSpecie() : Species::getOptions(); $data['products'] = (($data['article']['product_type'] ?? false) == 'App\Models\Botanic\Variety') ? Varieties::getOptionsWithSpecie() : Species::getOptions();

View File

@@ -28,10 +28,10 @@ class Categories
public static function storeFull($data) public static function storeFull($data)
{ {
$images = isset($data['images']) ? $data['images'] : false; $images = $data['images'] ?? false;
unset($data['images']); unset($data['images']);
$tags = isset($data['tags']) ? $data['tags'] : false; $tags = $data['tags'] ?? false;
unset($data['tags']); unset($data['tags']);
$category = self::store($data); $category = self::store($data);
@@ -54,6 +54,7 @@ class Categories
return (int) $item; return (int) $item;
} }
)->toArray(); )->toArray();
return $category->syncTags($tags, true); return $category->syncTags($tags, true);
} else { } else {
return false; return false;

View File

@@ -33,11 +33,11 @@ class CategoryTrees
switch ($type) { switch ($type) {
case 'after': case 'after':
dump("$node_id After $target_id"); // dump("$node_id After $target_id");
$category->afterNode($category_target); $category->afterNode($category_target);
break; break;
case 'inside': case 'inside':
dump("$node_id inside $target_id"); // dump("$node_id inside $target_id");
$category_target->appendNode($category); $category_target->appendNode($category);
break; break;
} }

View File

@@ -23,7 +23,7 @@
</div> </div>
<div class="col-4"> <div class="col-4">
{{ Form::label('article_nature_id', __('shop.article_natures.name')) }}<br> {{ Form::label('article_nature_id', __('shop.article_natures.name')) }}<br>
@include('components.select', ['name' => 'article_nature_id', 'list' => $natures_options, 'value' => $article['article_nature_id'] ?? null, 'class' => 'select2', 'with_empty' => '']) @include('components.select', ['name' => 'article_nature_id', 'list' => $natures_options, 'value' => $article['article_nature_id'] ?? null, 'class' => 'select2', 'with_empty' => '', 'required' => true])
</div> </div>
</div> </div>
@@ -42,7 +42,7 @@
</div> </div>
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12"> <div class="col-12" id="product_description">
@include('Admin.Shop.Articles.partials.product.description') @include('Admin.Shop.Articles.partials.product.description')
</div> </div>
</div> </div>
@@ -69,6 +69,16 @@
var product = $('#product_id').select2('data'); var product = $('#product_id').select2('data');
var name = product[0]['text']; var name = product[0]['text'];
$('input[name="name"]').val(name); $('input[name="name"]').val(name);
console.log(product);
var product_type = $('#product_type').select2('data');
var name = product_type[0]['id'];
console.log(product_type);
console.log(name);
var url = "{{ route('Admin.Shop.Articles.getProductDescription') }}/" + product[0]['id'] + '/' + btoa(name);
console.log(url);
$('#product_description').load(url);
}); });
$('#product_type').change( function() { $('#product_type').change( function() {

View File

@@ -1,5 +1,5 @@
@if (!empty($article['product']['description'])) @if (count($article['inherited'] ?? []))
@component('components.layout.box-collapse', ['id' => 'product_description', 'title' => 'Informations héritées']) @component('components.layout.box-collapse', ['id' => 'product_description_box', 'title' => 'Informations héritées'])
@foreach ($article['inherited'] as $inherited) @foreach ($article['inherited'] as $inherited)
@component('components.card', ['title' => $inherited['name'], 'class' => 'mb-3']) @component('components.card', ['title' => $inherited['name'], 'class' => 'mb-3'])
{!! $inherited['description'] !!} {!! $inherited['description'] !!}

View File

@@ -12,5 +12,9 @@ Route::prefix('Articles')->name('Articles.')->group(function () {
Route::any('autocomplete/{q?}', 'ArticleController@autocomplete')->name('autocomplete'); Route::any('autocomplete/{q?}', 'ArticleController@autocomplete')->name('autocomplete');
Route::get('getProductDescription/{product_id?}/{model?}', 'ArticleController@getProductDescription')->name('getProductDescription');
Route::get('getProductTags/{product_id?}/{model?}', 'ArticleController@getProductTags')->name('getProductTags');
Route::get('getProductImages/{product_id?}/{model?}', 'ArticleController@getProductImages')->name('getProductImages');
}); });