tooltip final

This commit is contained in:
salam committed 2025-12-23 12:43:06 +01:00
1 parent c9588f39b6
commit 4ab4dcfd8c
19 files changed
+130 -220

No files matched your search

@@ -18,6 +18,7 @@ class Fixtures
$debug = Nuh::$options['d'] ?? 0; $debug = Nuh::$options['d'] ?? 0;
$echo = Nuh::$options['e'] ?? 0; $echo = Nuh::$options['e'] ?? 0;
$break = Nuh::$options['b'] ?? 0; $break = Nuh::$options['b'] ?? 0;
$week = Nuh::$options['w'] ?? 0;
$count = 0; $count = 0;
$total = 0; $total = 0;
@@ -101,6 +102,10 @@ class Fixtures
if ($break) { if ($break) {
break; break;
} }
if ($week && $i == 7) {
break;
}
} }
if ($debug) { if ($debug) {
Notice::note("Total - $total events processed", 'g'); Notice::note("Total - $total events processed", 'g');
@@ -58,7 +58,7 @@ class EventsTable
->alignRight(), ->alignRight(),
TextColumn::make('away.name') TextColumn::make('away.name')
->searchable(), ->searchable(),
Columns3way::make('odds3way')->label(fn () => view('filament.tables.columns.multiline.label')), Columns3way::make('odds3way')->label(fn () => view('filament.tables.columns.multiline.labels')),
]) ])
->poll('10s') ->poll('10s')
->defaultSort('starttime', 'ASC') ->defaultSort('starttime', 'ASC')
+8 -23
View File
@@ -13,6 +13,8 @@ class Columns3way extends Column
protected ?array $fumetto; protected ?array $fumetto;
protected ?bool $has_odds;
public function loadData($record, $multiline_client) public function loadData($record, $multiline_client)
{ {
@@ -32,29 +34,7 @@ class Columns3way extends Column
} }
} }
// $this->multiline = []; $this->has_odds = count($this->multiline) ? true : false;
// foreach ($multiline_client as $slot => $bookmaker) {
// $open = true;
// foreach ($this->fumetto as $item) {
// if ($item['bookmaker_id'] == $bookmaker->bookmaker_id) {
// $this->multiline[$slot] = $item;
// $open = false;
// }
// }
// if ($open) {
// $item = new stdClass;
// $item['icon'] = $bookmaker->bookmaker->icon;
// $item['h3w'] = 0;
// $item['d3w'] = 0;
// $item['a3w'] = 0;
// $item['margin'] = 0;
// $item['bookmaker_id'] = $bookmaker->bookmaker_id;
// $this->multiline[$slot] = $item;
// }
// }
} }
public function getMultilines(): ?array public function getMultilines(): ?array
@@ -66,4 +46,9 @@ class Columns3way extends Column
{ {
return $this->fumetto; return $this->fumetto;
} }
public function hasodds()
{
return $this->has_odds;
}
} }
@@ -1,70 +0,0 @@
<?php
namespace App\Filament\Tables\Columns;
use App\Models\Odds3way;
use App\Models\OddsDc;
use App\Models\OddsDnb;
use Filament\Tables\Columns\Column;
class MultilineColumn extends Column
{
protected string $view = 'filament.tables.columns.multiline.main';
protected ?array $fumetto;
protected ?array $settings;
public function has3Columns(): ?int
{
return $this->settings->has_3_columns;
}
public function getFumetto()
{
return $this->fumetto;
}
public function laodFumetto($event_id)
{
$systemSettings = app('systemSettings');
$this->settings = $systemSettings[auth()->user()->multiline_setting_id];
switch ($this->settings->table) {
case 'odds_2ways':
$this->fumetto = Odds2way::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_2ways_s1':
$this->fumetto = Odds2wayS1::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_3ways':
$this->fumetto = Odds3way::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_dc':
$this->fumetto = OddsDc::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_dnb':
$this->fumetto = OddsDnb::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_ggng':
$this->fumetto = OddsGgng::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_handicaps':
$this->fumetto = OddsHandicap::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_handicaps_q1':
$this->fumetto = OddsHandicapQ1::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_qualify':
$this->fumetto = OddsQualify::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_totals':
$this->fumetto = OddsTotal::with('bookmaker')->where('event_id', $event_id)->get();
break;
case 'odds_totals_q1':
$this->fumetto = OddsTotalQ1::with('bookmaker')->where('event_id', $event_id)->get();
break;
}
}
}
@@ -6,7 +6,7 @@ use App\Models\MultilineSetting;
use App\Models\User; use App\Models\User;
use Livewire\Component; use Livewire\Component;
class MonitorBettypeSwitch extends Component class BettypeToggle extends Component
{ {
public $multilines = []; public $multilines = [];
@@ -32,7 +32,7 @@ class MonitorBettypeSwitch extends Component
public function render() public function render()
{ {
return view('livewire.monitor-bettype-switch'); return view('livewire.bettype-toggle');
} }
public function swopBettype($multiline_setting_id) public function swopBettype($multiline_setting_id)
@@ -41,4 +41,11 @@ class MonitorBettypeSwitch extends Component
$this->js('window.location.reload()'); $this->js('window.location.reload()');
} }
public function toggleBettype($sport, $bettype, $status)
{
User::where('id', auth()->user()->id)->update(["bettype_status->$sport->$bettype" => $status]);
$this->js('window.location.reload()');
}
} }
+5
View File
@@ -19,6 +19,10 @@ class User extends Authenticatable implements FilamentUser, HasAppAuthentication
/** @use HasFactory<\Database\Factories\UserFactory> */ /** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory, Notifiable; use HasFactory, Notifiable;
protected $casts = [
'bettype_status' => 'json',
];
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.
* *
@@ -31,6 +35,7 @@ class User extends Authenticatable implements FilamentUser, HasAppAuthentication
'password', 'password',
'agb_akzeptiert', 'agb_akzeptiert',
'app_verified_at', 'app_verified_at',
'bettype_status',
'sport_id', 'sport_id',
]; ];
+1 -1
View File
@@ -34,7 +34,7 @@ class AppServiceProvider extends ServiceProvider
FilamentView::registerRenderHook( FilamentView::registerRenderHook(
TablesRenderHook::TOOLBAR_SEARCH_AFTER, TablesRenderHook::TOOLBAR_SEARCH_AFTER,
fn (): string => Blade::render('@livewire(\'monitor-bettype-switch\')'), fn (): string => Blade::render('@livewire(\'bettype-toggle\')'),
scopes: [ scopes: [
ListEvents::class, ListEvents::class,
] ]
Generated
+25 -21
View File
@@ -4271,16 +4271,16 @@
}, },
{ {
"name": "nette/utils", "name": "nette/utils",
"version": "v4.1.0", "version": "v4.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nette/utils.git", "url": "https://github.com/nette/utils.git",
"reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72",
"reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4354,9 +4354,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nette/utils/issues", "issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.1.0" "source": "https://github.com/nette/utils/tree/v4.1.1"
}, },
"time": "2025-12-01T17:49:23+00:00" "time": "2025-12-22T12:14:32+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
@@ -10632,16 +10632,16 @@
}, },
{ {
"name": "phpdocumentor/reflection-docblock", "name": "phpdocumentor/reflection-docblock",
"version": "5.6.5", "version": "5.6.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "90614c73d3800e187615e2dd236ad0e2a01bf761" "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8",
"reference": "90614c73d3800e187615e2dd236ad0e2a01bf761", "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10651,7 +10651,7 @@
"phpdocumentor/reflection-common": "^2.2", "phpdocumentor/reflection-common": "^2.2",
"phpdocumentor/type-resolver": "^1.7", "phpdocumentor/type-resolver": "^1.7",
"phpstan/phpdoc-parser": "^1.7|^2.0", "phpstan/phpdoc-parser": "^1.7|^2.0",
"webmozart/assert": "^1.9.1" "webmozart/assert": "^1.9.1 || ^2"
}, },
"require-dev": { "require-dev": {
"mockery/mockery": "~1.3.5 || ~1.6.0", "mockery/mockery": "~1.3.5 || ~1.6.0",
@@ -10690,9 +10690,9 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": { "support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.5" "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6"
}, },
"time": "2025-11-27T19:50:05+00:00" "time": "2025-12-22T21:13:58+00:00"
}, },
{ {
"name": "phpdocumentor/type-resolver", "name": "phpdocumentor/type-resolver",
@@ -12581,23 +12581,23 @@
}, },
{ {
"name": "webmozart/assert", "name": "webmozart/assert",
"version": "1.12.1", "version": "2.0.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/webmozarts/assert.git", "url": "https://github.com/webmozarts/assert.git",
"reference": "9be6926d8b485f55b9229203f962b51ed377ba68" "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", "url": "https://api.github.com/repos/webmozarts/assert/zipball/1b34b004e35a164bc5bb6ebd33c844b2d8069a54",
"reference": "9be6926d8b485f55b9229203f962b51ed377ba68", "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-ctype": "*", "ext-ctype": "*",
"ext-date": "*", "ext-date": "*",
"ext-filter": "*", "ext-filter": "*",
"php": "^7.2 || ^8.0" "php": "^8.2"
}, },
"suggest": { "suggest": {
"ext-intl": "", "ext-intl": "",
@@ -12607,7 +12607,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.10-dev" "dev-feature/2-0": "2.0-dev"
} }
}, },
"autoload": { "autoload": {
@@ -12623,6 +12623,10 @@
{ {
"name": "Bernhard Schussek", "name": "Bernhard Schussek",
"email": "bschussek@gmail.com" "email": "bschussek@gmail.com"
},
{
"name": "Woody Gilk",
"email": "woody.gilk@gmail.com"
} }
], ],
"description": "Assertions to validate method input/output with nice error messages.", "description": "Assertions to validate method input/output with nice error messages.",
@@ -12633,9 +12637,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/webmozarts/assert/issues", "issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/1.12.1" "source": "https://github.com/webmozarts/assert/tree/2.0.0"
}, },
"time": "2025-10-29T15:56:20+00:00" "time": "2025-12-16T21:36:00+00:00"
} }
], ],
"aliases": [], "aliases": [],
@@ -20,6 +20,7 @@ return new class extends Migration
$table->integer('client_id'); $table->integer('client_id');
$table->integer('sport_id')->default(1); $table->integer('sport_id')->default(1);
$table->integer('multiline_setting_id')->nullable(); $table->integer('multiline_setting_id')->nullable();
$table->json('bettype_status')->nullable();
$table->boolean('super_admin')->default(false); $table->boolean('super_admin')->default(false);
$table->text('app_authentication_secret')->nullable(); $table->text('app_authentication_secret')->nullable();
-2
View File
@@ -1990,7 +1990,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=12" "node": ">=12"
}, },
@@ -2224,7 +2223,6 @@
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.27.0", "esbuild": "^0.27.0",
"fdir": "^6.5.0", "fdir": "^6.5.0",
+1 -1
View File
@@ -1 +1 @@
import './bootstrap'; import './bootstrap';
-29
View File
@@ -1,29 +0,0 @@
var tabledata = [
{ id: 1, name: "Oli Bob", age: "12", col: "red", dob: "" },
{ id: 2, name: "Mary May", age: "1", col: "blue", dob: "14/05/1982" },
{ id: 3, name: "Christine Lobowski", age: "42", col: "green", dob: "22/05/1982" },
{ id: 4, name: "Brendon Philips", age: "125", col: "orange", dob: "01/08/1980" },
{ id: 5, name: "Margret Marmajuke", age: "16", col: "yellow", dob: "31/01/1999" },
];
// console.log('tabledata', tabledata);
import { TabulatorFull as Tabulator } from 'tabulator-tables';
var table = new Tabulator("#example-table", {
height: "311px",
data: tabledata, //assign data to table
layout: "fitColumns", //fit columns to width of table (optional)
columns: [
{ title: "Name", field: "name" },
{ title: "Progress", field: "progress", sorter: "number" },
{ title: "Gender", field: "gender" },
{ title: "Rating", field: "rating" },
{ title: "Favourite Color", field: "col" },
{ title: "Date Of Birth", field: "dob", hozAlign: "center" },
],
});
table.on("rowClick", function (e, row) {
alert("Row " + row.getData().id + " Clicked!!!!");
});
@@ -3,7 +3,7 @@
@endphp @endphp
@if (isset($icon)) @if (isset($icon))
<div class="w-12 bg-contain bg-center bg-no-repeat dark:opacity-90" title="{{ $bookmaker_id }}" <div class="m-0 w-14 h-3 bg-contain bg-center bg-no-repeat my-auto" title="{{ $bookmaker_id }}"
style="background-image: url('{{ BkmIconMap::get($icon) }}')"> style="background-image: url('{{ BkmIconMap::get($icon) }}')">
</div> </div>
@endif @endif
@@ -1,13 +1,7 @@
<div class="mx-3 my-auto" x-data="{ open: false }"> @if ($hasodds())
<div x-on:mouseover="open = true" x-on:mouseleave="open = false"> <div x-data="{ message: 'loading..' }" class="mx-3 my-auto">
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="alert gray" /> <template x-ref="template">
</div> <div class="grid grid-cols-5 grid-rows-5 gap-2 m-5">
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 transform translate-y-2"
x-transition:enter-end="opacity-100 transform translate-y-0">
<div
class="absolute z-10 bg-gray-100 dark:bg-gray-800 p-5 border border-gray-300 dark:border-gray-900 rounded-md">
<div class="grid grid-cols-5 grid-rows-5 gap-2">
@foreach ($getFumetto() as $item) @foreach ($getFumetto() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
@@ -36,6 +30,14 @@
]) ])
@endforeach @endforeach
</div> </div>
</div> </template>
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{
content: () => $refs.template.innerHTML,
allowHTML: true,
theme: $store.theme,
appendTo: $root
}" />
</div> </div>
</div> @endif
@@ -1,55 +1 @@
<div class="flex justify-start gap-0 text-xs"> <div class="w-12 text-center">{{ $label }}</div>
<div class="w-8 text-center"></div>
@switch(auth()->user()->multiline_setting_id)
@case(1)
@case(13)
<div class="w-12 text-center">1</div>
<div class="w-12 text-center">X</div>
<div class="w-12 text-center">2</div>
@break
@case(7)
@case(12)
@case(16)
@case(17)
@case(8)
@case(14)
@case(9)
@case(5)
<div class="w-12 text-center">Home</div>
<div class="w-12 text-center">Away</div>
@break
@case(2)
<div class="w-12 text-center">1X</div>
<div class="w-12 text-center">12</div>
<div class="w-12 text-center">2X</div>
@break
@case(3)
<div class="w-12 text-center">DNB 1</div>
<div class="w-12 text-center">DNB 2</div>
@break
@case(4)
<div class="w-12 text-center">Goal</div>
<div class="w-12 text-center">No Goal</div>
@break
@case(6)
@case(10)
@case(15)
@case(18)
@case(11)
<div class="w-12 text-center">O</div>
<div class="w-12 text-center">U</div>
<div class="w-12 text-center">Total</div>
@break
@endswitch
<div class="w-12 text-center">M</div>
</div>
@@ -0,0 +1,56 @@
<div class="flex justify-start gap-1 text-xs">
<div class="w-6 text-center"></div>
<div class="w-15 text-center"></div>
@switch(auth()->user()->multiline_setting_id)
@case(1)
@case(13)
@include('filament.tables.columns.multiline.label', ['label' => '1'])
@include('filament.tables.columns.multiline.label', ['label' => 'X'])
@include('filament.tables.columns.multiline.label', ['label' => '2'])
@break
@case(7)
@case(12)
@case(16)
@case(17)
@case(8)
@case(14)
@case(9)
@case(5)
@include('filament.tables.columns.multiline.label', ['label' => 'Home'])
@include('filament.tables.columns.multiline.label', ['label' => 'AWAY'])
@break
@case(2)
@include('filament.tables.columns.multiline.label', ['label' => '1X'])
@include('filament.tables.columns.multiline.label', ['label' => '12'])
@include('filament.tables.columns.multiline.label', ['label' => '2X'])
@break
@case(3)
@include('filament.tables.columns.multiline.label', ['label' => 'DNB 1'])
@include('filament.tables.columns.multiline.label', ['label' => 'DNB 2'])
@break
@case(4)
@include('filament.tables.columns.multiline.label', ['label' => 'GOAL'])
@include('filament.tables.columns.multiline.label', ['label' => 'NO GOAL'])
@break
@case(6)
@case(10)
@case(15)
@case(18)
@case(11)
@include('filament.tables.columns.multiline.label', ['label' => 'O'])
@include('filament.tables.columns.multiline.label', ['label' => 'U'])
@include('filament.tables.columns.multiline.label', ['label' => 'TOTAL'])
@break
@endswitch
@include('filament.tables.columns.multiline.label', ['label' => 'M'])
</div>
@@ -3,7 +3,7 @@
@endphp @endphp
@if ($has3Columns()) @if ($has3Columns())
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-5 grid-rows-5 text-xs "> <div {{ $getExtraAttributeBag() }} class="grid grid-cols-5 grid-rows-5 text-xs">
@else @else
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-4 grid-rows-5 text-xs"> <div {{ $getExtraAttributeBag() }} class="grid grid-cols-4 grid-rows-5 text-xs">
@endif @endif
@@ -2,7 +2,7 @@
use App\Utilities\OddsFormatting; use App\Utilities\OddsFormatting;
@endphp @endphp
<div class="w-12 text-center"> <div class="w-12 h-5 text-center mb-0.5">
&nbsp; &nbsp;
@if (isset($odd)) @if (isset($odd))
{{ OddsFormatting::get($odd, $decimal) }} {{ OddsFormatting::get($odd, $decimal) }}