Forum: Projekte & Code [WIP] Lagerverwaltung Part-DB 1.0


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jan B. (do9jhb)


Lesenswert?

Hallo alle zusammen,

im Moment arbeite ich an einer neuen Version von Part-DB.
Dies wird ein komplettes Rewrite von Part-DB auf Basis eines modernen 
PHP Frameworks (Symfony 4). Da sie daher inkompatibel zur alten Version 
ist (ein Upgrade der Datenbank ist aber problemlos möglich), ist es 
jetzt Version 1.0 (um sich an Semantic Versioning zu orientieren).

Die Version befindet sich im Moment in Entwicklung, es fehlen aber noch 
viele Funktionen aus der alten Version, weswegen man die Version noch 
nicht als Produktivversion benutzen sollte.

Dieser Thread soll dazu dienen über die neue Version zu diskutieren, um 
den bisherigen Thread nicht mit Diskussionen zu füllen, die für Nutzer 
der alten Version nicht relevant sind.

Der Quellcode (und eine rudimentäre Installationsanleitung) der neuen 
Version findet sich hier: https://github.com/Part-DB/Part-DB-symfony

Eine Demo (immer der aktuelle Entwicklungsstand) findet sich hier: 
https://part-db.herokuapp.com/de/

von Jan B. (do9jhb)


Lesenswert?

Es gibt aber bereits einige Funktionen, die mit den alten 0.x Versionen 
nicht möglich waren, unteranderem:

* Mehrere Lagerorte für ein Bauteil möglich
* Unterstützung mehrere Währungen
* Möglichkeit "Bauteile" Mengen in z.B. Längen oder Volumen angeben zu 
können (hilfreich für z.B. Kabel)
* Tagsystem für Bauteile
* Zusätzliche Bauteilefelder wie Gewicht, Produktionsstatus, MPN

* Verbesserung der Bauteiletabellen (man kann jetzt dynamisch auswählen 
welche Spalten angezeigt werden sollen), Verbesserte Filterung

und noch viele andere kleine Verbesserungen.

Eine Liste von Features die geplant sind, findet sich hier: 
https://docs.google.com/document/d/1FH9brIEUSZBDE20qEjtjz-GUfOe3hXH01GbZpXxuVG0/edit

Wenn ihr Wünsche habt, könnt ihr das entweder ergänzen oder hier 
schreiben.

von Gerald *. (pyromane)


Lesenswert?

Hallo Jan,

an erster Stelle ein dickes Danke für deine Weiterentwicklungen!

Besteht die Möglichkeit das Dateiformat webp bei den Anhängen bzw 
Bildern zu unterstützen?

Grüße
Gerald

von moritzs (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Jan,

Ich habe mal probiert das ganze bei mir auf dem Webserver zu 
installieren. Bei mir "Ploppt" aber nach der Installation bei Part-DB 
der Fehler "Site not found!" (404) auf, bei Show Response ist aber alles 
leer. Wenn ich dass Fenster wegdrücke (OK) dann läuft es eine Weile, bis 
es wieder kommt.

Beim Versuch des Login's (wie sind die Standart-Logindaten, ich musste 
bisher nirgendwo welche angeben?) bekomme ich die Fehlermeldung "Die 
Authentifikation konnte wegen eines Systemproblems nicht bearbeitet 
werden." Ich vermute das liegt an der noch leeren Datenbank.. Aber wo 
lege ich den ersten Nutzer an ?

Und bei dem Versuch die Datenbank "Anzulegen" oder "Updaten" mittels 
"php bin/console doctrine:migrations:migrate " bekomme ich auch immer 
wieder Fehler.. Kannst du mir helfen was ich falsch mache?

von Jan B. (do9jhb)


Lesenswert?

moritzs schrieb:
> Hallo Jan,
>
> Ich habe mal probiert das ganze bei mir auf dem Webserver zu
> installieren. Bei mir "Ploppt" aber nach der Installation bei Part-DB
> der Fehler "Site not found!" (404) auf, bei Show Response ist aber alles
> leer. Wenn ich dass Fenster wegdrücke (OK) dann läuft es eine Weile, bis
> es wieder kommt.
>
> Beim Versuch des Login's (wie sind die Standart-Logindaten, ich musste
> bisher nirgendwo welche angeben?) bekomme ich die Fehlermeldung "Die
> Authentifikation konnte wegen eines Systemproblems nicht bearbeitet
> werden." Ich vermute das liegt an der noch leeren Datenbank.. Aber wo
> lege ich den ersten Nutzer an ?
>
> Und bei dem Versuch die Datenbank "Anzulegen" oder "Updaten" mittels
> "php bin/console doctrine:migrations:migrate " bekomme ich auch immer
> wieder Fehler.. Kannst du mir helfen was ich falsch mache?

Die Benutzer werden beim Anlegen der Datenbank erstellt (mit admin und 
Password: admin). Ohne eine korrekt angelegte Datenbank, kommen diese 
Fehlerfenster im Browser (sie sind im produktion modus nicht so 
aussagekräftig).

Die eingentliche Fehlerursache liegt also irgendwo bei der 
Datenbankmigration:

Was für eine MySQL Version benutzt du? MySQL oder MariaDB?

Möglicherweise hilft es die Datenbankversion explizit anzugeben: Du 
fügst eine Zeile DB_VERSION=5.7 in deine .env.local hinzu (wenn du z.B. 
MySQL 5.7 benutzt, oder DB_VERSION=mariadb-10.3.15 wenn du MariaDB in 
der Version benutzt)

Wenn du die Migration nochmal ausführst solltest du vorher die Datenbank 
manuell leeren, sonst können da Fehler passieren, die aus den vorherigen 
fehlgeschlagenen Migrationen entstehen.

von moritzs (Gast)


Lesenswert?

Hallo,

Jan B. schrieb:
> Was für eine MySQL Version benutzt du? MySQL oder MariaDB?
>
> Möglicherweise hilft es die Datenbankversion explizit anzugeben: Du
> fügst eine Zeile DB_VERSION=5.7 in deine .env.local hinzu (wenn du z.B.
> MySQL 5.7 benutzt, oder DB_VERSION=mariadb-10.3.15 wenn du MariaDB in
> der Version benutzt)

Ich nutze MySQL "Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)" auf 
einem Ubuntu-Server.

In der .env.local habe ich "DB_VERSION=5.7" und "DB_VERSION=5.7.27" 
probiert. Anschließen die sämtliche Tabellen in der Datenbank nochmal 
gelöscht. Fehler bleibt aber dann leider der selbe. In der nun 
angelegten Tabelle "groups" das Feld "not_selectable" hat keinen 
Standart Wert. Darauf hin bricht das doctrine ab. Ich vermute folgich 
darauf hin habe ich auch keinen Zugang zu Part-DB, da bei mir irgendwas 
mit der Installation nicht hinhaut.

Hast du noch einen Tipp?

von Jan B. (do9jhb)


Lesenswert?

moritzs schrieb:
> Hast du noch einen Tipp?

Scheinbar benutzt MySQL ab Version 5.7 den sogenannten Strict Mode, wenn 
nicht explizit Default Werte für die Spalten definiert sind. Bei MariaDB 
gibt es das nicht, deswegen ist mir das nicht aufgefallen.

Ich habe die Migrationen mal so angepasst, dass er das ignoriert, das 
ist zwar nicht die perfekte Lösung, es sollte aber funktionieren. (Das 
ist die aktuelle Version auf GitHub).


Ich werde mal schauen ob ich es hinbekomme, dass auf Travis auch die 
Migrationen gegen verschiedene Versionen von MariaDB und MySQL getestet 
werden, dann würde sowas direkt auffallen.

von Moritz S. (moritz9627)


Lesenswert?

Moin,

alles klar. Das erstellen der Datenbank klappt nun einwandfrei. Es sind 
nun auch Einträge in der Tabelle "users". Allerdings bekomme ich nun 
immer bei jeder Aktion auf der Seite einen Fehler "Error getting data 
from Server! Status Code: 500". Kann mich auch nicht Anmelden, wegen des 
Fehlers.

von Jan B. (do9jhb)


Lesenswert?

Moritz S. schrieb:
> Moin,
>
> alles klar. Das erstellen der Datenbank klappt nun einwandfrei. Es sind
> nun auch Einträge in der Tabelle "users". Allerdings bekomme ich nun
> immer bei jeder Aktion auf der Seite einen Fehler "Error getting data
> from Server! Status Code: 500". Kann mich auch nicht Anmelden, wegen des
> Fehlers.

Führ mal ein composer install (ohne --no-dev) aus und
ändere in der .env.local die Zeile APP_ENV=prod zu APP_ENV=dev.
Dann befindet er sich im Entwicklermodus und zeigt detaillierte 
Fehlermeldungen an.

Ansonsten sollte unter var/log Logdateien zu finden sein, wo der Fehler 
genauer erläutert wird.

von Moritz S. (moritz9627)


Lesenswert?

Moin,

habe nun alles getan was du gesagt hast. Leider keine weiteren 
Erkenntnisse. Durch den dev-Modus erscheint ja von Symphony unten eine 
Leiste. Dort sind die einzigen Fehlermeldungen die Auftauchen, je nach 
aufgerufener Seite, nur Fehler bei "Translation"
1
These messages are not available for the given locale and cannot be found in the fallback locales. Add them to the translation catalogue to avoid Symfony outputting untranslated contents.
Die Weißen Fehlermeldungs-PopUps bleiben aber Leer, hier steht kein 
weiterer Hinweis drin.

composer install habe ich auch gemacht. Jetzt fiel mir diesmal auf, am 
Anfang steht hier man soll composer nicht als root/Super User ausführen. 
Liegt hier das Problem ? Ich habs bisher immer als root gemacht. Der 
Webserver läuft aber mit www-data. Wie führe ich den Befehl sonst aus ? 
(Webserver übrigens Apache2->Falls Interessant). In den Logs die ich auf 
der Seite von Symphony finde steht ja nichts besonderes zu meinem Fehler 
drin.

Welche Log-Datei soll ich denn hier überprüfen in /var/log?

von Jan B. (do9jhb)


Lesenswert?

Moritz S. schrieb:
> Welche Log-Datei soll ich denn hier überprüfen in /var/log?

Am besten die die deiner eingestellten Umgebung entspricht. Also 
entweder dev.log oder prod.log.

Wenn du darin nix findest, kannst du mir die Logdatei auch schicken, ich 
schau dann ob ich was finde...

von Moritz S. (moritz9627)


Lesenswert?

Moin,

also im Log-File konnte ich jetzt nichts Fehlertechnisches erkennen. Ich 
habe dir wegen des Log-Files eine PN geschrieben. Mir ist nun zusätzlich 
Aufgefallen, dass ich nirgendwo einen Punkt zum Anlegen einer 
Kategorie/Bauteil/etc. habe. Ich habe mal versucht aus der Demo von dir 
die Links zu kopieren, und komme dann auch zum Beispiel zu der Seite wo 
ich eine Kategorie anlegen kann. Wenn ich diese Speichere, zeigt Part-DB 
sie allerings nicht an. Inder Datenbank wird sie aber erstellt.

von Jan B. (do9jhb)


Lesenswert?

Moritz S. schrieb:
> Moin,
>
> also im Log-File konnte ich jetzt nichts Fehlertechnisches erkennen. Ich
> habe dir wegen des Log-Files eine PN geschrieben. Mir ist nun zusätzlich
> Aufgefallen, dass ich nirgendwo einen Punkt zum Anlegen einer
> Kategorie/Bauteil/etc. habe. Ich habe mal versucht aus der Demo von dir
> die Links zu kopieren, und komme dann auch zum Beispiel zu der Seite wo
> ich eine Kategorie anlegen kann. Wenn ich diese Speichere, zeigt Part-DB
> sie allerings nicht an. Inder Datenbank wird sie aber erstellt.

Deine Probleme kommen vermutlich daher, dass bei dir das URL Rewriting 
(daher dass für die URL /de/test vom Server index.php/de/test aufgerufen 
wird) nicht korrekt funktioniert:

Ich habe mal eine neue Version auf Github hochgeladen, mit der es jetzt 
auch funktionieren sollte wenn kein URL Rewriting verfügbar ist (wenn es 
auf Anhieb nicht klappt, musst du evtl. die Zeile 
"NO_URL_REWRITE_AVAILABLE=true" zu deiner .env.local hinzufügen.

Du solltest aber vielleicht versuchen das URL Rewriting korrekt zum 
funktionieren zu bekommen, denn dann sind die URL deutlich schöner. Das 
rührt meistens davon her, dass mod_rewrite nicht aktiviert ist, oder 
dass die globale Apache Config das überschreiben von Optionen verhindert 
(siehe https://stackoverflow.com/a/21658877)

von Moritz S. (moritz9627)


Lesenswert?

Hallo Jan,

vielen Dank. Nachdem ich das URL-Rewriting zum laufen bekommen habe, 
läuft Part-DB auch super. Keine Probleme bisher gefunden. Die neue 
Version von Github habe ich jetzt noch nicht ausprobiert. Es lag nur an 
der Konfig vom Web-Server.


Ich bedanke mich vielmals für deine Hilfe!

von Gerald *. (pyromane)


Lesenswert?

Hallo Jan,

wäre es möglich beim Hochlanden von Dateianhänge mehrere vom gleichen 
Type(zb Bilder oder Datenblätter) gleichzeitig auszuwählen und dann auch 
gleichzeitig hochzuladen?

Grüße
Gerald

von Jan B. (do9jhb)


Lesenswert?

Gerald *. schrieb:
> wäre es möglich beim Hochlanden von Dateianhänge mehrere vom gleichen
> Type(zb Bilder oder Datenblätter) gleichzeitig auszuwählen und dann auch
> gleichzeitig hochzuladen?

Wie genau meinst du das? Also dass man im Datei wählen Dialog mehrere 
Dateien auswählen kann und diese dann automatisch in mehrer Anhänge 
geladen werden? Das lässt sich vermutlich mit Javascript ganz gut lösen, 
Mal schauen ob ich das umgesetzt bekomme...


Mal was zum aktuellen Entwicklungsstand: Man kann jetzt quasi jedem 
Element (also auch Kategorien, Lagerorte), etc. Dateianhänge zuordnen. 
Bei Bauteilen werden die passenden Bilder als eine Galerie angezeigt. 
Weiterhin werden jetzt von hochgeladen Bildern Thumbnails erstellt, die 
für Vorschauzwecke benutzt werden. Insbesondere bei den Bauteiletabellen 
spart das viel Datenvolumen ein. Weiterhin ist es mittlerweile (wie in 
der alten Version) möglich das er Links auf Dateien herunterlädt und 
lokal ablegt anstatt einfach den Link zu speichern (Das muss aber aus 
Sicherheitsgründen in config/services.yaml aktiviert werden)

Außerdem habe ich die Textformatierung in Kommentarfeldern und 
Bauteilebeschreibungen von BBCode auf Markdown umgestellt (es gibt ein 
Konvertertool was bisherige Datenbestände umwandelt). Markdown bietet 
deutlich mehr Formatierungsmöglichkeiten, wie Tabellen oder verschiedene 
Überschriften. Da Markdown such jegliches HTML erlaubt, kann man jetzt 
alles benutzen was HTML so hergibt (siehe z.b. <kbd> Markierungen im 
Banner auf der Startseite). Insbesondere kann man jetzt auch Text höher 
oder Tiefer stellen, was ganz nützlich sein könnte. Wenn gewünscht, 
könnte sogar (Latex-) Formeln erlauben, die dann schön gerendert 
werden...

Grüße
Jan B.

von Jan B. (do9jhb)


Lesenswert?

Ach ja und da ich weiß das manche ganz gerne benutzen: Man kann jetzt 
auch wieder verschiedene Themes auswählen (siehe https://bootswatch.com/ 
für eine Übersicht was es alles gibt). Die Funktion ist in der Demo 
deaktiviert (damit man das nicht für den Demo-Account verstellen kann), 
also müsst ihr das entweder selber testen, oder ich Stelle wenn 
gewünscht die Tage Mal ein paar Screenshots hier rein)

von Gerald *. (pyromane)


Lesenswert?

Hallo Jan,

Jan B. schrieb:
> Gerald *. schrieb:
>> wäre es möglich beim Hochlanden von Dateianhänge mehrere vom gleichen
>> Type(zb Bilder oder Datenblätter) gleichzeitig auszuwählen und dann auch
>> gleichzeitig hochzuladen?
>
> Wie genau meinst du das? Also dass man im Datei wählen Dialog mehrere
> Dateien auswählen kann und diese dann automatisch in mehrer Anhänge
> geladen werden? Das lässt sich vermutlich mit Javascript ganz gut lösen,
> Mal schauen ob ich das umgesetzt bekomme...

genauso würde es meinem Wunsch entsprechen :)


Grüße
Gerald

von markus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

sagt mal Leute bin ich nur zu doof, oder bekommt das von euch hier auch 
keiner zum Laufen ?

Ich habe alles installiert wie beschrieben. Die hier geschriebenen 
Hinweise beachtet. Leider bekomme ich immer wieder eine Fehlermeldung 
wie im Bild. Das nervt. Ich kann auch nirgendwo Nutzer anlegen, keine 
Bauteile oder Kategorien anlegen. Was stimmt denn hier nicht?

Bitte helft mir !

von Alexander S. (alex998)


Lesenswert?

Hi Jan,

erstmal herzlichen Dank. Wir nutzen (die "alte") Part-DB seit ein paar 
Wochen und sind begeistert, schnell und tut das was es soll.
Hätte aber ne Frage, vllt. hab ich es auch nur übersehen: Wie kann man 
einem Bauteil mehrere Lagerorte (und Bestandszahlen) zuweisen? Bisher 
haben wir uns so beholfen den Artikel mehrfach anzulegen, gibt es da was 
eleganteres?

von Jan B. (do9jhb)


Lesenswert?

markus schrieb:
> Hallo,
>
> sagt mal Leute bin ich nur zu doof, oder bekommt das von euch hier auch
> keiner zum Laufen ?
>
> Ich habe alles installiert wie beschrieben. Die hier geschriebenen
> Hinweise beachtet. Leider bekomme ich immer wieder eine Fehlermeldung
> wie im Bild. Das nervt. Ich kann auch nirgendwo Nutzer anlegen, keine
> Bauteile oder Kategorien anlegen. Was stimmt denn hier nicht?
>
> Bitte helft mir !

In deinem Installationsordner müsste es unter var/log eine Datei 
prod.log geben. Schaumal ob da irgendwas von Error steht (am besten wäre 
es wenn du die Datei Mal hier reinschickst, dann schaue ich mir das Mal 
an).

Beim Datenbank erstellen mit `php bin/console 
doctrine:migrations:migrate` gab es keine Fehlermeldung? Wenn die 
Datenbank nicht korrekt erstellt wurde, dann könnte dieser Fehler evtl. 
auftreten.

von Alexander S. (alex998)


Lesenswert?

Vergiß meine Frage, hab grad deinen zweiten Post in diesem Thread 
gesehen...

von Friedhelm (Gast)


Lesenswert?

Moin Moin,

ich hab PartDB zum laufen bekommen.

Nun wollte ich gerne die alte Datenbank importieren? Wie gehe ich vor?

Wenn ich in der .env.local die Datenbankdaten zur alten Datenbank 
ändere, und dann versuche `php bin/console doctrine:migrations:migrate` 
auszuführen bekomme ich immer folgendes:

1
In AbstractMySQLDriver.php line 38:
2
3
  An exception occurred while executing 'RENAME TABLE `attachement_types` TO
4
  `attachment_types`;':
5
6
  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'attachment_
7
  types' already exists
8
9
10
In PDOConnection.php line 90:
11
12
  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'attachment_
13
  types' already exists
14
15
16
In PDOConnection.php line 88:
17
18
  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'attachment_
19
  types' already exists

mache ich hier was falsch? Die neue Version funktioniert sonst soweit, 
die alte Version läuft auch einwandfrei..

von Friedhelm (Gast)


Lesenswert?

Oder bekomme ich eventuell auf einem anderem Weg meine ganzen Daten in 
die Datenbank?

von Jan B. (do9jhb)


Lesenswert?

Friedhelm schrieb:
> Moin Moin,
>
> ich hab PartDB zum laufen bekommen.
>
> Nun wollte ich gerne die alte Datenbank importieren? Wie gehe ich vor?
>
> Wenn ich in der .env.local die Datenbankdaten zur alten Datenbank
> ändere, und dann versuche `php bin/console doctrine:migrations:migrate`
> auszuführen bekomme ich immer folgendes:
>
>
> mache ich hier was falsch? Die neue Version funktioniert sonst soweit,
> die alte Version läuft auch einwandfrei..

Hast du schon vorher mal probiert die Datenbank zu migrieren (was 
fehlgeschlagen ist)? Wenn ja solltest du die Datenbank auf den 
ursprünglichen Stand zurürckzusetzen (aus einem Backup) und die 
Migration neu probieren und schauen was dann für eine Fehlermeldung 
auftritt. Die aktuelle klingt stark danach, als hätte er schon teilweise 
etwas migriert (Tabellen umbenannt), was aber fehlgeschlagen ist, und 
jetzt scheitert er daran dass die Datenbank nicht den ursprünglichen 
Zustand hat.

von moritzs (Gast)


Lesenswert?

Hallo Jan,

nutze jetzt seit einiger Zeit die neue PartDB-Version erfolgreich. Ich 
bin bisher echt zufrieden mit den Fortschritten und Aufwand den du 
betrieben hast!

Zwei fragen habe ich jetzt aber noch:

"Baugruppen": Ist die Abteilung schon fertig ?
Ich kann zwar Baugruppen erstellen, über die Sidebar die Baugruppen aber 
nicht auswählen, es passiert nichts wenn ich auf Baugruppe "XYZ123" 
tippe.

Stellenweise habe ich dass Problem dass Angelegte Bauteile nicht mehr 
aufgerufen werden können: Leider kann ich hierzu noch nicht mehr sagen. 
Bisher war es immer gleich nach dem Anlegen der Bauteile, ein Aufrufen 
dieser endete dann mit Error 500. Bei mir half bisher nur Löschen und 
neu anlegen.

Sonst echt super dass ganze.

von Jan B. (do9jhb)


Lesenswert?

moritzs schrieb:
> "Baugruppen": Ist die Abteilung schon fertig ?
> Ich kann zwar Baugruppen erstellen, über die Sidebar die Baugruppen aber
> nicht auswählen, es passiert nichts wenn ich auf Baugruppe "XYZ123"
> tippe.

Die Baugruppen Funktion existiert im Moment noch nicht. Es wird sie aber 
später in überarbeiteter Funktion geben (vermutlich als "Projekte"), das 
kann aber noch eine Weile dauern, momentan haben die grundlegenden 
Bauteile Funktionen höhere Priorität.

moritzs schrieb:
> Stellenweise habe ich dass Problem dass Angelegte Bauteile nicht mehr
> aufgerufen werden können: Leider kann ich hierzu noch nicht mehr sagen.
> Bisher war es immer gleich nach dem Anlegen der Bauteile, ein Aufrufen
> dieser endete dann mit Error 500.

Da wäre es gut, wenn du mir die Logs aus var/log/prod.log schicken 
könntest. Dann kann ich anhand der Fehlermeldungen versuchen das zu 
beheben.

von moritzs (Gast)


Lesenswert?

Hallo Jan,

das Logfile schicke ich dir gleich per E-Mail. Ich habe versucht dem 
Problem mal selber auf die schliche zu kommen, schaffe es aber nicht. 
Bisher hat alles super geklappt. Seit gestern Abend (Ich habe diverse 
Bauteile vollständig mit Lieferanten usw. angelegt, die ersten 96 
Laufen, ab dann nicht mehr) ist das Problem ich kann ein Bauteil 
anlegen. Allgemein, Hersteller, Erweiterte Optionen, Lagerbestände, 
Dateianhänge. Speichern. Bauteil bleibt Aufrufbar und Bearbeitbar! 
Ergänze ich nun die Lieferanten Daten von z.B. Reichelt und speicher 
dies, dann bekomme ich beim Aufrufen Error 500. Lösche ich aus der 
Tabelle "orderdetails" den Eintrag zu meinem Bauteil wieder, ist das 
Bauteil auch wieder aufrufbar. Es liegt auch nicht am Inhalt 
(Bestellnummer/Link) denn diese können auch Leer sein usw. aber der 
Fehler bleibt der selbe. Das komische ist, das die letzten 96 Bauteile 
funktionieren, mit den selben Eigenschaften.

So nun genug - Logfile kommt per E-Mail.

Bis dahin!

von Freund (Gast)


Lesenswert?

Hallo Jan,
Halo moritzs

bei einigen Bauteilen auf https://part-db.herokuapp.com/de/ erhalte ich 
auch die 500er FM, zb beim Bauteil BC547 mit der ID 799

Schönen Abend noch

von freundfreund (Gast)


Lesenswert?

Ist es möglich bei der Suchfunktion die Entertaste zu integrieren ? Das 
wäre echt nice diggah!

von Jan B. (do9jhb)


Lesenswert?

Freund schrieb:
> Hallo Jan,
> Halo moritzs
>
> bei einigen Bauteilen auf https://part-db.herokuapp.com/de/ erhalte ich
> auch die 500er FM, zb beim Bauteil BC547 mit der ID 799
>
> Schönen Abend noch

Sollte jetzt funktionieren. War das gleiche Problem wie bei moritzs.

von moritzs (Gast)


Lesenswert?

Hast du das Problem behoben ? In der Demo geht es ja schon.

Dann muss ich wahrscheinlich ein Update von Github machen. Wie stelle 
ich dass am besten an, worauf muss ich achtend das Datenblätter usw 
erhalten bleiben ? Reicht es wenn ich den Ordner einfach überschreibe?

von moritzs (Gast)


Lesenswert?

moritzs schrieb:
> Hast du das Problem behoben ? In der Demo geht es ja schon.
>
> Dann muss ich wahrscheinlich ein Update von Github machen. Wie stelle
> ich dass am besten an, worauf muss ich achtend das Datenblätter usw
> erhalten bleiben ? Reicht es wenn ich den Ordner einfach überschreibe?

Hab es durch ein neuanlegen der Bauteile hinbekommen. Danke für deine 
Hilfe!


freundfreund schrieb:
> Ist es möglich bei der Suchfunktion die Entertaste zu integrieren ? Das
> wäre echt nice diggah!

Ich fände es ja auch toll, habe so noch gar nicht drüber nachgedacht. 
Aber man muss beachten das Jan wohl noch an Part-DB Arbeitet! Ganz 
Part-DB ist "voll nice diggah!".

von Alexander S. (alex998)


Lesenswert?

Jan B. schrieb:
> Wenn ihr Wünsche habt, könnt ihr das entweder ergänzen oder hier
> schreiben.

Ich schreib mal hier:

Ich hätte gerne über den Baugruppen noch eine Kategorie "Gerät".

Bsp: Gerät X hat Baugruppe(n) Platine (Platine + Bauteile), Baugruppe 
Gehäuse (Ober-/Unterteil, Schrauben,...), dazu noch einzelne Bauteile 
wie Lichtleiter oder Schalter/Potis die nicht direkt auf der Platine 
sitzen.

Dann kann ich beim Bestücken und Gehäuse zusammenbauen nur die dazu 
passenden Bauteile anzeigen lassen, bzw. auch komplett als 
Gerät/Projekt.

von Jan B. (do9jhb)


Lesenswert?

Alexander S. schrieb:
> Ich hätte gerne über den Baugruppen noch eine Kategorie "Gerät".
>
> Bsp: Gerät X hat Baugruppe(n) Platine (Platine + Bauteile), Baugruppe
> Gehäuse (Ober-/Unterteil, Schrauben,...), dazu noch einzelne Bauteile
> wie Lichtleiter oder Schalter/Potis die nicht direkt auf der Platine
> sitzen.
>
> Dann kann ich beim Bestücken und Gehäuse zusammenbauen nur die dazu
> passenden Bauteile anzeigen lassen, bzw. auch komplett als
> Gerät/Projekt.

Klingt gut.
Im Prinzip gibt es ja jetzt schon so eine hierarchische Struktur der 
Baugruppen, mit der man diese Beziehung abbilden könnte.
Mal schauen wie ich das umsetzte...

von Alexander S. (alex998)


Lesenswert?

Wär auch nicht verkehrt wenn in den Suchergebnissen die Spalte 
"Dateianhänge" mit angezeigt wird, dafür Lieferanten/Bestellnr. 
entfällt. Vllt. könnte man das als Optionen in der Config machen. Ist 
ein bisschen umständlich wenn man zb. eine Controller-Familie sucht 
("ATTiny") und für die Datenblätter/AppNotes in die jeweilige 
Detailansicht rein muß.

von Jan B. (do9jhb)


Lesenswert?

Alexander S. schrieb:
> Wär auch nicht verkehrt wenn in den Suchergebnissen die Spalte
> "Dateianhänge" mit angezeigt wird, dafür Lieferanten/Bestellnr.
> entfällt. Vllt. könnte man das als Optionen in der Config machen. Ist
> ein bisschen umständlich wenn man zb. eine Controller-Familie sucht
> ("ATTiny") und für die Datenblätter/AppNotes in die jeweilige
> Detailansicht rein muß.

Im Prinzip sollte das schon in den alten Part-DB Versionen möglich sein. 
Man muss eigentlich nur bei der inc/config_defaults.php diese 
(https://github.com/Part-DB/Part-DB/blob/2e31837594d3b669dca976c80197fee6af2d7f25/inc/config_defaults.php#L260) 
Zeile bearbeiten und da 'attachements' [sic!] hinzufügen.

Bei der Part-DB 1.0 Version habe ich jetzt auch mal eine 
Datenblatt-Spalte hinzugefügt, da kann man einfach auf das Zahnradsymbol 
über der Tabelle klicken und die Spalte (und viele andere) einblenden.

Mittelfristig sollte es auch möglich sein, dass ein Nutzer festlegen 
kann, welche Spalten er direkt sehen möchte (und er diese nicht erst 
einblenden muss).

von Alexander S. (alex998)


Lesenswert?

OK, muss ich mir mal anschauen. Danke dir!

von Wilhelm (Gast)


Lesenswert?

Hallo,

Ich habe bereits eine PartDB Version 1.0 bei mir laufen. Wie kann ich 
hier ein Update machen, um neue Funktionen bzw. Fehlerbehebungen zu 
nutzen, ohne meine Daten zu verlieren ?

Das ganze läuft auf einem Ubuntu Server mit Apache.

von Jan B. (do9jhb)


Lesenswert?

Wilhelm schrieb:
> Hallo,
>
> Ich habe bereits eine PartDB Version 1.0 bei mir laufen. Wie kann ich
> hier ein Update machen, um neue Funktionen bzw. Fehlerbehebungen zu
> nutzen, ohne meine Daten zu verlieren ?
>
> Das ganze läuft auf einem Ubuntu Server mit Apache.

Wenn es mit git heruntergeladen, sollte ein "git pull" reichen.
Ansonsten dürfte es am saubersten sein, die neue Version in ein neues 
Verzeichnis zu kopieren, und .env.local, die Ordner "public/media" und 
"media/" zu kopieren (wenn sie existieren).

Das sind eigentlich alle Orte wo irgendwelche Daten drin liegen, der 
Rest liegt in der Datenbank (evtl. Musst du noch config/banner.md 
kopieren, wenn du etwas am Start Banner geändert hast).

Danach muss du dann einfach Verfahren wie bei einer Neuinstallation, 
daher composer und yarn ausführen und eine Datenbankmigration anstoßen.

von Jan B. (do9jhb)


Lesenswert?

In Part-DB 1.0 gibt es ja jetzt eine Import/Export-Funktion für die 
Datenstrukturen.
Dazu ist meine Idee, eine Art Standardbibliothek von Herstellern, 
Footprints, etc. zu erstellen, sodass ein neuer Benutzer nicht alles 
selbst von Grund auf neu erstellen muss, sondern einfach nur eine JSON 
Datei mit häufig gebräuchlichen Footprints, etc. importieren kann, und 
danach nur noch Dinge hinzufügen oder individualisieren muss.
Gleichzeitig könnte man dann gleich auch möglichst vollständige Daten 
bereitstellen (z.B. Anschrift und Websites von Herstellern/Lieferanten, 
evtl. Logos).

Dazu meine Frage: Wie habt ihr bei euch die Footprints, Kategorien, 
Hersteller strukturiert oder habt ihr Ideen wie man das möglichst 
logisch und erweiterbar (aber auch nicht zu speziell) aufbauen kann?

Außerdem: Denkt ihr, es wäre sinnvoll den Footprints ein Feld zu geben, 
wo man den Footprints die Bezeichnungen der Footprints verschiedener 
CAD-Software hinterlegen kann? (Da würde sich eine JSON Spalte anbieten, 
da kann man dann beliebige Menge an CAD-Software, Referenzen und evtl. 
Extradaten hinterlegen).

von Mister A. (mratix)


Lesenswert?

Jan B. schrieb:
> Wie habt ihr bei euch die Footprints, Kategorien, Hersteller
> strukturiert

Grundsätzlich habe ich eine Baumstruktur. Ist noch nicht ganz fertig 
aber brauchbar. Dabei habe ich das Schema der Bauteilekategorien 
angewandt. Hauptkategorien, Unterkategorie, usw.

die Bauteilekategorien: wie Pollin/Reichelt Katalog
für Footprints: THT, SMD, outline
bei Herstellern: die 5 größten, die übernommenen, Zulieferer

Ich kann am Abend die entsprechenden Tabellen exportieren und posten.

: Bearbeitet durch User
von Mister A. (mratix)


Angehängte Dateien:

Lesenswert?

Anbei meine exportierten Strukturen.
1
/* SELECT id,name,parent_id FROM `manufacturers` */
2
/* SELECT id,name,parent_id FROM `footprints` */
3
/* SELECT id,name,parent_id FROM `categories` */

Leider weiss ich nicht, wie man die visualisiert oder als Tree 
dargestellt bekommt.

: Bearbeitet durch User
von Bernd (Gast)


Lesenswert?

Ich versuche gerade eine neue part-db Installation ans Laufen zu 
bekommen:
1
> git remote show origin
2
* Remote-Repository origin
3
  URL zum Abholen: https://github.com/Part-DB/Part-DB.git
4
...
5
> git branch
6
  master
7
* stable-v0.5

Aber PHP schmeißt eine fatale Fehlermeldung:
1
PHP Fatal error:  Uncaught Error: Class 'PartDB\\Database' not found in /home/bernd/public_html/Part-DB/inc/lib.start_session.php:286\nStack trace:\n#0 [internal function]: exception_handler(Object(Error))\n#1 {main}\n  thrown in /home/bernd/public_html/Part-DB/inc/lib.start_session.php on line 286

Was mache ich falsch?

von Jan B. (do9jhb)


Lesenswert?

Bernd schrieb:
> Ich versuche gerade eine neue part-db Installation ans Laufen zu
> bekommen:
>
1
>> git remote show origin
2
> * Remote-Repository origin
3
>   URL zum Abholen: https://github.com/Part-DB/Part-DB.git
4
> ...
5
>> git branch
6
>   master
7
> * stable-v0.5
8
>
>
> Aber PHP schmeißt eine fatale Fehlermeldung:
>
1
> PHP Fatal error:  Uncaught Error: Class 'PartDB\\Database' not found in 
2
> /home/bernd/public_html/Part-DB/inc/lib.start_session.php:286\nStack 
3
> trace:\n#0 [internal function]: exception_handler(Object(Error))\n#1 
4
> {main}\n  thrown in 
5
> /home/bernd/public_html/Part-DB/inc/lib.start_session.php on line 286
6
>
>
> Was mache ich falsch?

Das ist die "klassische" Version von Part-DB, daher ist die Frage in 
diesem Thread besser aufgehoben 
(Beitrag "Lagerverwaltung Part-DB V0.5.x").

Aber ich antworte trotzdem mal hier. Das sieht so aus als wäre kein 
Autoloader vorhanden. Hast du "composer install (bzw. "php composer.phar 
install") ausgeführt (oder die vendor.zip in dein Verzeichnis kopiert)?

von Bernd (Gast)


Lesenswert?

Jan B. schrieb:
> Das ist die "klassische" Version von Part-DB
Mit einem
1
> git checkout master
bekomme ich die Enwicklungsversion?

Mit der komme ich nämlich weiter. (Bin grad beim Datenbankupdate von v12 
auf v26...)

von Jan B. (do9jhb)


Lesenswert?

Bernd schrieb:
> Mit einem> git checkout master
> bekomme ich die Enwicklungsversion?

Im master-Branch von Part-DB/Part-DB liegt die 0.6 Version, die aber 
quasi keine neuen Funktionen im Vergleich zu 0.5 hat (und vermutlich 
auch nicht erhalten wird).

Die in diesem Thread besprochene Version 1.0, an der ich gerade arbeite, 
liegt in diesem Repository https://github.com/Part-DB/Part-DB-symfony
Da fehlen aber noch einige Funktionen, daher ist produktive Verwendung 
dieser Version noch nicht wirklich empfohlen (da sollte man lieber die 
Part-DB 0.5 benutzen).

von Nano (Gast)


Lesenswert?

Mir ist gerade etwas eingefallen, was sich für Part-DB 1.0 anbieten 
würde.

Und zwar hat Part-DB 1.0 eine API auf die man mit externen Programmen 
zugreifen kann?

Meine Überlegung wäre die folgende:

Wenn man ein Bauteil heraussucht, wäre es dann nicht schön, wenn man in 
Part-DB 1.0 einen Button hätte, mit dem man ein Signal an eine 
Elektronikhardware senden könnte, der dann am Lagerort dieses Bauteils 
eine LED zum blinken oder leuchten bringt?
So könnte man seine Sachen sehr schnell finden, ohne lange suchen zu 
müssen.

Natürlich müsste die Elektronikgeschichte jeder bei sich für sich selber 
einrichten, aber Part-BD 1.0 bräuchte nur die Funktion die einem anderen 
Programm, welches die Elektronik ansteuert, ein Signal gibt, damit 
dieses weiß, welche LED es zum Leuchten bringen müsste.

Die einfachste Lösung wäre wohl eine verdeckte Tabelle von Bauteilen, 
die sich Part-DB merkt und in der alle Bauteile drinstehen, deren LED am 
Lagerort leuchten soll. Dann könnte man mit einem weiteren Programm per 
API diese Tabelle einfach abfragen und den Rest, wie Ansteuerung der 
Elektronik könnte dann jeder für sich selber machen wie er es halt 
braucht.

von Jan B. (do9jhb)


Lesenswert?

Nano schrieb:
> Und zwar hat Part-DB 1.0 eine API auf die man mit externen Programmen
> zugreifen kann?

Also im Moment gibt es noch keine API, aber es ist eine geplant. Da 
Part-DB jetzt Symfony benutzt, kann man mit API Platform relativ einfach 
moderne REST und GraphQL APIs bauen. Ich will mit den APIs aber noch 
warten bis Part-DB 1.0 etwas mehr Feature-komplett ist, weil die APIs 
sollten auch halbwegs stabil sein.

Nano schrieb:
> Natürlich müsste die Elektronikgeschichte jeder bei sich für sich selber
> einrichten, aber Part-BD 1.0 bräuchte nur die Funktion die einem anderen
> Programm, welches die Elektronik ansteuert, ein Signal gibt, damit
> dieses weiß, welche LED es zum Leuchten bringen müsste.

Ich vermute das ließe sich am besten über ein HTTP Callback lösen. Daher 
ich kann eine Option einbauen, wo man eine URL angeben kann, die 
aufgerufen wird, wenn der zugehörige Button auf der Bauteileseite 
gedrückt wird. Die URL enthält die Bauteile ID und der dahinterstehende 
Server kann dann eine Aktion auslösen (z.B. über die Part-DB API die 
Bauteile infos abfragen und dann eine LED leuchten lassen).

von Nano (Gast)


Lesenswert?

Jan B. schrieb:
> Ich vermute das ließe sich am besten über ein HTTP Callback lösen. Daher
> ich kann eine Option einbauen, wo man eine URL angeben kann, die
> aufgerufen wird, wenn der zugehörige Button auf der Bauteileseite
> gedrückt wird. Die URL enthält die Bauteile ID und der dahinterstehende
> Server kann dann eine Aktion auslösen (z.B. über die Part-DB API die
> Bauteile infos abfragen und dann eine LED leuchten lassen).

Klingt gut, das geht schon in die richtige Richtung. Ich würde 
allerdings keine Bauteil ID mitgeben, sondern nur ein Signal, damit die 
andere Software, welche die LEDs ansteuert, sich die Liste mit den 
Bauteilen per API abrufen kann.
Denn es können ja mehrere Bauteile sein, also müssen mehrere LEDs an 
verschiedenen Orten leuchten und über eine Apiabfrage kann man besser 
mehrere Informationen übergeben wie bspw. der Standort der 
entsprechenden Bauteile.

Dann noch eine weitere Frage. Wie sieht es mit Benutzerrechten auf 
Bauteilebene aus?
Z.B. könnte man auch teure Bauteile haben, z.B. teure ICs, die soll aber 
nicht jeder, der Zugriff auf PartDB hat, abfragen können, sondern nur 
der, der die dafür notwendige Sicherheitsstufe hat.
Oder man denke mal an eine Schreinerei im Bereich Möbelbau. Der Azubi 
soll die Schraubensammlung abfragen können, aber nicht die Menge an 
Blattgold im Tresor. Auf die soll nur der Schreinermeister zugreifen 
dürfen, der Azubi soll aber nicht wissen, welche Menge sich im Tresor 
befindet.

Ebenfalls wären Gruppenarbeiten möglich, bei dem man aber vielleicht nur 
ein Teil der Bauteile der Gruppe zur Verfügung stellen möchte.
Ebenso wäre es denkbar, dass die Bauteile unterschiedlichen Personen 
gehören und diese aber ein gemeinsames Projekt und eine gemeinsame 
Bauteildatenbank verwalten.

von Jan B. (do9jhb)


Lesenswert?

Nano schrieb:
> Wie sieht es mit Benutzerrechten auf Bauteilebene aus? Z.B. könnte man
> auch teure Bauteile haben, z.B. teure ICs, die soll aber nicht jeder,
> der Zugriff auf PartDB hat, abfragen können, sondern nur der, der die
> dafür notwendige Sicherheitsstufe hat.

Also mit der neuen Architektur ist das prinzipiell machbar, da wird beim 
Prüfen der Berechtigung (fast) immer auch das zu bearbeitende Objekt 
übergeben, man müsste also nur den voter entsprechend anpassen.
ABER... Die ganzen Beziehungen für ACL (so heißt das was du vorschlägst) 
in der DB zu speichern und die Bearbeitung dieser zu implementieren ist 
relativ aufwendig.

Das wäre auf jeden Fall ein cooles feature, aber ich denke bei der 
bisherigen Zielgruppe von Part-DB ist der Bedarf für so ein Feature eher 
selten. Es steht daher eher hinten auf meiner Liste von Dingen die ich 
umsetzen möchte, ich denke da gibt es im Moment wichtigere Dinge.

von Mister A. (mratix)


Lesenswert?

Beim stöbern entdeckt: https://partsbox.io/demo/parts/

Vielleicht kann man etwas vom Design, Struktur, Navigation etc. 
abgucken.

- Die Navigation oben bzw. links finde ich sehr gelungen.
- Das Zahnrad oben rechts, Definition Darstellung der Spalten
- Spalte Type., die u.A. folgendes ermöglicht:
WLED Controller V1.1  Sub-assembly part, result of building a project.

: Bearbeitet durch User
von Jan B. (do9jhb)


Lesenswert?

Mister A. schrieb:
> Beim stöbern entdeckt: https://partsbox.io/demo/parts/
>
> Vielleicht kann man etwas vom Design, Struktur, Navigation etc.
> abgucken.

Kenne ich schon. Ich mir da z.B. die Einstellmöglichkeiten für die 
Lagerorte abgeschaut.

Mister A. schrieb:
> Die Navigation oben bzw. links finde ich sehr gelungen.

Ich wollte schon länger irgendwelche Schnellzugriffslinks oben in der 
Navigationsleiste unterbringen, ich weiß aber noch nicht genau was. Da 
in Part-DB das meiste hierarchisch in Baumstrukturen untergebracht ist, 
ist es etwas schwierig das in der Navleiste unterzubringen.

Mister A. schrieb:
> - Das Zahnrad oben rechts, Definition Darstellung der Spalten

Das gibt es in Part-DB auch. Über den Zahnrad Button kann man festlegen, 
welche Spalten angezeigt werden sollen, und man kann die Spalten auch 
verschieben (durch gedrückthalten).

Mister A. schrieb:
> Spalte Type., die u.A. folgendes ermöglicht:
> WLED Controller V1.1  Sub-assembly part, result of building a project.

Das hab ich geplant, aber dazu muss ich erstmal das ganze Projektsystem 
implementieren.

von Jan B. (do9jhb)


Lesenswert?

Ich hab übrigens noch ein paar neue Dinge in Part-DB 1.0 eingebaut:

Es gibt jetzt die Möglichkeit Zwei-Faktor-Authentifizierung einzurichten 
(mit einer App wie Google Authenticator und/oder einem U2F Gerät, wie 
einem Yubikey). Man kann dass auch für Nutzer einer bestimmten Gruppe 
erzwingen (z.B. könnte es sinnvoll sein, dass Adminstratoren mit ihren 
weitgehenenden Rechten dies einrichten müssen, einem normalen Nutzer 
dies aber der einfachhalt halber freigestellt ist).

Die aktuelle Part-DB Version dürfte jetzt am Handy wesentlich besser zu 
bedienen sein.

Die Bäume mit Kategorien, Lagerorten, etc. werden jetzt gecached, was 
die Performance verbessern sollte.

von Mister A. (mratix)


Lesenswert?

Kann bzw. darf man die v1 WIP schon an die produktive Datenbank lassen?

Ich bin noch mit der letzten stable unterwegs. Benutze PartDB täglich 
und wirklich sehr gerne. An den Daten darf nichts kaputt gehen :) 
Schönheitsfehler und fehlende Funktionen kann ich hinnehmen.

Mittlerweile ist PartDB zum zentralen Informationssystem geworden. Der 
Datenbestand wächst täglich.

Meine 3 Haupteinsatzzwecke:
- suche nach einem vorhandenen Bauteil, welches verbaut werden kann. 
Hier bin ich sehr stark an der Parametrisierung angewiesen. Die 
einzelnen Parameter werden in der 2. Zeile kommagetrennt erfasst.
- suche nach SMD Markings, um ein Bauteil zu identifizieren. Die Codes 
pflege ich hinter dem Namen (Mfr) kommasepariert als #xyz ein.
- suche nach Alternativen zu einem Bauteil. Hier mache ich mir die 
strikte Eingabeform der Bezeichnungszeile zum Nutzen.
- die Projektverwaltung ist etwas mühsam. Hier mangelt es etwas an der 
BOM txt/csv Anbindung.
- als Preisauskunftssystem bzw. Projektkostenaufstellung. Die 
Bezugspreise pflege ich ebenso permanent ein.
- für Application examples. Schematiken werden als Anlagen zum Bauteil 
drangehängt.

Im großen und ganzen bin ich nach ein-zwei Jahren Einsatz immer noch 
zufrieden. Die Geschwindigkeit leidet immer noch nicht.
Ich würde mir nur etwas mehr Fokus auf die Filterung, Vergleich bzw. 
Parametrisierung wünschen. Das Suchfeld als AND-Operator würde schon 
helfen.

Jan, falls du am Datenbestand interessiert bist, melde dich.
An dieser Stelle kann ich mich nur wiederholt für das gelungen Teil 
bedanken.

: Bearbeitet durch User
von Sheeva P. (sheevaplug)


Lesenswert?

Jan B. schrieb:
> im Moment arbeite ich an einer neuen Version von Part-DB.
> Dies wird ein komplettes Rewrite von Part-DB auf Basis eines modernen
> PHP Frameworks (Symfony 4). Da sie daher inkompatibel zur alten Version
> ist (ein Upgrade der Datenbank ist aber problemlos möglich), ist es
> jetzt Version 1.0 (um sich an Semantic Versioning zu orientieren).

Wow, die Testinstallation sieht schon richtig prima aus. Tolle Arbeit!

Mir sind aber auf die Schnelle drei Kleinigkeiten aufgefallen:

 - in der Info-Ansicht eines Bauelements kann ich nicht sehen, ob es
   dazu Dateianhänge gibt. Aber okay, ich habe jetzt leider auch keine
   Bauelemente mit Anhang in der Demo gefunden.

 - Warum die Beschränkung auf MySQL bzw. MariaDB? Symfony enthält doch
   mit Doctrine einen starken OR-Mapper für verschiedene DBMS.

 - Da Du ohnehin schon ein Dockerfile mitlieferst, könnte zusätzlich
   eine docker-compose.yml erstellt werden, das Container mit MySQL,
   MariaDB, oder -- wenn Du Doctrine nutzen würdest -- zB. auch ein
   PostgreSQL enthält.

Ansonsten, wie gesagt: tolle Arbeit, vielen Dank und weiter so!

von Sheeva P. (sheevaplug)


Lesenswert?

Jan B. schrieb:
> Gerald *. schrieb:
>> wäre es möglich beim Hochlanden von Dateianhänge mehrere vom gleichen
>> Type(zb Bilder oder Datenblätter) gleichzeitig auszuwählen und dann auch
>> gleichzeitig hochzuladen?
>
> Wie genau meinst du das? Also dass man im Datei wählen Dialog mehrere
> Dateien auswählen kann und diese dann automatisch in mehrer Anhänge
> geladen werden? Das lässt sich vermutlich mit Javascript ganz gut lösen,
> Mal schauen ob ich das umgesetzt bekomme...

Das geht mit HTML5, das
1
<input type="file" name="img" multiple>

unterstützt.

von Jan B. (do9jhb)


Lesenswert?

Mister A. schrieb:
> Kann bzw. darf man die v1 WIP schon an die produktive Datenbank lassen?
>
> Ich bin noch mit der letzten stable unterwegs. Benutze PartDB täglich
> und wirklich sehr gerne. An den Daten darf nichts kaputt gehen :)
> Schönheitsfehler und fehlende Funktionen kann ich hinnehmen

Eher nein. Ich versuche es zwar tunlichst zu vermeiden aber es könnte 
sein, dass ich noch ein paar größere Änderungen an den bestehenden 
Datenbankmigrationen durchführen muss, dann könntest du deine Datenbank 
nicht mehr sinnvoll auf die endgültige Version updaten.
Außerdem fehlen teils noch ein paar elementare funktionen und das ganze 
ist noch nicht wirklich getestet. Tendenziell sollte da zwar kein 
Datenverlust auftreten, aber das ist alles noch nicht wirklich 
ausgetestet.

von Jan B. (do9jhb)


Lesenswert?

Sheeva P. schrieb:
> - in der Info-Ansicht eines Bauelements kann ich nicht sehen, ob es
> dazu Dateianhänge gibt. Aber okay, ich habe jetzt leider auch keine
>    Bauelemente mit Anhang in der Demo gefunden.

Also wenn das Bauteil einen anhang hat, wird das angezeigt (siehe 
https://part-db.herokuapp.com/en/part/873/info#attachments). Es sind 
aber auf dem Server keine Dateien hinterlegt (wegen Urheberrecht) und 
ich glaube heroku löscht die hochgeladenen immer beim deployen einer 
neuen Version.

Sheeva P. schrieb:
> Warum die Beschränkung auf MySQL bzw. MariaDB? Symfony enthält doch
> mit Doctrine einen starken OR-Mapper für verschiedene DBMS.

Doctrine kann das, dass ist richtig, ich im Moment habe ich nur 
Migrations für MySQL (die sind Platform abhängig) damit ich mir beim 
Entwicklen nicht mehrfach arbeiten muss. Wenn die Datenbank halbwegs 
stabil ist, baue ich eine Migration für andere Datenbanken ein 
(vermutlich sind SQLite und vielleicht noch PostgreSQL am sinnvollsten).

Sheeva P. schrieb:
> Da Du ohnehin schon ein Dockerfile mitlieferst, könnte zusätzlich
>    eine docker-compose.yml erstellt werden, das Container mit MySQL,
> MariaDB, oder -- wenn Du Doctrine nutzen würdest -- zB. auch ein
> PostgreSQL enthält.

Also die ganzen Sachen zu docker sind noch nicht richtig fertig (ich 
weiß nichtmal ob das in der aktuellen Form überhaupt gebaut werden kann, 
seit es PHP 7.4 gibt). Außerdem habe ich nicht wirklich viel Erfahrung 
mit docker, da muss ich mich noch etwas zu einlesen...

von Sheeva P. (sheevaplug)


Lesenswert?

Jan B. schrieb:
> Sheeva P. schrieb:
>> - in der Info-Ansicht eines Bauelements kann ich nicht sehen, ob es
>> dazu Dateianhänge gibt. Aber okay, ich habe jetzt leider auch keine
>>    Bauelemente mit Anhang in der Demo gefunden.
>
> Also wenn das Bauteil einen anhang hat, wird das angezeigt (siehe
> https://part-db.herokuapp.com/en/part/873/info#attachments). Es sind
> aber auf dem Server keine Dateien hinterlegt (wegen Urheberrecht) und
> ich glaube heroku löscht die hochgeladenen immer beim deployen einer
> neuen Version.

Verzeih', aber das meine ich nicht: auf der Default-Seite 
(https://part-db.herokuapp.com/en/part/873/info#part_lots) kann ich 
nicht sehen, ob das Element Attachments hat, ebensowenig in der 
Übersicht (https://part-db.herokuapp.com/en/category/129/parts). Anders 
gesagt: um zu sehen, ob ein Bauteil ein Datenblatt oder einen anderen 
Dateianhang hat, muß ich erst auf das Bauelement gehen und dann auf die 
"Unterseite" Attachments.

> Sheeva P. schrieb:
>> Warum die Beschränkung auf MySQL bzw. MariaDB? Symfony enthält doch
>> mit Doctrine einen starken OR-Mapper für verschiedene DBMS.
>
> Doctrine kann das, dass ist richtig, ich im Moment habe ich nur
> Migrations für MySQL (die sind Platform abhängig) damit ich mir beim
> Entwicklen nicht mehrfach arbeiten muss. Wenn die Datenbank halbwegs
> stabil ist, baue ich eine Migration für andere Datenbanken ein
> (vermutlich sind SQLite und vielleicht noch PostgreSQL am sinnvollsten).

SQLite bei einer Webapp, die üblicherweise mit mehreren Threads und / 
oder Prozessen arbeitet? Ich weiß nicht recht, was passiert wenn zwei 
Mistfinken gleichzeitig auf die SQLite-Datei schreiben, müßte man dazu 
nicht noch ein separates Locking um jeden Schreibzugriff implementieren?

> Sheeva P. schrieb:
>> Da Du ohnehin schon ein Dockerfile mitlieferst, könnte zusätzlich
>>    eine docker-compose.yml erstellt werden, das Container mit MySQL,
>> MariaDB, oder -- wenn Du Doctrine nutzen würdest -- zB. auch ein
>> PostgreSQL enthält.
>
> Also die ganzen Sachen zu docker sind noch nicht richtig fertig (ich
> weiß nichtmal ob das in der aktuellen Form überhaupt gebaut werden kann,
> seit es PHP 7.4 gibt). Außerdem habe ich nicht wirklich viel Erfahrung
> mit docker, da muss ich mich noch etwas zu einlesen...

Wenn Du Fragen hast oder Unterstützung suchst, helfe ich gerne. ;-)

von Ntldr -. (ntldr)


Lesenswert?

Jan B. schrieb:
> Sheeva P. schrieb:
>> Da Du ohnehin schon ein Dockerfile mitlieferst, könnte zusätzlich
>>    eine docker-compose.yml erstellt werden, das Container mit MySQL,
>> MariaDB, oder -- wenn Du Doctrine nutzen würdest -- zB. auch ein
>> PostgreSQL enthält.
>
> Also die ganzen Sachen zu docker sind noch nicht richtig fertig (ich
> weiß nichtmal ob das in der aktuellen Form überhaupt gebaut werden kann,
> seit es PHP 7.4 gibt).

Aktuell schlägt das bei 'composer install -a --no-dev' fehl, das hatte 
ich über die Feiertage mal ausprobiert.
1
Executing script cache:clear [KO]
2
[KO] Script cache:clear returned with error code 1
3
!!  In AbstractMySQLDriver.php line 93:
4
!!    An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused
5
!!  In PDOConnection.php line 31:
6
!!    SQLSTATE[HY000] [2002] Connection refused
7
!!  In PDOConnection.php line 27:
8
!!    SQLSTATE[HY000] [2002] Connection refused

Das hängt vermutlich damit zusammen dass ich hier gar keine MySQL 
Datenbank aufgesetzt hab, aber eigentlich sollte man die im Buildprozess 
doch gar nicht benötigen? Andernfalls müsste man natürlich die 
Zugangsdaten auch noch in den Buildkontext von Docker bekommen, was eher 
unüblich wäre. So ganz steige ich bei Composer (bzw. modernem PHP 
allgemein) allerdings nicht durch.

>> Sheeva P. schrieb:
> SQLite bei einer Webapp, die üblicherweise mit mehreren Threads und /
> oder Prozessen arbeitet? Ich weiß nicht recht, was passiert wenn zwei
> Mistfinken gleichzeitig auf die SQLite-Datei schreiben, müßte man dazu
> nicht noch ein separates Locking um jeden Schreibzugriff implementieren?

SQLite hat damit an sich kein Problem, da ist passendes Locking schon 
integriert. Schreibzugriffe müssen sich dann um ein einzelnes globales 
Lock streiten. In diesem Fall sollte das vermutlich aber gar nicht mal 
so kritisch sein, da wir ja eher wenige Schreibzugriffe haben. 
Alternativ gabs da noch eine Art Schreibcache, den hab ich bisher 
allerdings nie verwendet.

von Jan B. (do9jhb)


Lesenswert?

Sheeva P. schrieb:
> Anders gesagt: um zu sehen, ob ein Bauteil ein Datenblatt oder einen
> anderen Dateianhang hat, muß ich erst auf das Bauelement gehen und dann
> auf die "Unterseite" Attachments.

Ach so meinst du das. Das ist natürlich ein berechtigter Einwand. Ich 
denke es ist eine gute Idee die Zahl der Attachments, Lagerorte, etc. 
als Zahl direkt im Tab anzuzeigen. Dann sieht man direkt ob es sich 
lohnt den Tab aufzurufen.

Sheeva P. schrieb:
> SQLite bei einer Webapp, die üblicherweise mit mehreren Threads und /
> oder Prozessen arbeitet? Ich weiß nicht recht, was passiert wenn zwei
> Mistfinken gleichzeitig auf die SQLite-Datei schreiben, müßte man dazu
> nicht noch ein separates Locking um jeden Schreibzugriff implementieren?

Das sollte SQLite hinbekommen, bzw. ist scheinbar praktisch kein 
Problem, selbst Anwendungen wie Nextcloud können SQLite nutzen, und da 
werden deutlich mehr Datenbankoperation durchgeführt als in Part-DB.
Der SQLite Modus wäre aber auch eher so für einen Ein-Nutzer-Betrieb 
gedacht, so dass man es einfach auf einem lokalen Rechner installieren 
kann (und auch portabel auf einem USB Stick mitnehmen kann). Wenn man 
Part-DB zentral auf einem Server für viele Benutzer installiert, dann 
sollte alleine schon wegen der besseren Performance MySQL benutzt 
werden.

von Jan B. (do9jhb)


Lesenswert?

Ntldr -. schrieb:
> Das hängt vermutlich damit zusammen dass ich hier gar keine MySQL
> Datenbank aufgesetzt hab, aber eigentlich sollte man die im Buildprozess
> doch gar nicht benötigen?

Die Fehlermeldung stammt nicht von Composer selbst, sondern von Part-DB 
bzw. Symfony, dass versucht den Container bzw. irgendwelche Cachedateien 
aufzubauen.
Vermutlich macht er da irgendwie eine Datenbankabfrage, die ohne 
Datenbank eben fehlschlägt.
Ich schaue mir das Mal an, das sollte behebar sein.
(Ich glaube das hängt damit zusammen, dass keine explizite MySQL Version 
spezifiziert wurde und er nun versucht sie selber abzufragen, was ohne 
Server fehlschlägt).

von Bastian W. (jackfrost)


Lesenswert?

Hi,

Wo kann ich den Pfad für die .css einstellen ?
Ich hab PArt-DB in einem Unterorder "installiert" die .css werden aber 
vom root vom Webserver geladen, wo sie natürlich nicht liegen.

Gruß JackFrost

von Jan B. (do9jhb)


Lesenswert?

Bastian W. schrieb:
> Hi,
>
> Wo kann ich den Pfad für die .css einstellen ?
> Ich hab PArt-DB in einem Unterorder "installiert" die .css werden aber
> vom root vom Webserver geladen, wo sie natürlich nicht liegen.
>
> Gruß JackFrost

Ich hab das mal in der Installationsanleitung in der README ergänzt: 
https://github.com/Part-DB/Part-DB-symfony/blob/master/README.md 
(Schritt 5).

Du musst die Zeilen '.setPublicPath('/part-db/build')' und 
'.setManifestKeyPrefix('build/')' in die webpack.config.js hinzufügen 
(bzw. jetzt nur noch auskommentieren) und /part-db durch deinen 
Unterordner ersetzen.

Ich versuche vor dem stable Release noch einen besseren Weg zu finden, 
bei dem man die Datei nicht bearbeiten muss.

von Garth (Gast)


Lesenswert?

Jan B. schrieb:
> Bastian W. schrieb:
> Hi,
> Wo kann ich den Pfad für die .css einstellen ?
> Ich hab PArt-DB in einem Unterorder "installiert" die .css werden aber
> vom root vom Webserver geladen, wo sie natürlich nicht liegen.
> Gruß JackFrost
>
> Ich hab das mal in der Installationsanleitung in der README ergänzt:
> https://github.com/Part-DB/Part-DB-symfony/blob/master/README.md
> (Schritt 5).
>
> Du musst die Zeilen '.setPublicPath('/part-db/build')' und
> '.setManifestKeyPrefix('build/')' in die webpack.config.js hinzufügen
> (bzw. jetzt nur noch auskommentieren) und /part-db durch deinen
> Unterordner ersetzen.
>
> Ich versuche vor dem stable Release noch einen besseren Weg zu finden,
> bei dem man die Datei nicht bearbeiten muss.

Hello,

how to install that on a Windows 2012 Server?
Any manual?

Beitrag #6105962 wurde vom Autor gelöscht.
von Sheeva P. (sheevaplug)


Lesenswert?

Jan B. schrieb:
> Du musst die Zeilen '.setPublicPath('/part-db/build')' und
> '.setManifestKeyPrefix('build/')' in die webpack.config.js hinzufügen
> (bzw. jetzt nur noch auskommentieren) und /part-db durch deinen
> Unterordner ersetzen.
>
> Ich versuche vor dem stable Release noch einen besseren Weg zu finden,
> bei dem man die Datei nicht bearbeiten muss.

Zumindest im Docker-Umfeld würde sich da ein Reverse Proxy anbieten.

von Marek N. (Gast)


Lesenswert?

Wäre es möglich, eine Schritt-für-Schritt-Anleitung für Anfänger zu 
erstellen?
Ich habe mir das Paket runtergeladen und würde damit gerne meine 
Bauteile erfassen.
Aber irgendwie krieg ich das nicht gestartet :-(

von Bernd (Gast)


Lesenswert?

Marek N. schrieb:
> Aber irgendwie krieg ich das nicht gestartet :-(
Welches Betriebssystem hast Du?
Läuft der Webserver schon?

von Holly PartDB :) (Gast)


Lesenswert?

Hi,

Gibt es auch eine Anleitung und das System auch auf einem Windows IIS 
zum Laufen zu bringen?

von coeka (Gast)


Lesenswert?

PHP ist installiert? MySQL oder MariaDB auch?
Dafür gibt es auch bei Youtube Anleitungen.

von Jan B. (do9jhb)


Lesenswert?

Ich habe mich dazu entschlossen die Lizenz der neuen Part-DB Version von 
GPL2+ zu AGPL3+ (GNU Affero General Public License v3.0 or later) zu 
ändern.

Der Änderungen von Version 2 nach 3 sind größtenteils rein formell (Die 
Lizenz orientiert sich weniger am amerikanischen Copyright Gesetzen und 
ist mehr internationaler formuliert).

Interessant ist die Änderung von GPL nach AGPL: Die AGPL enthält die 
gleichen Regeln wie die normale GPL, zusätzlich gibt es eine Klausel, 
die sagt, dass auch beim reinen Hosten der Software, der Quelltext eine 
bearbeiteten Version zur Verfügung gestellt werden muss.

Das heißt, sollte in Zukunft jemand Part-DB modifizieren/erweitern, etc. 
und diese neue Version nur als Hostingservice anbieten (Software as a 
Service), muss er trotzdem den Quelltext bereitstellen.
Bei der normalen GPL muss der Quelltext nur bereitgestellt werden, wenn 
die modifizierte Software selbst verbreitet wird.

Die Free Software Foundation empfiehlt daher für Webanwendungen (wie 
Part-DB) die Verwendung der AGPL und daher werden die zukünftigen 
Part-DB-Versionen
unter AGPL stehen (genauso wie andere Webprojekte wie z.B. 
nextcloud/owncloud).

Viele Grüße
Jan B.

von Jan B. (do9jhb)


Lesenswert?

Mal wieder ein Update zum Entwicklungsstand:

Die letzten Wochen habe ich etwas an der Verbesserung der Log und 
Historie Funktion gearbeitet. Jedes Element hat jetzt einen Historie 
Tab, wo sich der Bearbeitungsverlauf und Ähnliches eines Elements 
anzeigen lässt (wenn der Nutzer die entsprechende Berechtigung hat). 
Siehe z.B. https://part-db.herokuapp.com/de/part/878/info#history

Zusätzlich zu der Information wann und durch wen ein Bauteil bearbeitet 
wurde, wird jetzt standardmäßig auch gespeichert, welches Feld eines 
Bauteils geändert wurde (z.B. die Beschreibung). Weiterhin kann der 
Benutzer beim Speichern einen Kommentar angeben (Pfeil neben Speichern 
button), der im Log angezeigt wird, und in dem z.B. der Grund für eine 
Änderung angegeben werden kann.

Wenn man die Option aktiviert, dann wird auch genau gespeichert was 
geändert wurde (d.h. der Inhalt der Änderung). Wenn dies aktiv ist, dann 
ist es möglich sich das Bauteil zu früheren Versionsständen anzuschauen 
(https://part-db.herokuapp.com/en/part/878/info/1583618418) und 
vergangene Änderungen sogar rückgängig zu machen.
Es gibt auch die Option, dass der Inhalt eines Elements beim Löschen 
gespeichert wird, so ist es dann auch z.B. möglich gelöschte Elemente 
wiederherzustellen.

Und noch ein kleines Update: Die Suchfunktion sollte jetzt deutlich 
besser funktionieren und auch die gewählten Such Optionen werden 
berücksichtigt.

von Ludwig K. (hellas)


Lesenswert?

Hallo Jan,
habe gerade mal deine neue Demo angeschaut und muss sagen, da hat sich 
ja wirklich viel getan!
Manchmal hat man sogar den Eindruck, dass einen die vielen Optionen 
glatt erschlagen ;-)
Viele Verbesserungen, durch das ganze Projekt hinweg. Man merkt 
deutlich, dass es vieles im Hintergrund geändert hat.

Bitte weiter so!
Derzeit wage ich mir aber noch keinen Umstieg. Dazu scheint mir das 
System noch zu sehr wip zu sein ;-)

von Jan B. (do9jhb)


Angehängte Dateien:

Lesenswert?

Es gibt jetzt "richtige" vom Nutzer definierbare Parameter für Bauteile 
(und für die anderen Datenstrukturen wie Footprints).
So kann man jetzt die Daten aus Datenblättern übertragen und in einer 
strukturierten Form darstellen (siehe Anhang oder 
https://part-db.herokuapp.com/de/part/2/info#specifications).

Prinzipiell sollte es so auch möglich sein, eine parametrische Suche 
einzubauen, sodass man nach Bauteilen suchen kann die bestimmte 
Eigenschaften haben (z.B. Transistoren die einen gewissen Mindeststrom 
verkraften).

Später soll es auch eine Octopart Integration geben, dann kann man die 
Bauteileparameter (und Datenblätter und Preise) automatisch importieren.

von Ludwig K. (hellas)


Lesenswert?

Echt cool.
Dein Stück Software mausert sich ja langsam zur eierlegenden 
Wollmilchsau ;-)
Ich glaub, ich muss mal wieder ein Programmier-Bier spendieren...

von Norbert (Gast)


Lesenswert?

Hallo!

Tolles Projekt! Habe schon lange Part-DB in der Version 0.5 genutzt.
Dann habe ich das Hobby ein bisschen schleifen lassen. Habe jetzt aber 
die neue Version 1.0 entdeckt.

Mein Problem: Ich habe einen Server am Netz laufen und es war sehr 
einfach die Version 0.6 zu installieren. Mit der Version 1.0 stosse ich 
an meine Grenzen!!!
Installation alle Schritte durchgeführt - ohne Fehler! Kann das Programm 
aber nicht starten --> Fehler 500!

Ist es geplant ein einfaches Installationspaket zu erstellen??

Norbert

von Norbert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo noch einmal,

ich habe den Server jetzt zum Laufen gebracht. Jetzt habe ich noch
das Problem, dass die Seite nicht so wie bei der Demoversion angezeigt 
wird.
Bitte seht den Screenshot im Anhang.

Ich bin für jede Hilfe dankbar.

Norbert

von Thom Lab (Gast)


Lesenswert?

Jan B. schrieb:
> Später soll es auch eine Octopart Integration geben, dann kann man die
> Bauteileparameter (und Datenblätter und Preise) automatisch importieren.

Das klingt super, gibt es dafür einen Zeitplan?

von Jan B. (do9jhb)


Lesenswert?

Norbert schrieb:
> Installation alle Schritte durchgeführt - ohne Fehler! Kann das Programm
> aber nicht starten --> Fehler 500!

Die neue Part-DB Version zeigt evtl. auftretende Fehler aus 
Sicherheitsgründen ohne Details an. Wenn man genauere Infos sehen 
möchte, muss man in die Log Datei in var/log/prod.log schauen, da stehen 
dann alle Details drin.

Norbert schrieb:
> Ist es geplant ein einfaches Installationspaket zu erstellen??

Es gibt die Docker Container, die sind im Prinzip recht einfach zu 
benutzen, wenn man Docker kann, da die alles komplett enhalten.

Ansonsten für die endgültigen Releases wird es vermutlich ZIP-Dateien 
geben, wo alle Abhängigkeiten und Frontend Dateien gebündelt sind, so 
dass man sie nur noch entpacken muss, und die ganzen Schritte nicht mehr 
durchführen muss.

Aber wenn man composer und yarn einmal laufen hat, ist es aber 
eigentlich nicht mehr so schwierig, die für die neuen Versionen zu 
benutzen.

Norbert schrieb:
> ich habe den Server jetzt zum Laufen gebracht. Jetzt habe ich noch
> das Problem, dass die Seite nicht so wie bei der Demoversion angezeigt
> wird.

Das sieht stark, danach aus, dass irgendwas mit den Frontend Dateien 
nicht stimmt. Bei dem Schritt mit `yarn build` gab es keine 
Fehlermeldungen? Zeigt die Entwicklerkonsole im Browser irgendwas an?
Hast du Part-DB in irgeneinen Subfolder installiert, daher du greifst 
über sowas wie https://host.de/part-db zu?

von Jan B. (do9jhb)


Lesenswert?

Thom Lab schrieb:
> Das klingt super, gibt es dafür einen Zeitplan?

Im Moment arbeite ich am Etikettengenerator, was ich danach mache, muss 
ich mal schauen. Tendenziell ist es vermutlich aber sinnvoll erstmal 
alle bestehenden Funktionen aus der alten Part-DB Version einzubauen, 
bevor man so große neue Funktionen einbaut. Daher wird das evtl. noch 
etwas dauern (vorher sind vermutlich so dinge wie Import/Export und 
Projektverwaltung dran).

von Norbert (Gast)


Lesenswert?

Ich glaube ich habe eine falsche Einstellung bei meinem Server.
Die Software liegt in /var/www/elo und das RootDocument ist unter 
/var/www/.

Ich habe wie in der Beschreibung erklärt den Subfolder "elo" angegeben.
Ich kann Part-DB nicht auf dem RootDoc laufen lassen, da bei mir noch 
eine Homepage und ein Webmailer parallel laufen.

Der browser gibt folgenden Fehler aus:

Laden fehlgeschlagen für das <script> mit der Quelle 
"https://www.xxxxx.at/build/runtime.e9dea5e6.js";. en:367:1
Laden fehlgeschlagen für das <script> mit der Quelle 
"https://www.xxxxx.at/build/0.4804a922.js";. en:367:1
Laden fehlgeschlagen für das <script> mit der Quelle 
"https://www.xxxxx.at/build/app.98d70dad.js";. en:367:1
Laden fehlgeschlagen für das <script> mit der Quelle 
"https://www.xxxxx.at/build/ru2ftwofactor.ecdb9b27.js";.

Domain habe ich unkenntlich gemacht!!

Der Browser kann nicht auf /Public zugreifen.

Kann du mir erklären welche Einstellung ich im Apache2 durchführen 
muss??

MfG Norbert

von Jan B. (do9jhb)


Lesenswert?

Norbert schrieb:
> Ich glaube ich habe eine falsche Einstellung bei meinem Server.
> Die Software liegt in /var/www/elo und das RootDocument ist unter
> /var/www/.
>
> Ich habe wie in der Beschreibung erklärt den Subfolder "elo" angegeben.
> Ich kann Part-DB nicht auf dem RootDoc laufen lassen, da bei mir noch
> eine Homepage und ein Webmailer parallel laufen.
>
> Der browser gibt folgenden Fehler aus:
>
> Laden fehlgeschlagen für das <script> mit der Quelle
> "https://www.xxxxx.at/build/runtime.e9dea5e6.js";. en:367:1
> Laden fehlgeschlagen für das <script> mit der Quelle
> "https://www.xxxxx.at/build/0.4804a922.js";. en:367:1
> Laden fehlgeschlagen für das <script> mit der Quelle
> "https://www.xxxxx.at/build/app.98d70dad.js";. en:367:1
> Laden fehlgeschlagen für das <script> mit der Quelle
> "https://www.xxxxx.at/build/ru2ftwofactor.ecdb9b27.js";.
>
> Domain habe ich unkenntlich gemacht!!
>
> Der Browser kann nicht auf /Public zugreifen.
>
> Kann du mir erklären welche Einstellung ich im Apache2 durchführen
> muss??
>
> MfG Norbert

Schau dir mal Punkt 5. in der Installationsanleitung an: "If you have 
put Part-DB into a sub-directory on your server (like part-db/), you 
have to edit the file webpack.config.js and uncomment the lines (remove 
the // before the lines) .setPublicPath('/part-db/build') (line 43) and 
.setManifestKeyPrefix('build/') (line 44). You have to replace /part-db 
with your own path on line 44."

Wenn du die Zeilen auskommentierst und in setPublicPath(), 
'/elo/public/build', einträgst sollte es vermutlich funktionieren.

Part-DB sollte dann unter www.host.at/elo/public erreichbar sein. Es 
sollte aber eigentlich tatsächlich nur der Public ordner erreichbar 
sein, da in den Ordern darunter tendenziell sensitive Daten gespeichert 
sind (Die Config mit den Datenbank login, und private Dateianhänge, 
etc.). Daher bietet es sich an Part-DB mittels vHost in eine subdomain 
zu setzen (z.B. partdb.host.at).

Möglicherweise kann Apache auch so konfigurieren, dass er dann sowas wie 
host.at/elo aus dem elo/public ordner liefert, aber da weiß ich nicht 
auswendig wie das geht.

von Norbert (Gast)


Lesenswert?

Hallo Jan!

Danke! Mit deiner Hilfe habe ich die Datenbank zum Laufen gebracht.

Ich habe jetzt nur noch zwei Probleme:

1) Ich kann kein neues Bauteil anlegen --> Fehlermeldung:

Oops! An Error Occurred
The server returned a "500 Internal Server Error".

Something is broken. Please let us know what you were doing when this 
error occurred. We will fix it as soon as possible. Sorry for any 
inconvenience caused.

2) Ich habe keinen Log-Eintrag --> Im Verzeichnis /var/log gibt es keine
Datei mit dem Namen prod.log

Norbert

von Jan B. (do9jhb)


Lesenswert?

Norbert schrieb:
> 2) Ich habe keinen Log-Eintrag --> Im Verzeichnis /var/log gibt es keine
> Datei mit dem Namen prod.log

Schau mal in ./var/log (also im Part-DB Verzeichnis nach).
Ansonsten musst du mal prüfen, ob der Webserver schreibenden Zugriff auf 
das ./var verzeichnis (wieder im Part-DB Ordner) hat, bzw. Berechtigung 
hat dieses anzulegen. (Wenn du composer mit sudo laufen haben hast, gibt 
es da möglicherweise Rechteprobleme (da musst du mal ein `chown -R 
www-data var/` ausführen).

von Norbert (Gast)


Lesenswert?

Hallo!

Mit den Logfiles ist jetzt alles klar. Ich habe auch chown durchgeführt 
-->
kein Erfolg. Ich kann noch immer kein neues Bauteil anlegen. Z.B. 
Hersteller kann ich anlegen, also funktioniert die Anbindung zur 
Datenbank.

Bitte um Hilfe!

Meine LogFiles:

[2020-05-11 20:10:01] request.INFO: Matched route "part_new". 
{"route":"part_new","route_parameters":{"_route":"part_new","_controller 
$
[2020-05-11 20:10:01] security.DEBUG: Read existing security token from 
the session. {"key":"_security_main","token_class":"Symfony\\C$
[2020-05-11 20:10:01] security.DEBUG: User was reloaded from a user 
provider. {"provider":"Symfony\\Bridge\\Doctrine\\Security\\User\\$
[2020-05-11 20:10:01] php.CRITICAL: Uncaught Error: Call to undefined 
function App\Entity\PriceInformations\bcscale() {"exception":"[o$
[2020-05-11 20:10:01] request.CRITICAL: Uncaught PHP Exception 
Symfony\Component\ErrorHandler\Error\UndefinedFunctionError: "Attempted$
[2020-05-11 20:10:01] security.DEBUG: Stored the security token in the 
session. {"key":"_security_main"} []

Norbert

von Jan B. (do9jhb)


Lesenswert?

Norbert schrieb:
> [2020-05-11 20:10:01] php.CRITICAL: Uncaught Error: Call to undefined
> function App\Entity\PriceInformations\bcscale() {"exception":"[o$

Das sieht so aus, als hättest du die php-bcmath extension nicht 
aktiviert/installiert (auch wenn dann eigentlich der `composer install` 
Schritt fehlgeschlagen sein sollte).

Wenn du eine Datei auf deinem Webserver mit dem inhalt:

<?php
phpinfo();

anlegst, und in einem Browser anzeigen lässt, gibt es dann eine Sektion 
"bcmath" (und in der steht BCMath Support: enabled)?

Wenn nicht musst du evtl. noch mal php-bcmath installieren (daher z.B. 
`apt install php7.4-bcmath` ausführen) und den Webserver neustarten. 
Ansonsten musst du dann mal anfangen, die php.ini dateien anzuschauen, 
ob bcmath auch tatsächlich aktiviert ist...

von Norbert (Gast)


Lesenswert?

BCMath Support is enable!

xxxxx@xsjlask:~$ sudo php --ri bcmath

bcmath

BCMath support => enabled

Directive => Local Value => Master Value
bcmath.scale => 0 => 0

Bei der Installation hatte ich keine Fehlermeldung.

von Norbert (Gast)


Lesenswert?

Hallo Jan!

Ich habe nach der Abfrage im Terminal es noch einmal über die Website 
probiert. Siehe da, BCmath hat wirklich gefehlt. Mein Problem ist, dass 
mein Server mit PHP7.3 und mit PHP7.4 läuft. PHP7.3 brauche ich noch für 
eine ältere Anwendung.

Da ich nicht der Profi bei Apache2 und PHP bin, hätte ich noch eine 
Frage:

Kann man bei Apache2 eine Einstellung vornehmen, bei welcher man sagt 
Programm XY läuft mit PHP7.3 und Programm KJ mit PHP7.4?

Danke!

Norbert

PS.: Der letzte Beitrag von mir hat sich erledigt.

von Jan B. (do9jhb)


Lesenswert?

Norbert schrieb:
> Kann man bei Apache2 eine Einstellung vornehmen, bei welcher man sagt
> Programm XY läuft mit PHP7.3 und Programm KJ mit PHP7.4?

Im Prinzip müsste das mit FCGI gehen, dass dann die verschiedene 
Programme einfach die FastCGI server der verschiedenen PHP Versionen 
benutzen.
Part-DB kannst du aber auch einfach mit PHP 7.3 laufen lassen (Part-DB 
braucht mindestens PHP 7.2).

Wenn es dir hilft, ich hab die ganzen Preisberechnungen jetzt von den 
Berechnungsbackend abstrahiert, und jetzt ist bcmath keine unbedingt 
erforderliche Erweiterung mehr (auch wenn bcmath oder sogar php-gmp die 
Performance deutlich verbessern sollten).

von Jan B. (do9jhb)


Lesenswert?

Außerdem gibt es jetzt auch in der neuen Version wieder die Möglichkeit 
Labels für Bauteile (bzw. Bauteile lots) und Lagerorte zu erstellen.
Jetzt gibt es auch QR-Codes, die man dann direkt mit einem Smartphone 
scannen kann, um direkt im Browser auf die entsprechende Seite zu 
gelangen.

Weiterhin kann man jetzt, wenn man möchte fast die gesamte Palette an 
HTML und CSS3 nutzen, um seine Labels zu stylen, daher man kann jetzt 
theoretisch auch komplexere Textformatierungen mit Farben, Boxen, 
Schatten, etc. umsetzten. Der Editor für die Zeilen ist jetzt WYSIWYG, 
man kann also einfache Textformatierungen (Größe, Schriftart, 
Fett/Kursiv, etc.) ohne HTML Kentnisse umsetzen.

Zusätzlich zu den bisherigen Modus, wo man Platzhalter in den Text 
einfügt, und der dann entsprechend einfach ersetzt wird, gibt es für 
fortgeschrittene Nutzer auch die möglichkeit Twig 
(https://twig.symfony.com/doc/3.x/) zu nutzen. Das ist die Template 
Engine, die ich auch für die normalen Part-DB-Seiten benutze, und es 
ermöglicht wesentlich komplexere Labels. So kann man z.B. Bedingungen, 
wann welche Felder angezeigt werden sollen, oder ähnliches umgesetzt 
werden (Im Endeffekt handelt es sich um eine Turing-vollständige 
Sprache, man kann damit also quasi alles umsetzen)...

Weiterhin gibt es jetzt einen in Part-DB eingebauten Labelscanner, der 
eine vorhandene Webcam (oder Handykamera) nutzen kann, um die Barcodes 
zu erkennen, und einen dann auf die entsprechende Seite weiterzuleiten 
(siehe z.B. https://part-db.herokuapp.com/en/scan).

von noby (Gast)


Lesenswert?

Hallo,

gibt es eigentlich so etwas wie ein "Best Practice" welche Labels wohin 
gehören?
Wenn ich mir einen Sortimentskasten mit Schüben vorstelle, die 
zusätzlich noch Unterteilungen haben, beschriftet ihr hier die einzelnen 
Schübe mit Location Labels und die "internen" Unterteilungen mit Bauteil 
Labels? Oder haben bei einem solchen Szenario Bauteil Labels überhaupt 
eine Bedeutung?


Danke & Grüße
Noby

von Jan B. (do9jhb)


Lesenswert?

noby schrieb:
> Wenn ich mir einen Sortimentskasten mit Schüben vorstelle, die
> zusätzlich noch Unterteilungen haben, beschriftet ihr hier die einzelnen
> Schübe mit Location Labels und die "internen" Unterteilungen mit Bauteil
> Labels?

Ich habe die meisten Bauteile in Tüten (in den sie geliefert werden, 
Reichelt packt die ja z.B. einzeln in so wiederverschließbaren Tüten), 
da klebe ich dann einen Bauteileaufkleber (bzw. jetzt einen Bauteile Lot 
Aufkleber) drauf.

Die Kisten selber haben zwar einen Aufkleber, damit man weiß, welche 
Kiste das ist, aber die einzelnen Fächer selbst haben kein Label (die 
konkreten Fächerbezeichnungen kann man sich recht einfach selbst 
herleiten. Z.B. C4: Dritte Reihe, Spalte 4, das würde auch nicht 
schneller gehen, wenn das Fach beschriftet wäre.)

Ich denke das hängt so ein bisschen davon ab, wie viele Sortimentsfächer 
du hast, wie viel Platz dort für Labels ist, und wie "offensichtlich" es 
ist, was die genaue Bezeichnung ist und ob es möglich verschiedene 
Fächer zu vertauschen. Wenn man die Schübe oft herausnimmt, könnte es 
sinnvoll sein, diese zu beschriften, sodass man weiß an welche Position 
im Sortimentskasten der Einschub wieder hinmuss.

von Noby (Gast)


Lesenswert?

Danke für die Antwort. Die Idee für die Fächer Zeilen Buchstaben und für 
die Spalten zahlen zu vergeben finde ich schonmal sehr gut.

Wo ich aktuell noch etwas strauchel ist der Unterschied zwischen Part 
und Part lot Label. Mir ist klar das ein Part lot die Referenz zwischen 
Part und Storage Location darstellt.

Aktuell habe ich z.b. Netzteile in Ikea Kisten verstaut. Die Kiste hat 
ein Storage Label. Das Netzteil ein Part Label. Mein Hintergedanke war 
hierbei das ich das Netzteil so ggf. Einfacher in eine andere Box 
umbuchen kann ohne das Label zu ändern.
Man muss natürlich erst aus der Bestandsliste den korrekten Bestand 
suchen.

Wenn man für sortimentskästen die einzelnen Schübe und deren 
Unterteilungen einzeln beschriftet könnte man in der Tat ein Part lot 
Label verendenden und auf das Label die Storage Location und den Part 
Namen aufdrucken.

von Jan B. (do9jhb)


Lesenswert?

Noby schrieb:
> Wo ich aktuell noch etwas strauchel ist der Unterschied zwischen Part
> und Part lot Label. Mir ist klar das ein Part lot die Referenz zwischen
> Part und Storage Location darstellt.

Ich bin der Ansicht, dass man eigentlich fast immer Part Lot Aufkleber 
nutzen sollte, da man dann eben den Bezug zu Lagerort und Menge 
herstellen kann.
Verschieben kann man den Lot ja immer noch in der Datenbank (der 
Aufkleber verweist im Barcode nur auf den Lot, nicht den Lagerort) 
verschieben. Wenn man das häufiger macht, sollte dann aber nicht der 
Lagerort auf dem Label stehen (aber den kann man ja auch weglassen, wenn 
man mag).

Noby schrieb:
> Aktuell habe ich z.b. Netzteile in Ikea Kisten verstaut. Die Kiste hat
> ein Storage Label. Das Netzteil ein Part Label. Mein Hintergedanke war
> hierbei das ich das Netzteil so ggf. Einfacher in eine andere Box
> umbuchen kann ohne das Label zu ändern.
> Man muss natürlich erst aus der Bestandsliste den korrekten Bestand
> suchen.

Wenn man eine überschaubare Menge von relativ großen Einzelgegenständen 
hat, macht es evtl. Sinn für jedes Netzteil, ein eigenes Lot zu 
erstellen, dann kann man die beliebig bewegen, und man könnte sogar die 
Seriennummer oder ähnliches

von A. D. (adnc)


Lesenswert?

Vielen Dank für die Software. Die Demo macht auch einen sehr guten 
Eindruck.
Hat jemand schon seine Bauteile von einer EleLa-Datenbank in Part-DB 
migriert?

Ich habe in meiner EleLa-Datenbank recht viele Bauteile und ohne einen 
Weg mit geringem Aufwand diese zu portieren wäre es vom zeitlichen 
Aufwand viel zu aufwendig. Falls jemand hier Lösungsansätze hat, wäre 
ich ihm dankbar, wenn er sie teilen könnte.

von Gerald *. (pyromane)


Lesenswert?

Mahlzeit,

wie ist den die Entnahme von Bauteilen angedacht?

Grüße

von Jan B. (do9jhb)


Lesenswert?

Gerald *. schrieb:
> Mahlzeit,
>
> wie ist den die Entnahme von Bauteilen angedacht?
>
> Grüße

Im Moment muss man dazu noch das Bauteil bearbeiten, und beim richtigen 
PartLot die Anzahl richtig verringern.

Ich werde aber hoffentlich bald, wenn ich dazu komme, einen Dialog auf 
der Bauteile Info-page einbauen, wo man das dann so relativ komfortabel 
machen kann. Ähnlich zu den alten Versionen (das ganze ist aber etwas 
komplizierter, da man das Bauteil ja jetzt aus unterschiedlichen 
Lagerorten entnehemen kann).

Ich weiß aber noch nicht wann ich dazu komme das zu implementieren, im 
moment bin ich noch mit einer Bachelorarbeit beschäftigt ^^

von Gerald *. (pyromane)


Lesenswert?

Hallo Jan,

danke für die Rückmeldung!

von Karl (Gast)


Lesenswert?

@ A. D. (adnc)
Copy&paste ist das was ich gemacht habe.
Ist Arbeit und hat bei mir einige Stunden gedauert.
Ein Script dafür wäre super gewesen, aber dafür kenne ich mich mit 
Datenbanken zu schlecht aus um das selber zu machen.
Außerdem ist es für mich nun zuspät.


@Jan
Tolle Arbeit!
Was ich persönlich nervig finde ist das man den linken Bereich nicht 
zusammen klappen kann. Also Lagerorte, Hersteller, Tools, ... Auch das 
ich nicht alle sofort im Zugrif habe.

von Jan B. (do9jhb)


Angehängte Dateien:

Lesenswert?

Karl schrieb:
> Was ich persönlich nervig finde ist das man den linken Bereich nicht
> zusammen klappen kann. Also Lagerorte, Hersteller, Tools

In den Part-DB 1.0 Versionen gibt es einen kleine Pfeil am linken Rand 
der Sidebar mit dem man diese ein und ausblenden kann (siehe Screenshot 
im Anhang). Dann füllt der Inhalt die gesamte Breite des Bildschirms 
aus.

Karl schrieb:
> Auch das
> ich nicht alle sofort im Zugrif habe.

Was genau meinst du damit? Ich kann noch ein wählbares Menü hinzufügen, 
wo dann alles in einer Baustruktur zu finden ist (also mit den Einträgen 
"Kategorien", "Footprints", etc. und dann darunter die entsprechenden 
Einträge. Ich persönlich finde es zwar angenehmer, das in getrennten 
Menüs zu haben, aber das sollte keinen großer Aufwand zu sein, so ein 
Universalmenü hinzuzufügen...

von Peter (Gast)


Lesenswert?

Da ich mich gerade nach einer Alternative zu einem anderen hier 
Bekannten Programm umsehe habe ich mir die Demo angesehen und versuche 
mich gerade an einer Installation.
So ein Script zum wechseln wäre super aber kopieren geht auch.

In der Demo habe ich mir die linke Seite angeschaut und ich denke ich 
verstehe wo sein Problem ist.
Ich sehe immer nur 3 Kategorien und diese kann man nicht einzeln 
zusammen klappen. Die Punkte darunter kann man weiter auf /zuklappen. 
Den Pfeil habe ich sogar übersehen.

Obwohl ich noch nicht alles getestet habe kann ich schon sagen das mich 
das auch stören würde. Aber vielleicht sehe ich es ja auch nicht . Nach 
3 Stunden testen kann ich ja ganz leicht was übersehen haben und man 
kann ganz einfach mehrere Kategorien da anzeigen und diese auch zu 
klappen.

von Tom (Gast)


Lesenswert?

Hallo,

gibt es eine Möglichkeit dies auf einem herkömmlichen Webspace laufen zu 
lassen? Mein Paket bei all-inkl hat php, mysql als db

von Karl (Gast)


Lesenswert?

@Jan
Da habe ich anscheined etwas zu wenig geschrieben das sogar schon Andere 
meine Geganken versuchen nach zuvollziehen.

Ich meinte das ich nur 3 Kategorien habe und diese nicht einzel zusammen 
klappen kann. Alleine in der Demo unter Bauteile wird die Liste recht 
lang und die kann ich nicht zusammen klappen. Das mit dem ganz 
Ausblenden ist zwar schön aber hilft nicht wirklich.

Es stört mich halt etwas, aber es hindert mich nicht daran Part-DB 
einzusetzen. Ich finde es ein tolles Tool und besonders weil es im 
Browser läuft und ich nicht auf ein spezielles Betriebssystem angewiesen 
bin.

von PeterGeht (Gast)


Lesenswert?

Hi,
nachdem ich die Demo ausprobiert hatte, war ich so neugierig, und habe 
die V1 „mal“ auf meinem Ubuntu svr installiert. Nachdem ich, soweit 
glaube ich, alles nach Anleitung installiert habe, bekomme ich, wenn ich 
mit dem Browser auf die Adresse gehe, immer nur den Inhalt des
 „Part-DB-symfony“ Ordners angezeigt. Hier ist auch nur eine .php zu 
sehen, die ecs.php.
Ich habe daneben auch noch WordPress und weiteres am Laufen, welche auch 
mit auf die project/public umgezogen sind, dies laufen.  Habt Ihr evtl. 
eine Idee, wo ich es vermasselt haben könnte?

Danke
PeterGeht

PS : Infos liefere ich gerne nach.

von Jan L. (ranzcopter)


Lesenswert?

Karl schrieb:
> Ich meinte das ich nur 3 Kategorien habe und diese nicht einzel zusammen
> klappen kann. Alleine in der Demo unter Bauteile wird die Liste recht
> lang und die kann ich nicht zusammen klappen. Das mit dem ganz
> Ausblenden ist zwar schön aber hilft nicht wirklich.

das ist tatsächlich etwas, was mich im Vergleich zur "alten" Version 
auch etwas stört - dort nämlich kann ich zumindest das Thema 
"Baugruppen" komplett "einklappen", weil es dort noch die "feste 
Unterkategorie" "Übersicht" gibt, und die als solche dann eben klappbar 
ist.

Das mag bestimmt gliederungstechnisch inkonsistent sein, in der neuen 
Version jedoch würden mir die "Baugruppen" die linke Leiste doch arg im 
Weg sein.

Es wäre schön, wenn die oberste Ebene der linken Leiste auch "klappbar" 
gestaltet werden könnte...

von Jan B. (do9jhb)


Lesenswert?

Jan L. schrieb:
> das ist tatsächlich etwas, was mich im Vergleich zur "alten" Version
> auch etwas stört - dort nämlich kann ich zumindest das Thema
> "Baugruppen" komplett "einklappen", weil es dort noch die "feste
> Unterkategorie" "Übersicht" gibt, und die als solche dann eben klappbar
> ist.

Die ganze Geschichte mit den Baugruppen wird sich noch stark ändern, die 
aktuelle Anzeige war mehr so als Platzhalter gedacht (und er 
funktioniert ja auch nicht).

PeterGeht schrieb:
> Hi,
> nachdem ich die Demo ausprobiert hatte, war ich so neugierig, und habe
> die V1 „mal“ auf meinem Ubuntu svr installiert. Nachdem ich, soweit
> glaube ich, alles nach Anleitung installiert habe, bekomme ich, wenn ich
> mit dem Browser auf die Adresse gehe, immer nur den Inhalt des
>  „Part-DB-symfony“ Ordners angezeigt. Hier ist auch nur eine .php zu
> sehen, die ecs.php.
> Ich habe daneben auch noch WordPress und weiteres am Laufen, welche auch
> mit auf die project/public umgezogen sind, dies laufen.  Habt Ihr evtl.
> eine Idee, wo ich es vermasselt haben könnte?
>
> Danke
> PeterGeht

Im Idealfall wird Part-DB in einen eigenen VHost (also eine eigene 
Subdomain) installiert und liegt dort auf /. Der Webserver hat eine 
DocumentRoot Einstellung (pro VHost), in der man angeben kann, von wo 
die Dateien ausgeliefert werden sollen. Diese Einstellung muss auf den 
public/ Folder von Part-DB zeigen. Dort liegt die index.php die dann von 
deinem Browser aufgerufen wird.

Zum testen kannst du mal probieren im Browser direkt die URL public/ 
oder public/index.php, dann solltest du zumindest irgendwas sehen (auch 
wenn es ziemlich kaputt aussehen wird, da ihm Styles fehlen). Da man so 
aber prinzipiell Zugriff auf Dateien mit sensitiven Inhalt hat (z.B. die 
.env in der die Datenbankzugangsdaten drin stehen), sollte man ihn so 
nicht betreiben.

Im Prinzip sollte es auch möglich sein Part-DB in irgendein 
Unterverzeichnis zu installieren, dann muss man aber a) den Pfad in der 
webpack.config.js ändern (In zeile 47 findet sich ein Beispiel dafür) 
anpassen und b) mit einer Rewrite die URLs an die Dateipfade anpassen 
(das habe ich aber noch nie gemacht).

von tsx (Gast)


Lesenswert?

Eine Public-DB / API zum up/download von "fertig"-Parts. Wie ein 
Repository Server oder wie auf Git.

von Jan B. (do9jhb)


Lesenswert?

tsx schrieb:
> Eine Public-DB / API zum up/download von "fertig"-Parts. Wie ein
> Repository Server oder wie auf Git.

Gibt es bereits, nennt sich Octopart (https://octopart.com/).
Die bieten auch eine API zur Integration in eigene Anwendungen an. Es 
ist auch geplant, das in Part-DB zu integrieren, dafür brauche ich aber 
etwas Zeit.

Ich werde versuchen, dass möglichst modular zu integrieren, sodass dann 
auch theoretisch andere Datenquellen benutzt werden können (mir fallen 
aber sonst keine mehr ein, für elektronische Bauteile)...

von Markus M. (adrock)


Lesenswert?

Ja Octopart Integration wäre sehr nett, dann hätte man auch gleich die 
Datenblätter im Zugriff - wenn ich es richtg verstehe.

von Frank K. (frank)


Lesenswert?

Ich hätte eine Frage zur Import Funktion, z.B. für Footprints: 
Dateiformat ist z.B. JSON. Welche Felder gibt es für dieses Format? Ich 
würde gerne Footprints anlegen per Import, und dazu die Bilder in 
public/img/footprints einbinden. Die passenden JSON Dateien könnten per 
Skript erzeugt werden. Gibt es dazu ein Bespiel?

Gruß,
Frank

von Gerald *. (pyromane)


Lesenswert?

Tom schrieb:
> Hallo,
>
> gibt es eine Möglichkeit dies auf einem herkömmlichen Webspace laufen zu
> lassen? Mein Paket bei all-inkl hat php, mysql als db

Und wie sieht die Upgrade Möglichkeit von einem bestehenden Part-DB 
0.5.9 auf einem Webspace ohne Konsolenzugriff aus?

Gruß
Gerald

von Nano (Gast)


Angehängte Dateien:

Lesenswert?

Ich glaube ich habe gerade beim Testen von ein paar Eingaben den 
Datenbankzugriff zum Absturz gebracht, als ich ein paar Unterkategorien 
in meine neu angelegten Kategorien einfügen wollte.

Dabei, also beim Anlegen von 4 Unterkategorien ist auch eine ganze 
Oberkategorie einfach verschwunden.
D.h. die ist nicht mehr da, bzw. wie gelöscht, obwohl ich sie nicht 
gelöscht habe. Die bereits angelegten Unterkategorien hat es dann 
mitgerissen, die sind auch weg.

Siehe Screenshot.

Ebenso kann ich mir jetzt nicht mehr die Listen in den Rubrken 
"Kategorien" (root node) und "Baugruppen" (root ode) ansehen, weil die 
Software darauf nicht mehr reagiert, wenn ich mir hier die Listen 
anzeigen lassen will.
Ich vermute da einen Fehler beim Zugriff auf die Datenbank, weswegen das 
passiert. Hier wäre eine Fehlermeldung sinnvoll.

Das Event Log hilft leider auch nicht weiter. Da müsstest du mal in 
/var/log/* reingucken, was da schiefgelaufen ist.

Jan, vielleicht guckst du dir das mal an.
Das ist möglicherweise auch eine Sicherheitslücke, wenn es die Datenbank 
dahinter betrifft.

von Nano (Gast)


Lesenswert?

Die verschwundene Oberkategorie heißt übrigens "aktive Bauteil℮"

von Part-DB Gast (Gast)


Lesenswert?

Moin,

ich wollte man fragen ob das Docker Image noch aktuelle ist,
1
docker pull jbtronics/part-db1
2
docker run --name Part-DB --restart=unless-stopped -d -p 8080:80 jbtronics/part-db1
den bei mir liefert es folgende Fehlermeldung:
1
n exception occurred while executing 'SELECT t0.disabled AS disabled_1, t0.config_theme AS config_theme_2, t0.pw_reset_token AS pw_reset_token_3, t0.config_instock_comment_a AS config_instock_comment_a_4, t0.config_instock_comment_w AS config_instock_comment_w_5, t0.trusted_device_cookie_version AS trusted_device_cookie_version_6, t0.backup_codes AS backup_codes_7, t0.id AS id_8, t0.google_authenticator_secret AS google_authenticator_secret_9, t0.config_timezone AS config_timezone_10, t0.config_language AS config_language_11, t0.email AS email_12, t0.department AS department_13, t0.last_name AS last_name_14, t0.first_name AS first_name_15, t0.need_pw_change AS need_pw_change_16, t0.password AS password_17, t0.name AS name_18, t0.settings AS settings_19, t0.backup_codes_generation_date AS backup_codes_generation_date_20, t0.pw_reset_expires AS pw_reset_expires_21, t0.last_modified AS last_modified_22, t0.datetime_added AS datetime_added_23, t0.perms_system AS perms_system_24, t0.perms_groups AS perms_groups_25, t0.perms_users AS perms_users_26, t0.perms_self AS perms_self_27, t0.perms_system_config AS perms_system_config_28, t0.perms_system_database AS perms_system_database_29, t0.perms_parts AS perms_parts_30, t0.perms_parts_name AS perms_parts_name_31, t0.perms_parts_category AS perms_parts_category_32, t0.perms_parts_description AS perms_parts_description_33, t0.perms_parts_minamount AS perms_parts_minamount_34, t0.perms_parts_footprint AS perms_parts_footprint_35, t0.perms_parts_lots AS perms_parts_lots_36, t0.perms_parts_tags AS perms_parts_tags_37, t0.perms_parts_unit AS perms_parts_unit_38, t0.perms_parts_mass AS perms_parts_mass_39, t0.perms_parts_manufacturer AS perms_parts_manufacturer_40, t0.perms_parts_status AS perms_parts_status_41, t0.perms_parts_mpn AS perms_parts_mpn_42, t0.perms_parts_comment AS perms_parts_comment_43, t0.perms_parts_order AS perms_parts_order_44, t0.perms_parts_orderdetails AS perms_parts_orderdetails_45, t0.perms_parts_prices AS perms_parts_prices_46, t0.perms_parts_parameters AS perms_parts_parameters_47, t0.perms_parts_attachements AS perms_parts_attachements_48, t0.perms_devices AS perms_devices_49, t0.perms_devices_parts AS perms_devices_parts_50, t0.perms_storelocations AS perms_storelocations_51, t0.perms_footprints AS perms_footprints_52, t0.perms_categories AS perms_categories_53, t0.perms_suppliers AS perms_suppliers_54, t0.perms_manufacturers AS perms_manufacturers_55, t0.perms_attachement_types AS perms_attachement_types_56, t0.perms_currencies AS perms_currencies_57, t0.perms_measurement_units AS perms_measurement_units_58, t0.perms_tools AS perms_tools_59, t0.perms_labels AS perms_labels_60, t0.group_id AS group_id_61, t62.enforce_2fa AS enforce_2fa_63, t62.comment AS comment_64, t62.not_selectable AS not_selectable_65, t62.name AS name_66, t62.id AS id_67, t62.last_modified AS last_modified_68, t62.datetime_added AS datetime_added_69, t62.perms_system AS perms_system_70, t62.perms_groups AS perms_groups_71, t62.perms_users AS perms_users_72, t62.perms_self AS perms_self_73, t62.perms_system_config AS perms_system_config_74, t62.perms_system_database AS perms_system_database_75, t62.perms_parts AS perms_parts_76, t62.perms_parts_name AS perms_parts_name_77, t62.perms_parts_category AS perms_parts_category_78, t62.perms_parts_description AS perms_parts_description_79, t62.perms_parts_minamount AS perms_parts_minamount_80, t62.perms_parts_footprint AS perms_parts_footprint_81, t62.perms_parts_lots AS perms_parts_lots_82, t62.perms_parts_tags AS perms_parts_tags_83, t62.perms_parts_unit AS perms_parts_unit_84, t62.perms_parts_mass AS perms_parts_mass_85, t62.perms_parts_manufacturer AS perms_parts_manufacturer_86, t62.perms_parts_status AS perms_parts_status_87, t62.perms_parts_mpn AS perms_parts_mpn_88, t62.perms_parts_comment AS perms_parts_comment_89, t62.perms_parts_order AS perms_parts_order_90, t62.perms_parts_orderdetails AS perms_parts_orderdetails_91, t62.perms_parts_prices AS perms_parts_prices_92, t62.perms_parts_parameters AS perms_parts_parameters_93, t62.perms_parts_attachements AS perms_parts_attachements_94, t62.perms_devices AS perms_devices_95, t62.perms_devices_parts AS perms_devices_parts_96, t62.perms_storelocations AS perms_storelocations_97, t62.perms_footprints AS perms_footprints_98, t62.perms_categories AS perms_categories_99, t62.perms_suppliers AS perms_suppliers_100, t62.perms_manufacturers AS perms_manufacturers_101, t62.perms_attachement_types AS perms_attachement_types_102, t62.perms_currencies AS perms_currencies_103, t62.perms_measurement_units AS perms_measurement_units_104, t62.perms_tools AS perms_tools_105, t62.perms_labels AS perms_labels_106, t62.parent_id AS parent_id_107, t62.id_preview_attachement AS id_preview_attachement_108, t0.currency_id AS currency_id_109, t0.id_preview_attachement AS id_preview_attachement_110 FROM "users" t0 LEFT JOIN "groups" t62 ON t0.group_id = t62.id WHERE t0.id = ? LIMIT 1' with params [1]:
2
3
SQLSTATE[HY000]: General error: 1 no such table: users
Es scheint als würde es keine Datenbank geben.

Grüßle

von Nano (Gast)


Lesenswert?

@Jan B.

Mir fällt gerade auf, dass es noch keine Möglichkeit gibt global die 
Tabellenansichten zu definieren.

Wenn ich bspw. bei einer Tabelle die Spalte mit den "Tags" einblenden 
will, dann kann ich das nur für die Einzelseite machen und wenn ich dann 
zwischen zwei Tabellen hin und her springe, dann geht die Einstellung 
auch gleich wieder verloren.

Damit das nicht so ist, wären hier zwei Änderungen nötig:

1. Es muss eine Möglichkeit geben, dass sich Kategorien die 
Tabellenansichten merken können.
D.h. Datenbanktabelle die die Daten für eine Kategorie enthält, benötigt
noch ein Feld, in dem gespeichert wird, welche Spalten dargestellt 
werden sollen.
Ebenso muss noch ein Wert gespeichert werden, der festlegt, ob eine 
manuelle Ansicht aktiviert wurde oder nicht. Das ist für Punkt 2 
wichtig.

2. Es fehlt noch die Möglichkeit globale Tabellenansichten zu 
definieren.
So das eine Ansicht immer gilt, wenn man sie nicht manuell festgelegt 
hat, also für die jeweilige Kategorie hier der Wert für die manuelle 
Ansicht in der Tabelle nicht gesetzt wurde.

von Nano (Gast)


Lesenswert?

Und

3. Damit ein verwalten der manuell gesetzen Ansichten einfach wird. 
Sollte es eine Tabelle geben, in der schön bequem in einer Spalte alle 
Kategorien aufgelistet sind und daneben eine Spalte für die Frage, ob 
eine manuelle Ansicht gesetzt ist oder nicht.
Die Tabellenansicht für diese Einstellung benötigt dann noch einen 
Button um für alle gerade angezeigten Kategorien diesen Bool Wert, ob 
eine manuelle Ansicht gewünscht ist oder nicht, auf einmal zu setzen.#

von Nano (Gast)


Lesenswert?

4. Auch nicht schlecht wäre, wenn man selbstdefinierte "Tag" Gruppen 
definieren könnte und man diese Taggruppen dann auch als eigene Spalten 
in der Spaltenansicht zur Verfügung hätte.
Dadurch würde man vermeiden, dass in der Tabellenansicht verschiedene 
Tags miteinander nicht verwurstelt werden können und gezielt nach 
bestimmten Tags sortiert werden kann.

Man denke da bspw. ein Tag um zu markieren, dass ein Bauteil "veraltet" 
ist.
Hat man jetzt noch irgendeinen anderen Tag, dann geht der Tag "veraltet" 
beim Sortieren unter, da der andere vielleicht die Sortierreihenfolge 
ändert.

von Neuer Part-DB User (Gast)


Lesenswert?

Hallo!

Wollte sehr gerne das neue Part-DB testen und in Zukunft selbst nutzen, 
doch leider bekomme ich es nicht auf einen Debian Server installiert.
Die Installation ist für mich als ungeübter Linux User doch etwas 
komplexer als angenommen.
Somit wollte ich gerne das Docker Paket dafür verwenden, doch leider 
scheint dieses Paket wirklich kaputt zu sein.
Ich bekomme die gleichen Fehler wie der User "Part-DB Gast", wenn ich 
die Webseite von Part-DB aufrufen möchte.

Viele Grüße
Neuer Part-DB User

von Jan B. (do9jhb)


Lesenswert?

Part-DB Gast schrieb:
> Moin,
>
> ich wollte man fragen ob das Docker Image noch aktuelle ist,docker pull
> jbtronics/part-db1
> docker run --name Part-DB --restart=unless-stopped -d -p 8080:80
> jbtronics/part-db1

Tatsächlich waren die verfügbaren Docker-Images veraltet, da seit 
einigen Monaten der unbemerkt der automatische Build-Prozess 
fehlgeschlagen ist. Das hatte zwar nix mit der untenstehenden 
Fehlermeldung zu tun, aber ist jetzt behoben, und sollte nach dem ich 
das ganze auf GitHub Actions migriert habe, auch auffallen, sollte es in 
Zukunft erneut fehlschlagen.

> den bei mir liefert es folgende Fehlermeldung:
> SQLSTATE[HY000]: General error: 1 no such table: users
> Es scheint als würde es keine Datenbank geben.

Das Docker-Image legt die Datenbank nicht automatisch an (weil dann auch 
das admin Passwort generiert wird, und der user das aktiv sehen sollte). 
Daher muss man nach der Einrichtung des Docker containers mit dem Namen 
partdb noch einmal den Befehl docker exec --user=www-data partdb 
bin/console doctrine:migrations:migrate ausführen.

Wichtig ist es auch die entsprechenden Ordner als Volumes einzubinden, 
so dass Daten und die SQLite Datenbank persistent über 
Container-Änderungen bleiben. Ich habe mal dazu eine kleine Anleitung 
erstellt: 
https://github.com/Part-DB/Part-DB-symfony/blob/master/docs/docker/docker-install.md

Es gibt jetzt auch eine docker-compose.yml Datei mit das ganze 
automatisch konfiguriert wird.

Gruß
Jan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.