Aktualizacja kodu biblioteki, aby użyć najnowszej wersji Angulara w projekcie

0

Witam.
Pytanie jest technologiczne i trochę "prawne". Do najnowszego projektu potrzebuje komponentu typu flowchart, w którym będę budował schematy postępowania do zamówień produkcyjnych. Znalazłem bibliotekę ng-flowchart, ale nie mogę zainstalować do projektu z Angular 16. Dwa tygodnie temu ktoś już napisał issue żeby zrobić update do 16stki, ale nie jestem pewny, czy projekt nie został porzucony. Czy ja jestem w stanie sam zrobić "update" lokalnie i użyć tej biblioteki? Czy ja z plików projektu mogę przekopiować kod do swojego i zamiast

import { NgFlowchartModule } from '@joelwenzel/ng-flowchart';

Zrobić

import { NgFlowchartModule } from './shared/services/ng-flowchart';

Jeśli jest na to jakiś sposób to ja chętnie ten proces przyspieszę dla całej biblioteki i puszcze PR, ale czy to nie wiąże się z tym, że i tak "właściciel" musi zatwierdzić zmiany, a to na jedno wyjdzie? Jeśli projekt jest porzucony to on moich zmian nigdy nie zatwierdzi...

1

https://github.com/joel-wenzel/ng-flowchart/blob/1.0.0-beta/LICENSE

Masz postanowienia licencyjne, poczytaj i poszperaj, będziesz wiedział więcej.

Na szybko to widzę ze ta licencja Apache 2.0 jest raczej luźna.

1
AdamWox napisał(a):

Jeśli jest na to jakiś sposób to ja chętnie ten proces przyspieszę dla całej biblioteki i puszcze PR, ale czy to nie wiąże się z tym, że i tak "właściciel" musi zatwierdzić zmiany, a to na jedno wyjdzie? Jeśli projekt jest porzucony to on moich zmian nigdy nie zatwierdzi...

To czy kopiujesz ręcznie czy przez npm to nie ma znaczenia. Jedyną różnicą jest to czy ostatecznie to trafi do node_modules/ czy do Twojego shared/ - wszystko jedno.

Aczkolwiek używać biblioteki która nie jest wspierana to proszenie się o kłopoty.

1
Riddle napisał(a):

Aczkolwiek używać biblioteki która nie jest wspierana to proszenie się o kłopoty.

Właśnie. Czemu nie użyć po prostu jakiejś innej, która jest aktualizowana?

AdamWox napisał(a):

Znalazłem bibliotekę ng-flowchart

Ale to nie możesz dalej poszukać? Niekoniecznie zamykając się na ekosystem Angulara. Bo może lepiej byłoby użyć bardziej wspieranej biblioteki, która operuje bezpośrednio na DOM, jeśli nie ma takiej do Angulara?

Możesz zrobić research i popróbować z 5 różnych libek, a potem zacząć używać jednej. I jeśli dobrze wybierzesz, to w następnych projektach od razu sięgniesz po tę sprawdzoną.

1

Nie kopiuj ręcznie tylko zrób forka, dodaj tam zmiany do nowszego angulara i dodaj do npa. Niestety czasem trzeba zacząć samemu wspierać daną bibliotekę bo nie ma innego odpowiednika, albo za duży koszt zmiany na inną.

1

Jeżeli biblioteka jest kompatybilna z nowym angularem tylko po prostu ma zły numerek wersji możesz użyć wymuszenia wersji w zależnościach:

W zależności od menedżera paczek wybierz sobie link:

https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides
https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/
https://pnpm.io/package_json#pnpmoverrides

0

Wow, dzięki za zainteresowanie tematem ✌️

Ogólnie to była biblioteka, która najlepiej spełniała moje wymagania w funkcjonalności jaką oferuje na dzień dzisiejszy. Udało mi się zainstalować z opcją --force i jedyny problem na jaki napotkałem to importy. Biblioteka pozwala na definiowanie własnych komponentów, które są elementami drzewka i nie pobierała mi z głównego app.module.ts importów do NgPrime. Trzeba było te komponenty zrobić standalone: true i zaimportować jeszcze raz potrzebne kontrolki. Pewnie nie jest to dobre rozwiązanie, ale na razie się tym nie martwię. Dodatkowo biblioteka ma gotowy export/import w formacie JSON, więc to też ułatwi mi budowanie UI.

Jest jeszcze flowy.js - ale też wygląda na martwy. Większość z bibliotek, poza środowiskiem Angulara, zatrzymała się na jQuery, dodatkowo nie dają możliwości tworzenia własnych komponentów, trzeba będzie tę funkcjonalność pisać od zera. Sporo bibliotek wygląda jak wybrakowany UML, ciężko z tego później zrobić jakiegoś JSONa, albo zbudować UI.

PS.
Budowanie schematów nie będzie wykonywane często, ale są procedury "produkcyjne", które są traktowane indywidualnie. To nie jest taka typowa produkcja. To jest bardziej zarządzanie statusami/etapami produkcji. Cała produkcja jest zlecana na zewnątrz, a zarząd chce przypilnować swoich ludzi żeby ich zadania były wykonywane sprawnie.

Proces:

  1. Zamówienie z pozycjami wpada do bazy
  2. przypisujemy schemat działania
  3. przypisujemy osobę z działu "A"
  4. ta osoba wykonuje swoje zadanie i wybiera odpowiednie statusy, na które pozwala schemat
  5. po zakończeniu przekazuje osobie do działu "B" wybierając odpowiedni status dla każdej z pozycji
  6. osoba z działu "B" robi swoje
  7. zakończenie całego zamówienia

Trzeba to jeszcze dopracować, żeby rozgraniczyć "kafelek" ze statusem od powiadomień i innych etapów, ale działa to dobrze.
FlowChart Angular

1 użytkowników online, w tym zalogowanych: 0, gości: 1