Remove refresh icon and fix Safari/WebKit runtime errors

- Removed manual refresh button from frontend (kept auto-refresh functionality)
- Fixed WebKit 'object cannot be found' error by replacing absolute positioning with flexbox
- Added lazy loading to images to prevent preload warnings
- Cleaned up unused imports and variables:
  - Removed unused useRef import
  - Removed unused colors state variable and colorService
  - Removed unused ColorSwatch import from FilamentTableV2
  - Removed unused getModifierIcon function from MaterialBadge
- Updated tests to match current implementation
- Improved layout stability for better cross-browser compatibility
- Removed temporary migration scripts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
DaX
2025-06-30 22:37:30 +02:00
parent 58b3ff2dec
commit 12e91d4c3e
33 changed files with 1646 additions and 668 deletions

View File

@@ -0,0 +1,29 @@
-- Add 1 refill filament for each color as user owns all basic colors
-- This creates PLA Basic filaments with 1 refill for each color in the database
-- First, let's insert filaments for all existing colors
INSERT INTO filaments (tip, finish, boja, boja_hex, refill, spulna, kolicina, cena)
SELECT
'PLA' as tip,
'Basic' as finish,
c.name as boja,
c.hex as boja_hex,
1 as refill,
0 as spulna,
1 as kolicina,
'3999' as cena
FROM colors c
WHERE NOT EXISTS (
-- Only insert if this exact combination doesn't already exist
SELECT 1 FROM filaments f
WHERE f.tip = 'PLA'
AND f.finish = 'Basic'
AND f.boja = c.name
);
-- Update any existing PLA Basic filaments to have at least 1 refill
UPDATE filaments
SET refill = '1'
WHERE tip = 'PLA'
AND finish = 'Basic'
AND (refill IS NULL OR refill = '0' OR refill = '');

View File

@@ -0,0 +1,2 @@
-- Remove otvoreno column from filaments table
ALTER TABLE filaments DROP COLUMN IF EXISTS otvoreno;

View File

@@ -0,0 +1,5 @@
-- Rename vakum column to spulna
ALTER TABLE filaments RENAME COLUMN vakum TO spulna;
-- Update existing data to use 'spulna' instead of 'vakuum'
UPDATE filaments SET spulna = REPLACE(spulna, 'vakuum', 'spulna') WHERE spulna LIKE '%vakuum%';

View File

@@ -0,0 +1,48 @@
-- Update spulna to '0' for colors that only come as refills
UPDATE filaments
SET spulna = '0'
WHERE boja IN (
'Beige',
'Light Gray',
'Yellow',
'Orange',
'Gold',
'Bright Green',
'Pink',
'Magenta',
'Maroon Red',
'Purple',
'Turquoise',
'Cobalt Blue',
'Brown',
'Bronze',
'Silver',
'Blue Grey',
'Dark Gray'
);
-- Also update their quantity to be based only on refill count
UPDATE filaments
SET kolicina = CASE
WHEN refill ~ '^\d+$' THEN CAST(refill AS INTEGER)
ELSE 0
END
WHERE boja IN (
'Beige',
'Light Gray',
'Yellow',
'Orange',
'Gold',
'Bright Green',
'Pink',
'Magenta',
'Maroon Red',
'Purple',
'Turquoise',
'Cobalt Blue',
'Brown',
'Bronze',
'Silver',
'Blue Grey',
'Dark Gray'
);

View File

@@ -0,0 +1,43 @@
-- Fix quantity calculations to be the sum of refill + spulna counts
UPDATE filaments
SET kolicina =
COALESCE(
CASE
WHEN refill ~ '^\d+$' THEN CAST(refill AS INTEGER)
ELSE 0
END, 0
) +
COALESCE(
CASE
WHEN spulna ~ '^(\d+)\s*spuln' THEN
CAST(SUBSTRING(spulna FROM '^(\d+)\s*spuln') AS INTEGER)
ELSE 0
END, 0
);
-- Specifically fix refill-only colors to ensure quantity matches refill count
UPDATE filaments
SET kolicina =
CASE
WHEN refill ~ '^\d+$' THEN CAST(refill AS INTEGER)
ELSE 0
END
WHERE boja IN (
'Beige',
'Light Gray',
'Yellow',
'Orange',
'Gold',
'Bright Green',
'Pink',
'Magenta',
'Maroon Red',
'Purple',
'Turquoise',
'Cobalt Blue',
'Brown',
'Bronze',
'Silver',
'Blue Grey',
'Dark Gray'
);

View File

@@ -0,0 +1,36 @@
-- Standardize data types for refill and spulna columns
-- First, convert existing string values to integers
-- Create temporary columns
ALTER TABLE filaments ADD COLUMN refill_new INTEGER DEFAULT 0;
ALTER TABLE filaments ADD COLUMN spulna_new INTEGER DEFAULT 0;
-- Convert refill values
UPDATE filaments
SET refill_new = CASE
WHEN refill ~ '^\d+$' THEN CAST(refill AS INTEGER)
WHEN LOWER(refill) = 'da' THEN 1
ELSE 0
END;
-- Convert spulna values (extract number from "X spulna" format)
UPDATE filaments
SET spulna_new = CASE
WHEN spulna ~ '^(\d+)\s*spuln' THEN
CAST(SUBSTRING(spulna FROM '^(\d+)\s*spuln') AS INTEGER)
WHEN spulna ~ '^\d+$' THEN CAST(spulna AS INTEGER)
ELSE 0
END;
-- Drop old columns and rename new ones
ALTER TABLE filaments DROP COLUMN refill;
ALTER TABLE filaments DROP COLUMN spulna;
ALTER TABLE filaments RENAME COLUMN refill_new TO refill;
ALTER TABLE filaments RENAME COLUMN spulna_new TO spulna;
-- Update kolicina to ensure it matches refill + spulna
UPDATE filaments SET kolicina = refill + spulna;
-- Add check constraint to ensure kolicina is always the sum of refill and spulna
ALTER TABLE filaments ADD CONSTRAINT check_kolicina
CHECK (kolicina = refill + spulna);

View File

@@ -0,0 +1,7 @@
-- Add price fields to colors table
ALTER TABLE colors
ADD COLUMN cena_refill INTEGER DEFAULT 3499,
ADD COLUMN cena_spulna INTEGER DEFAULT 3999;
-- Update existing colors with default prices
UPDATE colors SET cena_refill = 3499, cena_spulna = 3999;

View File

@@ -8,6 +8,8 @@ CREATE TABLE colors (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(100) NOT NULL UNIQUE,
hex VARCHAR(7) NOT NULL,
cena_refill INTEGER DEFAULT 3499,
cena_spulna INTEGER DEFAULT 3999,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
@@ -19,14 +21,14 @@ CREATE TABLE filaments (
finish VARCHAR(50) NOT NULL,
boja VARCHAR(100) NOT NULL,
boja_hex VARCHAR(7),
refill VARCHAR(10),
vakum VARCHAR(20),
otvoreno VARCHAR(20),
kolicina INTEGER DEFAULT 1,
refill INTEGER DEFAULT 0,
spulna INTEGER DEFAULT 0,
kolicina INTEGER DEFAULT 0,
cena VARCHAR(50),
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_color FOREIGN KEY (boja) REFERENCES colors(name) ON UPDATE CASCADE
CONSTRAINT fk_color FOREIGN KEY (boja) REFERENCES colors(name) ON UPDATE CASCADE,
CONSTRAINT check_kolicina CHECK (kolicina = refill + spulna)
);
-- Create indexes for better performance