From 13feb3130409baa29ece28b70c31a78b38b1e67d Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Thu, 12 Mar 2026 00:39:45 +0200 Subject: [PATCH] Laitetilat: laitelinkit kortteihin + Sijainnit pois yritysasetuksista MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Laitetila-laite-yhteys: - Lisätty laitetila_id -sarake devices-tauluun - Laite-lomakkeeseen uusi "Laitetila" dropdown (Tekniikka → Laitteet) - Laitetila-kortit näyttävät laitemäärän ja laitechipit (max 4 + "+N muuta") - Laitetilan detailnäkymässä taulukko tilan laitteista (nimi, tyyppi, malli, IP, ping) - dbLoadLaitetilat palauttaa device_count ja devices-listan per laitetila Yritysasetukset: - Poistettu Sijainnit-osio yrityksen tiedoista (hallitaan Tekniikka → Sijainnit) - Sijainnit sub-tab Tekniikassa pysyy ennallaan Co-Authored-By: Claude Opus 4.6 --- api.php | 1 + db.php | 13 ++++-- index.html | 43 +++++------------- script.js | 127 +++++++++++++++++++++++++---------------------------- style.css | 18 ++++++++ 5 files changed, 101 insertions(+), 101 deletions(-) diff --git a/api.php b/api.php index 6c985da..c9ba867 100644 --- a/api.php +++ b/api.php @@ -1944,6 +1944,7 @@ switch ($action) { 'hallintaosoite' => trim($input['hallintaosoite'] ?? ''), 'serial' => trim($input['serial'] ?? ''), 'site_id' => $input['site_id'] ?? null, + 'laitetila_id' => $input['laitetila_id'] ?? null, 'funktio' => trim($input['funktio'] ?? ''), 'tyyppi' => trim($input['tyyppi'] ?? ''), 'malli' => trim($input['malli'] ?? ''), diff --git a/db.php b/db.php index 6304a22..fe558f0 100644 --- a/db.php +++ b/db.php @@ -614,6 +614,7 @@ function initDatabase(): void { "ALTER TABLE documents ADD COLUMN folder_id VARCHAR(20) DEFAULT NULL AFTER customer_id", "ALTER TABLE documents ADD COLUMN max_versions INT DEFAULT 10 AFTER current_version", "ALTER TABLE document_versions ADD COLUMN content MEDIUMTEXT DEFAULT NULL AFTER mime_type", + "ALTER TABLE devices ADD COLUMN laitetila_id VARCHAR(20) DEFAULT NULL AFTER site_id", ]; foreach ($alters as $sql) { try { $db->query($sql); } catch (\Throwable $e) { /* sarake on jo olemassa / jo ajettu */ } @@ -1070,9 +1071,10 @@ function dbDeleteSite(string $siteId): void { function dbLoadDevices(string $companyId): array { $devices = _dbFetchAll(" - SELECT d.*, s.nimi AS site_name + SELECT d.*, s.nimi AS site_name, lt.nimi AS laitetila_name FROM devices d LEFT JOIN sites s ON d.site_id = s.id + LEFT JOIN laitetilat lt ON d.laitetila_id = lt.id WHERE d.company_id = ? ORDER BY d.nimi ", [$companyId]); @@ -1085,11 +1087,11 @@ function dbLoadDevices(string $companyId): array { function dbSaveDevice(string $companyId, array $device): void { _dbExecute(" - INSERT INTO devices (id, company_id, nimi, hallintaosoite, serial, site_id, funktio, tyyppi, malli, ping_check, lisatiedot, luotu, muokattu, muokkaaja) - VALUES (:id, :company_id, :nimi, :hallintaosoite, :serial, :site_id, :funktio, :tyyppi, :malli, :ping_check, :lisatiedot, :luotu, :muokattu, :muokkaaja) + INSERT INTO devices (id, company_id, nimi, hallintaosoite, serial, site_id, laitetila_id, funktio, tyyppi, malli, ping_check, lisatiedot, luotu, muokattu, muokkaaja) + VALUES (:id, :company_id, :nimi, :hallintaosoite, :serial, :site_id, :laitetila_id, :funktio, :tyyppi, :malli, :ping_check, :lisatiedot, :luotu, :muokattu, :muokkaaja) ON DUPLICATE KEY UPDATE nimi = VALUES(nimi), hallintaosoite = VALUES(hallintaosoite), serial = VALUES(serial), - site_id = VALUES(site_id), funktio = VALUES(funktio), tyyppi = VALUES(tyyppi), + site_id = VALUES(site_id), laitetila_id = VALUES(laitetila_id), funktio = VALUES(funktio), tyyppi = VALUES(tyyppi), malli = VALUES(malli), ping_check = VALUES(ping_check), lisatiedot = VALUES(lisatiedot), muokattu = VALUES(muokattu), muokkaaja = VALUES(muokkaaja) ", [ @@ -1099,6 +1101,7 @@ function dbSaveDevice(string $companyId, array $device): void { 'hallintaosoite' => $device['hallintaosoite'] ?? '', 'serial' => $device['serial'] ?? '', 'site_id' => !empty($device['site_id']) ? $device['site_id'] : null, + 'laitetila_id' => !empty($device['laitetila_id']) ? $device['laitetila_id'] : null, 'funktio' => $device['funktio'] ?? '', 'tyyppi' => $device['tyyppi'] ?? '', 'malli' => $device['malli'] ?? '', @@ -1950,6 +1953,8 @@ function dbLoadLaitetilat(string $companyId): array { $tilat = _dbFetchAll("SELECT * FROM laitetilat WHERE company_id = ? ORDER BY nimi", [$companyId]); foreach ($tilat as &$t) { $t['file_count'] = (int)_dbFetchScalar("SELECT COUNT(*) FROM laitetila_files WHERE laitetila_id = ?", [$t['id']]); + $t['device_count'] = (int)_dbFetchScalar("SELECT COUNT(*) FROM devices WHERE laitetila_id = ? AND company_id = ?", [$t['id'], $companyId]); + $t['devices'] = _dbFetchAll("SELECT id, nimi, tyyppi, malli, hallintaosoite, ping_status FROM devices WHERE laitetila_id = ? AND company_id = ? ORDER BY nimi", [$t['id'], $companyId]); } return $tilat; } diff --git a/index.html b/index.html index 5cbec61..6473bff 100644 --- a/index.html +++ b/index.html @@ -983,6 +983,12 @@

Tiedostot

+ + +
+

🖥 Laitteet

+
+
@@ -1717,37 +1723,6 @@ - -
-
-

Sijainnit

- -
-

Toimipisteet ja konesalit joihin laitteita voidaan sijoittaa.

-
- -

Käyttäjäoikeudet

@@ -1793,6 +1768,12 @@
+
+ + +