comparatore bookmaker odds wip
No files matched your search
@@ -8,5 +8,5 @@ use Filament\Support\Icons\Heroicon;
|
||||
|
||||
class SettingsCluster extends Cluster
|
||||
{
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedSquares2x2;
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::AdjustmentsHorizontal;
|
||||
}
|
||||
@@ -23,13 +23,10 @@ class BettypeResource extends Resource
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Static Data';
|
||||
|
||||
protected static ?string $navigationLabel = 'Bettype';
|
||||
|
||||
protected static ?string $modelLabel = 'Bettype';
|
||||
|
||||
protected static ?string $title = 'Bettype';
|
||||
|
||||
protected static ?string $pluralModelLabel = 'Bettypes';
|
||||
public static function canViewAny(): bool
|
||||
{
|
||||
return auth()->user()->super_admin == 1;
|
||||
}
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
|
||||
@@ -6,6 +6,7 @@ use App\Filament\Resources\Events\Pages\ListEvents;
|
||||
use App\Filament\Resources\Events\Schemas\EventForm;
|
||||
use App\Filament\Resources\Events\Tables\EventsTable;
|
||||
use App\Models\Event;
|
||||
use App\Models\Multiline;
|
||||
use Carbon\Carbon;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
@@ -57,14 +58,24 @@ class EventResource extends Resource
|
||||
|
||||
public static function getNavigationBadge(): ?string
|
||||
{
|
||||
return parent::getEloquentQuery()->withoutGlobalScopes()->where('starttime', '>', Carbon::now())->count();
|
||||
return parent::getEloquentQuery()
|
||||
->where('sport_id', auth()->user()->sport_id)
|
||||
->where('starttime', '>', Carbon::now())
|
||||
->count();
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
// $_bookmaker = Multiline::where('sport_id', auth()->user()->sport_id)
|
||||
// ->where('client_id', auth()->user()->client_id)
|
||||
// ->where('bettype_id', 1)
|
||||
// ->where('matchpart_id', 1)
|
||||
// ->pluck('bookmaker_id')
|
||||
// ->toArray();
|
||||
|
||||
return parent::getEloquentQuery()
|
||||
// ->join('odds_3ways', 'odds_3ways.event_id', '=', 'events.id')
|
||||
->where('starttime', '>', Carbon::now())
|
||||
->where('sport_id', auth()->user()->sport_id)
|
||||
->withoutGlobalScopes()->with('odds_3way');
|
||||
->where('sport_id', auth()->user()->sport_id);
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ class EventsTable
|
||||
->width('1rem')
|
||||
->size(IconSize::ExtraLarge)
|
||||
->icon(fn ($record) => $record->sport->icon)
|
||||
->tooltip(fn ($record) => $record->txodds_id),
|
||||
->tooltip(fn ($record) => $record->id),
|
||||
TextColumn::make('txodds_id')->searchable()->label('Match Id')->badge()->copyable(),
|
||||
TextColumn::make('starttime')
|
||||
->label('Start')
|
||||
@@ -41,7 +41,8 @@ class EventsTable
|
||||
->description(fn ($record) => $record->competition_group->name),
|
||||
TextColumn::make('home.name')->alignRight()->searchable(),
|
||||
TextColumn::make('away.name')->searchable(),
|
||||
Odds3Way::make('3way')->label('1 X 2')->alignCenter(),
|
||||
|
||||
Odds3Way::make('odds_3way')->label('Market 1X2'),
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Multilines;
|
||||
|
||||
use App\Filament\Clusters\Settings\SettingsCluster;
|
||||
use App\Filament\Resources\Multilines\Pages\ListMultilines;
|
||||
use App\Filament\Resources\Multilines\Schemas\MultilineForm;
|
||||
use App\Filament\Resources\Multilines\Tables\MultilinesTable;
|
||||
use App\Models\Multiline;
|
||||
use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class MultilineResource extends Resource
|
||||
{
|
||||
protected static ?string $model = Multiline::class;
|
||||
|
||||
protected static string|BackedEnum|null $navigationIcon = Heroicon::Bars3;
|
||||
|
||||
protected static ?string $cluster = SettingsCluster::class;
|
||||
|
||||
// protected static string|\UnitEnum|null $navigationGroup = 'Settings';
|
||||
|
||||
public static function form(Schema $schema): Schema
|
||||
{
|
||||
return MultilineForm::configure($schema);
|
||||
}
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return MultilinesTable::configure($table);
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => ListMultilines::route('/'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Multilines\Pages;
|
||||
|
||||
use App\Filament\Resources\Multilines\MultilineResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateMultiline extends CreateRecord
|
||||
{
|
||||
protected static string $resource = MultilineResource::class;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Multilines\Pages;
|
||||
|
||||
use App\Filament\Resources\Multilines\MultilineResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditMultiline extends EditRecord
|
||||
{
|
||||
protected static string $resource = MultilineResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Multilines\Pages;
|
||||
|
||||
use App\Filament\Resources\Multilines\MultilineResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListMultilines extends ListRecords
|
||||
{
|
||||
protected static string $resource = MultilineResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make()
|
||||
->createAnother(false)
|
||||
->hidden(! auth()->user()->super_admin),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Multilines\Schemas;
|
||||
|
||||
use App\Models\Bettype;
|
||||
use App\Models\Bookmaker;
|
||||
use App\Models\Matchpart;
|
||||
use App\Models\Sport;
|
||||
use Filament\Forms\Components\Select;
|
||||
use Filament\Schemas\Components\Utilities\Get;
|
||||
use Filament\Schemas\Schema;
|
||||
|
||||
class MultilineForm
|
||||
{
|
||||
public static $bettypes = [1, 2, 3, 4, 16, 2001, 2002, 2021, 3001, 3002, 3021];
|
||||
|
||||
public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
->components([
|
||||
Select::make('sport_id')
|
||||
->live()
|
||||
->options(Sport::where('is_active', 1)->pluck('name', 'id'))
|
||||
->preload(),
|
||||
Select::make('matchpart_id')
|
||||
->options(Matchpart::where('is_active', 1)->pluck('name', 'id'))
|
||||
->preload(),
|
||||
Select::make('bettype_id')
|
||||
->options(fn (Get $get) => Bettype::where('sport_id', $get('sport_id'))->whereIn('bettype_id', self::$bettypes)->pluck('name', 'bettype_id')),
|
||||
Select::make('bookmaker_id')
|
||||
->options(Bookmaker::where('is_active', 1)->pluck('name', 'txid'))
|
||||
->preload()
|
||||
->searchable(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Multilines\Tables;
|
||||
|
||||
use App\Filament\Tables\Columns\BookmakerIcon;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Tables\Columns\IconColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class MultilinesTable
|
||||
{
|
||||
public static function configure(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->reorderRecordsTriggerAction(
|
||||
fn (Action $action, bool $isReordering) => $action
|
||||
->button()
|
||||
->label($isReordering ? 'Disable reordering' : 'Enable reordering'),
|
||||
)
|
||||
->reorderable('sort')
|
||||
->columns([
|
||||
IconColumn::make('sport.icon')
|
||||
->label('')
|
||||
->width('1rem')
|
||||
->icon(function ($record): string {
|
||||
return $record->sport->icon;
|
||||
}),
|
||||
TextColumn::make('sport.name'),
|
||||
TextColumn::make('matchpart.name'),
|
||||
TextColumn::make('bettype.name'),
|
||||
TextColumn::make('bookmaker.name'),
|
||||
BookmakerIcon::make('bookmaker.icon')->label('Icon'),
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
])
|
||||
->recordActions([
|
||||
EditAction::make()
|
||||
->mutateDataUsing(function (array $data): array {
|
||||
$data['client_id'] = auth()->user()->client_id;
|
||||
|
||||
return $data;
|
||||
}),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Tables\Columns;
|
||||
|
||||
use Filament\Tables\Columns\Column;
|
||||
|
||||
class BookmakerIcon extends Column
|
||||
{
|
||||
protected string $view = 'filament.tables.columns.bookmaker-icon';
|
||||
}
|
||||
@@ -10,4 +10,9 @@ class Bettype extends Model
|
||||
{
|
||||
return $this->belongsTo(Sport::class);
|
||||
}
|
||||
|
||||
public function matchpart()
|
||||
{
|
||||
return $this->belongsTo(Matchpart::class);
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,15 @@ class Event extends Model
|
||||
|
||||
public function odds_3way()
|
||||
{
|
||||
return $this->hasMany(Odds3way::class);
|
||||
$_bookmaker = Multiline::where('sport_id', auth()->user()->sport_id)
|
||||
->where('client_id', auth()->user()->client_id)
|
||||
->where('bettype_id', 1)
|
||||
->where('matchpart_id', 1)
|
||||
->pluck('bookmaker_id');
|
||||
|
||||
return $this->hasMany(Odds3way::class, 'event_id', 'id')
|
||||
->join('multilines', 'multilines.bookmaker_id', 'odds_3ways.bookmaker_id')
|
||||
->orderBy('multilines.sort');
|
||||
// return $this->hasMany(Odds3way::class, 'event_id', 'id')->whereIn('bookmaker_id', $_bookmaker);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Matchpart extends Model {}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Multiline extends Model
|
||||
{
|
||||
protected $fillable = [
|
||||
'client_id',
|
||||
'sport_id',
|
||||
'bettype_id',
|
||||
'matchpart_id',
|
||||
'bookmaker_id',
|
||||
'sort',
|
||||
];
|
||||
|
||||
public function sport()
|
||||
{
|
||||
return $this->belongsTo(Sport::class);
|
||||
}
|
||||
|
||||
public function matchpart()
|
||||
{
|
||||
return $this->belongsTo(Matchpart::class);
|
||||
}
|
||||
|
||||
public function bettype()
|
||||
{
|
||||
return $this->belongsTo(Bettype::class);
|
||||
}
|
||||
|
||||
public function bookmaker()
|
||||
{
|
||||
return $this->belongsTo(Bookmaker::class, 'bookmaker_id', 'txid');
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class Odds3way extends Model
|
||||
|
||||
public function bookmaker()
|
||||
{
|
||||
return $this->belongsTo(Bookmaker::class);
|
||||
return $this->belongsTo(Bookmaker::class, 'bookmaker_id', 'txid');
|
||||
}
|
||||
|
||||
public function event()
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Utilities;
|
||||
|
||||
class BkmIconMap
|
||||
{
|
||||
public static function get($bookmaker)
|
||||
{
|
||||
if ($bookmaker) {
|
||||
return asset("storage/bookmaker-icons/$bookmaker->icon.png");
|
||||
} else {
|
||||
return asset('storage/bookmaker-icons/missing.png');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Utilities;
|
||||
|
||||
class BookmakerIcon
|
||||
{
|
||||
public static function byId($bkmid)
|
||||
{
|
||||
$image = '';
|
||||
switch ($bkmid) {
|
||||
case 5:
|
||||
$image = 'expekt.png';
|
||||
break;
|
||||
|
||||
case 6:
|
||||
$image = 'unibet.jpg';
|
||||
break;
|
||||
|
||||
case 13:
|
||||
$image = 'sportingbet.png';
|
||||
break;
|
||||
|
||||
case 17:
|
||||
$image = 'ladbrokes.png';
|
||||
break;
|
||||
|
||||
case 30:
|
||||
$image = 'bwin.jpg';
|
||||
break;
|
||||
|
||||
case 42:
|
||||
$image = 'willhill.png';
|
||||
break;
|
||||
|
||||
case 110:
|
||||
$image = 'betfair.png';
|
||||
break;
|
||||
|
||||
case 314:
|
||||
$image = 'matchbook.png';
|
||||
break;
|
||||
|
||||
case 327:
|
||||
$image = 'sbobet.jpg';
|
||||
break;
|
||||
|
||||
case 388:
|
||||
$image = 'eurobet.png';
|
||||
break;
|
||||
|
||||
case 539:
|
||||
$image = 'marathonbet.png';
|
||||
break;
|
||||
|
||||
case 649:
|
||||
$image = '1xbet.jpg';
|
||||
break;
|
||||
|
||||
case 658:
|
||||
$image = 'bet9ja.png';
|
||||
break;
|
||||
|
||||
case 823:
|
||||
$image = 'betking.png';
|
||||
break;
|
||||
|
||||
case 824:
|
||||
$image = 'betplay.jpg';
|
||||
break;
|
||||
|
||||
case 825:
|
||||
$image = 'sportybet.png';
|
||||
break;
|
||||
|
||||
default:
|
||||
$image = 'missing.png';
|
||||
break;
|
||||
}
|
||||
|
||||
return asset("storage/bookmaker-icons/$image");
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,9 @@
|
||||
'app.filament.resources.group-filters.pages.create-group-filter' => 'App\\Filament\\Resources\\GroupFilters\\Pages\\CreateGroupFilter',
|
||||
'app.filament.resources.group-filters.pages.edit-group-filter' => 'App\\Filament\\Resources\\GroupFilters\\Pages\\EditGroupFilter',
|
||||
'app.filament.resources.group-filters.pages.list-group-filters' => 'App\\Filament\\Resources\\GroupFilters\\Pages\\ListGroupFilters',
|
||||
'app.filament.resources.multilines.pages.create-multiline' => 'App\\Filament\\Resources\\Multilines\\Pages\\CreateMultiline',
|
||||
'app.filament.resources.multilines.pages.edit-multiline' => 'App\\Filament\\Resources\\Multilines\\Pages\\EditMultiline',
|
||||
'app.filament.resources.multilines.pages.list-multilines' => 'App\\Filament\\Resources\\Multilines\\Pages\\ListMultilines',
|
||||
'app.filament.resources.providers.pages.create-provider' => 'App\\Filament\\Resources\\Providers\\Pages\\CreateProvider',
|
||||
'app.filament.resources.providers.pages.edit-provider' => 'App\\Filament\\Resources\\Providers\\Pages\\EditProvider',
|
||||
'app.filament.resources.providers.pages.list-providers' => 'App\\Filament\\Resources\\Providers\\Pages\\ListProviders',
|
||||
@@ -77,6 +80,10 @@
|
||||
1 => 'App\\Filament\\Resources\\ElementFilters\\ElementFilterResource',
|
||||
2 => 'App\\Filament\\Resources\\GroupFilters\\GroupFilterResource',
|
||||
),
|
||||
'App\\Filament\\Clusters\\Settings\\SettingsCluster' =>
|
||||
array (
|
||||
0 => 'App\\Filament\\Resources\\Multilines\\MultilineResource',
|
||||
),
|
||||
),
|
||||
'clusterDirectories' =>
|
||||
array (
|
||||
@@ -112,6 +119,7 @@
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/ElementFilters/ElementFilterResource.php' => 'App\\Filament\\Resources\\ElementFilters\\ElementFilterResource',
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Events/EventResource.php' => 'App\\Filament\\Resources\\Events\\EventResource',
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/GroupFilters/GroupFilterResource.php' => 'App\\Filament\\Resources\\GroupFilters\\GroupFilterResource',
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Multilines/MultilineResource.php' => 'App\\Filament\\Resources\\Multilines\\MultilineResource',
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Providers/ProviderResource.php' => 'App\\Filament\\Resources\\Providers\\ProviderResource',
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Sports/SportResource.php' => 'App\\Filament\\Resources\\Sports\\SportResource',
|
||||
'/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Supervisors/SupervisorResource.php' => 'App\\Filament\\Resources\\Supervisors\\SupervisorResource',
|
||||
|
||||
@@ -426,6 +426,26 @@ app('router')->setCompiledRoutes(
|
||||
6 => NULL,
|
||||
),
|
||||
),
|
||||
'/settings/multilines' =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'_route' => 'filament.admin.settings.resources.multilines.index',
|
||||
),
|
||||
1 => NULL,
|
||||
2 =>
|
||||
array (
|
||||
'GET' => 0,
|
||||
'HEAD' => 1,
|
||||
),
|
||||
3 => NULL,
|
||||
4 => false,
|
||||
5 => false,
|
||||
6 => NULL,
|
||||
),
|
||||
),
|
||||
'/administrator/providers' =>
|
||||
array (
|
||||
0 =>
|
||||
@@ -531,7 +551,7 @@ app('router')->setCompiledRoutes(
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'_route' => 'generated::28iQGrHtfygW5Ygm',
|
||||
'_route' => 'generated::utvoDsmittGErgFU',
|
||||
),
|
||||
1 => NULL,
|
||||
2 =>
|
||||
@@ -551,7 +571,7 @@ app('router')->setCompiledRoutes(
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'_route' => 'generated::9rHVcl6FtqTFiiV5',
|
||||
'_route' => 'generated::UKTOkgCt6yIOAG79',
|
||||
),
|
||||
1 => NULL,
|
||||
2 =>
|
||||
@@ -590,7 +610,7 @@ app('router')->setCompiledRoutes(
|
||||
array (
|
||||
0 =>
|
||||
array (
|
||||
'_route' => 'generated::Pg2kZhzUQX5UOGsb',
|
||||
'_route' => 'generated::qXNgDXoLuA95HjrL',
|
||||
),
|
||||
1 => NULL,
|
||||
2 =>
|
||||
@@ -2279,6 +2299,60 @@ app('router')->setCompiledRoutes(
|
||||
'waitSeconds' => NULL,
|
||||
'withTrashed' => false,
|
||||
),
|
||||
'filament.admin.settings.resources.multilines.index' =>
|
||||
array (
|
||||
'methods' =>
|
||||
array (
|
||||
0 => 'GET',
|
||||
1 => 'HEAD',
|
||||
),
|
||||
'uri' => 'settings/multilines',
|
||||
'action' =>
|
||||
array (
|
||||
'domain' => NULL,
|
||||
'middleware' =>
|
||||
array (
|
||||
0 => 'panel:admin',
|
||||
1 => 'Illuminate\\Cookie\\Middleware\\EncryptCookies',
|
||||
2 => 'Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse',
|
||||
3 => 'Illuminate\\Session\\Middleware\\StartSession',
|
||||
4 => 'Filament\\Http\\Middleware\\AuthenticateSession',
|
||||
5 => 'Illuminate\\View\\Middleware\\ShareErrorsFromSession',
|
||||
6 => 'Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken',
|
||||
7 => 'Illuminate\\Routing\\Middleware\\SubstituteBindings',
|
||||
8 => 'Filament\\Http\\Middleware\\DisableBladeIconComponents',
|
||||
9 => 'Filament\\Http\\Middleware\\DispatchServingFilamentEvent',
|
||||
10 => 'Filament\\Http\\Middleware\\Authenticate',
|
||||
11 => 'Joaopaulolndev\\FilamentEditProfile\\Http\\Middleware\\SetUserThemeColor:web',
|
||||
12 => 'Joaopaulolndev\\FilamentEditProfile\\Http\\Middleware\\SetUserLocale:web',
|
||||
13 => 'verified:filament.admin.auth.email-verification.prompt',
|
||||
),
|
||||
'excluded_middleware' =>
|
||||
array (
|
||||
),
|
||||
'uses' => 'App\\Filament\\Resources\\Multilines\\Pages\\ListMultilines@__invoke',
|
||||
'controller' => 'App\\Filament\\Resources\\Multilines\\Pages\\ListMultilines',
|
||||
'as' => 'filament.admin.settings.resources.multilines.index',
|
||||
'namespace' => NULL,
|
||||
'prefix' => 'settings/multilines',
|
||||
'where' =>
|
||||
array (
|
||||
),
|
||||
),
|
||||
'fallback' => false,
|
||||
'defaults' =>
|
||||
array (
|
||||
),
|
||||
'wheres' =>
|
||||
array (
|
||||
),
|
||||
'bindingFields' =>
|
||||
array (
|
||||
),
|
||||
'lockSeconds' => NULL,
|
||||
'waitSeconds' => NULL,
|
||||
'withTrashed' => false,
|
||||
),
|
||||
'filament.admin.administrator.resources.providers.index' =>
|
||||
array (
|
||||
'methods' =>
|
||||
@@ -2526,7 +2600,7 @@ app('router')->setCompiledRoutes(
|
||||
'waitSeconds' => NULL,
|
||||
'withTrashed' => false,
|
||||
),
|
||||
'generated::28iQGrHtfygW5Ygm' =>
|
||||
'generated::utvoDsmittGErgFU' =>
|
||||
array (
|
||||
'methods' =>
|
||||
array (
|
||||
@@ -2538,7 +2612,7 @@ app('router')->setCompiledRoutes(
|
||||
array (
|
||||
'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile',
|
||||
'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile',
|
||||
'as' => 'generated::28iQGrHtfygW5Ygm',
|
||||
'as' => 'generated::utvoDsmittGErgFU',
|
||||
),
|
||||
'fallback' => false,
|
||||
'defaults' =>
|
||||
@@ -2554,7 +2628,7 @@ app('router')->setCompiledRoutes(
|
||||
'waitSeconds' => NULL,
|
||||
'withTrashed' => false,
|
||||
),
|
||||
'generated::9rHVcl6FtqTFiiV5' =>
|
||||
'generated::UKTOkgCt6yIOAG79' =>
|
||||
array (
|
||||
'methods' =>
|
||||
array (
|
||||
@@ -2566,7 +2640,7 @@ app('router')->setCompiledRoutes(
|
||||
array (
|
||||
'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps',
|
||||
'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps',
|
||||
'as' => 'generated::9rHVcl6FtqTFiiV5',
|
||||
'as' => 'generated::UKTOkgCt6yIOAG79',
|
||||
),
|
||||
'fallback' => false,
|
||||
'defaults' =>
|
||||
@@ -2637,7 +2711,7 @@ app('router')->setCompiledRoutes(
|
||||
'waitSeconds' => NULL,
|
||||
'withTrashed' => false,
|
||||
),
|
||||
'generated::Pg2kZhzUQX5UOGsb' =>
|
||||
'generated::qXNgDXoLuA95HjrL' =>
|
||||
array (
|
||||
'methods' =>
|
||||
array (
|
||||
@@ -2665,8 +2739,8 @@ app('router')->setCompiledRoutes(
|
||||
return response(\\Illuminate\\Support\\Facades\\View::file(\'/Users/salam/Sites/nuhodds_fi4/vendor/laravel/framework/src/Illuminate/Foundation/Configuration\'.\'/../resources/health-up.blade.php\', [
|
||||
\'exception\' => $exception,
|
||||
]), status: $exception ? 500 : 200);
|
||||
}";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"0000000000000dfc0000000000000000";}}',
|
||||
'as' => 'generated::Pg2kZhzUQX5UOGsb',
|
||||
}";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"0000000000000e030000000000000000";}}',
|
||||
'as' => 'generated::qXNgDXoLuA95HjrL',
|
||||
),
|
||||
'fallback' => false,
|
||||
'defaults' =>
|
||||
@@ -2698,7 +2772,7 @@ app('router')->setCompiledRoutes(
|
||||
$config,
|
||||
$isProduction
|
||||
))($request, $path);
|
||||
}";s:5:"scope";s:47:"Illuminate\\Filesystem\\FilesystemServiceProvider";s:4:"this";N;s:4:"self";s:32:"0000000000000df20000000000000000";}}',
|
||||
}";s:5:"scope";s:47:"Illuminate\\Filesystem\\FilesystemServiceProvider";s:4:"this";N;s:4:"self";s:32:"0000000000000df90000000000000000";}}',
|
||||
'as' => 'storage.local',
|
||||
),
|
||||
'fallback' => false,
|
||||
|
||||
@@ -13,10 +13,12 @@ return new class extends Migration
|
||||
{
|
||||
Schema::create('multilines', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->integer('sport_id');
|
||||
$table->integer('client_id')->default(0);
|
||||
$table->integer('bettype_id')->default(0);
|
||||
$table->integer('bookmaker_id')->default(0);
|
||||
$table->integer('sort-order')->default(0);
|
||||
$table->integer('matchpart_id')->default(0);
|
||||
$table->integer('sort')->default(0);
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('matchparts', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('short');
|
||||
$table->string('name');
|
||||
$table->string('color');
|
||||
$table->boolean('is_active')->default(0);
|
||||
$table->integer('soccer')->default(0);
|
||||
$table->integer('icehockey')->default(0);
|
||||
$table->integer('basketball')->default(0);
|
||||
$table->integer('tennis')->default(0);
|
||||
$table->integer('handball')->default(0);
|
||||
$table->integer('rugby')->default(0);
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('matchparts');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MatchpartSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
/**
|
||||
* Clients
|
||||
*/
|
||||
$sql = "INSERT INTO `matchparts` (`id`, `short`, `name`, `color`, `is_active`, `soccer`, `icehockey`, `basketball`, `tennis`, `handball`, `rugby`, `created_at`, `updated_at`)
|
||||
VALUES
|
||||
('1', 'FT', 'Fulltime', 'primary', '1', '1', '1', '1', '1', '1', '0', NULL, NULL),
|
||||
('2', 'HT', 'Halftime', 'success', '1', '1', '0', '1', '0', '1', '0', NULL, NULL),
|
||||
('3', 'H2', 'Second Half', 'warning', '1', '1', '0', '1', '0', '1', '0', NULL, NULL),
|
||||
('4', 'CO', 'Combo', 'info', '1', '1', '1', '1', '0', '0', '0', NULL, NULL),
|
||||
('5', 'Q1', 'Quarter 1', 'quarter', '1', '0', '0', '1', '0', '0', '0', NULL, NULL),
|
||||
('6', 'Q2', 'Quarter 2', 'quarter', '0', '0', '0', '1', '0', '0', '0', NULL, NULL),
|
||||
('7', 'Q3', 'Quarter 3', 'quarter', '0', '0', '0', '1', '0', '0', '0', NULL, NULL),
|
||||
('8', 'Q4', 'Quarter 4', 'quarter', '0', '0', '0', '1', '0', '0', '0', NULL, NULL),
|
||||
('9', 'P1', 'Period 1', 'period', '1', '0', '1', '0', '0', '0', '0', NULL, NULL),
|
||||
('10', 'P2', 'Period 2', 'period', '0', '0', '1', '0', '0', '0', '0', NULL, NULL),
|
||||
('11', 'P3', 'Period 3', 'period', '0', '0', '1', '0', '0', '0', '0', NULL, NULL),
|
||||
('12', 'S1', 'Set 1', 'set', '1', '0', '0', '0', '1', '0', '0', NULL, NULL),
|
||||
('13', 'S2', 'Set 2', 'set', '0', '0', '0', '0', '1', '0', '0', NULL, NULL),
|
||||
('14', 'S3', 'Set 3', 'set', '0', '0', '0', '0', '1', '0', '0', NULL, NULL),
|
||||
('15', 'S4', 'Set 4', 'set', '0', '0', '0', '0', '1', '0', '0', NULL, NULL),
|
||||
('16', 'S5', 'Set 5', 'set', '0', '0', '0', '0', '1', '0', '0', NULL, NULL);
|
||||
";
|
||||
DB::unprepared($sql);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
(() => { var re = Object.create, x = Object.defineProperty, ne = Object.getPrototypeOf, ie = Object.prototype.hasOwnProperty, ae = Object.getOwnPropertyNames, se = Object.getOwnPropertyDescriptor, oe = t => x(t, "__esModule", { value: !0 }), le = (t, n) => () => (n || (n = { exports: {} }, t(n.exports, n)), n.exports), fe = (t, n, i) => { if (n && typeof n == "object" || typeof n == "function") for (let l of ae(n)) !ie.call(t, l) && l !== "default" && x(t, l, { get: () => n[l], enumerable: !(i = se(n, l)) || i.enumerable }); return t }, ue = t => fe(oe(x(t != null ? re(ne(t)) : {}, "default", t && t.__esModule && "default" in t ? { get: () => t.default, enumerable: !0 } : { value: t, enumerable: !0 })), t), pe = le((t, n) => { (function (i, l, y) { if (!i) return; for (var c = { 8: "backspace", 9: "tab", 13: "enter", 16: "shift", 17: "ctrl", 18: "alt", 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down", 45: "ins", 46: "del", 91: "meta", 93: "meta", 224: "meta" }, _ = { 106: "*", 107: "+", 109: "-", 110: ".", 111: "/", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'" }, g = { "~": "`", "!": "1", "@": "2", "#": "3", $: "4", "%": "5", "^": "6", "&": "7", "*": "8", "(": "9", ")": "0", _: "-", "+": "=", ":": ";", '"': "'", "<": ",", ">": ".", "?": "/", "|": "\\" }, G = { option: "alt", command: "meta", return: "enter", escape: "esc", plus: "+", mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? "meta" : "ctrl" }, A, b = 1; b < 20; ++b)c[111 + b] = "f" + b; for (b = 0; b <= 9; ++b)c[b + 96] = b.toString(); function P(e, r, s) { if (e.addEventListener) { e.addEventListener(r, s, !1); return } e.attachEvent("on" + r, s) } function T(e) { if (e.type == "keypress") { var r = String.fromCharCode(e.which); return e.shiftKey || (r = r.toLowerCase()), r } return c[e.which] ? c[e.which] : _[e.which] ? _[e.which] : String.fromCharCode(e.which).toLowerCase() } function J(e, r) { return e.sort().join(",") === r.sort().join(",") } function H(e) { var r = []; return e.shiftKey && r.push("shift"), e.altKey && r.push("alt"), e.ctrlKey && r.push("ctrl"), e.metaKey && r.push("meta"), r } function F(e) { if (e.preventDefault) { e.preventDefault(); return } e.returnValue = !1 } function B(e) { if (e.stopPropagation) { e.stopPropagation(); return } e.cancelBubble = !0 } function C(e) { return e == "shift" || e == "ctrl" || e == "alt" || e == "meta" } function X() { if (!A) { A = {}; for (var e in c) e > 95 && e < 112 || c.hasOwnProperty(e) && (A[c[e]] = e) } return A } function Y(e, r, s) { return s || (s = X()[e] ? "keydown" : "keypress"), s == "keypress" && r.length && (s = "keydown"), s } function Q(e) { return e === "+" ? ["+"] : (e = e.replace(/\+{2}/g, "+plus"), e.split("+")) } function R(e, r) { var s, h, k, S = []; for (s = Q(e), k = 0; k < s.length; ++k)h = s[k], G[h] && (h = G[h]), r && r != "keypress" && g[h] && (h = g[h], S.push("shift")), C(h) && S.push(h); return r = Y(h, S, r), { key: h, modifiers: S, action: r } } function I(e, r) { return e === null || e === l ? !1 : e === r ? !0 : I(e.parentNode, r) } function v(e) { var r = this; if (e = e || l, !(r instanceof v)) return new v(e); r.target = e, r._callbacks = {}, r._directMap = {}; var s = {}, h, k = !1, S = !1, D = !1; function E(a) { a = a || {}; var f = !1, p; for (p in s) { if (a[p]) { f = !0; continue } s[p] = 0 } f || (D = !1) } function z(a, f, p, o, d, m) { var u, w, M = [], O = p.type; if (!r._callbacks[a]) return []; for (O == "keyup" && C(a) && (f = [a]), u = 0; u < r._callbacks[a].length; ++u)if (w = r._callbacks[a][u], !(!o && w.seq && s[w.seq] != w.level) && O == w.action && (O == "keypress" && !p.metaKey && !p.ctrlKey || J(f, w.modifiers))) { var ee = !o && w.combo == d, te = o && w.seq == o && w.level == m; (ee || te) && r._callbacks[a].splice(u, 1), M.push(w) } return M } function L(a, f, p, o) { r.stopCallback(f, f.target || f.srcElement, p, o) || a(f, p) === !1 && (F(f), B(f)) } r._handleKey = function (a, f, p) { var o = z(a, f, p), d, m = {}, u = 0, w = !1; for (d = 0; d < o.length; ++d)o[d].seq && (u = Math.max(u, o[d].level)); for (d = 0; d < o.length; ++d) { if (o[d].seq) { if (o[d].level != u) continue; w = !0, m[o[d].seq] = 1, L(o[d].callback, p, o[d].combo, o[d].seq); continue } w || L(o[d].callback, p, o[d].combo) } var M = p.type == "keypress" && S; p.type == D && !C(a) && !M && E(m), S = w && p.type == "keydown" }; function K(a) { typeof a.which != "number" && (a.which = a.keyCode); var f = T(a); if (f) { if (a.type == "keyup" && k === f) { k = !1; return } r.handleKey(f, H(a), a) } } function Z() { clearTimeout(h), h = setTimeout(E, 1e3) } function $(a, f, p, o) { s[a] = 0; function d(O) { return function () { D = O, ++s[a], Z() } } function m(O) { L(p, O, a), o !== "keyup" && (k = T(O)), setTimeout(E, 10) } for (var u = 0; u < f.length; ++u) { var w = u + 1 === f.length, M = w ? m :Line truncated
|
||||
(()=>{var re=Object.create,x=Object.defineProperty,ne=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty,ae=Object.getOwnPropertyNames,se=Object.getOwnPropertyDescriptor,oe=t=>x(t,"__esModule",{value:!0}),le=(t,n)=>()=>(n||(n={exports:{}},t(n.exports,n)),n.exports),fe=(t,n,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of ae(n))!ie.call(t,l)&&l!=="default"&&x(t,l,{get:()=>n[l],enumerable:!(i=se(n,l))||i.enumerable});return t},ue=t=>fe(oe(x(t!=null?re(ne(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),pe=le((t,n)=>{(function(i,l,y){if(!i)return;for(var c={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},_={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},g={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},G={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},A,b=1;b<20;++b)c[111+b]="f"+b;for(b=0;b<=9;++b)c[b+96]=b.toString();function P(e,r,s){if(e.addEventListener){e.addEventListener(r,s,!1);return}e.attachEvent("on"+r,s)}function T(e){if(e.type=="keypress"){var r=String.fromCharCode(e.which);return e.shiftKey||(r=r.toLowerCase()),r}return c[e.which]?c[e.which]:_[e.which]?_[e.which]:String.fromCharCode(e.which).toLowerCase()}function J(e,r){return e.sort().join(",")===r.sort().join(",")}function H(e){var r=[];return e.shiftKey&&r.push("shift"),e.altKey&&r.push("alt"),e.ctrlKey&&r.push("ctrl"),e.metaKey&&r.push("meta"),r}function F(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=!1}function B(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=!0}function C(e){return e=="shift"||e=="ctrl"||e=="alt"||e=="meta"}function X(){if(!A){A={};for(var e in c)e>95&&e<112||c.hasOwnProperty(e)&&(A[c[e]]=e)}return A}function Y(e,r,s){return s||(s=X()[e]?"keydown":"keypress"),s=="keypress"&&r.length&&(s="keydown"),s}function Q(e){return e==="+"?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split("+"))}function R(e,r){var s,h,k,S=[];for(s=Q(e),k=0;k<s.length;++k)h=s[k],G[h]&&(h=G[h]),r&&r!="keypress"&&g[h]&&(h=g[h],S.push("shift")),C(h)&&S.push(h);return r=Y(h,S,r),{key:h,modifiers:S,action:r}}function I(e,r){return e===null||e===l?!1:e===r?!0:I(e.parentNode,r)}function v(e){var r=this;if(e=e||l,!(r instanceof v))return new v(e);r.target=e,r._callbacks={},r._directMap={};var s={},h,k=!1,S=!1,D=!1;function E(a){a=a||{};var f=!1,p;for(p in s){if(a[p]){f=!0;continue}s[p]=0}f||(D=!1)}function z(a,f,p,o,d,m){var u,w,M=[],O=p.type;if(!r._callbacks[a])return[];for(O=="keyup"&&C(a)&&(f=[a]),u=0;u<r._callbacks[a].length;++u)if(w=r._callbacks[a][u],!(!o&&w.seq&&s[w.seq]!=w.level)&&O==w.action&&(O=="keypress"&&!p.metaKey&&!p.ctrlKey||J(f,w.modifiers))){var ee=!o&&w.combo==d,te=o&&w.seq==o&&w.level==m;(ee||te)&&r._callbacks[a].splice(u,1),M.push(w)}return M}function L(a,f,p,o){r.stopCallback(f,f.target||f.srcElement,p,o)||a(f,p)===!1&&(F(f),B(f))}r._handleKey=function(a,f,p){var o=z(a,f,p),d,m={},u=0,w=!1;for(d=0;d<o.length;++d)o[d].seq&&(u=Math.max(u,o[d].level));for(d=0;d<o.length;++d){if(o[d].seq){if(o[d].level!=u)continue;w=!0,m[o[d].seq]=1,L(o[d].callback,p,o[d].combo,o[d].seq);continue}w||L(o[d].callback,p,o[d].combo)}var M=p.type=="keypress"&&S;p.type==D&&!C(a)&&!M&&E(m),S=w&&p.type=="keydown"};function K(a){typeof a.which!="number"&&(a.which=a.keyCode);var f=T(a);if(f){if(a.type=="keyup"&&k===f){k=!1;return}r.handleKey(f,H(a),a)}}function Z(){clearTimeout(h),h=setTimeout(E,1e3)}function $(a,f,p,o){s[a]=0;function d(O){return function(){D=O,++s[a],Z()}}function m(O){L(p,O,a),o!=="keyup"&&(k=T(O)),setTimeout(E,10)}for(var u=0;u<f.length;++u){var w=u+1===f.length,M=w?m:d(o||R(f[u+1]).action);N(f[u],M,o,a,u)}}function N(a,f,p,o,d){r._directMap[a+":"+p]=f,a=a.replace(/\s+/g," ");var m=a.split(" "),u;if(m.length>1){$(a,m,f,p);return}u=R(a,p),r._callbacks[u.key]=r._callbacks[u.key]||[],z(u.key,u.modifiers,{type:u.action},o,a,d),r._callbacks[u.key][o?"unshift":"push"]({callback:f,modifiers:u.modifiers,action:u.action,seq:o,level:d,combo:a})}r._bindMultiple=function(a,f,p){for(var o=0;o<a.length;++o)N(a[o],f,p)},P(e,"keypress",K),P(e,"keydown",K),P(e,"keyup",K)}v.prototype.bind=function(e,r,s){var h=this;return e=e instanceof Array?e:[e],h._bindMultiple.call(h,e,r,s),h},v.prototype.unbind=function(e,r){var s=this;return s.bind.call(s,e,function(){},r)},v.prototype.trigger=function(e,r){var s=this;return s._directMap[e+":"+r]&&s._directMap[e+":"+r]({},e),s},v.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},v.prototype.stopCallback=function(e,r){var s=this;if((" "+Line truncated
|
||||
@@ -0,0 +1,4 @@
|
||||
<div {{ $getExtraAttributeBag() }} class="h-4 w-16 bg-contain bg-center bg-no-repeat dark:opacity-85"
|
||||
title="{{ $getState() }}"
|
||||
style="background-image: url('{{ asset('storage/bookmaker-icons/' . $getState()) }}.png')">
|
||||
</div>
|
||||
@@ -1,25 +1,17 @@
|
||||
<?php
|
||||
use App\Utilities\BookmakerIcon;
|
||||
use App\Utilities\BkmIconMap;
|
||||
?>
|
||||
|
||||
<div {{ $getExtraAttributeBag() }}>
|
||||
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-5 grid-rows-5 oddsbox">
|
||||
|
||||
{{-- {{ $record->odds_3way }} --}}
|
||||
@foreach ($record->odds_3way as $row)
|
||||
<div class="bg-contain bg-center bg-no-repeat dark:opacity-85" title="{{ $row->bookmaker->txid }}"
|
||||
style="background-image: url('{{ BkmIconMap::get($row->bookmaker) }}')">
|
||||
</div>
|
||||
<div class="br bb">{{ number_format($row->h3w, 2) }}</div>
|
||||
<div class="br bb">{{ number_format($row->d3w, 2) }}</div>
|
||||
<div class="br bb">{{ number_format($row->a3w, 2) }}</div>
|
||||
<div class="br bb">{{ $row->margin }}</div>
|
||||
@endforeach
|
||||
|
||||
<div class="grid grid-cols-5 grid-rows-4 oddsbox">
|
||||
|
||||
@foreach ($record->odds_3way as $key => $row)
|
||||
<div class="bl br bb bg-cover bg-center bg-no-repeat dark:opacity-85" title="{{ $row->bookmaker_id }}"
|
||||
style="background-image: url('{{ BookmakerIcon::byId($row->bookmaker_id) }}')"></div>
|
||||
<div class="br bb">{{ number_format($row->h3w, 2) }}</div>
|
||||
<div class="br bb">{{ number_format($row->d3w, 2) }}</div>
|
||||
<div class="br bb">{{ number_format($row->a3w, 2) }}</div>
|
||||
<div class="br bb">{{ $row->margin }}</div>
|
||||
|
||||
@if ($key == 3)
|
||||
@break;
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 279 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 31 KiB |