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)


Bewertung
5 lesenswert
nicht 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)


Bewertung
5 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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"
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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Vergiß meine Frage, hab grad deinen zweiten Post in diesem Thread 
gesehen...

von Friedhelm (Gast)


Bewertung
0 lesenswert
nicht 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:

In AbstractMySQLDriver.php line 38:

  An exception occurred while executing 'RENAME TABLE `attachement_types` TO
  `attachment_types`;':

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'attachment_
  types' already exists


In PDOConnection.php line 90:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'attachment_
  types' already exists


In PDOConnection.php line 88:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'attachment_
  types' already exists


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

von Friedhelm (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oder bekomme ich eventuell auf einem anderem Weg meine ganzen Daten in 
die Datenbank?

von Jan B. (do9jhb)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von Jan B. (do9jhb)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
OK, muss ich mir mal anschauen. Danke dir!

von Wilhelm (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht lesenswert
Anbei meine exportierten Strukturen.
/* SELECT id,name,parent_id FROM `manufacturers` */
/* SELECT id,name,parent_id FROM `footprints` */
/* 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)


Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade eine neue part-db Installation ans Laufen zu 
bekommen:
> git remote show origin
* Remote-Repository origin
  URL zum Abholen: https://github.com/Part-DB/Part-DB.git
...
> git branch
  master
* stable-v0.5

Aber PHP schmeißt eine fatale Fehlermeldung:
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)


Bewertung
0 lesenswert
nicht lesenswert
Bernd schrieb:
> Ich versuche gerade eine neue part-db Installation ans Laufen zu
> bekommen:
>
>> git remote show origin
> * Remote-Repository origin
>   URL zum Abholen: https://github.com/Part-DB/Part-DB.git
> ...
>> git branch
>   master
> * stable-v0.5
> 
>
> Aber PHP schmeißt eine fatale Fehlermeldung:
>
> 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?

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)


Bewertung
0 lesenswert
nicht lesenswert
Jan B. schrieb:
> Das ist die "klassische" Version von Part-DB
Mit einem
> 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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
<input type="file" name="img" multiple>

unterstützt.

von Jan B. (do9jhb)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.
Executing script cache:clear [KO]
[KO] Script cache:clear returned with error code 1
!!  In AbstractMySQLDriver.php line 93:
!!    An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused
!!  In PDOConnection.php line 31:
!!    SQLSTATE[HY000] [2002] Connection refused
!!  In PDOConnection.php line 27:
!!    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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von Holly PartDB :) (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

von coeka (Gast)


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

von Jan B. (do9jhb)


Bewertung
1 lesenswert
nicht 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)


Bewertung
3 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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).

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.