tooltip final

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

No files matched your search

@@ -18,6 +18,7 @@ class Fixtures
$debug = Nuh::$options['d'] ?? 0;
$echo = Nuh::$options['e'] ?? 0;
$break = Nuh::$options['b'] ?? 0;
$week = Nuh::$options['w'] ?? 0;
$count = 0;
$total = 0;
@@ -101,6 +102,10 @@ class Fixtures
if ($break) {
break;
}
if ($week && $i == 7) {
break;
}
}
if ($debug) {
Notice::note("Total - $total events processed", 'g');
@@ -58,7 +58,7 @@ class EventsTable
->alignRight(),
TextColumn::make('away.name')
->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')
->defaultSort('starttime', 'ASC')
+8 -23
View File
@@ -13,6 +13,8 @@ class Columns3way extends Column
protected ?array $fumetto;
protected ?bool $has_odds;
public function loadData($record, $multiline_client)
{
@@ -32,29 +34,7 @@ class Columns3way extends Column
}
}
// $this->multiline = [];
// 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;
// }
// }
$this->has_odds = count($this->multiline) ? true : false;
}
public function getMultilines(): ?array
@@ -66,4 +46,9 @@ class Columns3way extends Column
{
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 Livewire\Component;
class MonitorBettypeSwitch extends Component
class BettypeToggle extends Component
{
public $multilines = [];
@@ -32,7 +32,7 @@ class MonitorBettypeSwitch extends Component
public function render()
{
return view('livewire.monitor-bettype-switch');
return view('livewire.bettype-toggle');
}
public function swopBettype($multiline_setting_id)
@@ -41,4 +41,11 @@ class MonitorBettypeSwitch extends Component
$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, Notifiable;
protected $casts = [
'bettype_status' => 'json',
];
/**
* The attributes that are mass assignable.
*
@@ -31,6 +35,7 @@ class User extends Authenticatable implements FilamentUser, HasAppAuthentication
'password',
'agb_akzeptiert',
'app_verified_at',
'bettype_status',
'sport_id',
];
+1 -1
View File
@@ -34,7 +34,7 @@ class AppServiceProvider extends ServiceProvider
FilamentView::registerRenderHook(
TablesRenderHook::TOOLBAR_SEARCH_AFTER,
fn (): string => Blade::render('@livewire(\'monitor-bettype-switch\')'),
fn (): string => Blade::render('@livewire(\'bettype-toggle\')'),
scopes: [
ListEvents::class,
]
Generated
+25 -21
View File
@@ -4271,16 +4271,16 @@
},
{
"name": "nette/utils",
"version": "v4.1.0",
"version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
"reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0"
"reference": "c99059c0315591f1a0db7ad6002000288ab8dc72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0",
"reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0",
"url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72",
"reference": "c99059c0315591f1a0db7ad6002000288ab8dc72",
"shasum": ""
},
"require": {
@@ -4354,9 +4354,9 @@
],
"support": {
"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",
@@ -10632,16 +10632,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "5.6.5",
"version": "5.6.6",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "90614c73d3800e187615e2dd236ad0e2a01bf761"
"reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761",
"reference": "90614c73d3800e187615e2dd236ad0e2a01bf761",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8",
"reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8",
"shasum": ""
},
"require": {
@@ -10651,7 +10651,7 @@
"phpdocumentor/reflection-common": "^2.2",
"phpdocumentor/type-resolver": "^1.7",
"phpstan/phpdoc-parser": "^1.7|^2.0",
"webmozart/assert": "^1.9.1"
"webmozart/assert": "^1.9.1 || ^2"
},
"require-dev": {
"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.",
"support": {
"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",
@@ -12581,23 +12581,23 @@
},
{
"name": "webmozart/assert",
"version": "1.12.1",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "9be6926d8b485f55b9229203f962b51ed377ba68"
"reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68",
"reference": "9be6926d8b485f55b9229203f962b51ed377ba68",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/1b34b004e35a164bc5bb6ebd33c844b2d8069a54",
"reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-date": "*",
"ext-filter": "*",
"php": "^7.2 || ^8.0"
"php": "^8.2"
},
"suggest": {
"ext-intl": "",
@@ -12607,7 +12607,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.10-dev"
"dev-feature/2-0": "2.0-dev"
}
},
"autoload": {
@@ -12623,6 +12623,10 @@
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
},
{
"name": "Woody Gilk",
"email": "woody.gilk@gmail.com"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
@@ -12633,9 +12637,9 @@
],
"support": {
"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": [],
@@ -20,6 +20,7 @@ return new class extends Migration
$table->integer('client_id');
$table->integer('sport_id')->default(1);
$table->integer('multiline_setting_id')->nullable();
$table->json('bettype_status')->nullable();
$table->boolean('super_admin')->default(false);
$table->text('app_authentication_secret')->nullable();
-2
View File
@@ -1990,7 +1990,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -2224,7 +2223,6 @@
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
-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
@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) }}')">
</div>
@endif
@@ -1,13 +1,7 @@
<div class="mx-3 my-auto" x-data="{ open: false }">
<div x-on:mouseover="open = true" x-on:mouseleave="open = false">
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="alert gray" />
</div>
<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">
@if ($hasodds())
<div x-data="{ message: 'loading..' }" class="mx-3 my-auto">
<template x-ref="template">
<div class="grid grid-cols-5 grid-rows-5 gap-2 m-5">
@foreach ($getFumetto() as $item)
@include('filament.tables.columns.multiline.bkm', [
@@ -36,6 +30,14 @@
])
@endforeach
</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-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>
<div class="w-12 text-center">{{ $label }}</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>
@@ -2,7 +2,7 @@
use App\Utilities\OddsFormatting;
@endphp
<div class="w-12 text-center">
<div class="w-12 h-5 text-center mb-0.5">
&nbsp;
@if (isset($odd))
{{ OddsFormatting::get($odd, $decimal) }}