Compare commits

...

716 Commits

Author SHA1 Message Date
Lorenz Hilpert
9668aa8829 Format 2022-10-12 18:34:48 +02:00
Lorenz Hilpert
c49c428688 Newsletter text entfernt 2022-10-12 18:34:00 +02:00
Lorenz Hilpert
46b963c2d1 Ausblenden des Newsletter-Textes bei Gastkunden 2022-10-12 18:31:11 +02:00
Lorenz Hilpert
68a2eab425 Merged PR 1396: #3502 Guard bei navigation auf P4M Anlage angepasst
#3502 Guard bei navigation auf P4M Anlage angepasst
2022-10-12 15:02:17 +00:00
Andreas Schickinger
886f063d1b Fix für Anzeigefehler im SectionToggle 2022-10-12 16:40:29 +02:00
Andreas Schickinger
ed6ee36509 Merged PR 1395: #3481 Remission Filter zwischenspeichern bei Wechsel zwischen Pflicht- und Ab...
#3481 Remission Filter zwischenspeichern bei Wechsel zwischen Pflicht- und Abteilungsremission

Related work items: #3481
2022-10-12 13:57:28 +00:00
Andreas Schickinger
ab345dae0d Merged PR 1393: #3514 TK Fehlermeldung fix
#3514 TK Fehlermeldung fix

Related work items: #3514
2022-10-12 13:39:29 +00:00
Lorenz Hilpert
fbb1e6c4a2 Merged PR 1394: #3511 Addressvalidierung für Onlinekonto aktiviert
#3511 Addressvalidierung für Onlinekonto aktiviert
2022-10-12 10:38:35 +00:00
Lorenz Hilpert
4ede9226b4 Merged PR 1392: #3484 Keep Userstates on Tab Changes
#3484 Keep Userstates on Tab Changes
2022-10-11 15:05:04 +00:00
Andreas Schickinger
fbfecbd8ae Merged PR 1391: TK Suche Timespan Fallback angepasst
TK Suche Timespan von 6 Monate Vergangenheit/Zukunft auf 6 Wochen Vergangenheit, 2 Wochen Zukunft geändert. Wird verwendet, wenn kein Timespan Filter gesetzt ist

Related work items: #3422
2022-10-11 14:32:30 +00:00
Lorenz Hilpert
3c4612d15c Merged PR 1389: #3307 Filter Wird Nicht Gerendert
#3307 Filter Wird Nicht Gerendert
2022-10-11 13:33:10 +00:00
Andreas Schickinger
7fa2e7862d Merged PR 1388: #3508 Bestellbestätigung "zur Warenausgabe": Prüfung auf enabled bei CustomerFeature B2B entfernt
#3508 Prüfung auf enabled bei CustomerFeature B2B entfernt

Related work items: #3508
2022-10-11 12:16:07 +00:00
Andreas Schickinger
114267362c Merged PR 1384: #3503 TK Sortierung umgedreht, #3504 Scroll Fix
#3503 TK Sortierung umgedreht, #3504 Scroll Fix

Related work items: #3503, #3504
2022-10-11 11:06:01 +00:00
Lorenz Hilpert
4050e9605d FIX Routing Kundenalage 2022-10-11 10:41:25 +02:00
Andreas Schickinger
fdd5373aaf Merged PR 1385: #3493 TK Modal Header Abstand erhöht
#3493 TK Modal Header Abstand erhöht

Related work items: #3493
2022-10-10 15:59:04 +00:00
Andreas Schickinger
2dfe7ec05b Merged PR 1386: #3492 TK Drucken in der Trefferliste fix
#3492 TK Drucken in der Trefferliste fix

Related work items: #3492
2022-10-10 15:58:42 +00:00
Lorenz Hilpert
82513b5dde Merged PR 1387: Kubi Kundenanlage und Kundenkarte
Related work items: #3230, #3233
2022-10-10 15:57:50 +00:00
Lorenz Hilpert
14d1bb6ac8 Merged PR 1383: HFI Geschnakkarte
Related work items: #3496
2022-10-07 14:20:05 +00:00
Lorenz Hilpert
d589c94681 Fix Kundendatenerfassen - added modifier add-loyality-card 2022-10-06 12:42:45 +02:00
Lorenz Hilpert
eca19bb507 Updateing Customer for P4M 2022-10-06 10:47:10 +02:00
Lorenz Hilpert
282ff30b3e #3494 Upgrade Ava API auf v6 2022-10-05 13:58:02 +02:00
Lorenz Hilpert
5d0b810674 Upgrade catsearch API auf V6 2022-10-05 13:54:12 +02:00
Lorenz Hilpert
e32482c634 Type Kundendaten erfassen speichern aufruf 2022-10-05 13:25:43 +02:00
Lorenz Hilpert
650026b0c0 Es existiert bereits ein Onlinekonto 2022-10-04 17:48:15 +02:00
Lorenz Hilpert
cd25d6da38 #3489 fonts 2022-10-04 12:10:17 +02:00
Andreas Schickinger
9dd0954967 Merged PR 1381: #3326 Tätigkeitskalender Suchfunktion und neues Design
Tätigkeitskalender Suchfunktion und neues Design

Zusätzliche Änderungen im PR:
- Anpassungen für GitHub package Zugriff
- UiModalRef um ein afterChanged$ erweitert, um nach dem schließen zu erkennen ob ein reload notwendig ist
- ui-loader funktionierte nicht bei verwendung von ui-scroll-container mit useLoadAnimation false
- ui-skeleton-loader um Template für TK Listenitem erweitert

Related work items: #3419, #3420, #3421, #3422, #3423
2022-10-04 09:42:49 +00:00
Lorenz Hilpert
fdaceb9bf8 Merged PR 1382: Kubi
Related work items: #3228, #3230, #3289, #3467, #3471, #3478
2022-09-30 13:48:19 +00:00
Lorenz Hilpert
4ab3a3b3cf #3307 Fixed With Filter 2022-09-30 11:19:17 +02:00
Lorenz Hilpert
eb8b54dc63 Fix Unit Test 2022-09-29 18:05:43 +02:00
Lorenz Hilpert
4703aee60c Interveptor Unit Test Fix 2022-09-29 16:26:43 +02:00
Lorenz Hilpert
93b0d43bd7 #3307 Anzeige des backdrops bei Filtern 2022-09-29 14:20:41 +02:00
Lorenz Hilpert
1029310e0d #3483 Neuanmeldung bei 401 Antworten 2022-09-29 14:11:59 +02:00
Michael Auer
c083684db2 Merge tag '3452-Autocomplete-Abbrechen-Bei-Suche' into develop 2022-09-28 22:19:03 +02:00
Michael Auer
d6775aad69 Merge branch 'hotfix/3452-Autocomplete-Abbrechen-Bei-Suche' 2022-09-28 22:19:02 +02:00
Lorenz Hilpert
3eff10bbb4 Merged PR 1380: Upgrade der API auf V6
Upgrade der API auf V6

Related work items: #3466
2022-09-20 16:14:50 +00:00
Lorenz Hilpert
e4cbab8365 Merged PR 1379: #3428 Aktivierung der Buttons ohne Raio button aktivieren wenn nur ein artikel
#3428 Aktivierung der Buttons ohne Raio button aktivieren wenn nur ein artikel
2022-09-15 16:05:12 +00:00
Lorenz Hilpert
18212e7a4c Merged PR 1378: Update CRM API V6
Update CRM API V6
2022-09-14 15:13:14 +00:00
Lorenz Hilpert
0cd0b1abfd Merged PR 1377: Update CRM API
Related work items: #3464
2022-09-14 13:48:25 +00:00
Lorenz Hilpert
a66137873c Merged PR 1376: #3448 Anzeige Sonderinfo
#3448 Anzeige Sonderinfo
2022-09-14 08:26:29 +00:00
Andreas Schickinger
469110eabf Merged PR 1375: #3455 AHF Frist immer für gesamten Warenkorb festlegen
#3455 AHF Frist immer für gesamten Warenkorb festlegen

Related work items: #3455
2022-09-13 13:08:59 +00:00
Lorenz Hilpert
55474fa4e3 Merged PR 1374: #3451 nach löschen des Browser-Verlauf kommt Fehler
#3451 nach löschen des Browser-Verlauf kommt Fehler
2022-09-13 12:56:17 +00:00
Lorenz Hilpert
3bdcdee031 #3452 Autocomplete wird nicht abgebrochen, wenn Suche ausgelöst wurde 2022-09-12 14:34:24 +02:00
Lorenz Hilpert
246c5a61dd Merged PR 1373: #3428 bei Teilabholung ohne ausgewählten Radio-Button wirf Fehler
#3428 bei Teilabholung ohne ausgewählten Radio-Button wirf Fehler
2022-09-08 13:20:45 +00:00
Andreas Schickinger
0c8bfba515 Merged PR 1372: #3340 Quantity Dropdown um Suffix erweitert
#3340 Quantity Dropdown um Suffix erweitert

Related work items: #3340
2022-09-01 08:23:20 +00:00
Michael Auer
3c8d9bb1e5 Merge tag '2.0' into develop 2022-08-24 10:33:19 +02:00
Michael Auer
da2c1c8316 Merge branch 'release/2.0' 2022-08-24 10:33:18 +02:00
Lorenz Hilpert
0334b2dd33 Merge branch 'release/2.0' into develop 2022-08-23 14:24:21 +02:00
Lorenz Hilpert
96356042af Remission - Anpassung HTML fuer E2E Tests 2022-08-23 14:02:50 +02:00
Lorenz Hilpert
21adff8d0c #3140 Button "Nicht-Clickbar"-Icon nur wenn disabled 2022-08-22 16:11:51 +02:00
Lorenz Hilpert
35def2a7c7 #3405 Kalender -Speichern-Button verschwindet 2022-08-19 17:07:30 +02:00
Lorenz Hilpert
e3d82794a3 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2022-08-19 15:55:10 +02:00
Lorenz Hilpert
20cbac8f17 #3140 Ausgrauen des Auswaehlen Buttons fur
Zuruecklegen bis
2022-08-19 15:55:01 +02:00
Lorenz Hilpert
6067e02729 #3400 Uebergabe 0 Eur wenn kein Preis existiert 2022-08-18 16:57:06 +02:00
Lorenz Hilpert
eb77664ea1 #3387 - Auswertung der Kapazitaeten angepasst 2022-08-18 15:38:24 +02:00
Michael Auer
8b1baf9ebd Merge tag '2.0.531' into develop 2022-08-18 13:47:13 +02:00
Michael Auer
12fb774b73 Merge branch 'release/2.0' 2022-08-18 13:44:03 +02:00
Lorenz Hilpert
d79dbb11fe #2162 - Warnung eingebaut und Anzeigefehler behoben 2022-08-17 17:08:09 +02:00
Lorenz Hilpert
19ccb29248 #2162 - WA - Auf der Details Seite werden nur items mit dem gleichen Kunden angezeigt. 2022-08-16 15:29:33 +02:00
Lorenz Hilpert
199c4f30e7 #3139 Loder angepasst 2022-08-11 17:23:20 +02:00
Lorenz Hilpert
732c0d4e35 #3139 Load Spinner für Abholfrist 2022-08-10 16:50:29 +02:00
Lorenz Hilpert
fa1769da9f 2022-08-08 12:10:19 +02:00
Lorenz Hilpert
029997d624 #3338 - Uebergabe Filter angepasst 2022-08-08 11:56:46 +02:00
Andreas Schickinger
d2546409cb Merged PR 1370: #3139 Abholfachfrist: Für alle festlegen Button in Bestellbestätigung
#3139 Abholfachfrist: Für alle festlegen Button in Bestellbestätigung

Related work items: #3139
2022-08-08 08:46:00 +00:00
Andreas Schickinger
cb2bc8d65b Merged PR 1369: #3332 AHFFrist DisplayOrderItemSubsetDTO verwendet
#3332 AHFFrist DisplayOrderItemSubsetDTO verwendet

Related work items: #3332
2022-08-04 13:38:39 +00:00
Andreas Schickinger
57bd8d4dd4 Merged PR 1368: #3337 Hotfix E-Mail Adresse wird nur noch angehakt, wenn auch eine hinterlegt ist
#3337 E-Mail Adresse wird nur noch angehakt, wenn auch eine hinterlegt ist

Related work items: #3337
2022-08-04 09:45:59 +00:00
Andreas Schickinger
cc1e210799 Merged PR 1367: #3139, #3140, #3328 AHFFrist auf Bestellbestätigung- und Bestellpostenseite
Related work items: #3139, #3140, #3328
2022-08-03 13:51:25 +00:00
Lorenz Hilpert
4bee08d483 Merged PR 1366: Merge release => develop
Related work items: #3180, #3203, #3245, #3293, #3299, #3312, #3320, #3322
2022-08-02 12:30:08 +00:00
Lorenz Hilpert
8cfb160989 Merged PR 1365: #3322 Leseproben - Link geht über Rand
#3322 Leseproben - Link geht über Rand

Related work items: #3322
2022-08-01 13:06:19 +00:00
Lorenz Hilpert
6325167eda Merged PR 1364: changed query from qss to customer_name
changed query from qss to customer_name

Related work items: #3320
2022-08-01 12:10:58 +00:00
Lorenz Hilpert
8925eae4c5 Merged PR 1362: Merge develop => release/2.0
Related work items: #3180, #3203, #3245, #3293, #3299, #3312
2022-07-29 11:58:46 +00:00
Andreas Schickinger
9282bcd779 Merged PR 1361: #3312 NotificationChannel Auswertung angepasst
#3312 NotificationChannel Auswertung angepasst

Related work items: #3312
2022-07-29 11:55:29 +00:00
Lorenz Hilpert
5aa6499598 #3313 Nachbestellen auf der Wareneingangsliste wirft Fehler 2022-07-29 11:47:03 +02:00
Andreas Schickinger
f766781928 Merged PR 1360: Merge release 2.0 -> develop
Related work items: #3180, #3203, #3245, #3293, #3299
2022-07-28 14:05:13 +00:00
Andreas Schickinger
02834b7102 Merged PR 1359: Merge develop -> release 2.0
Merge develop -> release 2.0

Related work items: #3180, #3203, #3245, #3299
2022-07-28 13:48:10 +00:00
Andreas Schickinger
a9e3430505 Merged PR 1358: #3180 getTakeAwayAvailability angepasst
#3180 getTakeAwayAvailability angepasst

Related work items: #3180
2022-07-28 13:30:06 +00:00
Nino Righi
4b9a23001a Merged PR 1357: #3267 Email Validator Regex updated, Notification Channel Control Logic modified
#3267 Email Validator Regex updated, Notification Channel Control Logic modified
2022-07-28 13:25:55 +00:00
Nino Righi
8de7ec9124 Merged PR 1356: #3267 Bugfix If Both Communication Details are Valid update Customer correctly
#3267 Bugfix If Both Communication Details are Valid update Customer correctly
2022-07-27 16:30:18 +00:00
Andreas Schickinger
19a0a3c7c3 Merged PR 1355: #3180 Lupe wird erst angezeigt, wenn das Bild erfolgreich geladen wurde
#3180 Lupe wird erst angezeigt, wenn das Bild erfolgreich geladen wurde

Related work items: #3180
2022-07-27 16:21:55 +00:00
Nino Righi
42a7d6e4b7 Merged PR 1352: #3267 Checkout Cart Fix Notification Channel disable Order CTA if communication details missing
#3267 Checkout Cart Fix Notification Channel disable Order CTA if communication details missing
2022-07-27 15:21:52 +00:00
Nino Righi
66818b1647 Merged PR 1354: #3304 Customer Search Message Fix
#3304 Customer Search Message Fix
2022-07-27 14:06:07 +00:00
Andreas Schickinger
bc8ba9adc8 Merged PR 1353: #3180 Entkoppelte Ladebereiche für Verfügbarkeiten
#3180 Entkoppelte Ladebereiche für Verfügbarkeiten

Related work items: #3180
2022-07-27 13:16:35 +00:00
Nino Righi
4ae5759361 Merged PR 1351: #3304 Fix WA Autocomplete Dropdown closing after queryParams change
#3304 Fix WA Autocomplete Dropdown closing after queryParams change
2022-07-26 14:57:11 +00:00
Andreas Schickinger
b5cfcf8036 Merged PR 1350: #3245 Zubuchen disabled fixes
#3245 Zubuchen disabled fixes

Related work items: #3245
2022-07-26 14:47:46 +00:00
Lorenz Hilpert
061982cf2c Merged PR 1349: Dashboard // nicht alle Infos werden angezeigt
Related work items: #3299
2022-07-26 12:00:09 +00:00
Nino Righi
0e1422c2c4 Merged PR 1348: #3267 Checkout Cart Notification Disable Order Button if Checkbox is Active b...
#3267 Checkout Cart Notification Disable Order Button if Checkbox is Active but E-Mail or Mobilenumber is missing
2022-07-26 11:09:43 +00:00
Nino Righi
3e534029a0 Merged PR 1347: #3167 Fix Reorder Modal Styling Stock Column Text Centered
#3167 Fix Reorder Modal Styling Stock Column Text Centered
2022-07-25 15:44:42 +00:00
Nino Righi
8d9ee9fe5c Merged PR 1343: #3297 Fix Reorder Modal takes now the correct Quantity
#3297 Fix Reorder Modal takes now the correct Quantity
2022-07-25 15:44:10 +00:00
Lorenz Hilpert
675aa04564 Added Generated package-lock.json - npm version 6 2022-07-25 17:42:30 +02:00
Lorenz Hilpert
88c8885a81 Build Test 2022-07-25 17:26:14 +02:00
Andreas Schickinger
151760aef9 Merged PR 1346: #2303 WA AHF // Zusatz bei Gruppierung in Trefferliste beachten
#3203 WA AHF // Zusatz bei Gruppierung in Trefferliste beachten

Related work items: #3203
2022-07-25 15:15:02 +00:00
Nino Righi
6c89969b60 Merged PR 1345: #3214 Price Diff Modal Styling Adjustments
#3214 Price Diff Modal Styling Adjustments
2022-07-25 14:57:13 +00:00
Nino Righi
0fd5e66c33 Merged PR 1344: #3287 Notification Channel preselect E-Mail if E-Mail and SMS is available
#3287 Notification Channel preselect E-Mail if E-Mail and SMS is available
2022-07-25 14:55:08 +00:00
Lorenz Hilpert
c8aa526e4d Fix Toaster Component => onSlideFinished 2022-07-25 16:29:38 +02:00
Andreas Schickinger
f2c492c6ea Merged PR 1342: #3245 Zubuchen disabled wenn ein Zusatz ausgewählt ist
#3245 Zubuchen disabled wenn ein Zusatz ausgewählt ist

Related work items: #3245
2022-07-25 14:24:21 +00:00
Lorenz Hilpert
11cf845235 Update ToastComponent.timeoutRef to any 2022-07-25 15:25:00 +02:00
Lorenz Hilpert
ae6fbc7c64 update packages 2022-07-25 15:23:45 +02:00
Andreas Schickinger
71eda539f6 Merged PR 1341: Merged PR 1340: #3293 Filtereinstellungen bei Tabwechsel
Merged PR 1340: #3293 Filtereinstellungen bei Tabwechsel

#3293 Filtereinstellungen bei Tabwechsel

Related work items: #3293

Related work items: #3293
2022-07-21 13:51:09 +00:00
Andreas Schickinger
f43b948ac9 Merged PR 1340: #3293 Filtereinstellungen bei Tabwechsel
#3293 Filtereinstellungen bei Tabwechsel

Related work items: #3293
2022-07-21 09:58:55 +00:00
Andreas Schickinger
1b77020b6a Merge branch 'develop' into release/2.0 2022-07-20 13:38:46 +02:00
Andreas Schickinger
1f62040560 Merged PR 1339: #3265 Warenausgabe Scrolling und SilentReload Bugfix
#3265 Warenausgabe Scrolling und SilentReload Bugfix

Related work items: #3265
2022-07-19 15:17:11 +00:00
Nino Righi
cc5c3167b1 Merged PR 1338: #3292 Process Guards Breadcrumbs Fix
#3292 Process Guards Breadcrumbs Fix
2022-07-19 15:01:37 +00:00
Andreas Schickinger
b9b79b949f Merged PR 1337: #3291 Warenausgabe Caching Verhalten und Scrolling angepasst
#3291 Warenausgabe Caching Verhalten und Scrolling angepasst

Related work items: #3291
2022-07-19 13:06:05 +00:00
Nino Righi
a0d729fe6d Merged PR 1336: #3272 Revert WA Tab Naming changes back to current production version
#3272 Revert WA Tab Naming changes back to current production version
2022-07-19 12:31:10 +00:00
Andreas Schickinger
f618dd3865 Merged PR 1335: #3291 WA Listenansicht Statusänderung cleared Cache
#3291 WA Listenansicht Statusänderung cleared Cache

Related work items: #3291
2022-07-18 15:58:59 +00:00
Nino Righi
3fd3f972db Merged PR 1334: #3287 Notifications Deactivate Other Channels except SMS and EMail
#3287 Notifications Deactivate Other Channels except SMS and EMail
2022-07-18 15:32:07 +00:00
Andreas Schickinger
2311655e5e Merged PR 1333: #3285 TK Artikelbilder verzerrt Dashboard fix
#3285 TK Artikelbilder verzerrt Dashboard fix
2022-07-18 14:40:29 +00:00
Nino Righi
c589836097 Merged PR 1332: #3286 Remission Fix Filter Settings change to default after Source Changed
#3286 Remission Fix Filter Settings change to default after Source Changed
2022-07-18 14:34:52 +00:00
Andreas Schickinger
dbc641cfce Merged PR 1331: #3285 TK Bilder verzerrt
#3285 TK Bilder verzerrt

Related work items: #3285
2022-07-18 13:53:01 +00:00
Andreas Schickinger
f13bc58925 Merged PR 1330: #3276 Remission Filter Button nicht mehr disabled
#3276 Remission Filter Button nicht mehr disabled

Related work items: #3276
2022-07-18 13:08:07 +00:00
Andreas Schickinger
94d5892cf1 Merged PR 1328: #3272 Beim Wechsel zwischen WA und Artikelrecherche den Warenkorb nicht mehr...
#3272 Beim Wechsel zwischen WA und Artikelrecherche den Warenkorb nicht mehr verwerfen

Related work items: #3272
2022-07-18 10:18:10 +00:00
Andreas Schickinger
8e32b15f26 Merged PR 1329: #3265 Warenausgabe Tabwechsel fixes
#3265 Warenausgabe Tabwechsel fixes
- Fehlermeldung ScrollPosition
- Suche wird trotz Cache ausgeführt
- Scroll Top bei erneuter Suche im gleichen Tab oder über Filter
- Beim Vorgangswechsel wurde der Filter nicht korrekt resetted

Related work items: #3265
2022-07-18 09:37:27 +00:00
Andreas Schickinger
fe5f0ef2eb Merged PR 1327: #3283 Fallback URL für einen Vorgang von Dashboard auf Artikelsuche geändert
#3283 Fallback URL für einen Vorgang von Dashboard auf Artikelsuche geändert. Dadurch kommt es nicht mehr dazu, dass ein Tab nicht selektierbar "hängen bleibt" und zum Dashboard navigiert. Die Ursache wie es zu dem Problem kam ist noch unbekannt

Related work items: #3283
2022-07-18 09:18:13 +00:00
Andreas Schickinger
daa27d5f2d Merged PR 1326: #3282 Fehlerdialog und Logout bei zu langer Inaktivität
#3282 Fehlerdialog und Logout bei zu langer Inaktivität - PR für Test

Related work items: #3282
2022-07-18 09:14:05 +00:00
Nino Righi
bb7626609e Merged PR 1325: #3272 Prozess Tab Bugfixes
#3272 Prozess Tab Bugfixes
2022-07-14 15:59:36 +00:00
Nino Righi
9ed58b685b Merged PR 1323: #3272 #3275 Tab Process Management Updated, Cart, CheckoutCart, WA
#3272 #3275 Tab Process Management Updated, Cart, CheckoutCart, WA
2022-07-14 14:12:21 +00:00
Andreas Schickinger
4eb81ad30a Merged PR 1324: #3276 Remission Starten Button disabled, wenn Liste läd
#3276 Remission Starten Button disabled, wenn Liste läd

Related work items: #3276
2022-07-14 13:49:26 +00:00
Nino Righi
a1f2cb57b3 Merged PR 1322: #3275 Bestellbestätigungs Prozess Bugfixes
#3275 Bestellbestätigungs Prozess Bugfixes
2022-07-13 15:03:40 +00:00
Andreas Schickinger
62b8e387ca Merged PR 1321: #3270 Listenbestellung B2B Preis wird richtig übernommen
#3270 Listenbestellung B2B Preis wird richtig übernommen

Related work items: #3270
2022-07-13 14:59:36 +00:00
Andreas Schickinger
07498db711 Merged PR 1316: #3270 Listenbestellung Popup Preis wird bei Wechsel der Filteroption aktualis...
#3270 Listenbestellung Popup Preis wird bei Wechsel der Filteroption aktualisiert

Related work items: #3270
2022-07-12 15:33:29 +00:00
Nino Righi
2adc8c6f5d Merged PR 1320: #3275 Made Cart Checkout Process reusable
#3275 Made Cart Checkout Process reusable
2022-07-12 15:31:56 +00:00
Lorenz Hilpert
f15a43f303 Merged PR 1319: #3274 Warenausgabe - Filter
#3274 Warenausgabe - Filter
2022-07-12 13:12:59 +00:00
Nino Righi
e35aea5a7e Merged PR 1318: #3273 #3271 Notifications Cart Show Toggle and Bugfix
#3273 #3271 Notifications Cart Show Toggle and Bugfix
2022-07-12 09:02:00 +00:00
Lorenz Hilpert
0e1ed9d8cc Merge branch 'feature/#3265-Scroll-Position-Bug' into develop 2022-07-11 16:13:05 +02:00
Lorenz Hilpert
f62ef06e51 Remove Process Tabs in Goods Out 2022-07-11 16:06:47 +02:00
Andreas Schickinger
30f4d4588f Merged PR 1315: #3269 Bestellbestaetigung fehlerhafte Anzeige
#3269 Bestellbestaetigung fehlerhafte Anzeige

Related work items: #3269
2022-07-11 12:59:22 +00:00
Lorenz Hilpert
e102396dab #3265 Scroll Position Bug 2022-07-11 12:03:10 +02:00
Andreas Schickinger
f60815ef63 Merged PR 1314: #3268 Artikelformat wird überall auf undefined geprüft. Fehlendes FormatIcon...
#3268 Artikelformat wird überall auf undefined geprüft. Fehlendes FormatIcon in PurchasingOptions implementiert

Related work items: #3268
2022-07-08 13:59:37 +00:00
Andreas Schickinger
7b11b53774 Merged PR 1313: #3267 Warenkorb NotificationChannels nur speichern, wenn Haken und Value gese...
#3267 Warenkorb NotificationChannels nur speichern, wenn Haken und Value gesetzt wurden

Related work items: #3267
2022-07-08 08:11:35 +00:00
Nino Righi
abff7715ee Merged PR 1312: #3256 Fix Display Toast Notification
#3256 Fix Display Toast Notification
2022-07-08 08:09:07 +00:00
Andreas Schickinger
83c0a20d61 Warenausgabe Tabwechsel Bugfix 2022-07-06 17:47:39 +02:00
Andreas Schickinger
a4de2391e9 Merged PR 1310: #3262 WA Loader wird nicht angezeigt
#3262 WA Loader wird nicht angezeigt

Related work items: #3262
2022-07-06 14:58:22 +00:00
Andreas Schickinger
732566eacd Merged PR 1311: #3263 WA Details API calls angepasst
#3263 WA Details API calls angepasst

Related work items: #3263
2022-07-06 14:48:37 +00:00
Andreas Schickinger
2c98128531 Merged PR 1309: #3264 WA QueryParam aktualisieren mit debounce
#3264 WA QueryParam aktualisieren mit debounce

Related work items: #3264
2022-07-06 14:38:56 +00:00
Nino Righi
9a45823bdb Merged PR 1308: #3256 Abholfachremissionsvorschau Create Toas with Dialog Text or Fallback Me...
#3256 Abholfachremissionsvorschau Create Toas with Dialog Text or Fallback Message if Dialog is not available
2022-07-06 14:38:35 +00:00
Andreas Schickinger
fa43a08831 Merged PR 1305: Warenbegleitscheine Rechtschreibfehler fix
Warenbegleitscheine Rechtschreibfehler fix
2022-07-04 11:25:51 +00:00
Nino Righi
6fb8bdaff1 Merged PR 1304: Merge Develop -> Release/2.0
Merge Develop -> Release/2.0

Related work items: #905, #2737, #2790, #3040, #3150, #3157, #3158, #3175, #3179, #3189, #3212, #3234
2022-06-29 12:48:45 +00:00
Andreas Schickinger
35e6d60ac0 Merged PR 1301: #3234 Remission Artikel hinzufügen Teilmengen Bugfix
#3234 Remission Artikel hinzufügen Teilmengen Bugfix

Related work items: #3234
2022-06-29 08:37:58 +00:00
Nino Righi
ecfc241fb5 Merged PR 1303: #2953 Fix Zubuchen CompartmentCode
#2953 Fix Zubuchen CompartmentCode
2022-06-29 08:37:25 +00:00
Nino Righi
866a5100b9 Merged PR 1299: #2953 Updated QR Code Print Data
#2953 Updated QR Code Print Data
2022-06-28 13:31:47 +00:00
Andreas Schickinger
3d972fd740 Merged PR 1298: #3234 Bugfix Remission Artikel hinzufügen Menge falsch
#3234 Bugfix Remission Artikel hinzufügen Menge falsch

Related work items: #3234
2022-06-28 08:14:39 +00:00
Nino Righi
59c9275cc4 Merged PR 1297: #2953 Updated PRINT_PRICEDIFFQRCODELABEL compartmentCode and compartmentInfo
#2953 Updated PRINT_PRICEDIFFQRCODELABEL compartmentCode and compartmentInfo
2022-06-27 15:33:10 +00:00
Lorenz Hilpert
3ada83efff #3091 - Meldung bei nicht remittierbaren Artikel 2022-06-27 14:46:12 +02:00
Lorenz Hilpert
e263048a35 gen:swagger:remi - Regenerate remi api 2022-06-27 10:24:41 +02:00
Lorenz Hilpert
63980298b6 #3149 Query Filter Keep Changes Whitput Applying 2022-06-27 10:19:04 +02:00
Lorenz Hilpert
b904e94156 Merged PR 1296: Merge Release into Develop
Related work items: #905, #2737, #2790, #3040, #3150, #3157, #3158, #3175, #3179, #3189, #3212
2022-06-24 15:06:23 +00:00
Lorenz Hilpert
78f91b937f Merged PR 1295: Merge Develop into Release2.0
Related work items: #905, #3040, #3175, #3179, #3189, #3212
2022-06-24 14:54:23 +00:00
Andreas Schickinger
1ecd08d053 Merged PR 1293: #3212 Remission Stapel aktualisieren bugfix
#3212 Remission Stapel aktualisieren bugfix

Related work items: #3212
2022-06-24 14:06:41 +00:00
Andreas Schickinger
8c03accae7 Merged PR 1294: #3224 Remission Artikel hinzufügen Breadcrumb
#3224 Remission Artikel hinzufügen Breadcrumb
2022-06-24 14:05:51 +00:00
Andreas Schickinger
456d3f2f3a Merged PR 1290: #905 Remission WBS Leistung Dummy entfernt
#905 Remission WBS Leistung Dummy entfernt

Related work items: #905
2022-06-24 09:05:39 +00:00
Andreas Schickinger
fa2838ea5c Merged PR 1289: #3212 Remission Stapel aktualisieren fix
#3212 Remission Stapel aktualisieren fix
2022-06-24 09:04:58 +00:00
Andreas Schickinger
e228490812 Merged PR 1288: #3212 Remission Stapel Stock aktualisieren anhand EAN
#3212 Remission Stapel Stock aktualisieren anhand EAN

Related work items: #3212
2022-06-23 15:38:44 +00:00
Nino Righi
13d0ac0cbd Merged PR 1287: #3222 Remission Fix Trigger Init Search after Filter gets loaded, relocated u...
#3222 Remission Fix Trigger Init Search after Filter gets loaded, relocated update Cache function
2022-06-23 15:38:10 +00:00
Nino Righi
09bed1456e Merged PR 1284: #3216 Customer Order Details Display All Subset Items
#3216 Customer Order Details Display All Subset Items
2022-06-23 15:34:11 +00:00
Andreas Schickinger
c6827e499e Merged PR 1286: #3040 Logik zum Entfernen von Duplikaten angepasst
#3040 Logik zum Entfernen von Duplikaten angepasst

Related work items: #3040
2022-06-23 13:03:34 +00:00
Nino Righi
d54cc7a2fd Merged PR 1278: #3204 Platform Detection and Scrollbars
#3204 Platform Detection and Scrollbars
2022-06-23 07:28:14 +00:00
Andreas Schickinger
67dae94524 Merged PR 1283: #3040 Remission SilentReload entfernt und Ladelogik angepasst
#3040 Remission SilentReload entfernt und Ladelogik angepasst

Related work items: #3189
2022-06-22 14:05:11 +00:00
Nino Righi
3273a21246 Merged PR 1282: #3215 Config Produktbilder Changes
#3215 Config Produktbilder Changes
2022-06-22 13:18:40 +00:00
Nino Righi
b40b61a46c Merged PR 1281: #3215 Hotfix Update Configs Production Staging
#3215 Hotfix Update Configs Production Staging
2022-06-22 12:46:57 +00:00
Nino Righi
813f611843 Merged PR 1279: #3206 Hide Supplier if Supplier Count is <= 1 and Disable Logic if click on a...
#3206 Hide Supplier if Supplier Count is <= 1 and Disable Logic if click on already activated Supplier or Source
2022-06-21 13:12:16 +00:00
Lorenz Hilpert
1abacb75be debugger entfernt 2022-06-21 15:11:31 +02:00
Lorenz Hilpert
42028a2777 #3040 Remission - Fehler bei nicht gefunden stehen 2022-06-21 15:11:07 +02:00
Lorenz Hilpert
0a25eeadbe Merged PR 1277: #3149 Process Change and Caching
#3149 Process Change and Caching
2022-06-20 15:39:00 +00:00
Lorenz Hilpert
70a4451f90 #3189 Remission - Artikel entfernen von WBS landen nicht wieder auf Remi-Liste 2022-06-20 12:21:11 +02:00
Lorenz Hilpert
d859395f50 #3160 Spelling 2022-06-20 11:44:02 +02:00
Andreas Schickinger
97948df14e Merged PR 1276: #3175 Remission kein Refresh bei Wechsel von Warenbegleitschein
#3175 Remission kein Refresh bei Wechsel von Warenbegleitschein
#3189 Remission Artikel entfernen Refresh

Related work items: #3175
2022-06-17 09:20:16 +00:00
Lorenz Hilpert
dc84efb3ef #3160 Remission - im Abteilungremission Ladeanimation ohne Filter 2022-06-15 11:26:21 +02:00
Andreas Schickinger
12676a4314 Merged PR 1275: #3179 Refactoring Remission Warenbegleitschein eröffnen Rechtschreibfehler
#3179 Refactoring Remission Warenbegleitschein eröffnen Rechtschreibfehler

Related work items: #3179
2022-06-13 14:05:18 +00:00
Lorenz Hilpert
3aafb9f8e7 #3173 Remission - Single-Selection bei Abteilungsremission - Abteilungen 2022-06-13 16:04:32 +02:00
Lorenz Hilpert
4518db2bdd Merged PR 1274: Merge Dev => Release
Related work items: #2737, #2790, #3150, #3157, #3158
2022-06-10 13:16:11 +00:00
Andreas Schickinger
2cb161b62e Merged PR 1272: #3150 Scroll Arrows in UiSlider nur anzeigen wenn Scrollbar
#3150 Scroll Arrows in UiSlider nur anzeigen wenn Scrollbar

Related work items: #3150
2022-06-10 09:22:34 +00:00
Lorenz Hilpert
9d052284be #3040 - Remission - Fehler bei nicht gefunden stehen 2022-06-10 11:21:43 +02:00
Nico Hanus
98d9029dde remove single build for develop and enabled batch trigger 2022-06-09 12:41:42 +00:00
Lorenz Hilpert
040c67215e Merged PR 1271: #3040 Remission - Fehler bei nicht gefunden stehen
#3040 Remission - Fehler bei nicht gefunden stehen
2022-06-09 11:47:42 +00:00
Andreas Schickinger
d577312b24 Merged PR 1269: #3158 UiSpinner anstatt leerer Warenkorb Meldung beim Laden
#3158 UiSpinner anstatt leerer Warenkorb Meldung beim Laden

Related work items: #3158
2022-06-09 08:54:31 +00:00
Andreas Schickinger
fa10bc9c30 Merged PR 1268: #3157 AHF Routing und Item wählen anhand OrderItemSubsetId
#3157 AHF Routing und Item wählen anhand OrderItemSubsetId

Related work items: #3157
2022-06-09 08:53:45 +00:00
Andreas Schickinger
055339956a Merged PR 1270: #2790 Benachrichtigungskanäle bei Weiter zum Warenkorb nicht überschreiben
#2790 Benachrichtigungskanäle bei Weiter zum Warenkorb nicht überschreiben, wenn der Kunde bereits ausgewhält ist

Related work items: #2790
2022-06-09 08:34:04 +00:00
Lorenz Hilpert
6cffa53ea9 #3062 Remission Footer 2022-06-08 11:21:12 +02:00
Lorenz Hilpert
fe83ef56ea Fix core-application unit tests 2022-06-07 17:12:22 +02:00
Lorenz Hilpert
abd1cacdc0 #3149 Warenausgabe kann mehrmals in einem Vorgang geöffnet werden 2022-06-07 16:49:58 +02:00
Nino Righi
85b448ab85 Merged PR 1267: #3145 Checkout Summary Changes
#3145 Bugfix Artikellink hat keinen neuen Prozess eröffnet sondern einen bestehenden überschrieben,
Wenn neue Bestellung getätigt wird, wird die alte Bestellbestätigung removed
2022-06-07 08:31:07 +00:00
Nico Hanus
5749f0018c add batching in azurepipeline
https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#batching-ci-runs
2022-06-03 11:42:43 +00:00
Lorenz Hilpert
b65d2c5ff3 #3156 Login Test 2022-06-02 11:45:08 +02:00
Lorenz Hilpert
348b2c4aca #3156 manuelles Login mit Username und Passwort nicht möglich 2022-06-02 10:55:53 +02:00
Nino Righi
dfc3f32086 Merged PR 1266: #3147 Fix IPAD 6 Styling Issue inside Availabilities Modal
#3147 Fix IPAD 6 Styling Issue inside Availabilities Modal
2022-06-02 08:26:33 +00:00
Nino Righi
68d331864d Merged PR 1264: #3145 Updated Order Checkout Process
#3145 Updated Order Checkout Process
2022-06-01 08:19:14 +00:00
Lorenz Hilpert
24a008b20d Merged PR 1263: Cleanup 2022-05-31 12:56:41 +00:00
Nino Righi
0e5c35fae4 Merged PR 1262: #3146 Slide Current Active Process Tab Into View after Activating It
#3146 Slide Current Active Process Tab Into View after Activating It
2022-05-31 08:06:08 +00:00
Nino Righi
4d4b989dcd Merged PR 1261: #3082 Improved Error Handling on PDP
#3082 Improved Error Handling on PDP
2022-05-30 15:38:59 +00:00
Andreas Schickinger
2983d5a068 Merged PR 1260: #2737 Bei Zubuchen kein Abholfachzettel ausdrucken
#2737 Bei Zubuchen kein Abholfachzettel ausdrucken

Related work items: #2737
2022-05-30 08:37:19 +00:00
Nino Righi
efdc365b90 Merged PR 1259: #3022 ISA File Caching Improvements
#3022 ISA File Caching Improvements
2022-05-27 07:51:24 +00:00
Nino Righi
c4a8e3eb96 Merged PR 1258: Merge release into develop
Merge release into develop
2022-05-25 13:48:01 +00:00
Nino Righi
8cb3c98b8d Merged PR 1256: #3133 Changed Service Worker Update Implementation to Angular v12 and Fixed U...
#3133 Changed Service Worker Update Implementation to Angular v12 and Fixed Unit Tests
2022-05-24 16:19:25 +00:00
Nino Righi
9c12eda210 #3133 Changed Service Worker Update Implementation to Angular v12 and Fixed Unit Tests 2022-05-24 18:14:58 +02:00
Lorenz Hilpert
90afcc008d Disable check for update with interval 2022-05-24 17:44:19 +02:00
Lorenz Hilpert
7409d096fe Update Check Disabled 2022-05-24 17:43:24 +02:00
Lorenz Hilpert
a4c4a3c0c8 Merged PR 1255: Merge release 2.0 into develop 2022-05-24 14:29:50 +00:00
Lorenz Hilpert
2148af7b63 Merge branch 'develop' into release/2.0 2022-05-24 16:14:19 +02:00
Andreas Schickinger
d984bc04ec Merged PR 1250: #3109 Produktbilder in der Artikeltrefferliste mit ImageId laden
#3109 Produktbilder in der Artikeltrefferliste mit ImageId laden

Related work items: #3109
2022-05-23 14:46:51 +00:00
Andreas Schickinger
1b7dfcc3ac Merged PR 1249: #3127 iPad Zoom deaktivieren
#3127 iPad Zoom deaktivieren

Related work items: #3127
2022-05-23 14:46:26 +00:00
Andreas Schickinger
c762871cce Merged PR 1248: #2877 Preisunterschied Menge wird pro Item übergeben
#2877 Preisunterschied Menge wird pro Item übergeben

Related work items: #2877
2022-05-23 09:14:24 +00:00
Andreas Schickinger
007ea92bd5 Merged PR 1247: #3128 Wareneingang Warenausgang Breadcrumb wurde nicht immer richtig aktualis...
#3128 Wareneingang Warenausgang Breadcrumb wurde nicht immer richtig aktualisiert

Related work items: #3128
2022-05-23 09:13:44 +00:00
Nino Righi
688b758da2 Merged PR 1245: #3022 Unit Test Fix
#3022 Unit Test Fix
2022-05-19 08:38:09 +00:00
Nino Righi
39147d7afa Merged PR 1244: #3022 ISA File Caching
#3022 ISA File Caching
2022-05-19 08:29:30 +00:00
Andreas Schickinger
50cc17a44b Merged PR 1243: #2877 Preisunterschied Popup: Bei Close/Backdrop Click nicht mehr die Sekundä...
#2877 Preisunterschied Popup: Bei Close/Backdrop Click nicht mehr die Sekundär Action ausführen

Related work items: #2877
2022-05-19 08:29:00 +00:00
Andreas Schickinger
73f592df74 Merged PR 1241: #3116 Bei B2B Kunden war der Weiter Button immer disabled
#3116 Bei B2B Kunden war der Weiter Button immer disabled

Related work items: #3116
2022-05-17 14:18:49 +00:00
Lorenz Hilpert
821042d8b6 App Start - leistung verbessert und statusanzeige 2022-05-17 16:17:26 +02:00
Nino Righi
7123f6cc15 Merged PR 1242: #3124 Toast Message Adjusted Width and Height Values
#3124 Toast Message Adjusted Width and Height Values
2022-05-17 12:56:36 +00:00
Andreas Schickinger
6c2e9906b0 Merged PR 1240: #3117 Prozess Scrollpfeile sollte am iPad nicht sichtbar sein
#3117 Prozess Scrollpfeile sollte am iPad nicht sichtbar sein

Related work items: #3117
2022-05-16 13:59:18 +00:00
Andreas Schickinger
37648b79c3 Merged PR 1238: #3116 Weiter Button in den Kundendetails disabled, wenn noch keine Adressen geladen wurden
#3116 Weiter Button in den Kundendetails disabled, wenn noch keine Adressen geladen wurden

Related work items: #3116
2022-05-16 13:55:06 +00:00
Nino Righi
6b00c2c81a Merged PR 1239: #3093 ISA Offline Message Fix
#3093 ISA Offline Message Fix#3093 ISA Offline Message Fix
2022-05-16 13:24:22 +00:00
Andreas Schickinger
cd5599ff1c Merged PR 1237: #2981 Preisunterschied Action und Popup
#2981 Preisunterschied Action und Popup

Related work items: #2877, #2981
2022-05-16 09:51:40 +00:00
Andreas Schickinger
e870eb241b Merged PR 1236: #3122 Warenausgabe Endpoints angepasst
#3122 Warenausgabe Endpoints angepasst

Related work items: #3122
2022-05-16 09:32:52 +00:00
Andreas Schickinger
fbf8c282e8 Merged PR 1235: #3108 Remission Remi Grund nur anzeigen, wenn vor dem remittieren schon vorha...
#3108 Remission Remi Grund nur anzeigen, wenn vor dem remittieren schon vorhanden

Related work items: #3108
2022-05-16 08:19:23 +00:00
Nico Hanus
811e363dd4 increase cpu and ram limits for better performance 2022-05-13 10:55:36 +02:00
Nino Righi
d206ba1606 Merged PR 1234: #3118 Fixed Process nummeration
#3118 Fixed Process nummeration
2022-05-12 14:56:23 +00:00
Nino Righi
c529134cd2 Merged PR 1233: #3093 Improved Offline Handling
#3093 Improved Offline Handling
2022-05-12 14:21:43 +00:00
Andreas Schickinger
dafb1d335e Merged PR 1232: #3113 Bei Klick auf Abbrechen auf der Login Seite erneut zur Login Seite leiten
#3113 Bei Klick auf Abbrechen auf der Login Seite erneut zur Login Seite leiten

Related work items: #3113
2022-05-12 12:48:37 +00:00
Nino Righi
445899e731 Merged PR 1231: #3115 Fix WE WA Multi Search Request
#3115 Fix WE WA Multi Search Request
2022-05-12 08:18:05 +00:00
Andreas Schickinger
b21fbc974c Merged PR 1230: #2995 Kundensuche doppelter Request im Filter behoben
#2995 Kundensuche doppelter Request im Filter behoben

Related work items: #2995
2022-05-11 15:14:29 +00:00
Andreas Schickinger
4c98a73204 Merged PR 1229: #3108 Remission Restmenge nach dem remittieren angepasst
#3108 Remission Restmenge nach dem remittieren angepasst

Related work items: #3108
2022-05-11 14:41:08 +00:00
Nino Righi
e99d669086 Merged PR 1228: #3104 Improved Error Handling of Removing Items from Shipping Document
#3104 Improved Error Handling of Removing Items from Shipping Document
2022-05-10 15:12:34 +00:00
Andreas Schickinger
913ffbda97 Merged PR 1227: #1058 Remission abschließen Breadcrumb wird entfernt
#1058 Remission abschließen Breadcrumb wird entfernt

Related work items: #1058
2022-05-10 13:31:26 +00:00
Nino Righi
ec2bd0bd5d Merged PR 1226: #3061 Remission List Performance
#3061 Remission List Performance
2022-05-09 15:31:47 +00:00
Andreas Schickinger
08fefb1c4b Merged PR 1225: #3094 Remission mehrfach abschließen Fehlermeldung angepasst
#3094 Remission mehrfach abschließen Fehlermeldung angepasst

Related work items: #3094
2022-05-09 15:18:36 +00:00
Andreas Schickinger
e7f20bc553 Merged PR 1224: #3088 Remission Fehlermeldung bei gleichzeitigem entfernen und Liste Reload a...
#3088 Remission Fehlermeldung bei gleichzeitigem entfernen und Liste Reload auch bei Fehler

Related work items: #3088
2022-05-09 15:17:39 +00:00
Andreas Schickinger
f5993ca5c4 Merged PR 1223: #3087 Bei Error Status 409 Custom Fehlermeldung und Liste auch bei Fehler neu...
#3087 Bei Error Status 409 Custom Fehlermeldung und Liste auch bei Fehler neu laden

Related work items: #3087
2022-05-09 15:17:15 +00:00
Nino Righi
9f0c81c20f Merged PR 1215: #3062 #3051 Remission Breadcrumbs contain the correct queryParams, Remission Process Remembers Filters if Remission is started
#3062 #3051 Remission Breadcrumbs contain the correct queryParams, Remission Process Remembers Filters if Remission is started. Always load available Remission
2022-05-09 11:41:50 +00:00
Nino Righi
42199c8cda Merged PR 1222: #3097 #3089 Shell Process Tabs UI Changes
#3097 #3089 Shell Process Tabs UI Changes
2022-05-09 10:02:51 +00:00
Nino Righi
bc525fbffc Merged PR 1218: #3067 #3056 #2685 Toast Notifications
#3067 #3056 #2685 Toast Notifications
2022-05-09 09:45:54 +00:00
Nino Righi
dd6821642f Merged PR 1220: #3092 Remission Empty List Message
#3092 Remission Empty List Message
2022-05-09 09:43:20 +00:00
Nino Righi
b2dd96f044 Merged PR 1219: #3041 If no supplier selected inside create remission, Blank gets selected an...
#3041 If no supplier selected inside create remission, Blank gets selected and changed navigation inside goods in remission preview
2022-05-09 09:33:49 +00:00
Nino Righi
0ca8a1fabf Merged PR 1221: #3095 Remission Disable Remit Button if Quantity < 1
#3095 Remission Disable Remit Button if Quantity < 1
2022-05-09 09:23:14 +00:00
Nino Righi
d46643cf8c Merged PR 1217: #3084 Remission Added Loader to WBS on deleting Items
#3084 Remission Added Loader to WBS on deleting Items
2022-05-09 08:59:59 +00:00
Nino Righi
fc3bea28e8 Merged PR 1216: #2967 Remission Remit PopUp Wording Fix
#2967 Remission Remit PopUp Wording Fix
2022-05-09 08:57:05 +00:00
Nino Righi
b29323864e Updated Isa-App Config Files 2022-05-03 11:38:41 +02:00
Michael Auer
c4cad5d56f Merge branch 'develop' into release/2.0 2022-05-03 10:52:36 +02:00
Nino Righi
1d83c82919 Merged PR 1214: #3083 Adjusted File Memory Budgets for Production Build
#3083 Adjusted File Memory Budgets for Production Build
2022-05-02 12:05:51 +00:00
Andreas Schickinger
1228698fcf Merged PR 1212: #3069 Fehlende Icons in der Remission
#3069 Fehlende Icons in der Remission

Related work items: #3069
2022-05-02 08:26:38 +00:00
Andreas Schickinger
d1eba5f1e2 Merged PR 1213: #2575 AHF Remi Buttons
#2575 AHF Remi Buttons

Related work items: #2575
2022-05-02 08:24:20 +00:00
Michael Auer
08ac71dc1b Merge tag '1.7' into develop 2022-05-02 10:10:39 +02:00
Michael Auer
da579ecc3a Merge branch 'release/1.7' 2022-05-02 09:37:27 +02:00
Andreas Schickinger
f286dd1e1b Merged PR 1211: #3080 Bei Remittieren mit Menge 0 wird nun "Nicht gefunden" ausgelöst
#3080 Bei Remittieren mit Menge 0 wird nun "Nicht gefunden" ausgelöst

Related work items: #3080
2022-04-28 14:39:28 +00:00
Nino Righi
0c5aedfee8 Merged PR 1210: #3081 #3051 Remember Filter Settings on continuing Remission and Remission start
#3081 #3051 Remember Filter Settings on continuing Remission and Remission start
2022-04-28 14:24:24 +00:00
Andreas Schickinger
b7d7c88fc6 Merged PR 1209: #3069 Fehlende Icons hinzugefügt. Anzeige nur, wenn Icon vorhanden
#3069 Fehlende Icons hinzugefügt. Anzeige nur, wenn Icon vorhanden

Related work items: #3069
2022-04-28 14:12:29 +00:00
Nico Hanus
8c2671e2fb limit unittests build for develop 2022-04-28 14:08:29 +00:00
Nico Hanus
b281f7c25b limit builds for develop branch 2022-04-28 13:59:47 +00:00
Nino Righi
750caa522e Merged PR 1208: #3074 Added Spacer inside WBS View
#3074 Added Spacer inside WBS View
2022-04-28 12:56:45 +00:00
Nino Righi
62ed8affb1 Merged PR 1207: #3076 Changed PopUp Wording and Form Validation Error Message
#3076 Changed PopUp Wording and Form Validation Error Message
2022-04-28 12:33:18 +00:00
Nino Righi
92e0e90120 Merged PR 1206: #3075 Remission Option to open Filter Overlay during a search
#3075 Remission Option to open Filter Overlay during a search
2022-04-28 12:32:33 +00:00
Andreas Schickinger
9b0dea213e Merged PR 1205: #3070 TK Fotoabschluss Spinner
#3070 TK Fotoabschluss Spinner

Related work items: #3070
2022-04-28 11:56:13 +00:00
Andreas Schickinger
a73acfa4e8 Merged PR 1204: #3063 Remission unnötiger Return Aufruf bei Wechsel zu gestarteter Remi über...
#3063 Remission unnötiger Return Aufruf bei Wechsel zu gestarteter Remi über den Footer

Related work items: #3063
2022-04-28 11:55:44 +00:00
Nino Righi
833542f303 Merged PR 1203: #3062 Clear Items Cache If Navigate to Remission
#3062 Clear Items Cache If Navigate to Remission
2022-04-27 14:05:53 +00:00
Nino Righi
b666e4b38c Merged PR 1202: #3051 Fix Remission Routing after Remission Completed
#3051 Fix Remission Routing after Remission Completed
2022-04-27 13:51:21 +00:00
Nino Righi
32f2fd0754 Merged PR 1201: #3058 Fix Show Start Remission CTA only if Hits > 0
#3058 Fix Show Start Remission CTA only if Hits > 0
2022-04-27 12:41:15 +00:00
Nino Righi
04cd5e9437 Merged PR 1196: #3028 #3040 #3049 Bugfixes Remission
#3028 #3040 #3049 Bugfixes Remission
2022-04-27 10:53:48 +00:00
Nino Righi
3785ad614f Merged PR 1200: #3050 Customer Online Email Adress Validation Fix
#3050 Customer Online Email Adress Validation Fix
2022-04-27 10:39:01 +00:00
Nino Righi
4e9b4064a6 Merged PR 1199: #3053 Fix Reservieren In Andere Filiale
#3053 Fix Reservieren In Andere Filiale
2022-04-27 09:45:06 +00:00
Nino Righi
319d8b96bb Merged PR 1197: #3054 Hotfix Release 1.7 TK PDF Viewer Removed Zoom Scaling to fit the page c...
#3054 Hotfix Release 1.7 TK PDF Viewer Removed Zoom Scaling to fit the page correctly
2022-04-26 13:58:02 +00:00
Nino Righi
272824e236 Merged PR 1198: #3036 Fix NativeContainer
#3036 Fix NativeContainer
2022-04-26 13:31:18 +00:00
Nino Righi
4b3e80cadb #3036 Added Try Catch 2022-04-26 15:27:31 +02:00
Nino Righi
f6675b67e8 #3036 Fix NativeContainer 2022-04-26 15:22:24 +02:00
Nino Righi
6974324c9b #3054 Hotfix Release 1.7 TK PDF Viewer Removed Zoom Scaling to fit the page correctly 2022-04-26 14:21:39 +02:00
Andreas Schickinger
c805106759 Merged PR 1194: #2774 AHF Coveranzeige Abfrage ohne alle Filialen und Archiv
#2774 AHF Coveranzeige Abfrage ohne alle Filialen und Archiv

Related work items: #2774
2022-04-25 10:55:49 +00:00
Andreas Schickinger
5448ac034b Merged PR 1195: #3049 Remission beim Wechsel zwischen Remi Liste und Warenbegleitscheine blei...
#3049 Remission beim Wechsel zwischen Remi Liste und Warenbegleitscheine bleiben die Filter erhalten

Related work items: #3049
2022-04-25 10:55:10 +00:00
Nino Righi
79667ae4b6 Merged PR 1192: #2983 Remission List Trigger Loading instantly After Filter, Source or Suppli...
#2983 Remission List Trigger Loading instantly After Filter, Source or Supplier changes
2022-04-22 08:26:37 +00:00
Andreas Schickinger
336a98e576 Merged PR 1193: #3035 AHF Coveranzeige Refresh bei Statuswechsel
#3035 AHF Coveranzeige Refresh bei Statuswechsel

Related work items: #3035
2022-04-21 13:41:46 +00:00
Andreas Schickinger
4e4dc47ad6 Merged PR 1190: #3024 Links in der Bestellbestätigung verwenden nicht die aktive Prozess ID
#3024 Links in der Bestellbestätigung verwenden nicht die aktive Prozess ID

Related work items: #3024
2022-04-21 13:40:46 +00:00
Andreas Schickinger
ee02e89fa7 Merged PR 1191: #3030 AHF Zubuchen - letzter Zusatz wird übernommen
#3030 AHF Zubuchen - letzter Zusatz wird übernommen

Related work items: #3030
2022-04-21 13:35:28 +00:00
Nino Righi
7e6f5a7837 Merged PR 1189: #2982 Remission Resul List Design Changes
#2982 Remission Resul List Design Changes
2022-04-21 12:54:05 +00:00
Nino Righi
7b824bd13b Merged PR 1188: #3033 Check if Process is available
#3033 Check if Process is available
2022-04-21 12:51:37 +00:00
Andreas Schickinger
146ad7b20a Merged PR 1186: #3032 AHF Routing Fix
#3032 AHF Routing Fix

Related work items: #3032
2022-04-20 16:54:11 +00:00
Nino Righi
f657a088d4 Merged PR 1185: #2982 #2983 #3028 #3031 Remission Liste Caching, Scrollposition, Loader, Virtual Scroll Viewport
#2982 #2983 #3028 #3031 Remission Liste Caching, Scrollposition, Loader, Virtual Scroll Viewport
2022-04-20 16:36:27 +00:00
Nino Righi
c4ed8d0648 Merged PR 1187: #3033 Fix TK Article List Search Routing and changed EAN Copy Seperator
#3033 Fix TK Article List Search Routing and changed EAN Copy Seperator
2022-04-20 14:24:01 +00:00
Andreas Schickinger
810a7d0a8f Merged PR 1184: #2992 TK PDF Viewer kein horizontales Scrollen von Hochformat Dokumenten auf...
#2992 TK PDF Viewer kein horizontales Scrollen von Hochformat Dokumenten auf dem iPad

Related work items: #2992
2022-04-19 13:46:41 +00:00
Andreas Schickinger
25d5f183c5 Merged PR 1183: #3030 AHF Zubuchen mit Zusatz
#3030 AHF Zubuchen mit Zusatz

Related work items: #3030
2022-04-19 13:32:04 +00:00
Andreas Schickinger
9052fe25db Merged PR 1182: #2756 WE WA Edit Anmerkungsfeld mehrzeilig
#2756 WE WA Edit Anmerkungsfeld mehrzeilig

Related work items: #2756
2022-04-14 08:26:45 +00:00
Andreas Schickinger
776115fbed Merged PR 1181: #3023 Remission Required Capacities Department wird mitgegeben
#3023 Remission Required Capacities Department wird mitgegeben

Related work items: #3023
2022-04-13 15:29:13 +00:00
Andreas Schickinger
962f0bc2c6 Merged PR 1180: #3005 AHF Zubuchen innerhalb einer Kundennummer
#3005 AHF Zubuchen innerhalb einer Kundennummer

Related work items: #3005
2022-04-12 15:36:44 +00:00
Lorenz Hilpert
c184df717d #3021 - Remission offene WBS werden nicht angezeigt 2022-04-12 16:07:38 +02:00
Lorenz Hilpert
26a7348d25 Dashboard Styling 2022-04-12 14:55:59 +02:00
Lorenz Hilpert
cf5052cbe5 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2022-04-12 14:48:02 +02:00
Lorenz Hilpert
be848123a1 Dashboard Product Navigation 2022-04-12 14:47:53 +02:00
Lorenz Hilpert
04232b85a7 Dasboard Product Navigation 2022-04-12 14:47:39 +02:00
Nino Righi
09bb84c34e Merged PR 1173: #2992 TK Fix PDF Viewer Content Sizing on Mobile
#2992 TK Fix PDF Viewer Content Sizing on Mobile
2022-04-12 08:21:36 +00:00
Lorenz Hilpert
4449992442 Scanner Fix Test 2022-04-11 17:06:45 +02:00
Andreas Schickinger
39c40f2e13 Merged PR 1179: #2742 AHF Zubuchen Button mit Zusatz anzeigen
#2742 AHF Zubuchen Button mit Zusatz anzeigen

Related work items: #2742
2022-04-11 13:37:50 +00:00
Nino Righi
9813575584 Merged PR 1178: #3004 Fix Ui Slider Show Scroll Arrow
#3004 Fix Ui Slider Show Scroll Arrow
2022-04-11 13:35:53 +00:00
Andreas Schickinger
b0af718cbc Merged PR 1176: #3001 Remission Grund Dropdown über Popup legen
#3001 Remission Grund Dropdown über Popup legen

Related work items: #3001
2022-04-11 06:53:51 +00:00
Andreas Schickinger
550544cbe4 Merged PR 1177: #972 Vorgang schließen Styling angepasst und Rechtschreibfehler behoben
#972 Vorgang schließen Styling angepasst und Rechtschreibfehler behoben

Related work items: #972
2022-04-11 06:53:22 +00:00
Andreas Schickinger
3ec3cf0e5b Merged PR 1175: Merge release in develop
Merge release in develop

Related work items: #2666, #2927, #2928, #2979, #2996
2022-04-07 14:06:57 +00:00
Nino Righi
0b79464e52 Merged PR 1174: #2999 Fix Customer Search Box Display Hint
#2999 Fix Customer Search Box Display Hint
2022-04-07 14:05:10 +00:00
Andreas Schickinger
a1642c5749 Merged PR 1172: #2996 Hotfix Listenbestellung Checkboxen bei Filialwechsel
#2996 Hotfix Listenbestellung Checkboxen bei Filialwechsel

Related work items: #2996
2022-04-06 16:22:41 +00:00
Andreas Schickinger
148aab1495 Merged PR 1171: #2928 Listenbestellung Download CanAdd Prüfung
#2928 Listenbestellung Download CanAdd Prüfung

Related work items: #2928
2022-04-06 14:18:20 +00:00
Lorenz Hilpert
2f78f2685f Prozessid aus Navigation für Artikelsuche und Kunden entfernt 2022-04-06 15:59:30 +02:00
Nino Righi
6dde5682a9 Merged PR 1170: #2995 Build Error Fix
#2995 Build Error Fix
2022-04-06 11:59:57 +00:00
Lorenz Hilpert
af8a3d89af Merged PR 1167: #2989 Scanner Refactoring
#2989  Scanner Refactoring
2022-04-06 10:18:20 +00:00
Lorenz Hilpert
ec97d1e84a CI Fix 2022-04-06 11:12:36 +02:00
Lorenz Hilpert
eea412abd3 #2993 WA WE - ORD: in Breadcrumb 2022-04-06 09:58:03 +02:00
Nino Righi
cf65ba3e6b Merged PR 1168: #2988 Fix Remission Close Add Product Modal if quantity changed to 0
#2988 Fix Remission Close Add Product Modal if quantity changed to 0
2022-04-06 07:39:00 +00:00
Nino Righi
3d4445bb46 Merged PR 1169: #2990 Fix Customer Search Cache Filter Settings
#2990 Fix Customer Search Cache Filter Settings
2022-04-06 07:37:12 +00:00
Andreas Schickinger
94753ceac4 Merged PR 1166: #2666 Hotfix Listenbestellung CanAddItems angepasst
#2666 Hotfix Listenbestellung CanAddItems angepasst

Related work items: #2666
2022-04-05 15:12:34 +00:00
Nino Righi
af16542ce5 Merged PR 1165: #2971 Fix Remission unique WBS
#2971 Fix Remission unique WBS
2022-04-05 15:12:08 +00:00
Lorenz Hilpert
e4c82441b8 #2987 Remission - Fehler bei Artikel hinzufügen 2022-04-05 16:05:00 +02:00
Lorenz Hilpert
8783802483 #1025 Schatten um Action-Button 2022-04-05 08:45:37 +02:00
Nino Righi
8ad28a16b0 Merged PR 1164: #2974 Fix CanSetCustomer - Customer Search Setting Filter from Route
#2974 Fix CanSetCustomer - Customer Search Setting Filter from Route
2022-04-04 16:14:21 +00:00
Andreas Schickinger
f9403649e6 Merged PR 1163: #626 Remission Hinweis Farbe bei Artikel hinzufügen
#626 Remission Hinweis Farbe bei Artikel hinzufügen

Related work items: #626
2022-04-04 15:51:18 +00:00
Andreas Schickinger
698af2ecc3 Merged PR 1162: #2666 Listenbestellung Sichtbarkeit der Radio-Buttons angepasst
#2666 Listenbestellung Sichtbarkeit der Radio-Buttons angepasst

Related work items: #2666
2022-04-04 14:39:53 +00:00
Nino Righi
c92649a8d4 Merged PR 1157: #2977 Fix Clear Cart after Process gets closed and reopened via Footer Proces...
#2977 Fix Clear Cart after Process gets closed and reopened via Footer Process generation
2022-04-04 12:30:41 +00:00
Nino Righi
dfd1847a2d Merged PR 1160: #2984 Added Card Feature To Navigation
#2984 Added Card Feature To Navigation
2022-04-04 12:30:03 +00:00
Andreas Schickinger
eeaafec80a Merged PR 1161: #2979 Hotfix Listenbestellung Fehlermeldung und Anpassungen
#2979 Listenbestellung Fehlermeldung und Anpassungen

Related work items: #2979
2022-04-04 12:19:37 +00:00
Nino Righi
896e91d4d9 Merged PR 1159: #2954 Fix Remission Result List no longer horizontally scrollable
#2954 Fix Remission Result List no longer horizontally scrollable
2022-04-04 11:46:06 +00:00
Nino Righi
d6507b428f Merged PR 1158: #2976 Added Option to Reset Filter Settings to TK, Customer and Remission Area
#2976 Added Option to Reset Filter Settings to TK, Customer and Remission Area
2022-04-04 11:44:39 +00:00
Lorenz Hilpert
6ff4d204c2 #2962 IPAd Login Fix 2022-04-04 13:43:17 +02:00
Nino Righi
8145436d1d Merged PR 1156: #2972 Fix Remission Start Remission Popup Updated if supplier is ZL
#2972 Fix Remission Start Remission Popup Updated if supplier is ZL
2022-03-30 11:34:09 +00:00
Nino Righi
25f22b46c5 Merged PR 1155: #2967 Fix Remission Placementtype Wording inside remit Popup
#2967 Fix Remission Placementtype Wording inside remit Popup
2022-03-30 11:33:42 +00:00
Nino Righi
558d846812 Merged PR 1154: #2969 Fix Remission IPAD Scan Popup Navigation
#2969 Fix Remission IPAD Scan Popup Navigation
2022-03-30 10:37:48 +00:00
Nino Righi
05916031ad Merged PR 1153: #2970 Fix Remission Display CTAs on List Elements
#2970 Fix Remission Display CTAs on List Elements
2022-03-30 10:08:51 +00:00
Andreas Schickinger
ffad6aa939 Merged PR 1152: #2755 OLA Nachbestellen Grund
#2755 OLA Nachbestellen Grund

Related work items: #2755
2022-03-30 10:02:35 +00:00
Nino Righi
cb22a39ffc Merged PR 1151: #2912 Ipad Reset Focus Changes
#2912 Ipad Reset Focus Changes
2022-03-29 16:21:20 +00:00
Nino Righi
c6130dcffb Merged PR 1150: #2912 Focus
#2912 Focus
2022-03-29 15:49:30 +00:00
Nino Righi
c9f4143204 Merged PR 1149: #2912 IPADs Fix Autofocus Searchbox
#2912 IPADs Fix Autofocus Searchbox
2022-03-29 15:19:11 +00:00
Nino Righi
fa0e1d7d60 Merged PR 1148: Code auskommentiert der zur Anmelde Dauerschleife auf den Ipads führt
Code auskommentiert der zur Anmelde Dauerschleife auf den Ipads führt
2022-03-29 15:04:09 +00:00
Andreas Schickinger
621b545e34 Merged PR 1143: #2666 Hotfix Listenbestellung Hindernismeldung
#2666 Hotfix Listenbestellung Hindernismeldung

Related work items: #2666, #2927
2022-03-29 14:59:34 +00:00
Nino Righi
53e3d90064 Merged PR 1147: #2962 #2956 Ipad Keycard Login Fix
#2962 #2956 Ipad Keycard Login Fix
2022-03-29 14:09:44 +00:00
Nino Righi
c175826fd3 Merged PR 1146: #2962 Keycard Ipad Login Fix
#2962 Keycard Ipad Login Fix
2022-03-29 13:42:20 +00:00
Nino Righi
c6b584d637 Merged PR 1145: #2962 Fix Keycard
#2962 Fix Keycard
2022-03-29 13:26:54 +00:00
Nino Righi
d992ce87a9 Merged PR 1144: #2962 Keycard Login Fix
#2962 Keycard Login Fix
2022-03-29 13:11:25 +00:00
Nino Righi
a87072e542 Merged PR 1142: #2962 Zwischencommit
#2962 Zwischencommit
2022-03-29 12:32:54 +00:00
Nino Righi
eff0388b8f Merged PR 1141: #2962 2956 Keycard Login IPAD Fix
#2962 2956 Keycard Login IPAD Fix
2022-03-29 12:02:34 +00:00
Nino Righi
9c517810ba Merged PR 1140: #2963 Remission Close Filter Overlay After Hitting Apply Filter Settings
#2963 Remission Close Filter Overlay After Hitting Apply Filter Settings
2022-03-29 11:21:47 +00:00
Nino Righi
882cbddec0 Merged PR 1139: #2912 Autofocus on Input
#2912 Autofocus on Input
2022-03-28 16:03:54 +00:00
Nino Righi
d188272cbf Merged PR 1138: #2912 setTimeout on focus event
#2912 setTimeout on focus event
2022-03-28 15:46:44 +00:00
Nino Righi
72b3688365 Merged PR 1137: #2951 Fix Scanner PopUp
#2951 Fix Scanner PopUp
2022-03-28 14:48:35 +00:00
Andreas Schickinger
0f81914875 Merged PR 1135: #2774 AHF Cover Zusatz
#2774 AHF Cover Zusatz

Related work items: #2774
2022-03-28 13:04:37 +00:00
Nino Righi
e8e895d7b1 Merged PR 1136: #2951 Updated Test Config files and disabled login scanner popup
#2951 Updated Test Config files and disabled login scanner popup
2022-03-28 12:44:59 +00:00
Nino Righi
f0cc76f180 Merged PR 1134: Merge ISA 2.0 into Develop
Merge ISA 2.0 into Develop

Related work items: #1098, #2592, #2630, #2633, #2635, #2639, #2706, #2707, #2813, #2818, #2825, #2843, #2846, #2847, #2848, #2851, #2852, #2853, #2897, #2900
2022-03-28 10:12:12 +00:00
Lorenz Hilpert
91b3f44c1e Merge branch 'release/1.7' into develop 2022-03-28 09:14:12 +08:00
Lorenz Hilpert
43859599f0 Merge branch 'develop' into release/1.7 2022-03-28 09:13:33 +08:00
Andreas Schickinger
4dff0b1e6a Merged PR 1133: #2931 DIG Lieferzeitfenster Punkt fehlt
#2931 DIG Lieferzeitfenster Punkt fehlt

Related work items: #2931
2022-03-25 09:44:33 +00:00
Andreas Schickinger
f5fcee4e4a Merged PR 1132: Merge release in develop
Merge release in develop

Related work items: #2756, #2864, #2872, #2878, #2889, #2890, #2901, #2903, #2904, #2910
2022-03-24 13:21:09 +00:00
Andreas Schickinger
9ffb0b9a97 Merged PR 1131: Merge develop in release
Merge develop in release

Related work items: #2756, #2901, #2903, #2904, #2910
2022-03-24 13:06:34 +00:00
Andreas Schickinger
34698aca5e Merged PR 1130: #2910 Listenbestellung WK iPad Layout
#2910 Listenbestellung WK iPad Layout

Related work items: #2910
2022-03-23 12:57:13 +00:00
Lorenz Hilpert
4fcf9fabbf #2915 Trefferliste - klickbarer Bereich um Bullet-Checkbox 2022-03-23 20:09:47 +08:00
Nino Righi
fd907cf0cc Merged PR 1128: #2921 Listenbestellung B2B Orders Fix availabilities null for canAdd Request
#2921 Listenbestellung B2B Orders Fix availabilities null for canAdd Request
2022-03-23 11:49:34 +00:00
Nino Righi
cb543c7c98 Merged PR 1129: #2054 Checkout Summary Enable Print Button on B2B Order
#2054 Checkout Summary Enable Print Button on B2B Order
2022-03-23 11:44:09 +00:00
Andreas Schickinger
02ee730080 Merged PR 1126: #2901 Listenbestellung Sortierung
#2901 Listenbestellung Sortierung

Related work items: #2901
2022-03-22 14:25:55 +00:00
Nino Righi
5cccc5fedd Merged PR 1125: #2911 Bugfix Cart Font Size on Action CTAs
#2911 Bugfix Cart Font Size on Action CTAs
2022-03-21 17:33:55 +00:00
Andreas Schickinger
9b6f4d1ecf Merged PR 1124: #2756 Anmerkungsfeld mehrzeilig
#2756 Anmerkungsfeld mehrzeilig

Related work items: #2756
2022-03-21 16:57:15 +00:00
Nino Righi
022e8e9e73 Merged PR 1121: #2744 WA WE Order Item Details Display ssc and sscText
#2744 WA WE Order Item Details Display ssc and sscText
2022-03-21 14:43:07 +00:00
Andreas Schickinger
a81581e67f Merged PR 1119: #2904 Listenbestellung ipad 6 Mengen Dropdown Styling
#2904 Listenbestellung ipad 6 Mengen Dropdown Styling

Related work items: #2904
2022-03-21 12:58:25 +00:00
Andreas Schickinger
5823f57e03 Merged PR 1118: #2903 Listenbestellung Preis verschwindet bei Mengenänderung
#2903 Listenbestellung Preis verschwindet bei Mengenänderung

Related work items: #2903
2022-03-21 12:54:50 +00:00
Nico Hanus
96f2233421 add resource limits to helm files 2022-03-18 14:01:32 +01:00
Andreas Schickinger
ac1a772b21 Merged PR 1116: Merge develop into release/1.7
Merge develop into release

Related work items: #2864, #2872, #2878, #2889, #2890
2022-03-18 11:39:56 +00:00
Andreas Schickinger
04851dbe39 Merged PR 1114: #2890 Listenbestellung ipad Anpassungen
#2890 Listenbestellung ipad Anpassungen

Related work items: #2890
2022-03-17 14:44:56 +00:00
Andreas Schickinger
29181469db Merged PR 1113: #2872 Listenbestellung Warenkorb Abhol- und Lieferdatum anzeigen
#2872 Listenbestellung Warenkorb Abhol- und Lieferdatum anzeigen

Related work items: #2872
2022-03-17 13:13:39 +00:00
Andreas Schickinger
cb447e13f9 Merged PR 1112: #2889 Listenbestellung weitere ipad fixes
#2889 Listenbestellung weitere ipad fixes

Related work items: #2889
2022-03-17 12:27:52 +00:00
Andreas Schickinger
04a3b1767a Merged PR 1111: Listenbestellung ipad Modal Layout
Listenbestellung ipad Modal Layout
2022-03-17 10:59:51 +00:00
Andreas Schickinger
20f1a5c77e Merged PR 1110: #2878 Listenbestellung Bugfix endlos Loading, Spinner bei Übernehmen, Caching...
#2878 Listenbestellung Bugfix endlos Loading, Spinner bei Übernehmen, Caching für Logistician Request

Related work items: #2878
2022-03-16 16:36:37 +00:00
Andreas Schickinger
c979b48592 Merged PR 1108: #2846 Bei requestStatusCode 32 wird nun altAt angezeigt
#2846 Bei requestStatusCode 32 wird nun altAt angezeigt

Related work items: #2864
2022-03-15 17:09:45 +00:00
Michael Auer
88ebc39d65 Merge tag '1.6' into develop 2022-03-15 17:05:53 +01:00
Michael Auer
9aa3820e95 Merge branch 'release/1.6' 2022-03-15 17:05:46 +01:00
Andreas Schickinger
722ed6ade6 Merged PR 1105: #2773 Listenbestellung derzeit nicht bestellbar Farbe angepasst
#2773 Listenbestellung derzeit nicht Bestellbar Farbe angepasst

Related work items: #2773
2022-03-15 10:17:02 +00:00
Andreas Schickinger
8f7448a095 Merged PR 1102: #2643 DIG Lieferzeitfenster Kaufoptionen
#2643 DIG Lieferzeitfenster Kaufoptionen

Related work items: #2643
2022-03-15 10:12:22 +00:00
Andreas Schickinger
5e9b3b56d4 Merged PR 1101: #2843 Listenbestellung Autorenlink schwarz
#2843 Listenbestellung Autorenlink schwarz

Related work items: #2843
2022-03-15 09:48:19 +00:00
Andreas Schickinger
95656b20d7 Merged PR 1103: #2793 Listenbestellung QuantityDropdown für Rücklage begrenzen
#2793 Listenbestellung QuantityDropdown für Rücklage begrenzen

Related work items: #2793
2022-03-15 09:45:21 +00:00
Andreas Schickinger
12fe8b46c3 Merged PR 1104: #2662 Listenbestellung Download OLA im Warenkorb bei Bestellen Klick
#2662 Listenbestellung Download OLA im Warenkorb bei Bestellen Klick

Related work items: #2662
2022-03-15 09:00:12 +00:00
Nino Righi
92958f4b22 Merged PR 1097: #2782 TK Remove Color Indicator inside Calendar and List View for Items with...
#2782 TK Remove Color Indicator inside Calendar and List View for Items with an Updated Item
2022-03-10 14:39:50 +00:00
Andreas Schickinger
05a3bbef7a Merged PR 1096: #2843 Listenbestellung Warenkorb Verlinkung für Artikeldetails und Autorsuche
#2843 Listenbestellung Warenkorb Verlinkung für Artikeldetails und Autorsuche

Related work items: #2843
2022-03-10 14:33:15 +00:00
Nino Righi
03467fcb83 Merged PR 1091: #2841 TK removed hours and minutes inside task info taskDate range
#2841 TK removed hours and minutes inside task info taskDate range
2022-03-09 13:29:03 +00:00
Nino Righi
e96c98e344 Merged PR 1089: #2796 #2795 List Order Changed Order of displayed purchasing options and show...
#2796 #2795 List Order Changed Order of displayed purchasing options and show instock if take away is available
2022-03-08 14:08:49 +00:00
Michael Auer
c660c5626d ~ Version Bump: 1.7 2022-03-08 14:18:57 +01:00
Nino Righi
b443c7a5de Merged PR 1088: Merge Listenbestellung into Develop
Merge Listenbestellung into Develop

Related work items: #2560, #2655, #2656, #2699, #2745, #2746, #2747, #2749, #2752, #2760, #2789
2022-03-08 12:25:32 +00:00
Lorenz Hilpert
578f3fee7a Merge branch 'release/1.6' into develop 2022-03-01 10:45:56 +01:00
Lorenz Hilpert
caddcd0e2b Merge branch 'develop' into release/1.6 2022-03-01 10:45:02 +01:00
Michael Auer
cce810d4e3 ~ Version Bump: 1.6 2022-03-01 10:27:31 +01:00
Lorenz Hilpert
2f060e6209 #2783 Nullabfrage auf quantity 2022-02-28 17:25:06 +01:00
Lorenz Hilpert
df94c1ab59 #2783 Teilabholung - mehrere Exemplare von einem Artikel nicht nacheinander abholbar 2022-02-28 13:15:22 +01:00
Nino Righi
9c2ed96331 Merged PR 1075: #2729 Article Details Show Archiv Article Badge with matching text if article...
#2729 Article Details Show Archiv Article Badge with matching text if article is Available or not
2022-02-24 17:45:49 +00:00
Andreas Schickinger
b462e39a51 Merged PR 1073: #2628 HFI Lieferschein drucken
#2628 HFI Lieferschein drucken

Related work items: #2628
2022-02-23 14:01:36 +00:00
Nino Righi
8340649292 Merged PR 1059: #2733 Bugfix WK Notification, select checkbox SMS after input of mobilenumber
#2733 Bugfix WK Notification, select checkbox SMS after input of mobilenumber
2022-02-17 17:02:18 +00:00
Nino Righi
1d2df695d3 Merged PR 1056: #2696 Upgrade of p4mUser is now possible
#2696 Upgrade of p4mUser is now possible
2022-02-15 00:26:58 +00:00
Nino Righi
f46ef394d9 Merged PR 1054: #2671 Article Negative Price
#2671 Article Negative Price
2022-02-15 00:24:11 +00:00
Nino Righi
fcf016ea85 Merged PR 1053: #2689 Take RetailPrice if no catalog Price available for take-away option. Sh...
#2689 Take RetailPrice if no catalog Price available for take-away option. Show RetailPrice in Article Details View for the same case
2022-02-15 00:23:09 +00:00
Andreas Schickinger
e2ebba9f9f Merged PR 1051: #2668 Hotfix - Kubi leere Trefferliste bei Dialog
#2668 Hotfix - Kubi leere Trefferliste bei Dialog

Related work items: #2668
2022-02-09 16:20:57 +00:00
Nino Righi
d9460df0ca Merged PR 1045: #2688 WK Updated Show Custom Price Function
#2688 WK Updated Show Custom Price Function
2022-02-08 14:40:05 +00:00
Nino Righi
9d988e18be Merged PR 1044: #2604 ipad detection
#2604 ipad detection
2022-02-07 17:02:56 +00:00
Nino Righi
949ee7da6e Merged PR 1043: #2604 Hotfix ipad mini 6 detection
#2604 Hotfix ipad mini 6 detection
2022-02-07 16:53:19 +00:00
Nino Righi
736f402179 Merged PR 1042: #2604 Hotfix ipad mini 6 detection
#2604 Hotfix ipad mini 6 detection
2022-02-07 16:45:02 +00:00
Nino Righi
e5c4eb6a8e Merged PR 1041: #2604 Hotfix ipad 6
#2604 Hotfix ipad 6
2022-02-07 16:33:04 +00:00
Nino Righi
c93233674b Merged PR 1040: #2604 Hotfix Ipad 6 Remission Artikel Hinzufügen CTA
#2604 Hotfix Ipad 6 Remission Artikel Hinzufügen CTA
2022-02-07 16:29:29 +00:00
Nino Righi
02abf0852e Merged PR 1039: #2619 Customer Searchbox Placeholder Wording and Resizing
#2619 Customer Searchbox Placeholder Wording and Resizing
2022-02-07 14:58:57 +00:00
Nino Righi
cf3e5ce9a3 Merged PR 1038: #2604 Hotfix Ipad 6 Remission Artikel Hinzufügen CTA
#2604 Hotfix Ipad 6 Remission Artikel Hinzufügen CTA
2022-02-07 14:24:06 +00:00
Lorenz Hilpert
da71454070 Merged PR 1035: #2504 Remivorschau-ChangeStatus-removed
#2504 Remivorschau-ChangeStatus-removed
2022-02-02 15:52:23 +00:00
Lorenz Hilpert
08a8575025 Benamung von tags fue unit tests 2022-02-01 13:45:33 +01:00
Lorenz Hilpert
a99494b6ea Data Attribute für e2e tests hinzugefuegt 2022-01-28 11:00:33 +01:00
Andreas Schickinger
52ab4fccbd Merged PR 1024: #2504 Remissionsvorschau Navigation in Details
#2504 Remissionsvorschau Navigation in Details

Related work items: #2504
2022-01-19 09:39:09 +00:00
Nino Righi
2ab1599fa3 Merged PR 1021: #2504 AHF Remissionsvorschau
#2504 AHF Remissionsvorschau
2022-01-13 15:21:07 +00:00
Michael Auer
f220dde3b2 Merge tag '1.5' into develop 2021-12-22 11:26:38 +01:00
Michael Auer
d027df8856 Merge branch 'release/1.5' 2021-12-22 11:26:36 +01:00
Michael Auer
1dc979baaf merge branch 'release/1.5' 2021-12-22 11:24:24 +01:00
Michael Auer
f9908eaa57 merge branch 'release/1.5' 2021-12-22 11:23:09 +01:00
Michael Auer
8e8150e246 merge branch 'release/1.5' 2021-12-22 11:21:34 +01:00
Andreas Schickinger
19fe83ed25 Merged PR 1018: #2555 Hotfix Historie und Print Dialog doppelte Scrollbar
#2555 Hotfix Historie und Print Dialog doppelte Scrollbar

Related work items: #2555
2021-12-20 12:06:44 +00:00
Lorenz Hilpert
3c033a1f0d Merged PR 1017: #2556 Fehlermeldung - scrollPos
#2556 Fehlermeldung  - scrollPos

Related work items: #2556
2021-12-20 09:57:50 +00:00
Andreas Schickinger
be031fb702 Merged PR 1016: #2543 Hotfix PDP SSC Fehlermeldung
#2543 Hotfix PDP SSC Fehlermeldung

Related work items: #2543
2021-12-16 13:24:06 +00:00
Lorenz Hilpert
34a6c6d997 Merged PR 1015: #2542 bei leere Liste wirf klick auf Abholfach Fehler
#2542 bei leere Liste wirf klick auf Abholfach Fehler

Related work items: #2542
2021-12-15 16:33:34 +00:00
Lorenz Hilpert
fa2c0d101f Merged PR 1014: #2541 Load-Ansicht dauerhaft bei leere Liste
#2541 Load-Ansicht dauerhaft bei leere Liste

Related work items: #2541
2021-12-15 15:01:00 +00:00
Lorenz Hilpert
c3f6cef14e Merged PR 1013: #2533 Reservierungsliste - bei leerer Liste wirf klick auf Abholfach Fehler
#2533  Reservierungsliste - bei leerer Liste wirf klick auf Abholfach Fehler

Related work items: #2533
2021-12-15 14:56:41 +00:00
Andreas Schickinger
67bcb25106 Merged PR 1012: #2534 Hotfix - WA WE Meldenummern ändern Item wird vor Patch Aufruf aktualisiert
#2534 Hotfix - WA WE Meldenummern ändern Item wird vor Patch Aufruf aktualisiert

Related work items: #2534
2021-12-14 12:33:06 +00:00
Lorenz Hilpert
6cfbce4f16 Merge branch 'release/1.5' into develop 2021-12-10 10:50:36 +01:00
Lorenz Hilpert
cc65a29b05 Merge branch 'develop' into release/1.5 2021-12-10 10:50:10 +01:00
Nino Righi
79d1cb7e87 Merged PR 1008: #2503 Fix Undefined query Params
#2503 Fix Undefined query Params
2021-12-09 10:33:18 +00:00
Lorenz Hilpert
925b0e75db #2454 Suchfeld bei Remi abschluss auf IPad 6 ausblenden 2021-12-09 11:17:22 +01:00
Nino Righi
85b6439d5f Merged PR 1007: #2122 Patch Request - CTA Positioning
#2122 Patch Request - CTA Positioning
2021-12-08 13:11:27 +00:00
Nino Righi
8d75d2e9c9 Merged PR 1006: #2503 #2514 Kundenkarte Kundendaten Erfassen
#2503 #2514 Kundenkarte Kundendaten Erfassen
2021-12-08 09:54:41 +00:00
Lorenz Hilpert
af7e2298b5 #2475 - Button anzeige - bei Nullbestand CTA anzeigen 2021-12-08 10:49:20 +01:00
Andreas Schickinger
11fd851f21 Merged PR 1005: #2122 WA/WE Erneut senden Button Scroll Verhalten fix
#2122 WA/WE Erneut senden Button Scroll Verhalten fix

Related work items: #2122
2021-12-07 14:59:02 +00:00
Andreas Schickinger
2360a63fcb Merged PR 1004: #2501 WE WA Vormerker änderbar
#2501 WE WA Vormerker änderbar

Related work items: #2501
2021-12-07 13:39:52 +00:00
Andreas Schickinger
20e8433963 Merged PR 1003: #2507 Reservieren in andere Filiale Hotfix
#2507 Reservieren in andere Filiale Hotfix
Wenn für die zugeordnete Filiale die InStock und Store Availability nichts zurückliefern, wurden die Branches nicht geladen. Wird dem Purchasing Modal von außen als vorausgewählte Option "Take-Away" oder "Pick-Up" mitgegeben, werden die Branches nun auch geladen.

Related work items: #2507
2021-12-07 12:27:37 +00:00
Andreas Schickinger
c655c1b90b Merged PR 1002: #2502 Kundensuche Dialog
#2502 Kundensuche Dialog

Related work items: #2502
2021-12-07 12:27:03 +00:00
Nino Righi
215e542516 Merged PR 1001: #2122 WA/WE Kunde erneut benachrichtigen Implementierung
#2122 WA/WE Kunde erneut benachrichtigen Implementierung
2021-12-07 12:26:25 +00:00
Michael Auer
680ab2d92a Merge branch 'master' into develop 2021-12-07 11:11:33 +01:00
Michael Auer
c162c00c8d Merge branch 'release/1.5' 2021-12-07 11:08:37 +01:00
Lorenz Hilpert
e5dfc2484b Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-12-06 14:33:59 +01:00
Lorenz Hilpert
1962f47f81 #2475 - Abholfach - bei Nullbestand CTA anzeigen 2021-12-06 14:33:51 +01:00
Andreas Schickinger
6b9ea288d1 Merged PR 1000: #2069 WE WA Archiv Filter Detailseite anzeigen
#2069 WE WA Archiv Filter Detailseite anzeigen

Related work items: #2069
2021-12-06 13:29:18 +00:00
Nino Righi
baeaec54c5 Merged PR 999: #2484 AHF Routing to Details After Clicking an Item
#2484 AHF Routing to Details After Clicking an Item
2021-12-03 12:07:29 +00:00
Nino Righi
7272415ed4 Merged PR 998: #2496 PDP Fix Display No Supplier Available if No Ssc and SscText is available
#2496 PDP Fix Display No Supplier Available if No Ssc and SscText is available
2021-12-02 17:02:26 +00:00
Andreas Schickinger
c75d956c52 Merged PR 996: #2373 Scroll Position Handling
#2373 Wareneingang, Warenausgang, Reservierungen, Abholfachbereinigungsliste Scroll Position Handling

Related work items: #2373
2021-12-02 16:24:45 +00:00
Lorenz Hilpert
99d8084fe3 Merged PR 997: #2137 Übernahme der Email und des Nachnamens zu Kundendaten erfassen
#2137 Übernahme der Email und des Nachnamens zu Kundendaten erfassen
2021-12-02 16:24:01 +00:00
Lorenz Hilpert
e61601fca2 Merged PR 994: #2383 WE // Sortierung auf der Wareneingangsliste
Related work items: #2383
2021-12-02 16:20:44 +00:00
Andreas Schickinger
0cfeabb0f2 Merged PR 995: #2486 Erscheinungsdatum führende Null bei Format
#2486 Erscheinungsdatum führende Null bei Format

Related work items: #2486
2021-12-02 13:11:52 +00:00
Lorenz Hilpert
d059646ebe #2450 ui fehler - WE Titel Breite 2021-12-02 11:29:05 +01:00
Andreas Schickinger
553c5cd1c1 Merged PR 993: #2446 Erscheinungsdatum Bugfix wenn kein publicationDate existiert
#2446 Erscheinungsdatum Bugfix wenn kein publicationDate existiert

Related work items: #2446
2021-12-01 16:14:28 +00:00
Nino Righi
ba0a4f1bf9 Merged PR 991: #2383 Sortierung Wareneingangsliste
#2383 Sortierung Wareneingangsliste
2021-12-01 14:59:52 +00:00
Lorenz Hilpert
614e8f0ccc #2450 Lesealter breite ipad 6 2021-12-01 15:57:58 +01:00
Andreas Schickinger
428a905caa Merged PR 992: #2373 UiScrollContainer ScrollTo Methode
#2373 UiScrollContainer ScrollTo Methode

Related work items: #2373
2021-12-01 14:09:37 +00:00
Andreas Schickinger
6193306255 Merged PR 990: #2446 Artikelsuche Artikeldetails Erscheinungsdatum angepasst
#2446 Artikelsuche Artikeldetails Erscheinungsdatum angepasst

Related work items: #2446
2021-11-29 16:54:40 +00:00
Andreas Schickinger
b2913f9fa0 Merged PR 989: #2455 Warenkorb undefined wird nicht angezeigt
#2455 Warenkorb undefined wird nicht angezeigt

Related work items: #2455
2021-11-29 14:15:27 +00:00
Lorenz Hilpert
ce5ec1d961 #2454 ipad6 - Remission Scan Button wird nicht angezeigt 2021-11-29 14:23:04 +01:00
Lorenz Hilpert
96725d1730 #2290 Remi Screens am Desktop verschoben 2021-11-29 14:16:22 +01:00
Lorenz Hilpert
eec018de3c Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-11-29 14:06:55 +01:00
Lorenz Hilpert
f753d33731 #2328 AHF Status versendet und zugestellt leeres Blatt 2021-11-29 14:06:42 +01:00
Lorenz Hilpert
ffd69fbc75 Merged PR 933: Checkout Dummy Modal Implementation
Related work items: #2315
2021-11-29 12:56:51 +00:00
Lorenz Hilpert
5997e67322 Merged PR 988: #2364 - dashboard book tile - overflow set to y - hidden and line-break auto
#2364 - dashboard book tile - overflow set to y - hidden and line-break auto
2021-11-26 13:42:20 +00:00
Lorenz Hilpert
fe60370c0a Merge branch 'release/1.5' into develop 2021-11-26 14:06:17 +01:00
Lorenz Hilpert
cfee8e571e Merge branch 'develop' into release/1.5 2021-11-26 14:05:04 +01:00
Nino Righi
b4a7d3c879 Merged PR 987: #2456 Checkout Review Fix Setting Initial Notification Channel correctly
#2456 Checkout Review Fix Setting Initial Notification Channel correctly
2021-11-26 12:11:11 +00:00
Lorenz Hilpert
9c1565dfcc Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-11-26 13:10:41 +01:00
Lorenz Hilpert
a8b8573734 #2452 Abholung auf Lieferschein - Schritte zusammenfassen 2021-11-26 13:10:34 +01:00
Andreas Schickinger
c09e559430 Merged PR 985: #2449 WA WE Benachrichtigungen Take auf 4 gesetzt
#2449 WA WE Benachrichtigungen Take auf 4 gesetzt

Related work items: #2449
2021-11-25 16:53:10 +00:00
Lorenz Hilpert
cbc1b85d92 #2454 scanner fix test 2021-11-25 17:22:49 +01:00
Lorenz Hilpert
d6f3ae7179 #2454 Remi Scan Button 2021-11-25 17:14:47 +01:00
Andreas Schickinger
12c87aaa25 Merged PR 986: #2450 Artikelsuche Filter Button ipad Klasse entfernt
#2450 Artikelsuche Filter Button ipad Klasse entfernt

Related work items: #2450
2021-11-25 16:07:05 +00:00
Lorenz Hilpert
67a0230b7b #2450 piad6 - ui fehler - remission scan button 2021-11-25 15:20:55 +01:00
Lorenz Hilpert
539a6d420e #2450 piad6 ui fehler - Filter Groeße 2021-11-25 15:09:33 +01:00
Nino Righi
f1baa7c0d2 Merged PR 984: #129 Checkout Bugfixes - Näheres steht im Ticket in den Kommentaren
#129 Checkout Bugfixes - Näheres steht im Ticket in den Kommentaren
2021-11-24 15:41:23 +00:00
Andreas Schickinger
36ac3776b7 Merged PR 983: #2452 WA WE COLLECT_ON_DELIVERYNOTE Action
#2452 WA WE COLLECT_ON_DELIVERYNOTE Action

Related work items: #2452
2021-11-24 15:26:16 +00:00
Lorenz Hilpert
a6b50631dc #2382 iPad 6 - Wareneingangsliste verschiebbar 2021-11-24 15:49:25 +01:00
Lorenz Hilpert
71fdedb2d9 Merge branch 'release/1.5' into develop 2021-11-24 15:38:26 +01:00
Lorenz Hilpert
f4be47a0d7 Merge branch 'develop' into release/1.5 2021-11-24 15:38:09 +01:00
Lorenz Hilpert
295400892a #2440 ipad 6 - Vorgangszeichen 2021-11-24 15:37:02 +01:00
Lorenz Hilpert
5c3d28033f #2450 piad6 ui fehler 2021-11-24 15:36:25 +01:00
Andreas Schickinger
229cb55b46 Merged PR 982: #2419, #2426, #2413 IconBadgeComponent und Anzeige des Prämienkatalog Badge
#2419, #2426, #2413 IconBadgeComponent und Anzeige des Prämienkatalog Badge

Related work items: #2413, #2419, #2426
2021-11-23 16:32:04 +00:00
Lorenz Hilpert
99fea8c2df Merge branch 'release/1.5' into develop 2021-11-22 17:18:02 +01:00
Andreas Schickinger
1d7fd4fab1 Merged PR 981: #2444 HFI Kundensuche B2B Typ bei Menü Routing entfernt
#2444 HFI Kundensuche B2B Typ bei Menü Routing entfernt

Related work items: #2444
2021-11-22 15:31:38 +00:00
Lorenz Hilpert
76e1b7d320 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-11-22 16:22:54 +01:00
Lorenz Hilpert
0d4ca1b6a6 #2426 Icon Gift and Baookmark bg 2021-11-22 16:22:45 +01:00
Andreas Schickinger
9050f33fcc Merged PR 979: #2413 PDP IsPrebooked Badge wieder entfernt
#2413 PDP IsPrebooked Badge wieder entfernt

Related work items: #2413
2021-11-22 14:31:32 +00:00
Lorenz Hilpert
8a1b151740 #2434 ipad 6 - breadcrumb funktioniert nicht 2021-11-22 15:15:58 +01:00
Andreas Schickinger
f088098159 Merged PR 978: #2413 PDP IsPrebooked Badge anzeigen
#2413 PDP IsPrebooked Badge anzeigen

Related work items: #2413
2021-11-19 08:31:13 +00:00
Andreas Schickinger
d9462a2d17 Merged PR 977: #2418 Aktuelleste Benachrichtigung wird angezeigt und Anzeige mehrerer Benach...
#2418 Aktuelleste Benachrichtigung wird angezeigt und Anzeige mehrerer Benachrichtigungen vorbereitet

Related work items: #2418
2021-11-18 15:28:49 +00:00
Nino Righi
eec72499e7 Merged PR 976: #2408 Customer Orders added History inside Order Details on every item
#2408 Customer Orders added History inside Order Details on every item
2021-11-18 12:20:44 +00:00
Andreas Schickinger
93016af766 Merged PR 975: #2413 Bookmark Tooltips angepasst, Page-Tooltip durch UI-Tooltip ersetzt
#2413 Bookmark Tooltips angepasst, Page-Tooltip durch UI-Tooltip ersetzt

Related work items: #2413
2021-11-18 11:18:48 +00:00
Nino Righi
5d699dff8f Merged PR 973: #2412 Neue Ola Availability Service Update
#2412 Neue Ola Availability Service Update
2021-11-18 10:25:03 +00:00
Nino Righi
12e4f48460 Merged PR 974: #2140 WA WE Display EstimatedShippingDate on Details Page
#2410 WA WE Display EstimatedShippingDate on Details Page
2021-11-17 17:09:40 +00:00
Andreas Schickinger
68ad3cd407 Merged PR 972: #2372 AHF Wareneingangsliste Bestelldatum anzeigen
#2372 AHF Wareneingangsliste Bestelldatum anzeigen

Related work items: #2372
2021-11-17 12:30:04 +00:00
Nino Righi
c19c4d471d Merged PR 971: #2379 TK Pdf Viewer Broad Content Fix
#2379 TK Pdf Viewer Broad Content Fix
2021-11-16 14:56:57 +00:00
Andreas Schickinger
9cf5f23b5a Merged PR 970: #2397 Update-Notiz Label zu Kommentar geändert
#2397 Update-Notiz Label zu Kommentar geändert

Related work items: #2397
2021-11-16 14:31:54 +00:00
Andreas Schickinger
b71d383c74 Merged PR 968: #129 WK Versand günstigsten Preis verwenden
#129 WK Versand günstigsten Preis verwenden

Related work items: #129
2021-11-16 13:37:36 +00:00
Nino Righi
5086c3c82d Merged PR 969: #2379 TK Pdf Viewer Scrolling Fix
#2379 TK Pdf Viewer Scrolling Fix
2021-11-16 13:37:07 +00:00
Andreas Schickinger
d98c30506e Merged PR 967: #2374 Reorder Button disabled, wenn keine Availability ausgewählt ist
#2374 Reorder Button disabled, wenn keine Availability ausgewählt ist

Related work items: #2374
2021-11-15 16:56:52 +00:00
Andreas Schickinger
6a4e5a121f Merged PR 966: #2378 Abholfrist Dropdown durch Datepicker ersetzt
#2378 Abholfrist Dropdown durch Datepicker ersetzt

Related work items: #2378
2021-11-15 16:55:56 +00:00
Nino Righi
15a8d2151e Merged PR 965: #129 Checkout PurchasingOptionsModal Price Fix
#129 Checkout PurchasingOptionsModal Price Fix
2021-11-15 12:41:05 +00:00
Nino Righi
025672bd91 Merged PR 964: #2379 TK Pdf Scrolling Fix
#2379 TK Pdf Scrolling Fix
2021-11-15 10:06:41 +00:00
Nino Righi
a925050912 Merged PR 961: #2375 PDP Added Timeout for Shipping Availability Requests
#2375 PDP Added Timeout for Shipping Availability Requests
2021-11-15 08:48:36 +00:00
Nino Righi
a4a4fc344a Merged PR 962: #2374 Reorder Modal Fix Disable Order Button if Store And TakeAway Availabili...
#2374 Reorder Modal Fix Disable Order Button if Store And TakeAway Availabilites don't exist
2021-11-15 08:25:55 +00:00
Nino Righi
bc1fc27a5d Merged PR 963: #2379 TK PDF Scrolling Ipad Fix
#2379 TK PDF Scrolling Ipad Fix
2021-11-15 08:15:37 +00:00
Nino Righi
acfd88ec55 Merged PR 960: #129 Checkout Options Modal Shipping Take Cheapest Price
#129 Checkout Options Modal Shipping Take Cheapest Price
2021-11-11 17:35:23 +00:00
Nino Righi
3745583e1c Merged PR 958: #2371 Customer Search Filter Fix
#2371 Customer Search Filter Fix
2021-11-11 15:50:48 +00:00
Andreas Schickinger
60f1a89984 Merged PR 959: #2336 WK DIG Versand Grouping fix
#2336 WK DIG Versand Grouping fix

Related work items: #2336
2021-11-11 15:48:12 +00:00
Andreas Schickinger
cbfa2fc98c Merged PR 957: #2370 Zubuchen Button disabled, wenn Zusatz abweicht
#2370 Zubuchen Button disabled, wenn Zusatz abweicht

Related work items: #2370
2021-11-11 11:52:55 +00:00
Nino Righi
7c37a0bb05 Merged PR 956: #2329 WE WA Date Range Filter Fix if no date gets selected
#2329 WE WA Date Range Filter Fix if no date gets selected
2021-11-11 10:58:04 +00:00
Michael Auer
699745526e Merge branch 'master' into develop 2021-11-11 11:03:12 +01:00
Michael Auer
ef9573a74d Merge branch 'release/1.5' 2021-11-11 10:58:04 +01:00
Michael Auer
7efe8196a5 Merge commit 'e2d78ff89ed1c60320967cd7660b40b753b7da0b' 2021-11-11 09:49:59 +01:00
Michael Auer
f1ed3f7438 Merge commit '1260d2932413e79a02bc558beac7af810509470d' 2021-11-11 09:45:23 +01:00
Michael Auer
30bdc0ee54 Merge branch 'master' into develop 2021-11-11 09:19:00 +01:00
Nino Righi
8c7217ad56 Merged PR 955: #2329 WE WA Date Range Filter Stop Value Update
#2329 WE WA Date Range Filter Stop Value Update
2021-11-10 15:43:06 +00:00
Nino Righi
4f15bc257d Merged PR 954: #2324 Added Backdrop to UiSelect Dropdowns
#2324 Added Backdrop to UiSelect Dropdowns
2021-11-10 12:22:00 +00:00
Andreas Schickinger
4c25c5769a Merged PR 950: #1965 Kundendaten erfassen Validierungslogik angepasst
#1965 Kundendaten erfassen Validierungslogik angepasst
- Speichern Button ist immer aktiv
- Validierung wird bei Klick auf Speichern ausgeführt
- Cursor springt automatisch ins erste Feld mit Validierungsfehler

Related work items: #1965
2021-11-10 12:21:05 +00:00
Nino Righi
30a9225227 Merged PR 948: #2336 WK Change Wording of DIG-Versand to Versand
#2336 WK Change Wording of DIG-Versand to Versand
2021-11-10 09:22:00 +00:00
Nino Righi
4a0d79b138 Merged PR 953: #2364 Fix Dashboard Artikelanzeige
#2364 Fix Dashboard Artikelanzeige
2021-11-10 08:14:35 +00:00
Nino Righi
8856c984dc Merged PR 952: Merge release/1.5 into develop
Merge release/1.5 into develop

Related work items: #882, #1985, #2244, #2331
2021-11-09 16:05:43 +00:00
Nino Righi
0198e635b3 Merged PR 951: Merge Develop into release/1.5
Merge Develop into release/1.5

Related work items: #882, #1985, #2244
2021-11-09 16:03:43 +00:00
Nino Righi
f477411667 Merged PR 949: #1967 WK Notification Channel Dont Tick SMS Checkbox if Email and Mobile Numb...
#1967 WK Notification Channel Dont Tick SMS Checkbox if Email and Mobile Number exist
2021-11-09 15:32:26 +00:00
Andreas Schickinger
963aaa974e Merged PR 947: #1985 Kundentyp-Checkbox nicht mehr abwählbar
#1985 Kundentyp-Checkbox nicht mehr abwählbar

Related work items: #1985
2021-11-09 15:00:32 +00:00
Andreas Schickinger
49bb23805e Merged PR 946: #2244 Preiseingabe bei Archivartikeln nur noch anzeigen, wenn keine der avail...
#2244 Preiseingabe bei Archivartikeln nur noch anzeigen, wenn keine der availabilities einen Preis besitzt

Related work items: #2244
2021-11-08 16:41:17 +00:00
Andreas Schickinger
a1dea02498 Merged PR 944: #2244 Archivartikel Preis übernehmen, wenn vorhanden
#2244 Archivartikel Preis übernehmen, wenn vorhanden

Related work items: #2244
2021-11-08 13:24:59 +00:00
Nino Righi
e7eef7f169 Merged PR 943: #2342 #2358 Autocomplete Adjust DebounceTime Values based on current Section
#2342 #2358 Autocomplete Adjust DebounceTime Values based on current Section
2021-11-08 12:56:27 +00:00
Nino Righi
072045ed59 Merged PR 942: #2343 WE, WA Fix ProcessingStatusName Mapping
#2343 WE, WA Fix ProcessingStatusName Mapping
2021-11-08 11:21:28 +00:00
Nino Righi
9078c57909 Merged PR 940: #2342 Autocomplete Requests Delay Hotfix
#2342 Autocomplete Requests Delay Hotfix
2021-11-04 06:09:47 +00:00
Nino Righi
abb15a9e28 Merged PR 941: #2331 Hotfix WA WE Edit Navigation after Status Change due to changeStockStatusCode request
#2331 Hotfix WA WE Edit Navigation after Status Change due to changeStockStatusCode request
2021-11-03 06:38:25 +00:00
Andreas Schickinger
2766751c79 Merged PR 937: #882 Filialkürzel im Header anzeigen
#882 Filialkürzel im Header anzeigen

Related work items: #882
2021-10-28 15:37:56 +00:00
Andreas Schickinger
d9df337ff0 Merged PR 939: #2331 WE/WA Bearbeiten: changeStockStatusCode Aufruf vor patch
#2331 WE/WA Bearbeiten: changeStockStatusCode Aufruf vor patch

Related work items: #2331
2021-10-28 14:03:42 +00:00
Lorenz Hilpert
5d2cfaf269 Revert "#2333 Erstellung einer Remission abbrechen"
This reverts commit e475ab6047.
2021-10-27 15:18:02 +02:00
Nino Righi
4a9b5ace01 Merged PR 936: #2334 WA Fix Routing to Details Page if Search Result Hits is 1
#2334 WA Fix Routing to Details Page if Search Result Hits is 1
2021-10-27 13:09:06 +00:00
Lorenz Hilpert
e475ab6047 #2333 Erstellung einer Remission abbrechen 2021-10-27 14:56:31 +02:00
Lorenz Hilpert
e2d78ff89e #2332 Navigation mit slash 2021-10-26 14:29:09 +02:00
Lorenz Hilpert
1260d29324 Merge branch 'develop' into release/1.5 2021-10-25 15:51:13 +02:00
Lorenz Hilpert
bed12304c0 #2319 Artikel nicht gefunden bei Abteilungsremission 2021-10-25 14:33:35 +02:00
Nino Righi
c2ede383dd Merged PR 934: #2326 Checkout Dummy Scan Console Logs
#2326 Checkout Dummy Scan Console Logs
2021-10-25 10:40:19 +00:00
Lorenz Hilpert
0e6f56230a #2319 Artikel nicht gefunden bei Abteilungsremission 2021-10-25 11:34:20 +02:00
Nino Righi
ac7705442f Merged PR 932: #2265 DoNotTrack Search History
#2265 DoNotTrack Search History
2021-10-25 09:08:40 +00:00
Nino Righi
b5a3ee19a4 Revert "Merged PR 931: #2315 Checkout Dummy Modal Implementation"
This reverts commit 29c8cc2062.
2021-10-25 11:05:03 +02:00
Nino Righi
29c8cc2062 Merged PR 931: #2315 Checkout Dummy Modal Implementation
#2315 Checkout Dummy Modal Implementation
2021-10-25 09:00:40 +00:00
Lorenz Hilpert
098f314b83 #2323 Wannennummer muß zweimal geklickt werden 2021-10-25 10:49:40 +02:00
Nino Righi
5885aa759d Merged PR 930: #2318 Checkout Dummy Changed Search Endpoint and Update Validator, Sort Suppl...
#2318 Checkout Dummy Changed Search Endpoint and Update Validator, Sort Suppliers alphabetically
2021-10-22 09:19:19 +00:00
Nino Righi
c0dec7729c Merged PR 929: #2316 WK Gruppierung Fix
#2316 WK Gruppierung Fix
2021-10-21 16:02:03 +00:00
Andreas Schickinger
8d26d94b9f Merged PR 927: #2312 AHF Bestellung bei Lieferant ausführen
#2312 AHF Bestellung bei Lieferant ausführen

Related work items: #2312
2021-10-21 15:59:31 +00:00
Andreas Schickinger
a207fc90dc Merged PR 928: #2310 AHF Nachbestellen Vormerker
#2310 AHF Nachbestellen Vormerker

Related work items: #2310
2021-10-21 15:57:38 +00:00
Nino Righi
13e0e4b5fa Merged PR 926: Fix Checkout Review
Fix Checkout Review
2021-10-21 15:33:46 +00:00
Nino Righi
4c95bb8354 Merged PR 925: #2265 Dummy Anlage Update
#2265 Dummy Anlage Update
2021-10-21 15:19:39 +00:00
Lorenz Hilpert
a4a39f643c #2314 Vorgangs ID im Bearbeiten Ansicht falsch 2021-10-21 16:30:10 +02:00
Lorenz Hilpert
744ee451cf #2313 iPadOS 15 - Farben anpassen 2021-10-21 16:26:58 +02:00
Lorenz Hilpert
c44af0d61e Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-21 14:41:00 +02:00
Lorenz Hilpert
6cf385a6f0 #2311 laden der Notifications schlägt fehl 2021-10-21 14:40:52 +02:00
Andreas Schickinger
c30d81dfa5 Merged PR 923: #2121 WE Anzeige wenn keine Benachrichtigung konfiguriert
#2121 WE Anzeige wenn keine Benachrichtigung konfiguriert

Related work items: #2121
2021-10-21 12:25:52 +00:00
Nino Righi
77a645bfe9 Merged PR 924: #2272 TK Hide Old Tasks before Update inside List View
#2272 TK Hide Old Tasks before Update inside List View
2021-10-21 12:25:23 +00:00
Lorenz Hilpert
c6a0e87fdd WE/WA Details Bearbeiten - Wenn result leer ist dann wird die form nicht mehr initialisiert 2021-10-21 11:13:47 +02:00
Lorenz Hilpert
990927d9d5 Update SSC Text für Rücklage 2021-10-21 11:08:05 +02:00
Lorenz Hilpert
342db106fe Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-20 17:48:21 +02:00
Andreas Schickinger
43b56351ad Merged PR 922: #2308 Artikelsuche Hint margin fix
#2308 Artikelsuche Hint margin fix

Related work items: #2308
2021-10-20 15:48:13 +00:00
Lorenz Hilpert
a212a4fa90 #2274 Mobilnummer Validierung 2021-10-20 17:47:30 +02:00
Andreas Schickinger
1c7c79451d Merged PR 921: #2288 TK Updatenotiz Anzeigelogik angepasst
Related work items: #2288
2021-10-20 15:29:29 +00:00
Andreas Schickinger
27a9d446ef Merged PR 918: #2244 WK Preis kann bei Archivartikeln vergeben werden
#2244 WK Preis kann bei Archivartikeln vergeben werden

Related work items: #2244
2021-10-20 15:28:49 +00:00
Lorenz Hilpert
0115e235c2 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-20 17:26:51 +02:00
Lorenz Hilpert
e838964860 #2302 - Remi - Platzierung ändern Button Artikel nicht gefunden 2021-10-20 17:26:33 +02:00
Andreas Schickinger
8c2862cc80 Merged PR 919: #2303 Artikeldetails Beschreibung nicht mehr zentriert
#2303 Artikeldetails Beschreibung nicht mehr zentriert

Related work items: #2303
2021-10-20 14:32:52 +00:00
Nino Righi
445ba6ba20 Merged PR 920: #2304 Customer Order Details Display Dummy Orders
#2304 Customer Order Details Display Dummy Orders
2021-10-20 14:32:15 +00:00
Lorenz Hilpert
5793094187 Benachrichtigung - UpdateOrder durch PatchOrder ersetzt 2021-10-20 16:30:20 +02:00
Nino Righi
861333d748 Merged PR 917: #2265 Manuelle Dummy Anlage
#2265 Manuelle Dummy Anlage
2021-10-20 11:23:45 +00:00
Lorenz Hilpert
75a45de060 Update only required communicationDetails 2021-10-20 11:03:13 +02:00
Lorenz Hilpert
b87485a56f Benachrichtigungskanal bei änderung auf dirty setzen 2021-10-20 10:50:47 +02:00
Lorenz Hilpert
8612f335ac #2121 Benachrichtigungen 2021-10-19 18:04:54 +02:00
Lorenz Hilpert
cd56bc1fc0 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-19 16:02:15 +02:00
Lorenz Hilpert
bf768b970f #2274 Benachrichtigungskanal hinzufügen 2021-10-19 16:02:03 +02:00
Andreas Schickinger
1e083d0e64 Merged PR 910: #2295 Leere Notifications können nicht mehr geöffnet werden
Leere Notifications können nicht mehr geöffnet werden

Related work items: #2295
2021-10-19 08:45:04 +00:00
Andreas Schickinger
2dc8141bbc Merged PR 912: #2292 Reservieren Popup Scrollbar fix
#2292 Reservieren Popup Scrollbar fix

Related work items: #2292
2021-10-19 08:44:36 +00:00
Andreas Schickinger
a9bbc672c9 Merged PR 913: #2289 WK Download ändern entfernt
#2289 WK Download ändern entfernt

Related work items: #2289
2021-10-19 08:44:01 +00:00
Andreas Schickinger
b51590e374 Merged PR 914: #2287 TK Update-Notiz
#2287 TK Update-Notiz

Related work items: #2287
2021-10-19 08:43:39 +00:00
Andreas Schickinger
21f609053a Merged PR 915: #2288 TK Update-Notiz immer anzeigen, wenn vorhanden
#2288 TK Update-Notiz immer anzeigen, wenn vorhanden

Related work items: #2288
2021-10-19 08:43:10 +00:00
Andreas Schickinger
0fe3e324cb Merged PR 916: #2293 WE Lieferdatum Filter
#2293 WE Lieferdatum Filter

Related work items: #2293
2021-10-19 08:42:41 +00:00
Nino Righi
921144c1f9 Merged PR 911: Hotfix Config SignalR
Hotfix Config SignalR
2021-10-18 07:39:11 +00:00
Lorenz Hilpert
af2ab8f104 Merge branch 'develop' into release/1.5 2021-10-13 18:30:38 +02:00
Lorenz Hilpert
5c3539c820 FIX Remi Abschließen Dialog 2021-10-13 18:15:54 +02:00
Lorenz Hilpert
6bdb758bc6 Update Remi Finish Template 2021-10-13 18:10:08 +02:00
Lorenz Hilpert
1d36c1b55d Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-13 18:09:36 +02:00
Lorenz Hilpert
a4daa8b36d #2284 - Packstück Id scannen ausblenden wenn ZL 2021-10-13 17:30:50 +02:00
Lorenz Hilpert
dd91b7c023 #2284 Packstück Id generieren ausblenden wenn ZL 2021-10-13 17:09:51 +02:00
Lorenz Hilpert
472716d06d #2283 Remission starten 2021-10-13 16:52:54 +02:00
Nino Righi
5f34fa811c Merged PR 904: #2266 Reservations always generates a new compartmentCode for each selected r...
#2266 Reservations always generates a new compartmentCode for each selected reservation inside the list, bugfix reloading list
2021-10-12 15:23:20 +00:00
Lorenz Hilpert
9538c364d4 #2280 Update-Infos soll nicht anzeigen bis freigegeben 2021-10-12 17:21:42 +02:00
Andreas Schickinger
b3f0c08e2c Merged PR 909: #2271 WE Edit Zusatz
#2271 WE Edit Zusatz

Related work items: #2271
2021-10-12 14:51:42 +00:00
Nino Righi
406ec89625 Merged PR 908: #2278 Always Show Printer Selection Modal on iPad
#2278 Always Show Printer Selection Modal on iPad
2021-10-12 14:50:32 +00:00
Lorenz Hilpert
d0c930c080 #2279 - abgeholt und Lieferschein drucken erscheint nicht 2021-10-12 16:49:17 +02:00
Lorenz Hilpert
85b3636cee Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-12 15:16:35 +02:00
Andreas Schickinger
d3a477425e Merged PR 901: #2080 Suchbegriff bei Filter zurücksetzen beibehalten
Related work items: #2080
2021-10-11 15:36:32 +00:00
Lorenz Hilpert
62439f9e7d Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-10-11 15:32:26 +02:00
Lorenz Hilpert
b0581c2f2b #2264 Fehler bei hinzufügen von exotischen Artikeln 2021-10-11 15:32:15 +02:00
Nino Righi
9dd7da7630 Merged PR 907: #2268 TK Show Update Symbol on old and new Task
#2268 TK Show Update Symbol on old and new Task
2021-10-11 12:17:30 +00:00
Lorenz Hilpert
0e9edf0aba Merge branch 'develop' into feature/signalr 2021-10-11 11:45:32 +02:00
Nino Righi
42583d306b Merged PR 906: #2249 Catalog Result List Fix Font Size for large Titles
#2249 Catalog Result List Fix Font Size for large Titles
2021-10-11 08:39:40 +00:00
Nino Righi
11593091fd Merged PR 905: #2273 TK Display CTA "Zur neuen Aufgabe" fixed
#2273 TK Display CTA "Zur neuen Aufgabe" fixed
2021-10-11 08:39:21 +00:00
Nino Righi
947da3d647 Merged PR 903: #2267 Checkout Add To Cart Modal removed branch availability text for downloa...
#2267 Checkout Add To Cart Modal removed branch availability text for download items
2021-10-08 12:58:50 +00:00
Nino Righi
a6502a23af Merged PR 902: #2263 Checkout Pickup, select branches Dropdown, updated input placeholder
#2263 Checkout Pickup, select branches Dropdown, updated input placeholder
2021-10-08 12:57:50 +00:00
Lorenz Hilpert
abeb6ea5a2 SignalR Hub Service ctahc errors 2021-10-07 16:13:59 +02:00
Lorenz Hilpert
ff749f8892 SignalR Websocket Connection IOS 2021-10-07 16:11:50 +02:00
Andreas Schickinger
2c3115dc47 Merged PR 896: #2253 UiOverlayTrigger erstellt und UiTooltip angepasst
#2253 UiOverlayTrigger erstellt und UiTooltip angepasst

Related work items: #2253
2021-10-07 12:08:10 +00:00
Nino Righi
d96729fb89 Merged PR 900: #2209 TK Ongoing Tasks fixed Filter settings and styling issue
#2209 TK Ongoing Tasks fixed Filter settings and styling issue
2021-10-07 12:07:36 +00:00
Andreas Schickinger
7b49fbc85c Merged PR 895: #2254 UI Datepicker ausgewählter Tag
#2254 UI Datepicker ausgewählter Tag

Related work items: #2254
2021-10-06 15:05:18 +00:00
Lorenz Hilpert
436936ff41 scanbox autofocus 2021-10-06 17:04:39 +02:00
Lorenz Hilpert
0f4c2c84d2 #2248 WBS am Desktop abschliessen 2021-10-06 16:26:21 +02:00
Andreas Schickinger
02f8f747e1 Merged PR 899: Modalfenster Basis erweitert
Modalfenster Basis um Close Button, Title und ScrollX/ScrollY erweitert
2021-10-06 13:53:07 +00:00
Nino Righi
26d538adf2 Merged PR 898: #1966 Customer Area made Select Dropdowns clearable
#1966 Customer Area made Select Dropdowns clearable
2021-10-06 13:52:41 +00:00
Lorenz Hilpert
ba3618d58a #1997 Wannennummer scannen 2021-10-06 11:56:56 +02:00
Lorenz Hilpert
72568c3ae2 #2103 Warenbegleitschein auf dem Desktop eröffnen 2021-10-06 11:39:43 +02:00
Nino Righi
3f6b0447b9 Merged PR 891: #2251 TK Fix Editing tasks on todays date
#2251 TK Fix Editing tasks on todays date
2021-10-06 08:43:23 +00:00
Nino Righi
be81bdf0b4 Merged PR 890: #2233 WE Details Fix Routing For OrderAtSupplier Action
#2233 WE Details Fix Routing For OrderAtSupplier Action
2021-10-06 08:42:51 +00:00
Nino Righi
19340905db Merged PR 894: #2252 Filter iPad Styling Fixes, Reading-Age, Goods-In, Goods-Out padding
#2252 Filter iPad Styling Fixes, Reading-Age, Goods-In, Goods-Out padding
2021-10-06 08:42:22 +00:00
Andreas Schickinger
1f5cbd8579 Merged PR 897: #2259 Artikeldetails - Fehler beim Hinzufügen zum Warenkorb
Related work items: #2259
2021-10-06 08:41:24 +00:00
Nino Righi
bd0535fdc4 Merged PR 892: #2249 Articlesearch Results Updated Styling and Sizing
#2249 Articlesearch Results Updated Styling and Sizing
2021-10-04 08:37:56 +00:00
Nino Righi
343bed6a6b Merged PR 893: #2250 TK Selected and Displayed Date queryParams Update
#2250 TK Selected and Displayed Date queryParams Update
2021-10-04 08:34:19 +00:00
Lorenz Hilpert
816232d993 Merge branch 'release/1.5' into develop 2021-09-30 17:27:57 +02:00
Nino Righi
2ab8faa9eb Merged PR 889: #2239 PDP Availabilities Modal updated styling
#2239 PDP Availabilities Modal updated styling
2021-09-30 14:37:07 +00:00
Nino Righi
144d105a13 Merged PR 888: #2242 #2243 Goods-In-List Display BuyerNumber and Implemented Routing to Details
#2242 #2243 Goods-In-List Display BuyerNumber and Implemented Routing to Details
2021-09-30 14:36:44 +00:00
Lorenz Hilpert
f35b83368d #2247 UNKNOWN Format 2021-09-30 16:33:18 +02:00
Lorenz Hilpert
00fb992f23 #2247 UNKNOWN SVG 2021-09-30 16:03:19 +02:00
Andreas Schickinger
fec1f1ef43 Merge branch 'feature/signalr' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into feature/signalr 2021-09-29 17:36:32 +02:00
Andreas Schickinger
83c36aff02 #2109 Notification Popup Scrollverhalten angepasst 2021-09-29 17:36:05 +02:00
Nino Righi
5f477f2665 Merged PR 885: #2238 TK Disable Edit Button for Tasks in the future
#2238 TK Disable Edit Button for Tasks in the future
2021-09-29 15:06:32 +00:00
Andreas Schickinger
ca74eea880 Merged PR 886: #2237 WE Coveranzeige Navigation
#2237 WE Coveranzeige Navigation

Related work items: #2237
2021-09-29 14:55:47 +00:00
Andreas Schickinger
5808cbd0d9 Merged PR 887: #2240 Reorder bugfix wenn es keine StoreAvailabilities gibt
#2240 Reorder bugfix wenn es keine StoreAvailabilities gibt

Related work items: #2240
2021-09-29 14:55:01 +00:00
Lorenz Hilpert
50f9cb7405 Notifications ShareReplay BufferSize = 1 2021-09-29 16:53:34 +02:00
Nino Righi
b9e28dfdcd Merged PR 883: #2235 WE WA History Updated Headline
#2235 WE WA History Updated Headline
2021-09-28 15:06:21 +00:00
Nino Righi
288f2fc920 Merged PR 884: #2236 WE, WA Result lists, added Scroll Arrow and Fixed Spacer Gap
#2236 WE, WA Result lists, added Scroll Arrow and Fixed Spacer Gap
2021-09-28 15:06:01 +00:00
Andreas Schickinger
1d42a2cf6c Merge branch 'feature/signalr' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into feature/signalr 2021-09-28 17:03:56 +02:00
Andreas Schickinger
4fda2a4770 #2109 Reservieren Popup 2021-09-28 17:02:21 +02:00
Nino Righi
39169b338a Merged PR 882: #2193 Goods In added Header to cleanup, list, reservations and result list
#2193 Goods In added Header to cleanup, list, reservations and result list
2021-09-27 15:39:06 +00:00
Nino Righi
d67a05b71d Merged PR 880: #2163 WE Wareneingangsliste Handlungsanweisung
#2163 WE Wareneingangsliste Handlungsanweisung
2021-09-27 13:27:19 +00:00
Nino Righi
cdcf90c4c3 Merged PR 881: #2205 Reservations Empty List Updated Message
#2205 Reservations Empty List Updated Message
2021-09-27 13:26:03 +00:00
Lorenz Hilpert
9fef39924e Glocke Styling 2021-09-27 15:20:25 +02:00
Lorenz Hilpert
2f1584436a Notifications caching + DTOs 2021-09-27 14:06:42 +02:00
Lorenz Hilpert
5041be7831 #2108 - Notifications Glocke 2021-09-27 13:36:55 +02:00
Lorenz Hilpert
df19fc5ace Hub Configs 2021-09-24 18:33:56 +02:00
Lorenz Hilpert
9ce527aa3b Added SignalR lib and created Notifications Hub 2021-09-24 18:27:29 +02:00
Lorenz Hilpert
ac27bb1fde Merge branch 'release/1.5' into develop 2021-09-24 16:22:15 +02:00
Lorenz Hilpert
d311dab698 #2227 - error dialog + abgeholt und Lieferschein drucken fix 2021-09-24 16:21:40 +02:00
Lorenz Hilpert
5ab8c2b4f5 #2231 zubuchen aktiv wenn readyforpickup das heutige datum ist 2021-09-24 10:41:40 +02:00
Lorenz Hilpert
3729e81005 #2214 - CTA Zur Bestellpostensuche 2021-09-23 18:06:59 +02:00
Lorenz Hilpert
c3d0ead801 Merge branch 'develop' into release/1.5 2021-09-23 17:33:29 +02:00
Andreas Schickinger
2658ef19a5 Merged PR 878: #2230 WE Meldenummern aus Zwischenablage einfügen - Speichern Button enabled
#2230 WE Meldenummern aus Zwischenablage einfügen - Speichern Button enabled

Related work items: #2230
2021-09-23 15:32:36 +00:00
Nino Righi
34e66e6a49 Merged PR 879: #2218 WE, WA Details Special Comment ipad color fix
#2218 WE, WA Details Special Comment ipad color fix
2021-09-23 15:32:08 +00:00
Lorenz Hilpert
e9881fa9c5 #2231 Zubuchen auf Abholfachnummer von abgeholten Bestellposten 2021-09-23 17:31:27 +02:00
Andreas Schickinger
da92de1990 Merged PR 873: #2227 AHF Status Lieferantenbestellung ausführen umbenannt
#2227 AHF Status Lieferantenbestellung ausführen umbenannt

Related work items: #2227
2021-09-23 13:53:55 +00:00
Nino Righi
1e2b527a80 Merged PR 874: #2223 WE Filter estimatedShippingDate queryParams Fix
#2223 WE Filter estimatedShippingDate queryParams Fix
2021-09-23 13:53:18 +00:00
Andreas Schickinger
7b71c0e343 Merged PR 875: #2228 ErrorModalComponent und ErrorHandling in AHF
#2228 ErrorModalComponent und ErrorHandling in AHF

Related work items: #2228
2021-09-23 13:52:29 +00:00
Nino Righi
658e64cbbc Merged PR 876: #2229 WE WA Display Message if Result List is Empty
#2229 WE WA Display Message if Result List is Empty
2021-09-23 13:51:59 +00:00
Nino Righi
eabf8838c7 Merged PR 877: #2216 WE Reorder PopUp Disabled Horizontal Scrolling
#2216 WE Reorder PopUp Disabled Horizontal Scrolling
2021-09-23 13:51:31 +00:00
Lorenz Hilpert
d3d4ef5e4d Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-09-23 15:50:57 +02:00
Lorenz Hilpert
8239e553e7 #2190 keine Positionen auf der Remiliste 2021-09-23 15:50:25 +02:00
Lorenz Hilpert
83a24045be #2219 Styling Bestellpostendetailseite 2021-09-23 14:12:02 +02:00
Lorenz Hilpert
54b87db9c6 #2217 WE - Panel Size 2021-09-23 13:47:09 +02:00
Andreas Schickinger
4961e580c5 Merged PR 871: #1662 TK gelöschte Beiträge
#1662 TK gelöschte Beiträge

Related work items: #1662
2021-09-23 09:10:45 +00:00
Lorenz Hilpert
a07be1ffd4 Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-09-22 17:51:26 +02:00
Nino Righi
7c10dde089 Merged PR 872: #2226 WE Reorder Pop Up Routing Fix if Modal Gets Closed without Action
#2226 WE Reorder Pop Up Routing Fix if Modal Gets Closed without Action
2021-09-22 15:41:34 +00:00
Nino Righi
04f74b6628 Merged PR 870: #1860 Pipe Replace all Occurences and make it case-insensitive
#1860 Pipe Replace all Occurences and make it case-insensitive
2021-09-22 15:39:02 +00:00
Nino Righi
898374cdeb Merged PR 869: #2209 TK Ongoing Tasks Implementation
#2209 TK Ongoing Tasks Implementation
2021-09-22 15:38:36 +00:00
Nino Righi
0db8688f19 Merged PR 868: #2208 WE Goods In List Empty List Page
#2208 WE Goods In List Empty List Page
2021-09-22 15:37:03 +00:00
Lorenz Hilpert
286024739f Merge branch 'develop' of https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend into develop 2021-09-22 17:36:06 +02:00
Lorenz Hilpert
771fb802ec #2103 Warenbegleitschein auf dem Desktop eröffnen 2021-09-22 17:35:56 +02:00
Lorenz Hilpert
9e34b35888 Merge branch 'develop' into release/1.5 2021-09-22 15:10:51 +02:00
Lorenz Hilpert
08a2abb773 @swagger-eis update 2021-09-22 14:41:35 +02:00
Nino Righi
dd904a863e Merged PR 867: #1860 TK Display Category Replace String
#1860 TK Display Category Replace String
2021-09-22 09:35:29 +00:00
Nino Righi
15f5aa7d10 Merged PR 858: #2204 WE Reorder Modal Breadcrumb Fix and Display Correct Item after Action C...
#2204 WE Reorder Modal Breadcrumb Fix and Display Correct Item after Action Click
2021-09-22 09:34:22 +00:00
Lorenz Hilpert
647f5a06be UI Fix - Icon Format ausblenden wenn nicht verfügabr 2021-09-22 11:25:37 +02:00
Lorenz Hilpert
f501bab5d2 #2221 Detailansicht wird nicht geladen wenn Bestellnummer (slash) enthält 2021-09-22 11:21:43 +02:00
Andreas Schickinger
19539da8aa Merged PR 861: #2211 Reservieren in andere Filiale - Stockabfrage mit Branch
#2211 Reservieren in andere Filiale - Stockabfrage mit Branch

Related work items: #2211
2021-09-21 15:10:36 +00:00
Nino Righi
33173f88f3 Merged PR 862: #1898 Fade Sundays in calendar mode month
#1898 Fade Sundays in calendar mode month
2021-09-21 15:09:34 +00:00
Andreas Schickinger
a75febfeed Merged PR 863: #1661 TK Updatenotiz im Popup anzeigen
#1661 TK Updatenotiz im Popup anzeigen

Related work items: #1661
2021-09-21 15:08:58 +00:00
Andreas Schickinger
d786adb604 Merged PR 864: #1660 TK Updatenotiz Icon in der Liste anzeigen
#1660 TK Updatenotiz Icon in der Liste anzeigen

Related work items: #1660
2021-09-21 15:08:26 +00:00
Andreas Schickinger
96e147d26c Merged PR 865: #2213 Wareneingangsliste Vorname Nachname Reihenfolge
#2213 Wareneingangsliste Vorname Nachname Reihenfolge

Related work items: #2213
2021-09-21 15:08:01 +00:00
Andreas Schickinger
1e66a624ef Merged PR 860: #1898 TK Änderungen in der Kalenderansicht
#1898 TK Änderungen in der Kalenderansicht

Related work items: #1898
2021-09-21 10:21:45 +00:00
Nino Righi
9bc93396d4 Merged PR 859: #2205 Reservations Implemented Notification for Empty Result List
#2205 Reservations Implemented Notification for Empty Result List
2021-09-20 15:30:18 +00:00
Andreas Schickinger
af307b7691 Merged PR 854: #1861 TK - Vergrößerung Teaserbild bei Klick
#1861 TK - Vergrößerung Teaserbild bei Klick

Related work items: #1861
2021-09-20 14:17:01 +00:00
Andreas Schickinger
65c9539e80 Merged PR 857: #2203 Mengendropdown maximal Werte
#2203 Mengendropdown maximal Werte

Related work items: #2203
2021-09-20 14:15:34 +00:00
Nino Righi
16ca761e3d Merged PR 855: #2201 WA Result List Print Shipping Note Fix and Code Improvements inside Act...
#2201 WA Result List Print Shipping Note Fix and Code Improvements inside Action Handlers
2021-09-20 12:44:59 +00:00
Andreas Schickinger
6e9c5a4300 Merged PR 856: #1860 TK Anzeige Abteilung
#1860 TK Anzeige Abteilung

Related work items: #1860
2021-09-20 12:44:07 +00:00
Lorenz Hilpert
7c2b556b0b Update Minor Version 4 => 5 2021-09-20 12:04:24 +02:00
Lorenz Hilpert
7920c8acd1 Merge branch 'release/1.4' into develop 2021-09-20 12:02:05 +02:00
Lorenz Hilpert
4e8b5557fc Navigation auf Artikelsuche => merge conflict behoben 2021-09-20 12:01:40 +02:00
Nino Righi
f6da92ee92 Merged PR 853: #2195 AHF OrderAtSupplier
#2195 AHF OrderAtSupplier
2021-09-17 16:30:00 +00:00
Nino Righi
3482b68f29 Merged PR 852: #2199 WE Reorder Modal Refresh Details
#2199 WE Reorder Modal Refresh Details
2021-09-17 14:35:12 +00:00
Nino Righi
e907784528 Merged PR 851: #2197 Reservations Routing from Details back to Reservation List after Action...
#2197 Reservations Routing from Details back to Reservation List after Action arrived and print
2021-09-17 14:18:18 +00:00
Nino Righi
26dc615a8c Merged PR 850: #2198 Removed edit branch CTA inside Checkout Review
#2198 Removed edit branch CTA inside Checkout Review
2021-09-17 14:17:24 +00:00
Nino Righi
aef54b9f83 Merged PR 849: #2196 Reservieren InStock Loading Spinner and Styling
#2196 Reservieren InStock Loading Spinner and Styling
2021-09-17 12:14:35 +00:00
Nino Righi
f0a4006ef0 Merged PR 848: Merge Release 1.4 into Develop Branch
Merge Release 1.4 into Develop Branch
2021-09-17 10:35:19 +00:00
Nino Righi
ab93bccb00 Merge Release 1.4 into Develop Branch 2021-09-17 12:11:50 +02:00
Nino Righi
20c95a8a26 Merged PR 846: #2189 Action Reorder Modal Implementation
#2189 Action Reorder Modal Implementation
2021-09-16 16:00:29 +00:00
Andreas Schickinger
4adb5f074e Merged PR 844: #2186 Filter zurücksetzen, wenn URL ohne Parameter aufgerufen wird (Menü Klick)
#2186 Filter zurücksetzen, wenn URL ohne Parameter aufgerufen wird (Menü Klick)

Related work items: #2186
2021-09-16 15:55:37 +00:00
Andreas Schickinger
6aa98b8de6 Merged PR 845: #2164 WE Load Spinner für jede Aktion
#2164 WE Load Spinner für jede Aktion

Related work items: #2164
2021-09-16 15:55:23 +00:00
Nino Righi
17214b41d5 Merged PR 843: #2188 Reservieren, AHF, Goods-Out-Results Actions and Select Bullet Improvements
#2188 Reservieren, AHF, Goods-Out-Results Actions and Select Bullet Improvements
2021-09-16 14:11:44 +00:00
Andreas Schickinger
80a75df458 Merged PR 841: #2114 Reservieren in eine andere Filiale
#2114 Reservieren in eine andere Filiale

Related work items: #2114
2021-09-16 13:54:05 +00:00
Andreas Schickinger
d3ac8d3ab5 Merged PR 842: #2192 WE Abholfachbereinigungsliste und Reservieren changeStatus Aufruf fix
#2192 WE Abholfachbereinigungsliste und Reservieren changeStatus Aufruf fix

Related work items: #2192
2021-09-16 13:52:09 +00:00
Nino Righi
9e76cfecfd Merged PR 840: #2179 #2191 WA WE Lieferschein Drucken
#2179 #2191 WA WE Lieferschein Drucken
2021-09-16 12:34:43 +00:00
Nino Righi
f26becc505 Merged PR 839: #2176 #2177 Ipad Styling and Dropdown Scrolling Fix
#2176 #2177 Ipad Styling and Dropdown Scrolling Fix
2021-09-16 07:11:22 +00:00
Andreas Schickinger
09ac9bee7a Merged PR 838: #2169 Bugfix bei der Bestandsabfrage im Fenster weitere Verfügbarkeiten
#2169 Bugfix bei der Bestandsabfrage im Fenster weitere Verfügbarkeiten

Related work items: #2169
2021-09-15 16:13:08 +00:00
Andreas Schickinger
e728860dd4 Merged PR 837: #2169 PDP Weitere Verfügbarkeiten Ladeverhalten angepasst
#2169 PDP Weitere Verfügbarkeiten Ladeverhalten angepasst

Related work items: #2169
2021-09-15 14:26:27 +00:00
Nino Righi
6c52fcd555 Merged PR 836: #2161 Ui Scroll Container Implementation
#2161 Ui Scroll Container Implementation
2021-09-15 11:35:43 +00:00
Andreas Schickinger
7ad7177f89 Merged PR 834: #2174 WE, WA Primärfilter beibehalten
#2174 WE, WA Primärfilter beibehalten

Related work items: #2174
2021-09-15 11:10:34 +00:00
Andreas Schickinger
870b60320f Merged PR 835: #2185 WE Zubuchen Button falscher CompartmentCode
#2185 WE Zubuchen Button falscher CompartmentCode

Related work items: #2185
2021-09-15 11:05:56 +00:00
Andreas Schickinger
df3340afef Merged PR 833: #2171 Breadcrumb anhand des geklickten Items erstellen, anstatt des ersten
#2171 Breadcrumb anhand des geklickten Items erstellen, anstatt des ersten

Related work items: #2171
2021-09-15 11:05:18 +00:00
Andreas Schickinger
b8e409e92b Merged PR 832: #2175 WE Reservieren Refresh fix
#2175 WE Reservieren Refresh fix

Related work items: #2175
2021-09-15 11:03:34 +00:00
Andreas Schickinger
0fa8f36144 Merged PR 831: #2173 Quantity Dropdown Breite und "springen" angepasst
#2173 Quantity Dropdown Breite und "springen" angepasst

Related work items: #2173
2021-09-14 11:41:49 +00:00
Andreas Schickinger
3cdec75079 Merged PR 830: #2172 WE Alle auswählen entfernen
#2172 WE Alle auswählen entfernen

Related work items: #2172
2021-09-14 11:40:38 +00:00
Andreas Schickinger
6d4373ae14 Merged PR 829: #2170 Wareneingang Kartenhöhe auf 60px angepasst
#2170 Wareneingang Kartenhöhe auf 60px angepasst

Related work items: #2170
2021-09-14 11:38:49 +00:00
Nino Righi
0883012a67 Merged PR 828: #2166 Update Remi and Cat Swagger, Domain Services and Reservation Result List
#2166 Update Remi and Cat Swagger, Domain Services and Reservation Result List
2021-09-14 07:29:07 +00:00
Andreas Schickinger
c4a5f21869 Merged PR 826: #2101 Abholfbachbereinigungsliste keine Posten Anzeige
#2101 Abholfbachbereinigungsliste keine Posten Anzeige

Related work items: #2101
2021-09-13 16:32:40 +00:00
Andreas Schickinger
da8bcffd0b Merged PR 825: #2098 Wareneingangsliste Meldetext ohne Meldenummer
#2098 Wareneingangsliste Meldetext ohne Meldenummer

Related work items: #2098
2021-09-13 16:28:16 +00:00
Andreas Schickinger
bf53c30d24 Merged PR 827: #2165 WA Teilabholung fix
#2165 WA Teilabholung fix

Related work items: #2165
2021-09-13 16:24:34 +00:00
Nino Righi
fe1c59607f Merged PR 824: #2111 #2160 Wareneingang Reservieren
#2111 #2160 Wareneingang Reservieren
2021-09-13 09:32:38 +00:00
Andreas Schickinger
5d0915ffd6 Merged PR 823: #2100 Abholfachbereinigungsliste Fixes
#2100 Abholfachbereinigungsliste Fixes

Related work items: #2100
2021-09-09 15:38:53 +00:00
Andreas Schickinger
061b962359 Merged PR 820: #2100 Abholfachbereinigungsliste
#2100 Abholfachbereinigungsliste

Related work items: #2100
2021-09-09 15:04:26 +00:00
Nino Righi
d627a263c3 Merged PR 818: #2152 WE WA Search Main Implemented Scan Provider and Fixed Styling inside Re...
#2152 WE WA Search Main Implemented Scan Provider and Fixed Styling inside Result List
2021-09-09 08:26:54 +00:00
Andreas Schickinger
590407d04a Merged PR 814: #2148 Wareneingangsliste Anpassungen
Related work items: #2148
2021-09-08 15:27:17 +00:00
Nino Righi
236d81de15 Merged PR 816: #2150 #2151 WA WE Implemented Loading Spinner and Deactivation Logic, Changed...
#2150 #2151 WA WE Implemented Loading Spinner and Deactivation Logic, Changed Wording for Datepicker
2021-09-08 15:14:21 +00:00
Andreas Schickinger
8c3e3ed309 Merged PR 815: #2149 WE Nachbestellen Popup Anpassungen
#2149 WE Nachbestellen Popup Anpassungen

Related work items: #2149
2021-09-08 14:35:08 +00:00
Nino Righi
7cf8201b48 Merged PR 811: #2147 WA Fix Wording for fetched CTA inside results
#2147 WA Fix Wording for fetched CTA inside results
2021-09-08 11:37:52 +00:00
Andreas Schickinger
b34f7ad5f0 Merged PR 813: #2146 Wareneingangsliste veraltete Refresh Logik entfernt und Test fixes
#2146 Wareneingangsliste veraltete Refresh Logik entfernt und Test fixes

Related work items: #2146
2021-09-07 15:31:51 +00:00
Nino Righi
850743e2ee Merged PR 812: #2126 WE History changed API Request
#2126 WE History changed API Request
2021-09-07 15:07:42 +00:00
Andreas Schickinger
e46c6f258a Merged PR 810: OMS API aktualisiert
OMS API aktualisiert
2021-09-07 13:50:40 +00:00
Andreas Schickinger
89cc11d9c5 Merged PR 809: #2143, #2144 Nachbestellen Filialbestand, ErrorHandling und Test fixes
#2143, #2144 Nachbestellen Filialbestand, ErrorHandling und Test fixes

Related work items: #2143, #2144
2021-09-07 13:50:21 +00:00
Nino Righi
355be3bddb Merged PR 808: #2127 WE Navigation to Goods In Landing Page after Action Arrived got executed
#2127 WE Navigation to Goods In Landing Page after Action Arrived got executed
2021-09-07 13:46:38 +00:00
Nino Righi
2b500784c4 Merged PR 806: Merge Wareneingang into Develop
Merge Wareneingang into Develop

Related work items: #1830, #1842, #1843, #2086, #2141
2021-09-06 15:04:18 +00:00
Andreas Schickinger
79a62b4db9 Merged PR 803: #2120 Dashboard Coveranzeige scrollbar
#2120 Dashboard Coveranzeige scrollbar

Related work items: #2120
2021-09-06 13:57:30 +00:00
Lorenz Hilpert
f19df87ba0 #2070 WK Bestellung zur Abholung klappt nicht - Online 2021-08-25 14:53:40 +02:00
3814 changed files with 70724 additions and 96757 deletions

1
.gitignore vendored
View File

@@ -34,6 +34,7 @@ speed-measure-plugin.json
/.sass-cache
/connect.lock
/coverage
/testresults
/libpeerconnection.log
npm-debug.log
yarn-error.log

4
.npmrc
View File

@@ -1,3 +1 @@
@isa:registry=https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/
@cmf:registry=https://pkgs.dev.azure.com/hugendubel/_packaging/hugendubel%40Local/npm/registry/
always-auth=true
@paragondata:registry=https://npm.pkg.github.com

View File

@@ -3,7 +3,6 @@
"johnpapa.angular2",
"esbenp.prettier-vscode",
"angular.ng-template",
"ms-vscode.vscode-typescript-tslint-plugin",
"eg2.vscode-npm-script"
]
}
}

View File

@@ -1,5 +1,5 @@
#stage 1
FROM node:14 as node
FROM node:14 as base
ARG IS_PRODUCTION=false
ARG SEMVERSION=1.0.0
ARG BuildUniqueID
@@ -11,9 +11,19 @@ RUN npm version ${SEMVERSION}
RUN npm install --always-auth=false
RUN if [ "${IS_PRODUCTION}" = "true" ] ; then npm run-script build-prod ; else npm run-script build ; fi
# stage 2
FROM nginx:alpine
# stage final
FROM nginx:alpine as publish
ARG BuildUniqueID
LABEL build.uniqueid="${BuildUniqueID:-1}"
COPY --from=node /app/dist/sales /usr/share/nginx/html
COPY --from=node /app/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=base /app/dist/isa-app /usr/share/nginx/html
COPY --from=base /app/nginx.conf /etc/nginx/conf.d/default.conf
# stage npm test
FROM base as test
ARG BuildUniqueID
LABEL build.uniqueid="${BuildUniqueID:-1}"
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -q -O /tmp/chrome.deb && apt update && apt install -y /tmp/chrome.deb
# ignore exitcode, sonst gibts keinen container
RUN npm test || true
ENTRYPOINT [ "/bin/sleep", "60000" ]

View File

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
# Scan
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
## Code scaffolding
Run `ng generate component component-name --project scan` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project scan`.
> Note: Don't forget to add `--project scan` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build scan` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build scan`, go to the dist folder `cd dist/scan` and run `npm publish`.
## Running unit tests
Run `ng test scan` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.

View File

@@ -0,0 +1,41 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true, // removes the duplicated traces
},
coverageReporter: {
dir: require('path').join(__dirname, '../../../coverage/adapter/scan'),
subdir: '.',
reporters: [{ type: 'html' }, { type: 'text-summary' }],
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true,
});
};

View File

@@ -0,0 +1,7 @@
{
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../../dist/adapter/scan",
"lib": {
"entryFile": "src/public-api.ts"
}
}

View File

@@ -0,0 +1,11 @@
{
"name": "@adapter/scan",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^12.2.0",
"@angular/core": "^12.2.0"
},
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,46 @@
import { Injectable } from '@angular/core';
import { PromptModalData, UiModalService, UiPromptModalComponent } from '@ui/modal';
import { Observable } from 'rxjs';
import { ScanAdapter } from './scan-adapter';
@Injectable()
export class DevScanAdapter implements ScanAdapter {
constructor(private _modal: UiModalService) {}
getName(): string {
return 'Dev Scanner';
}
isPrimary(): boolean {
return true;
}
isReady(): boolean {
return true;
}
scan(): Observable<string> {
return new Observable((observer) => {
const modalRef = this._modal.open({
content: UiPromptModalComponent,
title: 'Scannen',
data: {
message: 'Diese Eingabemaske dient nur zu Entwicklungs und Testzwecken.',
placeholder: 'Scan Code',
confirmText: 'weiter',
cancelText: 'abbrechen',
} as PromptModalData,
});
const sub = modalRef.afterClosed$.subscribe((result) => {
observer.next(result.data);
observer.complete();
});
return () => {
modalRef.close();
sub.unsubscribe();
};
});
}
}

View File

@@ -0,0 +1,32 @@
import { Injectable } from '@angular/core';
import { NativeContainerService } from 'native-container';
import { Observable } from 'rxjs';
import { filter, map, take } from 'rxjs/operators';
import { ScanAdapter } from './scan-adapter';
@Injectable()
export class NativeScanAdapter implements ScanAdapter {
constructor(private readonly nativeContainerService: NativeContainerService) {}
getName(): string {
return 'Native Scanner';
}
isPrimary(): boolean {
return true;
}
isReady(): boolean {
// TODO: Fix Login Keycard Dauerschleife
return this.nativeContainerService.isUiWebview().isNative || this.nativeContainerService.isIpadMini6();
// return false;
}
scan(): Observable<string> {
return this.nativeContainerService.openScanner('scanBook').pipe(
filter((result) => result.status === 'SUCCESS'),
map((result) => result.data),
take(1)
);
}
}

View File

@@ -0,0 +1,11 @@
import { Observable } from 'rxjs';
export interface ScanAdapter {
getName(): string;
isPrimary(): boolean;
isReady(): boolean;
scan(): Observable<string>;
}

View File

@@ -0,0 +1,16 @@
import { NgModule } from '@angular/core';
import { DevScanAdapter } from './dev.scan-adapter';
import { NativeScanAdapter } from './native.scan-adapter';
import { SCAN_ADAPTER } from './tokens';
@NgModule({})
export class ScanAdapterModule {
static forRoot(dev?: boolean) {
return {
ngModule: ScanAdapterModule,
providers: [{ provide: SCAN_ADAPTER, useClass: NativeScanAdapter, multi: true }],
// Use for testing:
// providers: [{ provide: SCAN_ADAPTER, useClass: dev ? DevScanAdapter : NativeScanAdapter, multi: true }],
};
}
}

View File

@@ -0,0 +1,30 @@
import { Inject, Injectable } from '@angular/core';
import { ScanAdapter } from './scan-adapter';
import { SCAN_ADAPTER } from './tokens';
@Injectable({
providedIn: 'root',
})
export class ScanAdapterService {
constructor(@Inject(SCAN_ADAPTER) private readonly scanAdapters: ScanAdapter[]) {}
scanners() {
return this.scanAdapters.filter((adapter) => adapter.isReady());
}
scanner() {
return this.scanners().find((scanner) => scanner.isPrimary()) || this.scanners().find(() => true);
}
isReady() {
return this.scanAdapters.some((adapter) => adapter.isReady());
}
scan() {
const primaryScanner = this.scanner();
if (primaryScanner) {
return primaryScanner.scan();
}
return null;
}
}

View File

@@ -0,0 +1,4 @@
import { InjectionToken } from '@angular/core';
import { ScanAdapter } from './scan-adapter';
export const SCAN_ADAPTER = new InjectionToken<ScanAdapter>('SCAN_ADAPTER');

View File

@@ -0,0 +1,6 @@
/*
* Public API Surface of scan
*/
export * from './lib/scan.service';
export * from './lib/scan.module';

View File

@@ -0,0 +1,25 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(
path: string,
deep?: boolean,
filter?: RegExp
): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { teardown: { destroyAfterEach: true } });
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

View File

@@ -0,0 +1,20 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}

View File

@@ -0,0 +1,10 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.lib.json",
"compilerOptions": {
"declarationMap": false
},
"angularCompilerOptions": {
"compilationMode": "partial"
}
}

View File

@@ -0,0 +1,17 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

View File

@@ -1,11 +1,12 @@
import { Inject, Injectable } from '@angular/core';
import { Config } from '@core/config';
import { CDN_PRODUCT_IMAGE } from './tokens';
@Injectable({
providedIn: 'root',
})
export class ProductImageService {
constructor(@Inject(CDN_PRODUCT_IMAGE) private imageUrl: string) {}
constructor(private readonly _config: Config) {}
getImageUrl({
imageId,
@@ -18,6 +19,6 @@ export class ProductImageService {
height?: number;
showDummy?: boolean;
}): string {
return `${this.imageUrl}/${imageId}_${width}x${height}.jpg?showDummy=${showDummy}`;
return `${this._config.get('@cdn/product-image.url')}/${imageId}_${width}x${height}.jpg?showDummy=${showDummy}`;
}
}

View File

@@ -4,4 +4,5 @@
export * from './lib/product-image.service';
export * from './lib/product-image.module';
export * from './lib/product-image.pipe';
export * from './lib/tokens';

View File

@@ -1,7 +1,7 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';

View File

@@ -1,5 +1,8 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
const customLaunchers = require('../../../karma/custom-launchers');
const junitReporter = require('../../../karma/junit-reporter')('core-application');
const coverageReporter = require('../../../karma/coverage-reporter')('core-application');
module.exports = function (config) {
config.set({
@@ -9,23 +12,31 @@ module.exports = function (config) {
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('karma-coverage'),
require('karma-junit-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, '../../../coverage/core/application'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true,
jasmineHtmlReporter: {
suppressAll: true, // removes the duplicated traces
},
coverageReporter,
junitReporter,
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
customLaunchers,
singleRun: false,
restartOnFileChange: true,
});

View File

@@ -1,4 +1,6 @@
import { NgModule, ModuleWithProviders } from '@angular/core';
import { StoreModule } from '@ngrx/store';
import { applicationReducer } from './store';
import { ApplicationService } from './application.service';
@NgModule({
@@ -9,8 +11,13 @@ import { ApplicationService } from './application.service';
export class CoreApplicationModule {
static forRoot(): ModuleWithProviders<CoreApplicationModule> {
return {
ngModule: CoreApplicationModule,
providers: [ApplicationService],
ngModule: RootCoreApplicationModule,
};
}
}
@NgModule({
imports: [StoreModule.forFeature('core-application', applicationReducer)],
providers: [ApplicationService],
})
export class RootCoreApplicationModule {}

View File

@@ -1,32 +1,233 @@
import { TestBed } from '@angular/core/testing';
import { isObservable } from 'rxjs';
import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator';
import { Store } from '@ngrx/store';
import { Observable, of } from 'rxjs';
import { first } from 'rxjs/operators';
import { ApplicationProcess } from './defs';
import { ApplicationService } from './application.service';
import * as actions from './store/application.actions';
describe('ApplicationService', () => {
let service: ApplicationService;
let spectator: SpectatorService<ApplicationService>;
let store: SpyObject<Store>;
const createService = createServiceFactory({
service: ApplicationService,
mocks: [Store],
});
beforeEach(() => {
TestBed.configureTestingModule({
providers: [ApplicationService],
});
service = TestBed.inject(ApplicationService);
spectator = createService({});
store = spectator.inject(Store);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
describe('activatedProcessId', () => {
it('should return the processId', () => {
service.setActivatedProcessId(100);
expect(service.activatedProcessId).toEqual(100);
});
expect(spectator.service).toBeTruthy();
});
describe('activatedProcessId$', () => {
it('should return an observable', () => {
expect(isObservable(service.activatedProcessId$)).toBeTruthy();
expect(spectator.service.activatedProcessId$).toBeInstanceOf(Observable);
});
});
describe('activatedProcessId', () => {
it('should return the process id as a number', () => {
spyOnProperty(spectator.service['activatedProcessIdSubject'] as any, 'value').and.returnValue(2);
expect(spectator.service.activatedProcessId).toBe(2);
});
});
describe('getProcesses$()', () => {
it('should call select on store and return all selected processes', async () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang', type: 'cart', section: 'customer', data: { count: 1 } },
{ id: 2, name: 'Vorgang', type: 'task-calendar', section: 'branch' },
];
store.select.and.returnValue(of(processes));
const result = await spectator.service.getProcesses$().pipe(first()).toPromise();
expect(result).toEqual(processes);
expect(store.select).toHaveBeenCalled();
});
it('should call select on store and return all section customer processes', async () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang', type: 'cart', section: 'customer', data: { count: 1 } },
{ id: 2, name: 'Vorgang', type: 'task-calendar', section: 'branch' },
];
store.select.and.returnValue(of(processes));
const result = await spectator.service.getProcesses$('customer').pipe(first()).toPromise();
expect(result).toEqual([processes[0]]);
expect(store.select).toHaveBeenCalled();
});
it('should call select on store and return all section branch processes', async () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang', type: 'cart', section: 'customer', data: { count: 1 } },
{ id: 2, name: 'Vorgang', type: 'task-calendar', section: 'branch' },
];
store.select.and.returnValue(of(processes));
const result = await spectator.service.getProcesses$('branch').pipe(first()).toPromise();
expect(result).toEqual([processes[1]]);
expect(store.select).toHaveBeenCalled();
});
});
describe('getProcessById$()', () => {
it('should return the process by id', async () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang 1', section: 'customer' },
{ id: 2, name: 'Vorgang 2', section: 'customer' },
];
spyOn(spectator.service, 'getProcesses$').and.returnValue(of(processes));
const process = await spectator.service.getProcessById$(1).toPromise();
expect(process.id).toBe(1);
});
});
describe('getSection$()', () => {
it('should return the selected section branch', async () => {
const section = 'branch';
store.select.and.returnValue(of(section));
const result = await spectator.service.getSection$().pipe(first()).toPromise();
expect(result).toEqual(section);
expect(store.select).toHaveBeenCalled();
});
});
describe('getActivatedProcessId$', () => {
it('should return the current selected activated process id', async () => {
const activatedProcessId = 2;
store.select.and.returnValue(of({ id: activatedProcessId }));
const result = await spectator.service.getActivatedProcessId$().pipe(first()).toPromise();
expect(result).toEqual(activatedProcessId);
expect(store.select).toHaveBeenCalled();
});
});
describe('activateProcess()', () => {
it('should dispatch action setActivatedProcess with argument activatedProcessId and action type', () => {
const activatedProcessId = 2;
spectator.service.activateProcess(activatedProcessId);
expect(store.dispatch).toHaveBeenCalledWith({ activatedProcessId, type: actions.setActivatedProcess.type });
});
});
describe('removeProcess()', () => {
it('should dispatch action removeProcess with argument processId and action type', () => {
const processId = 2;
spectator.service.removeProcess(processId);
expect(store.dispatch).toHaveBeenCalledWith({ processId, type: actions.removeProcess.type });
});
});
describe('createProcess()', () => {
it('should dispatch action addProcess with process', async () => {
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang 1',
section: 'customer',
type: 'cart',
};
const timestamp = 100;
spyOn(spectator.service as any, '_createTimestamp').and.returnValue(timestamp);
spyOn(spectator.service, 'getProcessById$').and.returnValue(of(undefined));
await spectator.service.createProcess(process);
expect(store.dispatch).toHaveBeenCalledWith({
type: actions.addProcess.type,
process: {
...process,
activated: 0,
created: timestamp,
},
});
});
it('should throw an error if the process id is already existing', async () => {
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang 1',
section: 'customer',
type: 'cart',
};
spyOn(spectator.service, 'getProcessById$').and.returnValue(of(process));
await expectAsync(spectator.service.createProcess(process)).toBeRejectedWithError('Process Id existiert bereits');
});
it('should throw an error if the process id is not a number', async () => {
const process: ApplicationProcess = {
id: undefined,
name: 'Vorgang 1',
section: 'customer',
type: 'cart',
};
spyOn(spectator.service, 'getProcessById$').and.returnValue(of({ id: 5, name: 'Vorgang 2', section: 'customer' }));
await expectAsync(spectator.service.createProcess(process)).toBeRejectedWithError('Process Id nicht gesetzt');
});
});
describe('patchProcess', () => {
it('should dispatch action patchProcess with changes', async () => {
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang 1',
section: 'customer',
type: 'cart',
};
await spectator.service.patchProcess(process.id, process);
expect(store.dispatch).toHaveBeenCalledWith({
type: actions.patchProcess.type,
processId: process.id,
changes: {
...process,
},
});
});
});
describe('setSection()', () => {
it('should dispatch action setSection with argument section and action type', () => {
const section = 'customer';
spectator.service.setSection(section);
expect(store.dispatch).toHaveBeenCalledWith({ section, type: actions.setSection.type });
});
});
describe('getLastActivatedProcessWithSectionAndType()', () => {
it('should return the last activated process by section and type', async () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang 1', section: 'customer', type: 'cart', activated: 100 },
{ id: 2, name: 'Vorgang 2', section: 'customer', type: 'cart', activated: 200 },
{ id: 3, name: 'Vorgang 3', section: 'customer', type: 'goodsOut', activated: 300 },
];
spyOn(spectator.service, 'getProcesses$').and.returnValue(of(processes));
expect(await spectator.service.getLastActivatedProcessWithSectionAndType$('customer', 'cart').pipe(first()).toPromise()).toBe(
processes[1]
);
});
});
describe('getLastActivatedProcessWithSection()', () => {
it('should return the last activated process by section', async () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang 1', section: 'customer', activated: 100 },
{ id: 2, name: 'Vorgang 2', section: 'customer', activated: 200 },
{ id: 3, name: 'Vorgang 3', section: 'customer', activated: 300 },
];
spyOn(spectator.service, 'getProcesses$').and.returnValue(of(processes));
expect(await spectator.service.getLastActivatedProcessWithSection$('customer').pipe(first()).toPromise()).toBe(processes[2]);
});
});
describe('_createTimestamp', () => {
it('should return the current timestamp in ms', () => {
expect(spectator.service['_createTimestamp']()).toBeCloseTo(Date.now());
});
});
});

View File

@@ -1,31 +1,129 @@
import { Injectable } from '@angular/core';
import { Store } from '@ngrx/store';
import { BehaviorSubject } from 'rxjs';
import { processRemoved } from './store';
import { isBoolean, isNumber } from '@utils/common';
import { BehaviorSubject, Observable } from 'rxjs';
import { first, map, switchMap } from 'rxjs/operators';
import { ApplicationProcess } from './defs';
import {
removeProcess,
selectSection,
selectProcesses,
setSection,
addProcess,
setActivatedProcess,
selectActivatedProcess,
patchProcess,
patchProcessData,
} from './store';
@Injectable()
export class ApplicationService {
/** @deprecated */
private activatedProcessIdSubject = new BehaviorSubject<number>(undefined);
/** @deprecated */
get activatedProcessId() {
return this.activatedProcessIdSubject.value;
}
/** @deprecated */
get activatedProcessId$() {
return this.activatedProcessIdSubject.asObservable();
}
constructor(private store: Store) {}
setActivatedProcessId(processId: number) {
if (this.activatedProcessId !== processId) {
this.activatedProcessIdSubject.next(processId);
}
getProcesses$(section?: 'customer' | 'branch') {
const processes$ = this.store.select(selectProcesses);
return processes$.pipe(map((processes) => processes.filter((process) => (section ? process.section === section : true))));
}
getProcessById$(processId: number): Observable<ApplicationProcess> {
return this.getProcesses$().pipe(map((processes) => processes.find((process) => process.id === processId)));
}
getSection$() {
return this.store.select(selectSection);
}
/** @deprecated */
getActivatedProcessId$() {
return this.store.select(selectActivatedProcess).pipe(map((process) => process?.id));
}
activateProcess(activatedProcessId: number) {
this.store.dispatch(setActivatedProcess({ activatedProcessId }));
this.activatedProcessIdSubject.next(activatedProcessId);
}
removeProcess(processId: number) {
this.store.dispatch(processRemoved({ processId }));
this.store.dispatch(removeProcess({ processId }));
}
createProcess() {}
patchProcess(processId: number, changes: Partial<ApplicationProcess>) {
this.store.dispatch(patchProcess({ processId, changes }));
}
patchProcessData(processId: number, data: Record<string, any>) {
this.store.dispatch(patchProcessData({ processId, data }));
}
async createProcess(process: ApplicationProcess) {
const existingProcess = await this.getProcessById$(process?.id).pipe(first()).toPromise();
if (existingProcess?.id === process?.id) {
throw new Error('Process Id existiert bereits');
}
if (!isNumber(process.id)) {
throw new Error('Process Id nicht gesetzt');
}
if (!isBoolean(process.closeable)) {
process.closeable = true;
}
if (!isBoolean(process.confirmClosing)) {
process.confirmClosing = true;
}
process.created = this._createTimestamp();
process.activated = 0;
this.store.dispatch(addProcess({ process }));
}
setSection(section: 'customer' | 'branch') {
this.store.dispatch(setSection({ section }));
}
getLastActivatedProcessWithSectionAndType$(section: 'customer' | 'branch', type: string): Observable<ApplicationProcess> {
return this.getProcesses$(section).pipe(
map((processes) =>
processes
?.filter((process) => process.type === type)
?.reduce((latest, current) => {
if (!latest) {
return current;
}
return latest?.activated > current?.activated ? latest : current;
}, undefined)
)
);
}
getLastActivatedProcessWithSection$(section: 'customer' | 'branch'): Observable<ApplicationProcess> {
return this.getProcesses$(section).pipe(
map((processes) =>
processes?.reduce((latest, current) => {
if (!latest) {
return current;
}
return latest?.activated > current?.activated ? latest : current;
}, undefined)
)
);
}
private _createTimestamp() {
return Date.now();
}
}

View File

@@ -1,5 +1,11 @@
export interface ApplicationProcess {
id: number;
created?: number;
activated?: number;
name: string;
data: { [key: string]: any };
section: 'customer' | 'branch';
type?: string;
data?: { [key: string]: any };
closeable?: boolean;
confirmClosing?: boolean;
}

View File

@@ -1,7 +1,6 @@
// start:ng42.barrel
export * from './application.module';
export * from './application.service';
export * from './process.service';
export * from './defs';
export * from './store';
// end:ng42.barrel

View File

@@ -1,8 +0,0 @@
import { Injectable } from '@angular/core';
@Injectable({ providedIn: 'root' })
export class ProcessService {
constructor() {}
updateName(processId: number, name: string) {}
}

View File

@@ -1,8 +1,16 @@
import { createAction, props } from '@ngrx/store';
import { ApplicationProcess } from '..';
const prefix = '[CORE-APPLICATION]';
/**
* Action nach Entfernung eines Prozesses
*/
export const processRemoved = createAction(`${prefix} Process Removed`, props<{ processId: number }>());
export const setSection = createAction(`${prefix} Set Section`, props<{ section: 'customer' | 'branch' }>());
export const addProcess = createAction(`${prefix} Add Process`, props<{ process: ApplicationProcess }>());
export const removeProcess = createAction(`${prefix} Remove Process`, props<{ processId: number }>());
export const setActivatedProcess = createAction(`${prefix} Set Activated Process`, props<{ activatedProcessId: number }>());
export const patchProcess = createAction(`${prefix} Patch Process`, props<{ processId: number; changes: Partial<ApplicationProcess> }>());
export const patchProcessData = createAction(`${prefix} Patch Process Data`, props<{ processId: number; data: Record<string, any> }>());

View File

@@ -0,0 +1,200 @@
import { INITIAL_APPLICATION_STATE } from './application.state';
import * as actions from './application.actions';
import { applicationReducer } from './application.reducer';
import { ApplicationProcess } from '../defs';
import { ApplicationState } from './application.state';
describe('applicationReducer', () => {
describe('setSection()', () => {
it('should return modified state with section customer', () => {
const initialState = INITIAL_APPLICATION_STATE;
const action = actions.setSection({ section: 'customer' });
const state = applicationReducer(initialState, action);
expect(state).toEqual({
...initialState,
section: 'customer',
});
});
it('should return modified state with section branch', () => {
const initialState = INITIAL_APPLICATION_STATE;
const action = actions.setSection({ section: 'branch' });
const state = applicationReducer(initialState, action);
expect(state).toEqual({
...initialState,
section: 'branch',
});
});
});
describe('addProcess()', () => {
it('should return modified state with new process if no processes are registered in the state', () => {
const initialState = INITIAL_APPLICATION_STATE;
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang',
section: 'customer',
type: 'cart',
data: {},
};
const action = actions.addProcess({ process });
const state = applicationReducer(initialState, action);
expect(state.processes[0]).toEqual(process);
});
});
describe('patchProcess()', () => {
it('should return modified state with updated process when id is found', () => {
const initialState = INITIAL_APPLICATION_STATE;
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang',
section: 'customer',
type: 'cart',
};
const action = actions.patchProcess({ processId: process.id, changes: { ...process, name: 'Test' } });
const state = applicationReducer(
{
...initialState,
processes: [process],
},
action
);
expect(state.processes[0].name).toEqual('Test');
});
it('should return unmodified state when id is not existing', () => {
const initialState = INITIAL_APPLICATION_STATE;
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang',
section: 'customer',
type: 'cart',
};
const action = actions.patchProcess({ processId: process.id, changes: { ...process, id: 2 } });
const state = applicationReducer(
{
...initialState,
processes: [process],
},
action
);
expect(state.processes).toEqual([process]);
});
});
describe('removeProcess()', () => {
it('should return initial state if no processes are registered in the state', () => {
const initialState = INITIAL_APPLICATION_STATE;
const action = actions.removeProcess({ processId: 2 });
const state = applicationReducer(initialState, action);
expect(state).toEqual(initialState);
});
it('should return the unmodified state if processId not found', () => {
const initialState = INITIAL_APPLICATION_STATE;
const modifiedState: ApplicationState = {
...initialState,
section: 'customer',
processes: [
{
id: 1,
name: 'Vorgang',
section: 'customer',
type: 'cart',
},
{
id: 4,
name: 'Vorgang',
section: 'customer',
type: 'goods-out',
},
] as ApplicationProcess[],
};
const action = actions.removeProcess({ processId: 2 });
const state = applicationReducer(modifiedState, action);
expect(state).toEqual(modifiedState);
});
it('should return modified state, after process gets removed', () => {
const initialState = INITIAL_APPLICATION_STATE;
const modifiedState: ApplicationState = {
...initialState,
section: 'customer',
processes: [
{
id: 1,
name: 'Vorgang',
section: 'customer',
type: 'cart',
},
{
id: 2,
name: 'Vorgang',
section: 'customer',
type: 'goods-out',
},
] as ApplicationProcess[],
};
const action = actions.removeProcess({ processId: 2 });
const state = applicationReducer(modifiedState, action);
expect(state.processes).toEqual([
{
id: 1,
name: 'Vorgang',
section: 'customer',
type: 'cart',
},
]);
});
});
describe('setActivatedProcess()', () => {
it('should return modified state with process.activated value', () => {
const process: ApplicationProcess = {
id: 3,
name: 'Vorgang 3',
section: 'customer',
};
const initialState: ApplicationState = {
...INITIAL_APPLICATION_STATE,
processes: [process],
};
const action = actions.setActivatedProcess({ activatedProcessId: 3 });
const state = applicationReducer(initialState, action);
expect(state.processes[0].activated).toBeDefined();
});
it('should return modified state without process.activated value when activatedProcessId doesnt exist', () => {
const process: ApplicationProcess = {
id: 1,
name: 'Vorgang 3',
section: 'customer',
};
const initialState: ApplicationState = {
...INITIAL_APPLICATION_STATE,
processes: [process],
};
const action = actions.setActivatedProcess({ activatedProcessId: 3 });
const state = applicationReducer(initialState, action);
expect(state.processes[0].activated).toBeUndefined();
});
});
});

View File

@@ -0,0 +1,47 @@
import { Action, createReducer, on } from '@ngrx/store';
import { setSection, addProcess, removeProcess, setActivatedProcess, patchProcess, patchProcessData } from './application.actions';
import { ApplicationState, INITIAL_APPLICATION_STATE } from './application.state';
const _applicationReducer = createReducer(
INITIAL_APPLICATION_STATE,
on(setSection, (state, { section }) => ({ ...state, section })),
on(addProcess, (state, { process }) => ({ ...state, processes: [...state.processes, { data: {}, ...process }] })),
on(removeProcess, (state, { processId }) => {
const processes = state?.processes?.filter((process) => process.id !== processId) || [];
return { ...state, processes };
}),
on(setActivatedProcess, (state, { activatedProcessId }) => {
const processes = state.processes.map((process) => {
if (process.id === activatedProcessId) {
return { ...process, activated: Date.now() };
}
return process;
});
return { ...state, processes };
}),
on(patchProcess, (state, { processId, changes }) => {
const processes = state.processes.map((process) => {
if (process.id === processId) {
return { ...process, ...changes, id: processId };
}
return process;
});
return { ...state, processes };
}),
on(patchProcessData, (state, { processId, data }) => {
const processes = state.processes.map((process) => {
if (process.id === processId) {
return { ...process, data: { ...(process.data || {}), ...data } };
}
return process;
});
return { ...state, processes };
})
);
export function applicationReducer(state: ApplicationState, action: Action) {
return _applicationReducer(state, action);
}

View File

@@ -0,0 +1,32 @@
import { ApplicationState } from './application.state';
import { ApplicationProcess } from '../defs';
import * as selectors from './application.selectors';
describe('applicationSelectors', () => {
it('should select the processes', () => {
const processes: ApplicationProcess[] = [{ id: 1, name: 'Vorgang 1', section: 'customer' }];
const state: Partial<ApplicationState> = {
processes,
};
expect(selectors.selectProcesses.projector(state)).toEqual(processes);
});
it('should select the section', () => {
const state: Partial<ApplicationState> = {
section: 'customer',
};
expect(selectors.selectSection.projector(state)).toEqual('customer');
});
it('should select the activatedProcess', () => {
const processes: ApplicationProcess[] = [
{ id: 1, name: 'Vorgang 1', section: 'customer', activated: 100 },
{ id: 2, name: 'Vorgang 2', section: 'customer', activated: 300 },
{ id: 3, name: 'Vorgang 3', section: 'customer', activated: 200 },
];
const state: Partial<ApplicationState> = {
processes,
};
expect(selectors.selectActivatedProcess.projector(state)).toEqual(processes[1]);
});
});

View File

@@ -0,0 +1,16 @@
import { createFeatureSelector, createSelector } from '@ngrx/store';
import { ApplicationState } from './application.state';
export const selectApplicationState = createFeatureSelector<ApplicationState>('core-application');
export const selectSection = createSelector(selectApplicationState, (s) => s.section);
export const selectProcesses = createSelector(selectApplicationState, (s) => s.processes);
export const selectActivatedProcess = createSelector(selectApplicationState, (s) =>
s?.processes?.reduce((process, current) => {
if (!process) {
return current;
}
return process.activated > current.activated ? process : current;
}, undefined)
);

View File

@@ -0,0 +1,11 @@
import { ApplicationProcess } from '../defs';
export interface ApplicationState {
processes: ApplicationProcess[];
section: 'customer' | 'branch';
}
export const INITIAL_APPLICATION_STATE: ApplicationState = {
processes: [],
section: 'customer',
};

View File

@@ -1,3 +1,6 @@
// start:ng42.barrel
export * from './application.actions';
export * from './application.reducer';
export * from './application.selectors';
export * from './application.state';
// end:ng42.barrel

View File

@@ -1,7 +1,7 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';

25
apps/core/auth/README.md Normal file
View File

@@ -0,0 +1,25 @@
# Auth
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
## Code scaffolding
Run `ng generate component component-name --project auth` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project auth`.
> Note: Don't forget to add `--project auth` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build auth` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build auth`, go to the dist folder `cd dist/auth` and run `npm publish`.
## Running unit tests
Run `ng test auth` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.

View File

@@ -0,0 +1,43 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
const customLaunchers = require('../../../karma/custom-launchers');
const junitReporter = require('../../../karma/junit-reporter')('core-auth');
const coverageReporter = require('../../../karma/coverage-reporter')('core-auth');
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('karma-junit-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true, // removes the duplicated traces
},
coverageReporter,
junitReporter,
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
customLaunchers,
singleRun: false,
restartOnFileChange: true,
});
};

View File

@@ -0,0 +1,7 @@
{
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../../dist/core/auth",
"lib": {
"entryFile": "src/public-api.ts"
}
}

View File

@@ -0,0 +1,11 @@
{
"name": "@core/auth",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^12.2.0",
"@angular/core": "^12.2.0"
},
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,17 @@
import { ModuleWithProviders, NgModule } from '@angular/core';
import { AuthService } from './auth.service';
import { OAuthModule } from 'angular-oauth2-oidc';
@NgModule({})
export class AuthModule {
static forRoot(): ModuleWithProviders<AuthModule> {
return {
ngModule: AuthModule,
providers: [
AuthService,
OAuthModule.forRoot({
resourceServer: { sendAccessToken: true },
}).providers,
],
};
}
}

View File

@@ -0,0 +1,151 @@
import { Config } from '@core/config';
import { SpectatorService, createServiceFactory, SpyObject } from '@ngneat/spectator';
import { OAuthService } from 'angular-oauth2-oidc';
import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
import { Observable } from 'rxjs';
import { AuthService } from './auth.service';
describe('AuthService', () => {
let spectator: SpectatorService<AuthService>;
const createService = createServiceFactory({
service: AuthService,
mocks: [Config, OAuthService],
});
let config: SpyObject<Config>;
let oAuthService: SpyObject<OAuthService>;
beforeEach(() => {
spectator = createService();
config = spectator.inject(Config);
oAuthService = spectator.inject(OAuthService);
});
it('should be created', () => {
expect(spectator.service).toBeTruthy();
});
describe('init()', () => {
it('should configure the oAuthService', () => {
config.get.and.returnValue({});
spectator.service.init();
expect(oAuthService.configure).toHaveBeenCalledWith({
redirectUri: window.location.origin,
silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',
useSilentRefresh: true,
});
expect(oAuthService.tokenValidationHandler).toBeInstanceOf(JwksValidationHandler);
expect(oAuthService.setupAutomaticSilentRefresh).toHaveBeenCalled();
});
it('should load the discovery document', async () => {
config.get.and.returnValue({});
oAuthService.loadDiscoveryDocumentAndTryLogin.and.returnValue(Promise.resolve(true));
spyOn(spectator.service['_initialized'], 'next');
await spectator.service.init();
expect(oAuthService.loadDiscoveryDocumentAndTryLogin).toHaveBeenCalled();
expect(spectator.service['_initialized'].next).toHaveBeenCalledWith(true);
});
it('should throw an error if its already initialized', async () => {
spyOn(spectator.service['_initialized'], 'getValue').and.returnValue(true);
await expectAsync(spectator.service.init()).toBeRejectedWithError('AuthService is already initialized');
});
});
describe('isAuthenticated()', () => {
it('should call hasValidIdToken() and return its value', () => {
oAuthService.hasValidIdToken.and.returnValue(true);
expect(spectator.service.isAuthenticated()).toBeTrue();
expect(oAuthService.hasValidIdToken).toHaveBeenCalled();
});
});
describe('getToken()', () => {
it('should call getAccessToken() and return its value', () => {
oAuthService.getAccessToken.and.returnValue('token');
expect(spectator.service.getToken()).toEqual('token');
expect(oAuthService.getAccessToken).toHaveBeenCalled();
});
});
describe('getClaims()', () => {
it('should call getAccessToken() and return its value', () => {
oAuthService.getAccessToken.and.returnValue('token');
const claims = {
claim1: 'value',
claim2: 'value2',
};
spyOn(spectator.service, 'parseJwt').and.returnValue(claims);
expect(spectator.service.getClaims()).toEqual(claims);
expect(spectator.service.parseJwt).toHaveBeenCalledWith('token');
expect(oAuthService.getAccessToken).toHaveBeenCalled();
});
});
describe('getClaimByKey()', () => {
it('should call getClaims() and return its key value', () => {
spyOn(spectator.service, 'getClaims').and.returnValue({
claim1: 'value',
claim2: 'value2',
});
expect(spectator.service.getClaimByKey('claim1')).toEqual('value');
expect(spectator.service.getClaims).toHaveBeenCalled();
});
it('should return null if getClaims() returns null or undefined', () => {
spyOn(spectator.service, 'getClaims').and.returnValue(null);
expect(spectator.service.getClaimByKey('claim1')).toBeNull();
expect(spectator.service.getClaims).toHaveBeenCalled();
});
});
describe('parseJwt()', () => {
it('should return null if the token is null or undefined', () => {
expect(spectator.service.parseJwt(null)).toBeNull();
expect(spectator.service.parseJwt(undefined)).toBeNull();
});
it('should return the value of the key', () => {
const token =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ';
expect(spectator.service.parseJwt(token)).toEqual({
sub: '1234567890',
name: 'John Doe',
admin: true,
});
});
});
describe('login()', () => {
it('should call initLoginFlow()', () => {
spectator.service.login();
expect(oAuthService.initLoginFlow).toHaveBeenCalled();
});
});
describe('logout()', () => {
it('should call revokeTokenAndLogout()', async () => {
await spectator.service.logout();
expect(oAuthService.revokeTokenAndLogout).toHaveBeenCalled();
});
});
describe('getToken()', () => {
it('should return getAccessToken()', () => {
spectator.service.getToken();
expect(oAuthService.getAccessToken).toHaveBeenCalled();
});
});
describe('initialized', () => {
it('should return _initialized as Observable', () => {
spyOn(spectator.service['_initialized'], 'asObservable').and.callThrough();
expect(spectator.service.initialized$).toBeInstanceOf(Observable);
expect(spectator.service['_initialized'].asObservable).toHaveBeenCalled();
});
});
});

View File

@@ -0,0 +1,88 @@
import { Injectable } from '@angular/core';
import { Config } from '@core/config';
import { isNullOrUndefined } from '@utils/common';
import { AuthConfig, OAuthService } from 'angular-oauth2-oidc';
import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class AuthService {
private readonly _initialized = new BehaviorSubject<boolean>(false);
get initialized$() {
return this._initialized.asObservable();
}
constructor(private _config: Config, private readonly _oAuthService: OAuthService) {}
async init() {
if (this._initialized.getValue()) {
throw new Error('AuthService is already initialized');
}
const authConfig: AuthConfig = this._config.get('@core/auth');
authConfig.redirectUri = window.location.origin;
authConfig.silentRefreshRedirectUri = window.location.origin + '/silent-refresh.html';
authConfig.useSilentRefresh = true;
this._oAuthService.configure(authConfig);
this._oAuthService.tokenValidationHandler = new JwksValidationHandler();
this._oAuthService.setupAutomaticSilentRefresh();
try {
await this._oAuthService.loadDiscoveryDocumentAndTryLogin();
} catch (error) {
this.login();
}
this._initialized.next(true);
}
isAuthenticated() {
return this._oAuthService.hasValidIdToken();
}
getToken() {
return this._oAuthService.getAccessToken();
}
getClaims() {
const token = this._oAuthService.getAccessToken();
return this.parseJwt(token);
}
getClaimByKey(key: string) {
const claims = this.getClaims();
if (isNullOrUndefined(claims)) {
return null;
}
return claims[key];
}
parseJwt(token: string) {
if (isNullOrUndefined(token)) {
return null;
}
const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const encoded = window.atob(base64);
return JSON.parse(encoded);
}
login() {
this._oAuthService.initLoginFlow();
}
setKeyCardToken(token: string) {
this._oAuthService.customQueryParams = {
temp_token: token,
};
}
async logout() {
await this._oAuthService.revokeTokenAndLogout();
}
}

View File

@@ -0,0 +1,4 @@
// start:ng42.barrel
export * from './auth.module';
export * from './auth.service';
// end:ng42.barrel

View File

@@ -0,0 +1,5 @@
/*
* Public API Surface of auth
*/
export * from './lib';

View File

@@ -0,0 +1,25 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(
path: string,
deep?: boolean,
filter?: RegExp
): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { teardown: { destroyAfterEach: true } });
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

View File

@@ -0,0 +1,20 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}

View File

@@ -0,0 +1,10 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.lib.json",
"compilerOptions": {
"declarationMap": false
},
"angularCompilerOptions": {
"compilationMode": "partial"
}
}

View File

@@ -0,0 +1,17 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

View File

@@ -3,7 +3,7 @@ import { Store } from '@ngrx/store';
import { getNumberId } from '@utils/id';
import { Observable } from 'rxjs';
import { take } from 'rxjs/operators';
import { first, map, take } from 'rxjs/operators';
import { Breadcrumb } from './defs';
import * as actions from './store/breadcrumb.actions';
@@ -13,6 +13,10 @@ import * as selectors from './store/breadcrumb.selectors';
export class BreadcrumbService {
constructor(private store: Store<any>) {}
getAll$() {
return this.store.select(selectors.selectBreadcrumbs);
}
getByKey$(key: string): Observable<Breadcrumb[]> {
return this.store.select(selectors.selectBreadcrumbsByKey, key);
}
@@ -25,14 +29,32 @@ export class BreadcrumbService {
return this.store.select(selectors.selectBreadcrumbsByKey, key);
}
getLastActivatedBreadcrumbByKey$(key: string | number): Observable<Breadcrumb> {
return this.getBreadcrumbByKey$(key).pipe(
map((crumbs) =>
crumbs.reduce((latest, current) => {
if (!latest) {
return current;
}
return latest.timestamp > current.timestamp ? latest : current;
}, undefined)
)
);
}
addBreadcrumb(breadcrumb: Breadcrumb): Breadcrumb {
const newBreadcrumb: Breadcrumb = { ...breadcrumb, id: getNumberId(), timestamp: Date.now() };
const newBreadcrumb: Breadcrumb = { ...breadcrumb, id: getNumberId(), timestamp: Date.now(), changed: Date.now() };
this.store.dispatch(actions.addBreadcrumb({ breadcrumb: newBreadcrumb }));
return newBreadcrumb;
}
patchBreadcrumb(breadcrumbId: number, changes: Partial<Breadcrumb>) {
this.store.dispatch(actions.updateBreadcrumb({ id: breadcrumbId, changes }));
this.store.dispatch(actions.updateBreadcrumb({ id: breadcrumbId, changes: { ...changes, changed: Date.now() } }));
}
async patchBreadcrumbByKeyAndTags(key: string | number, tags: string[], changes: Partial<Breadcrumb>) {
const crumbs = await this.getBreadcrumbsByKeyAndTags$(key, tags).pipe(first()).toPromise();
crumbs.forEach((crumb) => this.patchBreadcrumb(crumb.id, changes));
}
async addBreadcrumbIfNotExists(breadcrumb: Breadcrumb) {
@@ -107,4 +129,15 @@ export class BreadcrumbService {
this.store.dispatch(actions.removeManyBreadcrumb({ ids: breadcrumbsToRemove.map((crumb) => crumb.id) }));
}
async removeBreadcrumbsByKeyAndTags(key: number | string, tags: string[]) {
const crumbs = await this.getBreadcrumbsByKeyAndTags$(key, tags).pipe(first()).toPromise();
crumbs.forEach((crumb) => this.removeBreadcrumb(crumb.id));
}
getLatestBreadcrumbForSection(section: 'customer' | 'branch') {
return this.store
.select(selectors.selectBreadcrumbsBySection, { section })
.pipe(map((crumbs) => crumbs.sort((a, b) => b.changed - a.changed).find((f) => true)));
}
}

View File

@@ -33,4 +33,14 @@ export interface Breadcrumb {
* Timestamp
*/
timestamp?: number;
/**
* Cahnged
*/
changed?: number;
/**
* Applicatiuon Section
*/
section: string;
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { processRemoved } from '@core/application';
import { removeProcess } from '@core/application';
import { Actions, createEffect, ofType } from '@ngrx/effects';
import { NEVER } from 'rxjs';
import { mergeMap, tap, first, map } from 'rxjs/operators';
@@ -10,7 +10,7 @@ export class BreadcrumbEffects {
removeProcess$ = createEffect(
() =>
this.actions$.pipe(
ofType(processRemoved),
ofType(removeProcess),
mergeMap((action) =>
this.breadcrumb.getBreadcrumbByKey$(action.processId).pipe(
first(),

View File

@@ -39,3 +39,10 @@ export const selectBreadcrumbsByKeyAndTags = createSelector(
(entities: Breadcrumb[], { key, tags }: { key: string; tags: string[] }) =>
entities.filter((crumb) => crumb.key === key && isArray(crumb.tags) && tags.every((tag) => crumb.tags.includes(tag)))
);
/**
* Gibt alle Breadcrumb Entities als Array zurück die die tags enthalten
*/
export const selectBreadcrumbsBySection = createSelector(selectAll, (entities: Breadcrumb[], { section }: { section: string }) =>
entities.filter((crumb) => crumb.section === section)
);

View File

@@ -1,7 +1,7 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';

View File

@@ -1,7 +1,6 @@
import { Injectable } from '@angular/core';
import { CacheOptions } from './cache-options';
import { Cached } from './cached';
import { sha1 } from 'object-hash';
@Injectable({
providedIn: 'root',
@@ -51,7 +50,7 @@ export class CacheService {
return cached.data;
}
private delete(token: Object, from: 'session' | 'persist' = 'session') {
delete(token: Object, from: 'session' | 'persist' = 'session') {
if (from === 'session') {
sessionStorage.removeItem(this.getKey(token));
} else if (from === 'persist') {
@@ -60,7 +59,15 @@ export class CacheService {
}
private getKey(token: Object) {
return sha1(token);
return this.hash(JSON.stringify(token));
}
private hash(data: string): string {
let hash = 0;
for (let i = 0; i < data.length; i++) {
hash = data.charCodeAt(i) + ((hash << 5) - hash);
}
return hash.toString(16);
}
private serialize(data: Cached): string {

View File

@@ -1,7 +1,7 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';

View File

@@ -0,0 +1,25 @@
# Command
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.2.
## Code scaffolding
Run `ng generate component component-name --project command` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project command`.
> Note: Don't forget to add `--project command` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build command` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build command`, go to the dist folder `cd dist/command` and run `npm publish`.
## Running unit tests
Run `ng test command` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

View File

@@ -0,0 +1,32 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, '../../../coverage/core/command'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true,
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true,
});
};

View File

@@ -0,0 +1,7 @@
{
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../../dist/core/command",
"lib": {
"entryFile": "src/public-api.ts"
}
}

View File

@@ -0,0 +1,11 @@
{
"name": "@core/command",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^10.1.2",
"@angular/core": "^10.1.2"
},
"dependencies": {
"tslib": "^2.0.0"
}
}

View File

@@ -0,0 +1,4 @@
export abstract class ActionHandler<T = any> {
constructor(readonly action: string) {}
abstract handler(data: T): Promise<T>;
}

View File

@@ -0,0 +1,21 @@
import { ModuleWithProviders, NgModule, Type } from '@angular/core';
import { ActionHandler } from './action-handler.interface';
import { CommandService } from './command.service';
import { FEATURE_ACTION_HANDLERS, ROOT_ACTION_HANDLERS } from './tokens';
@NgModule({})
export class CoreCommandModule {
static forRoot(actionHandlers: Type<ActionHandler>[]): ModuleWithProviders<CoreCommandModule> {
return {
ngModule: CoreCommandModule,
providers: [CommandService, actionHandlers.map((handler) => ({ provide: ROOT_ACTION_HANDLERS, useClass: handler, multi: true }))],
};
}
static forChild(actionHandlers: Type<ActionHandler>[]): ModuleWithProviders<CoreCommandModule> {
return {
ngModule: CoreCommandModule,
providers: [CommandService, actionHandlers.map((handler) => ({ provide: FEATURE_ACTION_HANDLERS, useClass: handler, multi: true }))],
};
}
}

View File

@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { CommandService } from './command.service';
describe('CommandService', () => {
let service: CommandService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(CommandService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@@ -0,0 +1,40 @@
import { Injectable, Injector, Optional, SkipSelf } from '@angular/core';
import { ActionHandler } from './action-handler.interface';
import { FEATURE_ACTION_HANDLERS, ROOT_ACTION_HANDLERS } from './tokens';
@Injectable()
export class CommandService {
constructor(private injector: Injector, @Optional() @SkipSelf() private _parent: CommandService) {}
async handleCommand<T>(command: string, data?: T): Promise<T> {
const actions = this.getActions(command);
for (const action of actions) {
const handler = this.getActionHandler(action);
if (!handler) {
console.error('CommandService.handleCommand', 'Action Handler does not exist', { action });
throw new Error('Action Handler does not exist');
}
data = await handler.handler(data);
}
return data;
}
getActions(command: string) {
return command?.split('|') || [];
}
getActionHandler(action: string): ActionHandler | undefined {
const featureActionHandlers: ActionHandler[] = this.injector.get(FEATURE_ACTION_HANDLERS, []);
const rootActionHandlers: ActionHandler[] = this.injector.get(ROOT_ACTION_HANDLERS, []);
let handler = [...featureActionHandlers, ...rootActionHandlers].find((handler) => handler.action === action);
if (this._parent && !handler) {
handler = this._parent.getActionHandler(action);
}
return handler;
}
}

View File

@@ -0,0 +1,6 @@
// start:ng42.barrel
export * from './action-handler.interface';
export * from './command.module';
export * from './command.service';
export * from './tokens';
// end:ng42.barrel

View File

@@ -0,0 +1,6 @@
import { InjectionToken } from '@angular/core';
import { ActionHandler } from './action-handler.interface';
export const ROOT_ACTION_HANDLERS = new InjectionToken<ActionHandler[]>('@core/domain ROOT_ACTION_HANDLER');
export const FEATURE_ACTION_HANDLERS = new InjectionToken<ActionHandler[]>('@core/domain FEATURE_ACTION_HANDLER');

View File

@@ -0,0 +1,5 @@
/*
* Public API Surface of command
*/
export * from './lib';

View File

@@ -0,0 +1,24 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(
path: string,
deep?: boolean,
filter?: RegExp
): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

View File

@@ -0,0 +1,25 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"enableResourceInlining": true
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}

View File

@@ -0,0 +1,10 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.lib.json",
"compilerOptions": {
"declarationMap": false
},
"angularCompilerOptions": {
"enableIvy": false
}
}

View File

@@ -0,0 +1,17 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

View File

@@ -0,0 +1,17 @@
{
"extends": "../../../tslint.json",
"rules": {
"directive-selector": [
true,
"attribute",
"lib",
"camelCase"
],
"component-selector": [
true,
"element",
"lib",
"kebab-case"
]
}
}

View File

@@ -0,0 +1,25 @@
# Config
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
## Code scaffolding
Run `ng generate component component-name --project config` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project config`.
> Note: Don't forget to add `--project config` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build config` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build config`, go to the dist folder `cd dist/config` and run `npm publish`.
## Running unit tests
Run `ng test config` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.

View File

@@ -0,0 +1,43 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
const customLaunchers = require('../../../karma/custom-launchers');
const junitReporter = require('../../../karma/junit-reporter')('core-config');
const coverageReporter = require('../../../karma/coverage-reporter')('core-config');
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('karma-junit-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true, // removes the duplicated traces
},
coverageReporter,
junitReporter,
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
customLaunchers,
singleRun: false,
restartOnFileChange: true,
});
};

View File

@@ -0,0 +1,7 @@
{
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../../dist/core/config",
"lib": {
"entryFile": "src/public-api.ts"
}
}

View File

@@ -0,0 +1,11 @@
{
"name": "@core/config",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^12.2.0",
"@angular/core": "^12.2.0"
},
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,8 @@
import { Observable } from 'rxjs';
/**
* Config loader interface for loading configurations
*/
export interface ConfigLoader {
load(): Promise<any>;
}

View File

@@ -0,0 +1,4 @@
// start:ng42.barrel
export * from './config-loader';
export * from './json.config-loader';
// end:ng42.barrel

View File

@@ -0,0 +1,36 @@
// unit test JsonConfigLoader
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { createServiceFactory, SpectatorService } from '@ngneat/spectator';
import { CORE_JSON_CONFIG_LOADER_URL } from '../tokens';
import { JsonConfigLoader } from './json.config-loader';
describe('JsonConfigLoader', () => {
let spectator: SpectatorService<JsonConfigLoader>;
const createService = createServiceFactory({
imports: [HttpClientTestingModule],
service: JsonConfigLoader,
mocks: [],
providers: [{ provide: CORE_JSON_CONFIG_LOADER_URL, useValue: '/assets/config.json' }],
});
let httpTestingController: HttpTestingController;
beforeEach(() => {
spectator = createService();
httpTestingController = spectator.inject(HttpTestingController);
});
it('should create', () => {
expect(spectator.service).toBeTruthy();
});
describe('load', () => {
it('should call the provided url', async () => {
const reqPromise = spectator.service.load();
const req = httpTestingController.expectOne('/assets/config.json');
req.flush({ unit: 'test' });
const result = await reqPromise;
httpTestingController.verify();
expect(result).toEqual({ unit: 'test' });
});
});
});

View File

@@ -0,0 +1,13 @@
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable } from '@angular/core';
import { ConfigLoader } from './config-loader';
import { CORE_JSON_CONFIG_LOADER_URL } from '../tokens';
@Injectable()
export class JsonConfigLoader implements ConfigLoader {
constructor(@Inject(CORE_JSON_CONFIG_LOADER_URL) private url: string, private http: HttpClient) {}
load(): Promise<any> {
return this.http.get(this.url).toPromise();
}
}

View File

@@ -0,0 +1,7 @@
import { Type } from '@angular/core';
import { ConfigLoader } from './config-loaders';
export interface ConfigModuleOptions {
useConfigLoader: Type<ConfigLoader>;
jsonConfigLoaderUrl?: string;
}

View File

@@ -0,0 +1,28 @@
import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';
import { CORE_CONFIG_LOADER } from '@core/config';
import { Config } from './config';
import { ConfigModuleOptions } from './config-module-options';
import { CORE_JSON_CONFIG_LOADER_URL } from './tokens';
export function _initializeConfigFactory(config: Config) {
return () => config.init();
}
@NgModule({})
export class ConfigModule {
static forRoot(options: ConfigModuleOptions): ModuleWithProviders<ConfigModule> {
const configLoaderProvider = {
provide: CORE_CONFIG_LOADER,
useClass: options.useConfigLoader,
};
return {
ngModule: ConfigModule,
providers: [
Config,
configLoaderProvider,
options.jsonConfigLoaderUrl ? { provide: CORE_JSON_CONFIG_LOADER_URL, useValue: options.jsonConfigLoaderUrl } : null,
],
};
}
}

View File

@@ -0,0 +1,45 @@
import { createServiceFactory, SpectatorService } from '@ngneat/spectator';
import { Config } from './config';
import { ConfigLoader } from './config-loaders';
import { CORE_CONFIG_LOADER } from './tokens';
class TestConfigLoader implements ConfigLoader {
load() {
return Promise.resolve({});
}
}
// Unit test Config
describe('Config', () => {
let spectator: SpectatorService<Config>;
const createService = createServiceFactory({
service: Config,
providers: [{ provide: CORE_CONFIG_LOADER, useClass: TestConfigLoader }],
});
let configLoader: ConfigLoader;
beforeEach(() => {
spectator = createService();
configLoader = spectator.inject(CORE_CONFIG_LOADER);
});
it('should create', () => {
expect(spectator.service).toBeTruthy();
});
describe('init()', () => {
it('should load config and assigns it to _config', async () => {
const config = { unit: 'test' };
spyOn(configLoader, 'load').and.returnValue(Promise.resolve(config));
await spectator.service.init();
expect(spectator.service['_config']).toEqual(config);
});
});
describe('get()', () => {
it('should return config value', () => {
spectator.service['_config'] = { test: 'test' };
expect(spectator.service.get('test')).toEqual('test');
});
});
});

View File

@@ -0,0 +1,27 @@
import { Inject, Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { ConfigLoader } from './config-loaders';
import { CORE_CONFIG_LOADER } from './tokens';
import { pick } from './utils';
@Injectable()
export class Config {
private _config: any;
private readonly _initilized = new ReplaySubject<void>(1);
get initialized() {
return this._initilized.asObservable();
}
constructor(@Inject(CORE_CONFIG_LOADER) private readonly _configLoader: ConfigLoader) {}
// load config and assign it to this._config
async init() {
this._config = await this._configLoader.load();
this._initilized.next();
}
get(path: string) {
return pick(path, this._config);
}
}

View File

@@ -0,0 +1,8 @@
// start:ng42.barrel
export * from './config-module-options';
export * from './config.module';
export * from './config';
export * from './tokens';
export * from './config-loaders';
export * from './utils';
// end:ng42.barrel

View File

@@ -0,0 +1,6 @@
import { InjectionToken } from '@angular/core';
import { ConfigLoader } from './config-loaders';
export const CORE_CONFIG_LOADER = new InjectionToken<ConfigLoader>('core.config.loader');
export const CORE_JSON_CONFIG_LOADER_URL = new InjectionToken<ConfigLoader>('core.json.config.loader.url');

View File

@@ -0,0 +1,3 @@
// start:ng42.barrel
export * from './pick';
// end:ng42.barrel

View File

@@ -0,0 +1,41 @@
import { pick } from './pick';
describe('pick', () => {
it('should pick properties from the 1st level from the object', () => {
const obj = {
foo: 'bar',
};
expect(pick('foo', obj)).toEqual('bar');
});
it('should pick properties from the 2nd level from the object', () => {
const obj = {
foo: {
bar: 'baz',
},
};
expect(pick('foo.bar', obj)).toEqual('baz');
});
it('should pick properties from the 3rd level from the object', () => {
const obj = {
foo: {
bar: {
baz: 'qux',
},
},
};
expect(pick('foo.bar.baz', obj)).toEqual('qux');
});
it('should throw an error of obj is not an object', () => {
expect(() => pick('foo', 'bar')).toThrowError(`bar is not an object`);
});
it('should return undefined if the property is not found', () => {
const obj = {
foo: 'bar',
};
expect(pick('bar', obj)).toEqual(undefined);
});
});

View File

@@ -0,0 +1,33 @@
/**
* Pick a value from an object at a given path.
* @param path path of the value to pick
* @param obj object to pick from
* @returns the value at the path or undefined
* @throws if obj is not an object
*/
export function pick<T = any>(path: string, obj: Object): T {
const paths = path.split('.');
// check if obj is null or undefined
if (obj == null) {
return undefined;
}
// check if obj is of type object and not an array
// and throw an error if not
if (typeof obj !== 'object' || Array.isArray(obj)) {
throw new Error(`${obj} is not an object`);
}
let result = obj;
// loop through the path and pick the value
// early exit if the path is empty
for (const path of paths) {
result = result[path];
if (result == null) {
return undefined;
}
}
return result as T;
}

View File

@@ -0,0 +1,5 @@
/*
* Public API Surface of config
*/
export * from './lib';

View File

@@ -0,0 +1,25 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(
path: string,
deep?: boolean,
filter?: RegExp
): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { teardown: { destroyAfterEach: true } });
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

View File

@@ -0,0 +1,20 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}

View File

@@ -0,0 +1,10 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.lib.json",
"compilerOptions": {
"declarationMap": false
},
"angularCompilerOptions": {
"compilationMode": "partial"
}
}

View File

@@ -0,0 +1,17 @@
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { fromEvent } from 'rxjs';
import { map, take } from 'rxjs/operators';
import { map, take, tap } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
@@ -8,16 +8,17 @@ import { map, take } from 'rxjs/operators';
export class EnvironmentService {
constructor() {}
/** Returns whether app is used within native container*/
isNative(): Promise<boolean> {
return fromEvent(window, 'message')
.pipe(
map((evt: MessageEvent) => evt.data),
map((data) => data.status === 'INIT'),
take(1)
)
.toPromise();
}
// /** Returns whether app is used within native container*/
// isNative(): Promise<boolean> {
// return fromEvent(window, 'message')
// .pipe(
// map((evt: MessageEvent) => evt.data),
// tap(console.log.bind(window)),
// map((data) => data.status === 'INIT'),
// take(1)
// )
// .toPromise();
// }
/** Returns whether current device is mobile phone or tablet */
async isMobile(): Promise<boolean> {

View File

@@ -1,7 +1,7 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import 'zone.js';
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';

View File

@@ -0,0 +1,25 @@
# Logger
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0.
## Code scaffolding
Run `ng generate component component-name --project logger` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project logger`.
> Note: Don't forget to add `--project logger` or else it will be added to the default project in your `angular.json` file.
## Build
Run `ng build logger` to build the project. The build artifacts will be stored in the `dist/` directory.
## Publishing
After building your library with `ng build logger`, go to the dist folder `cd dist/logger` and run `npm publish`.
## Running unit tests
Run `ng test logger` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.

View File

@@ -0,0 +1,43 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
const customLaunchers = require('../../../karma/custom-launchers');
const junitReporter = require('../../../karma/junit-reporter')('core-logger');
const coverageReporter = require('../../../karma/coverage-reporter')('core-logger');
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('karma-junit-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false, // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true, // removes the duplicated traces
},
junitReporter,
coverageReporter,
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
customLaunchers,
singleRun: false,
restartOnFileChange: true,
});
};

Some files were not shown because too many files have changed in this diff Show More