User avatar

connect ulang ke printer

Muhammad Alfin 3 weeks ago
Open

Saat Halaman di Refresh harus connect ulang ke printer

Segera berlangganan untuk memberikan komentar di forum ini.
Open

bagaimana cara jalankan langsung source hasil dari download tutorial ?

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

cetak struk dengan hp

william fina 2 months ago
Open

siang ka, saya sudah bisa cetak struk lewat komputer. saya mau coba untuk pakai hp untuk cetak struknya namun belum bisa. apakah da saran atau tutorialnya. trimakasih

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

Printer selain yang direkomendasikan di video

alfeus hersandy 3 months ago
Open

saya sudah punya printer inforce, namun dengan uuid yang ada di dalam video tidak bisa jalan, adakah cara saya melihat uuid dari printer saya ? terima kasih 

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

Decode

joe wijaya 3 months ago
Closed
Ticket Screenshot

mas, sy sdh ikutin videonya, tinker berhasil decode tapi pas di coba di web tidak keluuar antriannya ?

 

User avatar
joe wijaya 3 months ago

saya coba lg seperti ini mas, apakah sudah benar ?

Comment image
Diskusi ini telah ditutup
User avatar

Suara Panggilan Tidak Muncul

Gandhi Firmansyah 3 months ago
Open

Saya sudah coba mengikuti arahan, namun suara panggilan tidak muncul. Dan sempat muncul tapi setelah itu tidak ada lagi.
Di developer tools, di console tidak ada error. Apakah delay dari koneksi internet ya ?

User avatar
Muhammad Qadri Mentor 3 months ago

Halo mas, apakah kasus ini muncul ketika webnya sudah di production?

Kemudian, di file DashboardKiosk.php di function callNextQueue coba di debug setelah baris $nextQueues, apakah ada isinya? kalau ada, apakah ada item $nextQueue yang "tidak" memiliki counter_id?

public function callNextQueue()
    {
       $nextQueues = Queue::where('status', 'waiting')
       ->whereDate('created_at', now()->format('Y-m-d'))
       ->whereNull('called_at')
       ->get();

       // DEBUG HERE
       dd($nextQueues);

       foreach ($nextQueues as $nextQueue)
       {
            if (!$nextQueue->counter) continue;
           
            $this->dispatch("queue-called", "Nomor Antrian " . $nextQueue->number . " segera ke " . $nextQueue->counter->name);

            $nextQueue->update(['called_at' => now()]);
       }
    }
Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

Menanyakan versi

Dada Mustaqiem 4 months ago
Open

ada versi Bladenya mas, pakai controller biasa, tidak pakai filament, fungsi semua jalan..
terimakasih Sekali jika ada...

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

ingin melengkapi

Dimas Nur 4 months ago
Open
Ticket Screenshot

pak ini cara untuk menjadi 4 kolom atau nambah loket lagi gimana ya? seperti contoh demo di yt

 

User avatar
Dimas Nur 4 months ago

jadi untuk dashbroad loket saya ada button buat kenapa ya min?

Comment image
User avatar
Dimas Nur 4 months ago

gak ada tombol button untuk buat loket baru

User avatar
Muhammad Qadri Mentor 4 months ago

Halo mas maaf baru direspon

Bisa dicek di file ini ya mas app/Filament/Resources/CounterResource.php

class CounterResource extends Resource
{
    ...
    public static function canCreate(): bool
    {
        return auth()->user()->role === 'admin';
    }

  .....

}

Sepertinya role user yg sedang login bukan admin mas, makanya tidak muncul

User avatar
Dimas Nur 4 months ago
<?php

namespace App\Filament\Resources;

use App\Filament\Resources\CounterResource\Pages;
use App\Models\Counter;
use App\Services\QueueService;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Actions\Action;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;

class CounterResource extends Resource
{
    protected static ?string $model = Counter::class;

    protected static ?string $label = 'Loket';
    protected static ?string $navigationIcon = 'heroicon-o-hashtag';
    protected static ?string $navigationGroup = 'Administrasi';

    public static function canCreate(): bool
    {
        return auth()->user()->role === 'admin';
    }

    public static function canEdit(Model $record): bool
    {
        return auth()->user()->role === 'admin';
    }

    public static function canDelete(Model $record): bool
    {
        return auth()->user()->role === 'admin';
    }

    public static function form(Form $form): Form
    {
        return $form->schema([
            Forms\Components\TextInput::make('name')
                ->required()
                ->maxLength(255),

            Forms\Components\Select::make('service_id')
                ->required()
                ->relationship('service', 'name'),

            Forms\Components\Toggle::make('is_active')
                ->required(),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                Tables\Columns\TextColumn::make('name')->label('Nama')->searchable(),
                Tables\Columns\TextColumn::make('service.name')->label('Layanan')->sortable(),
                Tables\Columns\TextColumn::make('activeQueue.number')->label('Nomor Antrian Saat ini')->searchable(),
                Tables\Columns\TextColumn::make('activeQueue.status')->label('Status Antrian')->sortable(),
                Tables\Columns\IconColumn::make('is_active')->label('Status Aktif')->boolean(),
                Tables\Columns\TextColumn::make('created_at')->dateTime()->sortable()->toggleable(isToggledHiddenByDefault: true),
                Tables\Columns\TextColumn::make('updated_at')->dateTime()->sortable()->toggleable(isToggledHiddenByDefault: true),
            ])
            ->actions([
                Tables\Actions\EditAction::make(),
                Tables\Actions\DeleteAction::make(),
                self::getCallNextQueueAction(),
                self::getServeQueueAction(),
                self::getFinishQueueAction(),
                self::getCancelQueueAction(),
            ])
            ->bulkActions([
                Tables\Actions\BulkActionGroup::make([
                    Tables\Actions\DeleteBulkAction::make(),
                ]),
            ])
            ->poll('5s');
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ManageCounters::route('/'),
        ];
    }

    // ====== Custom Actions ======

    private static function getCallNextQueueAction(): Action
    {
        return Action::make('callNextQueue')
            ->label("Panggil")
            ->icon("heroicon-o-speaker-wave")
            ->button()
            ->visible(fn(Counter $record) => $record->hasNextQueue)
            ->action(function (Counter $record, $livewire) {
                $nextQueue = app(QueueService::class)->callNextQueue($record->id);

                if (!$nextQueue) {
                    Notification::make()
                        ->title('Tidak ada antrian selanjutnya')
                        ->danger()
                        ->send();

                    return;
                }

                $livewire->dispatch('queue-called', "Nomor Antrian {$nextQueue->number} segera ke {$record->name}");

                Notification::make()
                    ->title('Antrian berikutnya dipanggil')
                    ->success()
                    ->send();
            });
    }

    private static function getServeQueueAction(): Action
    {
        return Action::make('serve')
            ->label('Layani')
            ->button()
            ->color('success')
            ->icon('heroicon-o-check-circle')
            ->action(fn(Counter $record) => app(QueueService::class)->serveQueue($record->activeQueue))
            ->requiresConfirmation()
            ->visible(fn(Counter $record) => $record->is_available && $record->activeQueue);
    }

    private static function getFinishQueueAction(): Action
    {
        return Action::make('finishQueue')
            ->label('Selesai')
            ->button()
            ->icon('heroicon-o-check')
            ->action(fn(Counter $record) => app(QueueService::class)->finishQueue($record->activeQueue))
            ->requiresConfirmation()
            ->visible(fn(Counter $record) => $record->activeQueue?->status === 'serving');
    }

    private static function getCancelQueueAction(): Action
    {
        return Action::make('cancelQueue')
            ->label('Batalkan')
            ->button()
            ->color('danger')
            ->icon('heroicon-o-x-circle')
            ->action(fn(Counter $record) => app(QueueService::class)->cancelQueue($record->activeQueue))
            ->requiresConfirmation()
            ->visible(fn(Counter $record) => $record->is_available && $record->activeQueue);
    }
}
Comment image
User avatar
Dimas Nur 4 months ago

ini pak surcode saya, 

User avatar
Muhammad Qadri Mentor 4 months ago

apakah sudah dipastikan role user yang sedang login == 'admin'?

User avatar
Dimas Nur 4 months ago

sudag pak

Segera berlangganan untuk memberikan komentar di forum ini.

Tidak muncul alert connected maupun console.log penyambungan ke thermal printer

@push('scripts')
<script>
document.addEventListener('livewire:initialized',() => {
    const connectButton = document.getElementById('connect-button');

    connectButton.addEventListener('click', async () => {
       console.log(await getPrinter())
    })
})
</script>
User avatar
Muhammad Qadri Mentor 4 months ago

Halo mas, mohon dipastikan

1. di File app\Providers\AppServiceProvider.php sudah diregister Asset JS nya

    public function boot(): void
    {
        FilamentAsset::register([
            Js::make('thermal-printer', asset('js/thermal-printer.js')),
            Js::make('call-queue', asset('js/call-queue.js'))
        ]);
    }

2. File public\js\thermal-printer.js ada dan terdapat function getPrinter

3. Di file resources\views\filament\pages\dashboard-kiosk.blade.php sudah menggunakan layout base-kiosk

    protected static string $layout = 'filament.layouts.base-kiosk';

4. Di file resources\views\filament\layouts\base-kiosk.blade.php sudah memasukkan filament scripts di tag head
<head>
....
    @filamentScripts
...
</head>
Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

Login

Muh Syaeful Akbar 5 months ago
Open

Pada menu login source code paswordnya apa yah

User avatar
Muhammad Qadri Mentor 5 months ago

Kalau yg dimaksud adalah default password user, ini di-generate kak menggunakan command "php artisan make:filament-user"

Segera berlangganan untuk memberikan komentar di forum ini.

Buat Pertanyaan Baru

Edit Pertanyaan

Konfirmasi Hapus

Apakah Anda yakin ingin menghapus pertanyaan ini? Tindakan ini tidak dapat dibatalkan.