460 Commits
Author SHA1 Message Date
peter 6914a61bc4 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-12 15:38:06 +01:00
peter 9f43287433 Revert "Fix RVO redirect URL for locale (without loosing queryparms)"
This reverts commit df14427d60.
2025-03-12 15:37:59 +01:00
jenkins 10df983ae3 [ci skip] Updated packages #2540
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 14:16:55 +00:00
peter 78249811ab Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-12 15:15:01 +01:00
peter df14427d60 Fix RVO redirect URL for locale (without loosing queryparms) 2025-03-12 15:14:58 +01:00
jenkins c7c131d437 [ci skip] Updated packages #2539
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 13:49:12 +00:00
peter b2fe8f3bd7 Fix RVO redirect URL for locale
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-12 14:47:17 +01:00
jenkins 3027c69fa8 [ci skip] Updated packages #2538
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-12 08:00:13 +00:00
peter 5995d205a4 AW-2925 Accidently removed
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-12 08:58:19 +01:00
jenkins fd479c92d8 [ci skip] Updated packages #2537
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-10 10:30:23 +00:00
peter e9880d6eb2 AW-2925 Data temporal item
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-10 11:28:34 +01:00
jenkins a4438d8a90 [ci skip] Updated packages #2536
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-04 07:54:29 +00:00
peter 89061774de AW-6716 Uploaden avatar geeft foutmelding
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
Caused by BREAKING CHANGE: by default the output will be set to blob. Using blob instead of a base64 should decrease the memory usage. If you wish to keep using base64, simply add output="base64" to the <image-cropper> tag. (https://github.com/Mawi137/ngx-image-cropper/releases/tag/7.0.0)
2025-03-04 08:52:38 +01:00
jenkins 362e6c8534 [ci skip] Updated packages #2535
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-03 14:34:07 +00:00
peter 64a0e58238 AW-3128 Cleanup
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-03 15:32:16 +01:00
jenkins a3d4dfbd59 [ci skip] Updated packages #2534
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2025-03-03 14:05:03 +00:00
peter 4c106ebff3 AW-3128 Taalinstellingen profiel gebruiken voor FarmMaps ipv browser instelling
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2025-03-03 15:02:59 +01:00
jenkins 5c8fd64521 [ci skip] Updated packages #2533
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-12-03 12:02:22 +00:00
peter 72ba8eca81 AW-6556 The Angular Material version (18.2.4) does not match the Angular CDK version (18.2.3).
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-12-03 13:00:12 +01:00
jenkins f89f741265 [ci skip] Updated packages #2532
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-12-02 09:31:15 +00:00
peter 50af55acb2 AW-6480 Blauwe balk van upload venster is niet zichtbaar in de explorer
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-12-02 10:29:18 +01:00
jenkins cc879b85e5 [ci skip] Updated packages #2531
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-21 09:49:47 +00:00
peter b4a0a4584d Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-21 10:47:51 +01:00
peter 8ab1611f39 AW-6504 Support indexed on retrieving child items 2024-11-21 10:47:42 +01:00
jenkins 475c522039 [ci skip] Updated packages #2530
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-20 15:35:21 +00:00
mark 068396ac9a added TaskService
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-20 16:33:20 +01:00
jenkins 4a30707ec6 [ci skip] Updated packages #2529
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-20 08:13:33 +00:00
mark 852b1db895 added workflowcode to IItemTask
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-20 09:11:34 +01:00
jenkins fcbd68eca0 [ci skip] Updated packages #2528
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-19 12:25:40 +00:00
peter 3a42f9114e Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-19 13:23:36 +01:00
peter 3f664b472c Fixed VM104:1 Uncaught TypeError: Cannot read properties of null (reading 'vnd.farmmaps.itemtype.croppingscheme') at eval (eval at getExtraAttributes (main.ce80740d3a633957.js:311566:14), <anonymous>:1:15) 2024-11-19 13:23:32 +01:00
jenkins 57811f3f2e [ci skip] Updated packages #2527
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-15 13:08:26 +00:00
peter 5e1bc6d705 AW-6495 Exception editor croppingscheme: do not use 'item' in route
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-15 14:06:33 +01:00
peter d4a230f96d AW-6495 Exception editor croppingscheme: do not use 'item' in route 2024-11-15 14:06:11 +01:00
jenkins ed1e1478b2 [ci skip] Updated packages #2526
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-14 13:23:40 +00:00
peter afe013a59a Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-14 14:21:46 +01:00
peter db3734f8a3 AW-6466 Filter by (given) owner 2024-11-14 14:21:43 +01:00
jenkins 86f75c7f78 [ci skip] Updated packages #2525
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 13:41:57 +00:00
peter a7abb4072b AW-6466 Fixed double line of code
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-12 14:40:05 +01:00
jenkins 61d6446d75 [ci skip] Updated packages #2524
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 09:14:09 +00:00
peter 392008ae4b Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-12 10:12:15 +01:00
peter 093c26c7f3 AW-6466 Fix optional boolean value to overrule default. 2024-11-12 10:12:12 +01:00
jenkins a8e1ba6c02 [ci skip] Updated packages #2523
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 08:01:08 +00:00
peter e64fbfd014 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-12 08:56:59 +01:00
peter 8cd7b85de2 AW-6466 Overrule exact matching on data start/end date with from/until behavior 2024-11-12 08:56:50 +01:00
jenkins ddc7f97e27 [ci skip] Updated packages #2522
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-12 07:49:58 +00:00
peter 24e3765c28 AW-6466 Overrule exact matching on data start/end date with from/until behavior
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-12 08:48:02 +01:00
jenkins 86f3ddb34b [ci skip] Updated packages #2521
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-11-05 08:27:53 +00:00
peter d6c55ef82b Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-11-05 09:26:03 +01:00
peter d977ddfb7b Fix null ref exception 2024-11-05 09:26:00 +01:00
jenkins 0e8bd5343d [ci skip] Updated packages #2520
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-30 10:39:49 +00:00
peter ceeaa89ba3 AW-6410 Add indexed parm to getItemListCount
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-30 11:37:51 +01:00
jenkins c3dbf85eb6 [ci skip] Updated packages #2519
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-23 12:02:56 +00:00
peter ad5fe95b55 AW-6410 Add extra parms to /api/v1/items/../children/count
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-23 14:00:47 +02:00
jenkins 6b95fb7f77 [ci skip] Updated packages #2518
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-22 12:40:18 +00:00
peter da7e193219 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-22 14:38:21 +02:00
peter 31f9b48bd7 AW-6410 Add beforeLocationBack event 2024-10-22 14:38:17 +02:00
jenkins 1d6b30edff [ci skip] Updated packages #2517
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-14 13:15:00 +00:00
peter 349a76395b AW-6410 Fix settings menu
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-14 15:12:41 +02:00
jenkins 32b3b98f76 [ci skip] Updated packages #2516
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-14 12:11:38 +00:00
peter 010ed6e010 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-14 14:09:26 +02:00
peter a8675f5c49 AW-6410 Fix settings menu 2024-10-14 14:09:23 +02:00
jenkins f76ef44dee [ci skip] Updated packages #2515
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-14 11:10:45 +00:00
peter 2387a0e39e Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-14 13:08:44 +02:00
peter 98980fc857 AW-6410 Fix settings menu 2024-10-14 13:08:41 +02:00
jenkins 6f7d8fe248 [ci skip] Updated packages #2514
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-10-14 10:17:45 +00:00
peter 03a1ccd597 AW-6410 Add settings menu
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-10-14 12:15:46 +02:00
jenkins 9c866e500f [ci skip] Updated packages #2513
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-16 13:37:17 +00:00
peter 3b692359c6 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-16 15:35:27 +02:00
peter 3d4042e8c6 AW6241 Add item owner 2024-09-16 15:35:24 +02:00
jenkins 3db760dd96 [ci skip] Updated packages #2512
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-16 12:13:40 +00:00
peter b5828cd0fa Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-16 14:11:56 +02:00
peter af4e6f45d1 AW6241 Support source in item count 2024-09-16 14:11:39 +02:00
jenkins 79def90bc7 [ci skip] Updated packages #2511
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-16 12:01:16 +00:00
peter 53c60427f1 AW6241 Support src in item count
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-16 13:58:54 +02:00
jenkins 7d7e5bcd37 [ci skip] Updated packages #2510
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 11:47:40 +00:00
peter 72a172ccb2 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 13:46:04 +02:00
peter 2728a91ab4 Fix ngrx-store-localstorage dep 2024-09-06 13:45:56 +02:00
jenkins 28d2b5d4a3 [ci skip] Updated packages #2509
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 11:40:26 +00:00
peter b70e385097 Fix import @farmmaps/ng-openlayers
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 13:38:48 +02:00
peter 7392c6170c Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-09-06 13:33:01 +02:00
peter 367348088a Move ng-openlayers to @farmmaps 2024-09-06 13:32:58 +02:00
jenkins 5efd5b78c9 [ci skip] Updated packages #2507
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 11:14:07 +00:00
peter 0498d64c36 Move linux deps to optional
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 13:10:45 +02:00
jenkins e17ac435b5 [ci skip] Updated packages #2506
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 10:43:59 +00:00
Willem Dantuma 3e11c7cefd Revert
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 12:40:43 +02:00
Willem Dantuma b3dcd1e58b Move lmdb to overrides
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-09-06 12:36:56 +02:00
jenkins 681fc819a6 [ci skip] Updated packages #2504
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 10:30:45 +00:00
peter 2a62d2df48 Trigger build
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 10:27:23 +00:00
jenkins 004bcea0b6 [ci skip] Updated packages #2503
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 10:17:57 +00:00
peter 8efa46fa66 AW6241 Fix build
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 09:30:03 +02:00
peter cefa788295 Revert "AW6241 Fix build"
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
This reverts commit 749be159f1.
2024-09-06 09:17:25 +02:00
peter 2da783d6be Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-09-06 09:14:06 +02:00
peter 749be159f1 AW6241 Fix build 2024-09-06 09:14:03 +02:00
jenkins 4e24527950 [ci skip] Updated packages #2496
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-06 06:55:54 +00:00
peter 45263a59f4 AW6241 Fix peer deps
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-06 08:52:56 +02:00
jenkins 5cdef30c71 [ci skip] Updated packages #2495
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-05 13:07:16 +00:00
peter cdba2af921 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-05 15:01:14 +02:00
peter 658c2c84cd AW6241 publish config 2024-09-05 15:01:05 +02:00
peter 3f9b4dcdaa Update README.md
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-09-05 12:53:30 +00:00
jenkins a63159367f [ci skip] Updated packages #2492
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-05 12:51:03 +00:00
peter b9d1c8f61f Update README.md
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-05 12:47:31 +00:00
jenkins eb34de193c [ci skip] Updated packages #2491
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-05 12:31:43 +00:00
peter 5612bb3d66 Merge branch 'feature/AW6241Angular18' into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-05 13:44:56 +02:00
peter 0e42efac75 AW6241 Fix deps 2024-09-05 13:44:33 +02:00
peter 3247880b7c AW6241 Migrate deps 2024-09-05 12:50:16 +02:00
peter a250ecdcc1 AW6241 Migrate libs to latest bootstrap 2024-09-05 11:45:31 +02:00
peter 93e497ec3f AW6241 Migrate libs to ng-18 2024-09-05 11:02:15 +02:00
peter 10a1f07622 AW6241 Migrate main to ng-18 2024-09-05 09:08:43 +02:00
peter 07d6c1bc10 AW6241 ng-18 adopt ng-openlayers 2024-09-05 08:50:27 +02:00
jenkins 1bddc28767 [ci skip] Updated packages #2485
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-09-02 12:29:11 +00:00
peter a999c05631 Aw-6020 Add getItemListCount for paging
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-09-02 14:27:47 +02:00
jenkins f3252a378d [ci skip] Updated packages #2484
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-08-29 07:38:28 +00:00
peter 4ab1e43d40 Aw-6020 Fix getChildItemListCount
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-08-29 09:37:03 +02:00
jenkins 2719f2fcf4 [ci skip] Updated packages #2483
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-08-20 08:54:40 +00:00
peter 55914bf7d2 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-08-20 10:51:30 +02:00
peter 26ca9be4e7 Aw6020 Itemtype = optional 2024-08-20 10:51:21 +02:00
peter 0ed342404e Aw6020 Itemtype = optional 2024-08-20 10:47:33 +02:00
jenkins 26ae1c7f06 [ci skip] Updated packages #2482
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-08-20 08:45:26 +00:00
peter f71d0fe256 Aw6020 Add my_root
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-08-20 10:43:57 +02:00
jenkins 7544203202 [ci skip] Updated packages #2481
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-08-20 08:04:03 +00:00
peter 41a30e0b64 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-08-20 10:02:37 +02:00
peter f14fc1a4fc Aw6020 Allow retrieving list items with date filter 2024-08-20 10:02:33 +02:00
jenkins 21ebda4753 [ci skip] Updated packages #2480
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-06-12 13:30:48 +00:00
peter 3a80a6f7f3 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-06-12 15:29:24 +02:00
peter 71a2ef44e6 AW-6226 Add admin function to post task on behalve of other user 2024-06-12 15:29:15 +02:00
jenkins 1610391d56 [ci skip] Updated packages #2479
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-06-12 10:15:19 +00:00
peter b778e5726c error TS2307: Cannot find module 'dist/common' or its corresponding type declarations.
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-06-12 12:14:05 +02:00
peter fc4abf9a5b AW-6226 Add admin function to retrieve all users
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-06-12 12:11:36 +02:00
jenkins d6587bd63b [ci skip] Updated packages #2477
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-15 14:29:22 +00:00
jenkins ede75f63f5 [ci skip] Updated packages #2463
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-10 12:19:34 +00:00
peter 274f33e709 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
# Conflicts:
#	package-lock.json
2024-04-10 14:07:19 +02:00
peter 4384b12944 AW-6046 ng-openlayers 2024-04-10 14:06:44 +02:00
jenkins 10ebdf276a [ci skip] Updated packages #2460
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-10 11:45:06 +00:00
peter 9c270bfe75 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-10 13:41:54 +02:00
peter 9031d3e171 Update ngx-clipboard 2024-04-10 13:41:46 +02:00
jenkins c3158c1064 [ci skip] Updated packages #2459
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-10 11:29:13 +00:00
peter 315b64a561 Fixes
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-10 13:27:25 +02:00
jenkins 030dbcec5d [ci skip] Updated packages #2458
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-10 06:25:47 +00:00
peter 876020828e AW-6046 Angular 17
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-10 08:24:07 +02:00
peter 393b881e3b Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop 2024-04-10 08:18:36 +02:00
peter 8594a94d62 AW-6046 Angular 17 2024-04-10 08:18:25 +02:00
jenkins c543ac7c94 [ci skip] Updated packages #2457
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-09 13:51:44 +00:00
peter 97d6d569a0 AW-6046 Fix open layers 8 issues
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-09 15:50:03 +02:00
peter 023048a5bb error TS2307: Cannot find module 'ol/source/WMSServerType' or its corresponding type declarations.
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-04-09 15:05:26 +02:00
peter 4a685d675d AW-6046 Open layers 8
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-04-09 12:36:39 +02:00
jenkins 1125f4586e [ci skip] Updated packages #2454
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-09 10:13:34 +00:00
peter 3bdba527ec npm ERR! code ENEEDAUTH
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-09 12:10:38 +02:00
peter fb03cfce44 npm ERR! code ENEEDAUTH
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-04-09 12:06:14 +02:00
peter 6f93cf254c AW-6046 Angular 17
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-04-09 11:23:39 +02:00
peter b5a3a62cee AW-6046 Fix jenkins
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-04-09 11:04:37 +02:00
peter d306d5c4c1 AW-6046 Angular 17
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-04-09 10:58:42 +02:00
peter e79ae2f623 AW-6046 Angular 17 2024-04-09 10:16:21 +02:00
peter bdf4e03b49 AW-6046 Angular 17 2024-04-09 09:50:06 +02:00
peter 7d5c10d902 AW-6046 Angular 17 2024-04-09 09:46:52 +02:00
peter fb192c6e4d AW-6046 Angular 17 2024-04-09 09:45:29 +02:00
jenkins 6356f149a6 [ci skip] Updated packages #2447
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-04 12:57:13 +00:00
peter 5c5914327c AW-6033 /api/v1/items/undefined/children?... 401 (Unauthorized)
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-04 14:55:39 +02:00
jenkins e306bf601f [ci skip] Updated packages #2446
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-04-04 11:20:05 +00:00
peter f8459aaca4 AW-6033 main.js:555726 ERROR TypeError: Cannot read properties of null (reading 'code')
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-04-04 13:18:28 +02:00
jenkins ce52cbdbed [ci skip] Updated packages #2445
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-03-05 14:41:30 +00:00
mark 752e1e2c42 added hit tolerance to ngx select interaction
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-03-05 15:39:52 +01:00
jenkins 6b617ed4ad [ci skip] Updated packages #2444
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-03-04 12:22:37 +00:00
peter 9b19950945 Fix upload json formatting
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
Fix extraAttributes null exception
2024-03-04 13:20:23 +01:00
jenkins c74163976a [ci skip] Changed by Jenkins: 2443
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-08 18:37:07 +00:00
Willem Dantuma c9f43b5b53 Fix span
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-08 19:35:39 +01:00
jenkins 6a240abc0c [ci skip] Changed by Jenkins: 2442
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-08 18:10:48 +00:00
Willem Dantuma 7d8b18a27d Add space
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-08 19:09:19 +01:00
jenkins 4a328054dd [ci skip] Changed by Jenkins: 2441
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-08 17:36:18 +00:00
Willem Dantuma 3e482470b6 Add provider info
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-08 18:33:35 +01:00
jenkins 3bacb8a5d9 [ci skip] Changed by Jenkins: 2440
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-08 17:19:12 +00:00
Willem Dantuma 47afa20a01 Add firstname and lastname
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-08 18:17:42 +01:00
jenkins f0646a8f6a [ci skip] Changed by Jenkins: 2439
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-01 15:38:22 +00:00
peter 36ebc03189 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-01 16:35:36 +01:00
peter c0d40d2d5e Aw5812Add wide supp 2024-02-01 16:34:24 +01:00
jenkins 14e504cc79 [ci skip] Changed by Jenkins: 2438
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-01 15:22:56 +00:00
peter b060fd34bb Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-01 16:21:20 +01:00
peter 0694d4e467 Aw5812Fix null exc 2024-02-01 16:20:57 +01:00
jenkins 7c5867a332 [ci skip] Changed by Jenkins: 2437
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-01 15:02:54 +00:00
peter 8f958e33f1 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-01 16:01:24 +01:00
peter aa2f305b27 Aw5812wip 2024-02-01 16:01:11 +01:00
jenkins d02da8f334 [ci skip] Changed by Jenkins: 2436
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-01 14:23:30 +00:00
peter 253553c534 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
# Conflicts:
#	package-lock.json
2024-02-01 15:21:58 +01:00
peter 4641e351fd Aw5812 2024-02-01 15:21:04 +01:00
jenkins 84cf6a3f6e [ci skip] Changed by Jenkins: 2435
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-02-01 12:36:14 +00:00
peter 92b29135b5 Aw5812wip
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-02-01 13:34:38 +01:00
jenkins f6aebb2f80 [ci skip] Changed by Jenkins: 2434
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-30 10:19:44 +00:00
peter daf78f32b7 Fix error TS500: RangeError: Maximum call stack size exceeded
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-01-30 11:18:11 +01:00
peter 42245612d2 ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-01-30 11:00:16 +01:00
peter a05c1fa874 Fix build
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-01-30 10:52:02 +01:00
peter 4bda94c360 Fix path
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-01-30 10:23:14 +01:00
peter feaad02c33 Fix path
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-01-30 10:06:26 +01:00
peter af9acebaff Only page not found when no routing is matched on production environment
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2024-01-30 09:54:00 +01:00
jenkins 7ba35052ec [ci skip] Changed by Jenkins: 2427
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-29 15:27:29 +00:00
peter 2e40d023b1 Aw5812 Update item file
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-01-29 16:25:56 +01:00
jenkins 4d5ed915ad [ci skip] Changed by Jenkins: 2426
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-12 12:07:12 +00:00
peter 2fb5967c26 Aw-5739 Use ngrx-store-localstorage angular 16 compatible version
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-01-12 13:05:37 +01:00
jenkins 820543913f [ci skip] Changed by Jenkins: 2425
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-11 12:39:00 +00:00
peter ce2f06091b Aw-5739 Add data download service
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-01-11 13:37:25 +01:00
jenkins 5714cdce72 [ci skip] Changed by Jenkins: 2424
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-09 08:27:18 +00:00
peter 10e43e1ea5 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
# Conflicts:
#	package-lock.json
2024-01-09 09:25:44 +01:00
peter 8fa84c6ea8 Aw5739 Update to Angular v16. 2024-01-09 09:24:52 +01:00
jenkins 9f872d0af0 [ci skip] Changed by Jenkins: 2423
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-08 13:54:36 +00:00
peter f6bed668f6 Merge branch 'feature/AW5739AngularV15ToV16' into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
# Conflicts:
#	package-lock.json
2024-01-08 14:52:46 +01:00
peter f70e30204d Aw5739 Update to Angular v16. 2024-01-08 14:51:37 +01:00
peter 7339b91328 Aw5739 Prepare migration to v16: Use suported version of ngx-avatars 2024-01-08 14:43:28 +01:00
peter 88667b3986 Aw5739 Prepare migration to v16 Update package.lock 2024-01-08 14:41:05 +01:00
peter a996caa73b Aw5739 Prepare migration to v16 Update ngrx 2024-01-08 14:38:06 +01:00
peter ed6f8f4231 Aw5739 Prepare migration to v16 Update ngrx 2024-01-08 14:33:32 +01:00
peter 94ef2e269b Aw5739 Prepare migration to v16 Update eslint 2024-01-08 14:31:09 +01:00
peter da624f0535 Aw5739 Prepare migration to v16 2024-01-08 14:25:46 +01:00
peter 3da646dc4d Aw5739 Prepare migration to v16: Use supported version of TypeScript 2024-01-08 14:19:52 +01:00
peter 778e40a26d Aw5739 Prepare migration to v16: Use supported version of TypeScript 2024-01-08 13:25:30 +01:00
jenkins 94ff567567 [ci skip] Changed by Jenkins: 2422
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2024-01-08 11:38:33 +00:00
peter b20ab34859 Merge branch 'feature/AW5739AngularV14ToV15' into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2024-01-08 12:36:27 +01:00
peter 1988b3f74d Aw5739 Update to Angular v15. 2024-01-08 12:33:38 +01:00
peter b0587bc4c3 Aw5739 Prepare migration to v15: Use suported version of ngx-clipboard 2024-01-08 12:17:32 +01:00
peter 681d372ef3 Aw5739 Prepare migration to v15: Use suported version of ngx-avatar 2024-01-08 12:05:38 +01:00
peter b1922cdb10 Aw5739 Prepare migration to v15: Use supported version of TypeScript. Use suported version of ngx-avatar 2024-01-08 11:19:56 +01:00
jenkins 5774bff8df [ci skip] Changed by Jenkins: 2421
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-29 13:53:17 +00:00
peter 6254a3be98 Trigger build
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-29 13:50:43 +00:00
jenkins 7943cefddf [ci skip] Changed by Jenkins: 2414
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-12-29 10:17:00 +00:00
peter a2a287961c Fix error TS2307: Cannot find module 'ngx-openlayers' or its corresponding type declarations.
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-29 11:07:41 +01:00
peter 8e8f18ad7c Aw5739 Add ngx openlayers
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-12-29 11:01:36 +01:00
jenkins 5cbb6f32f9 [ci skip] Changed by Jenkins: 2398
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-21 11:57:05 +00:00
peter b2469f731e trigger build
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-21 11:54:47 +00:00
jenkins beb439469f [ci skip] Changed by Jenkins: 2397
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-19 13:26:17 +00:00
wilco ef49f62ca2 AW-5727 - Farms blijft leeg bij harde reload
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-19 14:14:57 +01:00
jenkins 67abc67d9a [ci skip] Changed by Jenkins: 2396
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-15 13:11:48 +00:00
jenkins 1f7f410916 [ci skip] Changed by Jenkins: 2395
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-15 13:06:21 +00:00
peter 2f176be8c6 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-15 14:01:02 +01:00
peter 1118c5ca60 Aw3998 Add click 2023-12-15 14:00:48 +01:00
jenkins c7831d1d87 [ci skip] Changed by Jenkins: 2394
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-15 12:51:48 +00:00
peter 31c5e0cb52 Aw3998 Add click
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-15 13:49:13 +01:00
jenkins c6a632894d [ci skip] Changed by Jenkins: 2393
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-15 10:10:59 +00:00
peter e652c7bb5b Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-15 11:05:40 +01:00
peter 818e04d1f3 Aw3998 Cleanup 2023-12-15 11:05:27 +01:00
jenkins ebbac409a0 [ci skip] Changed by Jenkins: 2392
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-12-15 10:01:59 +00:00
peter 5cc976ddd3 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/FarmMapsLib into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-12-15 10:59:18 +01:00
peter 38eae3263e Aw-3998 Add ability to clear features 2023-12-15 10:59:10 +01:00
jenkins a3eb2d9617 [ci skip] Changed by Jenkins: 2391
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-11-25 14:55:18 +00:00
mark 03e3c7ad95 fix build...
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-11-25 15:52:47 +01:00
mark 8fd8675260 AW-5366 fix scaling of histogram
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-11-25 15:46:31 +01:00
mark 187811e4e2 upped version
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-11-25 15:41:39 +01:00
mark 8e304fc6eb also use scale for histogram
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-11-23 21:13:44 +01:00
jenkins 127dc44917 [ci skip] Changed by Jenkins: 2387
FarmMaps.Develop/FarmMapsLib/pipeline/head Something is wrong with the build of this commit
2023-10-21 08:59:13 +00:00
jenkins aa5a8f0843 [ci skip] Changed by Jenkins: 2385
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 08:47:16 +00:00
jenkins a10aca92f1 [ci skip] Changed by Jenkins: 2383 2023-10-21 08:18:23 +00:00
jenkins e42e94fcf7 [ci skip] Changed by Jenkins: 2382
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 08:16:00 +00:00
jenkins 2b83ccad1f [ci skip] Changed by Jenkins: 2381
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 08:13:37 +00:00
jenkins e31d428c4b [ci skip] Changed by Jenkins: 2380
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:44:52 +00:00
jenkins 429e54ef8d [ci skip] Changed by Jenkins: 2379
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:39:40 +00:00
jenkins 02e13337bf [ci skip] Changed by Jenkins: 2378
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:34:27 +00:00
jenkins b4eb7aaeac [ci skip] Changed by Jenkins: 2377
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:30:58 +00:00
jenkins 7e21c725d8 [ci skip] Changed by Jenkins: 2376
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:25:39 +00:00
jenkins dd889ea7cc [ci skip] Changed by Jenkins: 2375
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:20:42 +00:00
jenkins 4dab5a00b1 [ci skip] Changed by Jenkins: 2374
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:16:29 +00:00
jenkins 5cc58e8988 [ci skip] Changed by Jenkins: 2373
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:11:47 +00:00
jenkins 0944e595d3 [ci skip] Changed by Jenkins: 2372
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:07:16 +00:00
jenkins 32bebec0df [ci skip] Changed by Jenkins: 2371
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 07:02:43 +00:00
jenkins c0cf210600 [ci skip] Changed by Jenkins: 2370
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:58:06 +00:00
jenkins f85a27a8e5 [ci skip] Changed by Jenkins: 2369
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:54:05 +00:00
jenkins 88ae8b829f [ci skip] Changed by Jenkins: 2368
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:49:06 +00:00
jenkins fcb60ed8bc [ci skip] Changed by Jenkins: 2367
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:44:19 +00:00
jenkins 3d535507fb [ci skip] Changed by Jenkins: 2366
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:40:43 +00:00
jenkins e89bdac47d [ci skip] Changed by Jenkins: 2365
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:35:36 +00:00
jenkins 4038702841 [ci skip] Changed by Jenkins: 2364
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:30:50 +00:00
jenkins 7ced2d2a7b [ci skip] Changed by Jenkins: 2363
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:27:26 +00:00
jenkins c53981f4a6 [ci skip] Changed by Jenkins: 2362
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:21:55 +00:00
jenkins 076dec27d5 [ci skip] Changed by Jenkins: 2361
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:16:30 +00:00
jenkins 5354aa8d0a [ci skip] Changed by Jenkins: 2360
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:12:54 +00:00
jenkins 12143c8e69 [ci skip] Changed by Jenkins: 2359
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:07:52 +00:00
jenkins 50519e9236 [ci skip] Changed by Jenkins: 2358
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 06:03:08 +00:00
jenkins 7f6d007c04 [ci skip] Changed by Jenkins: 2357
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:58:43 +00:00
jenkins 98be4f05cc [ci skip] Changed by Jenkins: 2356
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:54:03 +00:00
jenkins 79558e2168 [ci skip] Changed by Jenkins: 2355
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:49:44 +00:00
jenkins b966241997 [ci skip] Changed by Jenkins: 2354
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:44:51 +00:00
jenkins 60a7384f88 [ci skip] Changed by Jenkins: 2353
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:39:58 +00:00
jenkins 76f225b996 [ci skip] Changed by Jenkins: 2352
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:36:10 +00:00
jenkins 37a25c6b29 [ci skip] Changed by Jenkins: 2351
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:30:37 +00:00
jenkins 6c45842387 [ci skip] Changed by Jenkins: 2350
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:25:39 +00:00
jenkins d37b0866d5 [ci skip] Changed by Jenkins: 2349
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:22:22 +00:00
jenkins 270f244128 [ci skip] Changed by Jenkins: 2348
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:16:55 +00:00
jenkins ebddf688c6 [ci skip] Changed by Jenkins: 2347
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:11:46 +00:00
jenkins f1c572ecc9 [ci skip] Changed by Jenkins: 2346
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:08:27 +00:00
jenkins af5361b6c3 [ci skip] Changed by Jenkins: 2345
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 05:03:06 +00:00
jenkins 6daf0eab4a [ci skip] Changed by Jenkins: 2344
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:58:02 +00:00
jenkins 66fe0e9534 [ci skip] Changed by Jenkins: 2343
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:53:55 +00:00
jenkins 75ccc6dda4 [ci skip] Changed by Jenkins: 2342
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:49:13 +00:00
jenkins e45ec785d7 [ci skip] Changed by Jenkins: 2341
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:44:43 +00:00
jenkins b067b50937 [ci skip] Changed by Jenkins: 2340
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:39:41 +00:00
jenkins 0c2e6364ac [ci skip] Changed by Jenkins: 2339
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:34:53 +00:00
jenkins b232fb2c8e [ci skip] Changed by Jenkins: 2338
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:31:22 +00:00
jenkins 4a19694c1a [ci skip] Changed by Jenkins: 2337
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:26:15 +00:00
jenkins af766abe54 [ci skip] Changed by Jenkins: 2336
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:21:18 +00:00
jenkins 6333d78eab [ci skip] Changed by Jenkins: 2335
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:17:52 +00:00
jenkins c06fe315d8 [ci skip] Changed by Jenkins: 2334
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:12:49 +00:00
jenkins bc1f44f0b7 [ci skip] Changed by Jenkins: 2333
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:07:54 +00:00
jenkins 95bb8da8b7 [ci skip] Changed by Jenkins: 2332
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 04:04:15 +00:00
jenkins 68f8ff9cdd [ci skip] Changed by Jenkins: 2331
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:59:23 +00:00
jenkins 9e122fefd3 [ci skip] Changed by Jenkins: 2330
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:54:27 +00:00
jenkins b47ead21be [ci skip] Changed by Jenkins: 2329
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:49:59 +00:00
jenkins ebe43c3b27 [ci skip] Changed by Jenkins: 2328
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:45:21 +00:00
jenkins 686084f5cf [ci skip] Changed by Jenkins: 2327
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:40:56 +00:00
jenkins 0abaf15101 [ci skip] Changed by Jenkins: 2326
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:36:07 +00:00
jenkins 9dd2b5cdb5 [ci skip] Changed by Jenkins: 2325
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:31:28 +00:00
jenkins 2246a98bbb [ci skip] Changed by Jenkins: 2324
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:27:46 +00:00
jenkins 6265b66baf [ci skip] Changed by Jenkins: 2323
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:22:24 +00:00
jenkins 5488206588 [ci skip] Changed by Jenkins: 2322
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:17:37 +00:00
jenkins b4f2042aa0 [ci skip] Changed by Jenkins: 2321
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:14:13 +00:00
jenkins 21dca2163b [ci skip] Changed by Jenkins: 2320
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:08:56 +00:00
jenkins 2bc02323ae [ci skip] Changed by Jenkins: 2319
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 03:03:55 +00:00
jenkins 8b073fb855 [ci skip] Changed by Jenkins: 2318
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:59:42 +00:00
jenkins 5d28b547a1 [ci skip] Changed by Jenkins: 2317
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:54:59 +00:00
jenkins f2407dc12a [ci skip] Changed by Jenkins: 2316
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:50:27 +00:00
jenkins f02b317cf4 [ci skip] Changed by Jenkins: 2315
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:45:35 +00:00
jenkins 270b774c33 [ci skip] Changed by Jenkins: 2314
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:40:55 +00:00
jenkins 864b72c82c [ci skip] Changed by Jenkins: 2313
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:37:12 +00:00
jenkins c5716b0102 [ci skip] Changed by Jenkins: 2312
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:32:04 +00:00
jenkins ad097121da [ci skip] Changed by Jenkins: 2311
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:27:18 +00:00
jenkins 79b33cff50 [ci skip] Changed by Jenkins: 2310
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:23:53 +00:00
jenkins e01417f3b3 [ci skip] Changed by Jenkins: 2309
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:18:28 +00:00
jenkins 68ffc6f7d9 [ci skip] Changed by Jenkins: 2308
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:13:18 +00:00
jenkins ef7cf410b9 [ci skip] Changed by Jenkins: 2307
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:08:49 +00:00
jenkins 151ba2563e [ci skip] Changed by Jenkins: 2306
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 02:04:04 +00:00
jenkins 78f4dca9a1 [ci skip] Changed by Jenkins: 2305
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:59:33 +00:00
jenkins 52bf963afd [ci skip] Changed by Jenkins: 2304
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:55:02 +00:00
jenkins e6cfb85b8e [ci skip] Changed by Jenkins: 2303
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:50:24 +00:00
jenkins 6576e7cb6d [ci skip] Changed by Jenkins: 2302
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:46:19 +00:00
jenkins 7d7528ab4c [ci skip] Changed by Jenkins: 2301
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:41:07 +00:00
jenkins 34a79ec833 [ci skip] Changed by Jenkins: 2300
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:36:14 +00:00
jenkins 6cd5b0e5d7 [ci skip] Changed by Jenkins: 2299
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:32:38 +00:00
jenkins 412ddc01d1 [ci skip] Changed by Jenkins: 2298
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:27:32 +00:00
jenkins 10edf0728b [ci skip] Changed by Jenkins: 2297
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:22:40 +00:00
jenkins 57189ce4df [ci skip] Changed by Jenkins: 2296
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:18:05 +00:00
jenkins e72f933014 [ci skip] Changed by Jenkins: 2295
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:13:27 +00:00
jenkins 782e7adb00 [ci skip] Changed by Jenkins: 2294
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:08:52 +00:00
jenkins 17b78476ee [ci skip] Changed by Jenkins: 2293
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 01:04:01 +00:00
jenkins 93630d5a09 [ci skip] Changed by Jenkins: 2292
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:59:21 +00:00
jenkins 79f09d0e0e [ci skip] Changed by Jenkins: 2291
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:55:15 +00:00
jenkins 02016eb404 [ci skip] Changed by Jenkins: 2290
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:50:40 +00:00
jenkins 59760ad201 [ci skip] Changed by Jenkins: 2289
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:45:44 +00:00
jenkins 6eca90abb6 [ci skip] Changed by Jenkins: 2288
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:41:31 +00:00
jenkins b853b4d3f7 [ci skip] Changed by Jenkins: 2287
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:36:19 +00:00
jenkins 6e815e3442 [ci skip] Changed by Jenkins: 2286
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:31:19 +00:00
jenkins befa82d0f6 [ci skip] Changed by Jenkins: 2285
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:27:12 +00:00
jenkins 5df0e6e423 [ci skip] Changed by Jenkins: 2284
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:22:27 +00:00
jenkins 669f93a327 [ci skip] Changed by Jenkins: 2283
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:17:41 +00:00
jenkins 73ff1fd47f [ci skip] Changed by Jenkins: 2282
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:13:28 +00:00
jenkins e07c3aeb3d [ci skip] Changed by Jenkins: 2281
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:08:48 +00:00
jenkins 700b29c3d1 [ci skip] Changed by Jenkins: 2280
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-21 00:04:17 +00:00
jenkins 0ffdbfd3ca [ci skip] Changed by Jenkins: 2279
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:58:42 +00:00
jenkins 756db80b77 [ci skip] Changed by Jenkins: 2278
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:53:53 +00:00
jenkins b2559be980 [ci skip] Changed by Jenkins: 2277
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:50:26 +00:00
jenkins a9754a8eff [ci skip] Changed by Jenkins: 2276
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:44:53 +00:00
jenkins d5961d4c96 [ci skip] Changed by Jenkins: 2275
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:40:03 +00:00
jenkins 56e35345fc [ci skip] Changed by Jenkins: 2274
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:36:15 +00:00
jenkins 9755f5a635 [ci skip] Changed by Jenkins: 2273
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:31:22 +00:00
jenkins 2ff1aff9f3 [ci skip] Changed by Jenkins: 2272
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:26:18 +00:00
jenkins 164ac7e3ad [ci skip] Changed by Jenkins: 2271
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:22:05 +00:00
jenkins 85a7e890bd [ci skip] Changed by Jenkins: 2270
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:17:20 +00:00
jenkins 8766293966 [ci skip] Changed by Jenkins: 2269
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:12:47 +00:00
jenkins d2cad491b9 [ci skip] Changed by Jenkins: 2268
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:08:14 +00:00
jenkins 16d2c6abae [ci skip] Changed by Jenkins: 2267
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 23:03:36 +00:00
jenkins a212b59d73 [ci skip] Changed by Jenkins: 2266
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:59:21 +00:00
jenkins 3574e34659 [ci skip] Changed by Jenkins: 2265
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:54:18 +00:00
jenkins 13704c6845 [ci skip] Changed by Jenkins: 2264
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:49:39 +00:00
jenkins bbe337d115 [ci skip] Changed by Jenkins: 2263
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:45:43 +00:00
jenkins e1b6e59b6a [ci skip] Changed by Jenkins: 2262
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:40:29 +00:00
jenkins 3685644888 [ci skip] Changed by Jenkins: 2261
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:35:31 +00:00
jenkins 050adcbc0f [ci skip] Changed by Jenkins: 2260
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:32:05 +00:00
jenkins 0a12005d5d [ci skip] Changed by Jenkins: 2259
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:26:59 +00:00
jenkins 8a4644049b [ci skip] Changed by Jenkins: 2258
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:21:55 +00:00
jenkins ca7e5e03be [ci skip] Changed by Jenkins: 2257
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:17:41 +00:00
jenkins a1ceabec47 [ci skip] Changed by Jenkins: 2256
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:13:00 +00:00
jenkins 917b875732 [ci skip] Changed by Jenkins: 2255
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:08:15 +00:00
jenkins 7df2004671 [ci skip] Changed by Jenkins: 2254
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 22:03:04 +00:00
jenkins c50a79d723 [ci skip] Changed by Jenkins: 2253
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:58:10 +00:00
jenkins 519d789281 [ci skip] Changed by Jenkins: 2252
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:54:40 +00:00
jenkins b5038e9661 [ci skip] Changed by Jenkins: 2251
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:49:31 +00:00
jenkins bab69698c6 [ci skip] Changed by Jenkins: 2250
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:44:35 +00:00
jenkins 5c6ea6a391 [ci skip] Changed by Jenkins: 2249
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:40:39 +00:00
jenkins 328edc396b [ci skip] Changed by Jenkins: 2248
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:35:40 +00:00
jenkins 9cd8b81149 [ci skip] Changed by Jenkins: 2247
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:30:57 +00:00
jenkins 80e1f8042e [ci skip] Changed by Jenkins: 2246
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:26:44 +00:00
jenkins 1a1bdb314e [ci skip] Changed by Jenkins: 2245
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:22:06 +00:00
jenkins 51ec1bd3b4 [ci skip] Changed by Jenkins: 2244
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:17:45 +00:00
jenkins c8440ca536 [ci skip] Changed by Jenkins: 2243
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:12:51 +00:00
jenkins 889d1b4f9e [ci skip] Changed by Jenkins: 2242
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:08:16 +00:00
jenkins 97b458e812 [ci skip] Changed by Jenkins: 2241
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 21:04:14 +00:00
jenkins 0378565b88 [ci skip] Changed by Jenkins: 2240
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:59:03 +00:00
jenkins 8ca8874707 [ci skip] Changed by Jenkins: 2239
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:53:57 +00:00
jenkins dc2772aabf [ci skip] Changed by Jenkins: 2238
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:50:45 +00:00
jenkins ce0e561a3f [ci skip] Changed by Jenkins: 2237
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:45:22 +00:00
jenkins ba9aab03a9 [ci skip] Changed by Jenkins: 2236
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:40:28 +00:00
jenkins f10686423d [ci skip] Changed by Jenkins: 2235
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:36:10 +00:00
jenkins c1688f68c2 [ci skip] Changed by Jenkins: 2234
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:31:07 +00:00
jenkins c916b2f155 [ci skip] Changed by Jenkins: 2233
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:26:38 +00:00
jenkins 5df9ac295d [ci skip] Changed by Jenkins: 2232
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:21:27 +00:00
jenkins 065a45dc98 [ci skip] Changed by Jenkins: 2231
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:16:45 +00:00
jenkins 6b66777699 [ci skip] Changed by Jenkins: 2230
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:13:16 +00:00
jenkins 9927ba0929 [ci skip] Changed by Jenkins: 2229
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:08:06 +00:00
jenkins a05a29703c [ci skip] Changed by Jenkins: 2228
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:03:14 +00:00
jenkins 76952cac67 [ci skip] Changed by Jenkins: 2227
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 20:00:11 +00:00
jenkins 9b27a997f3 [ci skip] Changed by Jenkins: 2226
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:55:10 +00:00
jenkins 014e3143fd [ci skip] Changed by Jenkins: 2225
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:49:25 +00:00
jenkins 7eaf1686e1 [ci skip] Changed by Jenkins: 2224
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:45:29 +00:00
jenkins d4bf2a6667 [ci skip] Changed by Jenkins: 2223
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:40:20 +00:00
jenkins 9d7cf637ee [ci skip] Changed by Jenkins: 2222
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:35:28 +00:00
jenkins 979f80ce89 [ci skip] Changed by Jenkins: 2221
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:31:06 +00:00
jenkins c677a9b639 [ci skip] Changed by Jenkins: 2220
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:26:28 +00:00
jenkins 9440b91d90 [ci skip] Changed by Jenkins: 2219
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:22:00 +00:00
jenkins 2b18167761 [ci skip] Changed by Jenkins: 2218
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:17:12 +00:00
jenkins da8b2f1d3a [ci skip] Changed by Jenkins: 2217
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:12:23 +00:00
jenkins 10e4e6abc6 [ci skip] Changed by Jenkins: 2216
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:08:42 +00:00
jenkins 6acfe7c32f [ci skip] Changed by Jenkins: 2215
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 19:03:43 +00:00
jenkins d08c1b2008 [ci skip] Changed by Jenkins: 2214
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:59:00 +00:00
jenkins a47e1d9a63 [ci skip] Changed by Jenkins: 2213
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:55:36 +00:00
jenkins 4187522739 [ci skip] Changed by Jenkins: 2212
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:50:18 +00:00
jenkins c0d0088f6e [ci skip] Changed by Jenkins: 2211
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:45:22 +00:00
jenkins d43dff3085 [ci skip] Changed by Jenkins: 2210
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:41:54 +00:00
jenkins 9a04e1f848 [ci skip] Changed by Jenkins: 2209
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:36:47 +00:00
jenkins 621773a6f1 [ci skip] Changed by Jenkins: 2208
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:32:05 +00:00
jenkins a9672c44bf [ci skip] Changed by Jenkins: 2207
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:28:14 +00:00
jenkins 155c212f89 [ci skip] Changed by Jenkins: 2206
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:22:58 +00:00
jenkins ee35c3f1b8 [ci skip] Changed by Jenkins: 2205
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:18:04 +00:00
jenkins 0a405f5515 [ci skip] Changed by Jenkins: 2204
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:13:42 +00:00
jenkins b618b7c40f [ci skip] Changed by Jenkins: 2203
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:09:03 +00:00
jenkins f10e68c4ad [ci skip] Changed by Jenkins: 2202
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 18:04:31 +00:00
jenkins 870c3c2c77 [ci skip] Changed by Jenkins: 2201
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:59:26 +00:00
jenkins 1559f15c7f [ci skip] Changed by Jenkins: 2200
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:54:47 +00:00
jenkins 96345e54fb [ci skip] Changed by Jenkins: 2199
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:51:16 +00:00
jenkins f61590c677 [ci skip] Changed by Jenkins: 2198
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:45:57 +00:00
jenkins 6f1ec4a17a [ci skip] Changed by Jenkins: 2197
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:41:02 +00:00
jenkins 786e9392b1 [ci skip] Changed by Jenkins: 2196
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:37:24 +00:00
jenkins f229c25b8f [ci skip] Changed by Jenkins: 2195
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:32:15 +00:00
jenkins 9bdd1ff35f [ci skip] Changed by Jenkins: 2194
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:27:09 +00:00
jenkins 4dd7a15b30 [ci skip] Changed by Jenkins: 2193
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:22:59 +00:00
jenkins a4aa7dbb7d [ci skip] Changed by Jenkins: 2192
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:17:51 +00:00
jenkins 681d2fe273 [ci skip] Changed by Jenkins: 2191
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 17:12:35 +00:00
peter 78b7ef44d9 Update Jenkinsfile.develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-10-20 12:20:03 +00:00
peter e19ca94653 Update Jenkinsfile 2023-10-20 12:19:52 +00:00
Willem Dantuma a85378374b kick version
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
FarmMaps/FarmMapsLib/pipeline/head This commit looks good
2023-10-18 19:35:01 +02:00
wilco 9e3f6010c3 Merge branch 'master' into develop
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
FarmMaps/FarmMapsLib/pipeline/head This commit looks good
# Conflicts:
#	package-lock.json
#	package.json
2023-10-05 16:27:20 +02:00
wilco e6a637b866 AW-5467 - Refresh geeft leeg scherm
FarmMaps/FarmMapsLib/pipeline/head This commit looks good
2023-10-05 11:23:18 +02:00
Willem Dantuma ccf77805a0 AW-5495
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-09-11 21:59:34 +02:00
peter 2b2e1bfafa Layout
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-25 11:07:21 +02:00
peter 3fd4ac2f94 error TS1068: Unexpected token. A constructor, method, accessor, or property was expected.
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-25 09:53:36 +02:00
peter 9849eaf1e7 AW1873 Labels -> show below zoom, overflow + format centroid
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-08-25 09:50:38 +02:00
peter b516cc07e2 AW1873Bouwplanlabels
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-24 09:05:42 +02:00
peter c9c9a2ddbf AW1873Bouwplanlabels
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-23 16:34:18 +02:00
peter 1d0f3b958d AW1873Bouwplanlabels generalize
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-23 15:17:38 +02:00
peter 45537cb2e9 ------------------------------------------------------------------------------
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
Building entry point '@farmmaps/common-map'
------------------------------------------------------------------------------
- Compiling with Angular sources in Ivy partial compilation mode.
Processing legacy "View Engine" libraries:
- ngx-openlayers [es2015/esm2015] ()
Encourage the library authors to publish an Ivy distribution.
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
✖ Compiling with Angular sources in Ivy partial compilation mode.
projects/common-map/src/fm-map/components/map/map.component.ts:371:83 - error TS2339: Property 'replaceUrl' does not exist on type '{ mapState: IMapState; queryState: IQueryState; }'.

371           this.replaceUrl(newUrlState.mapState,newUrlState.queryState,newUrlState.replaceUrl);
2023-08-22 18:55:16 +02:00
peter 652ddc0cdc AW1873Bouwplanlabels
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-08-22 18:45:46 +02:00
peter fd3b331cc0 AW-5419 RxJs => versie 7.x
FarmMaps.Develop/FarmMapsLib/pipeline/head There was a failure building this commit
2023-08-22 13:37:16 +02:00
peter 9facbe76c8 AW1873Bouwplanlabels
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-22 13:16:37 +02:00
peter 20dff38cf7 AW1873 labels -> undefined/null fixes
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-21 16:59:54 +02:00
peter e374bb8a73 AW1873 labels
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-21 16:28:32 +02:00
peter 294b9c6dd3 kick version
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good
2023-08-09 10:17:50 +02:00
peter d92bf54c8d Revert "AW-2924 Cache codelists"
This reverts commit 914e272fc2.
2023-08-09 10:17:32 +02:00
219 changed files with 17881 additions and 20734 deletions
+1
View File
@@ -51,4 +51,5 @@ projects/common-map/node_modules/
.angular/* .angular/*
projects/common-map3d/node_modules/ projects/common-map3d/node_modules/
projects/common-map/node_modules/ projects/common-map/node_modules/
projects/ng-openlayers/node_modules/
projects/common/node_modules/ projects/common/node_modules/
Vendored
+1 -1
View File
@@ -4,7 +4,7 @@ pipeline {
agent any; agent any;
options { options {
copyArtifactPermission projectNames: env.allProjectsArtifactPermission; copyArtifactPermission projectNames: env.allProjectsArtifactPermission;
disableConcurrentBuilds abortPrevious: true; disableConcurrentBuilds();
} }
stages { stages {
stage('FarmmapsLibBuildAll') { stage('FarmmapsLibBuildAll') {
+1 -1
View File
@@ -4,7 +4,7 @@ pipeline {
agent any; agent any;
options { options {
copyArtifactPermission projectNames: env.allProjectsArtifactPermission; copyArtifactPermission projectNames: env.allProjectsArtifactPermission;
disableConcurrentBuilds abortPrevious: true; disableConcurrentBuilds();
} }
stages { stages {
stage('FarmmapsLibBuildAll') { stage('FarmmapsLibBuildAll') {
+1 -2
View File
@@ -2,7 +2,6 @@
This is a sample FarmMaps client in Angular 7.x. This is a sample FarmMaps client in Angular 7.x.
## Quick start ## Quick start
Use one of the two options below to get started. Use one of the two options below to get started.
@@ -51,7 +50,7 @@ npm install -g @angular/cli
npm install npm install
ng serve ng serve
``` ```
*Go* *Go*`
Point your browser to http://localhost:4200 Point your browser to http://localhost:4200
+40 -3
View File
@@ -209,13 +209,13 @@
"options": { "options": {
"tsConfig": "projects/common-map/tsconfig.lib.json", "tsConfig": "projects/common-map/tsconfig.lib.json",
"project": "projects/common-map/ng-package.json" "project": "projects/common-map/ng-package.json"
} },
, "configurations": { "configurations": {
"production": { "production": {
"tsConfig": "projects/common-map/tsconfig.lib.prod.json" "tsConfig": "projects/common-map/tsconfig.lib.prod.json"
} }
} }
}, },
"test": { "test": {
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-devkit/build-angular:karma",
"options": { "options": {
@@ -253,6 +253,43 @@
} }
} }
} }
},
"ng-openlayers": {
"projectType": "library",
"root": "projects/ng-openlayers",
"sourceRoot": "projects/ng-openlayers/src",
"prefix": "ng-openlayers",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"tsConfig": "projects/ng-openlayers/tsconfig.lib.json",
"project": "projects/ng-openlayers/ng-package.json"
},
"configurations": {
"production": {
"tsConfig": "projects/ng-openlayers/tsconfig.lib.prod.json"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/ng-openlayers/src/test.ts",
"tsConfig": "projects/ng-openlayers/tsconfig.spec.json",
"karmaConfig": "projects/ng-openlayers/karma.conf.js"
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"projects/ng-openlayers/**/*.ts",
"projects/ng-openlayers/**/*.html"
]
}
}
}
} }
}, },
"cli": { "cli": {
+7598 -19673
View File
File diff suppressed because it is too large Load Diff
+43 -39
View File
@@ -1,6 +1,6 @@
{ {
"name": "farmmaps-lib-app", "name": "farmmaps-lib-app",
"version": "3.4.0", "version": "4.14.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
@@ -11,66 +11,70 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^14.1.3", "@angular-eslint/eslint-plugin": "^18.2.0",
"@angular/common": "^14.1.3", "@angular/animations": "18.2.3",
"@angular/compiler": "^14.1.3", "@angular/common": "18.2.3",
"@angular/core": "^14.1.3", "@angular/compiler": "18.2.3",
"@angular-eslint/eslint-plugin": "^15.2.1", "@angular/core": "18.2.3",
"@angular/forms": "^14.1.3", "@angular/forms": "18.2.3",
"@angular/platform-browser": "^14.1.3", "@angular/platform-browser": "18.2.3",
"@angular/platform-browser-dynamic": "^14.1.3", "@angular/platform-browser-dynamic": "18.2.3",
"@angular/router": "^14.1.3", "@angular/router": "18.2.3",
"@farmmaps/common": "file:dist/common", "@farmmaps/common": "file:dist/common",
"@farmmaps/common-map": "file:dist/common-map", "@farmmaps/common-map": "file:dist/common-map",
"@farmmaps/common-map3d": "file:dist/common-map3d", "@farmmaps/common-map3d": "file:dist/common-map3d",
"@farmmaps/ng-openlayers": "file:dist/ng-openlayers",
"@microsoft/signalr": "^3.1.16", "@microsoft/signalr": "^3.1.16",
"@ng-bootstrap/ng-bootstrap": "^13.0.0", "@ng-bootstrap/ng-bootstrap": "^17.0.1",
"@ngrx/effects": "^14", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store": "^14", "@ngrx/router-store": "^18.0.2",
"@ngrx/store": "^14", "@ngrx/store": "^18.0.2",
"@popperjs/core": "^2.11.6", "@popperjs/core": "^2.11.8",
"angular-oauth2-oidc": "^13", "angular-oauth2-oidc": "^17.0.2",
"assert": "^2.0.0", "assert": "^2.0.0",
"bootstrap": "^5.2.0", "bootstrap": "^5.3.3",
"browserify-zlib": "^0.2.0", "browserify-zlib": "^0.2.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"cesium": "^1.97.0", "cesium": "^1.97.0",
"core-js": "^2.6.12", "core-js": "^2.6.12",
"https-browserify": "^1.0.0", "https-browserify": "^1.0.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"ngrx-store-localstorage": "^14", "ngrx-store-localstorage": "^18.0.0",
"ngx-avatar": "^4.1.0", "ngx-avatars": "^1.8.0",
"ngx-clipboard": "^14.0.1", "ngx-clipboard": "^16.0.0",
"ngx-image-cropper": "^3.3.5", "ngx-image-cropper": "^7.0.0",
"ngx-openlayers": "1.0.0-next.19", "ngx-uploadx": "^6.2.0",
"ngx-uploadx": "^5.2.0", "ol": "^8.2.0",
"ol": "6.14.1",
"olcs": "^2.13.1", "olcs": "^2.13.1",
"resumablejs": "^1.1.0", "resumablejs": "^1.1.0",
"rxjs": "^6.6.7", "rxjs": "^7.8.1",
"stream": "^0.0.2", "stream": "^0.0.2",
"stream-http": "^3.2.0", "stream-http": "^3.2.0",
"tassign": "^1.0.0", "tassign": "^1.0.0",
"tslib": "^2.4.0", "tslib": "^2.4.0",
"url": "^0.11.0", "url": "^0.11.0",
"util": "^0.12.4", "util": "^0.12.4",
"zone.js": "~0.11.4" "zone.js": "~0.14.10"
},
"optionalDependencies": {
"@lmdb/lmdb-linux-x64": "^3.1.0",
"@rollup/rollup-linux-x64-gnu": "^4.21.2"
}, },
"devDependencies": { "devDependencies": {
"@angular-builders/custom-webpack": "^14", "@angular-builders/custom-webpack": "^18.0.0",
"@angular-devkit/build-angular": "^14.1.3", "@angular-devkit/build-angular": "18.2.3",
"@angular/cli": "^14.1.3", "@angular/cli": "18.2.3",
"@angular/compiler-cli": "^14.1.3", "@angular/compiler-cli": "18.2.3",
"@angular/language-service": "^14.1.3", "@angular/language-service": "18.2.3",
"@angular/localize": "^14.1.3", "@angular/localize": "18.2.3",
"@types/arcgis-rest-api": "^10.4.5", "@types/arcgis-rest-api": "^10.4.5",
"@types/jasmine": "~2.8.8", "@types/jasmine": "~2.8.8",
"@types/jasminewd2": "^2.0.9", "@types/jasminewd2": "^2.0.9",
"@types/node": "^12.20.15", "@types/node": "^22.5.4",
"@typescript-eslint/eslint-plugin": "^5.54.0", "@typescript-eslint/eslint-plugin": "^6.18.0",
"@typescript-eslint/eslint-plugin-tslint": "^5.54.0", "@typescript-eslint/eslint-plugin-tslint": "^6.18.0",
"@typescript-eslint/parser": "^5.54.0", "@typescript-eslint/parser": "^6.18.0",
"codelyzer": "^0.0.28", "codelyzer": "^6.0.2",
"eslint": "^8.35.0", "eslint": "^8.35.0",
"eslint-config-prettier": "^8.6.0", "eslint-config-prettier": "^8.6.0",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
@@ -81,9 +85,9 @@
"karma-coverage-istanbul-reporter": "^3.0.3", "karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "^5.1.0", "karma-jasmine": "^5.1.0",
"karma-jasmine-html-reporter": "^2.0.0", "karma-jasmine-html-reporter": "^2.0.0",
"ng-packagr": "^14.1.0", "ng-packagr": "^18.2.1",
"protractor": "~7.0.0", "protractor": "~7.0.0",
"ts-node": "^8.8.1", "ts-node": "^8.8.1",
"typescript": "~4.6.4" "typescript": "~5.4.4"
} }
} }
+198 -11
View File
@@ -11,20 +11,207 @@
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/core": ">=14.0.0", "@angular/core": "^18.2.3",
"@ngrx/effects": ">=14.0.0", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store": ">=14.0.0", "@ngrx/router-store": "^18.0.2",
"@ngrx/store": ">=14.0.0", "@ngrx/store": "^18.0.2",
"ngrx-store-localstorage": ">=14.0.0", "ngrx-store-localstorage": "^18",
"ngx-openlayers": ">=1.0.0-next.19", "tassign": "^1.0.0"
"ol": ">=6.8.1",
"tassign": ">=1.0.0"
} }
}, },
"../../dist/libs/ng-openlayers": {
"version": "18.0.0",
"extraneous": true,
"license": "MPL-2.0",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/common": "^18.2.3",
"@angular/core": "^18.2.3",
"ol": "^8.2.0"
}
},
"dist/ng-openlayers": {
"extraneous": true
},
"node_modules/@angular/common": {
"version": "18.2.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.3.tgz",
"integrity": "sha512-NFL4yXXImSCH7i1xnHykUjHa9vl9827fGiwSV2mnf7LjSUsyDzFD8/54dNuYN9OY8AUD+PnK0YdNro6cczVyIA==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/core": {
"version": "18.2.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.3.tgz",
"integrity": "sha512-VGhMJxj7d0rYpqVfQrcGRB7EE/BCziotft/I/YPl6bOMPSAvMukG7DXQuJdYpNrr62ks78mlzHlZX/cdmB9Prw==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"rxjs": "^6.5.3 || ^7.4.0",
"zone.js": "~0.14.10"
}
},
"node_modules/@angular/platform-browser": {
"version": "18.2.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.3.tgz",
"integrity": "sha512-M2ob4zN7tAcL2mx7U6KnZNqNFPFl9MlPBE0FrjQjIzAjU0wSYPIJXmaPu9aMUp9niyo+He5iX98I+URi2Yc99g==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/animations": "18.2.3",
"@angular/common": "18.2.3",
"@angular/core": "18.2.3"
},
"peerDependenciesMeta": {
"@angular/animations": {
"optional": true
}
}
},
"node_modules/@angular/router": {
"version": "18.2.3",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.3.tgz",
"integrity": "sha512-fvD9eSDIiIbeYoUokoWkXzu7/ZaxlzKPUHFqX1JuKuH5ciQDeT/d7lp4mj31Bxammhohzi3+z12THJYsCkj/iQ==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.3",
"@angular/core": "18.2.3",
"@angular/platform-browser": "18.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@ngrx/effects": {
"version": "18.0.2",
"resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-18.0.2.tgz",
"integrity": "sha512-YojXcOD9Lsq4kl2HCjENccyUM/mOlgBdtddsg9j/ojzSUgu3ZuBVKLN3atrL2TJYkbMX1MN0RzafSkL3TPGFIA==",
"peer": true,
"dependencies": {
"@ngrx/operators": "18.0.1",
"tslib": "^2.0.0"
},
"peerDependencies": {
"@angular/core": "^18.0.0",
"@ngrx/store": "18.0.2",
"rxjs": "^6.5.3 || ^7.5.0"
}
},
"node_modules/@ngrx/operators": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-18.0.1.tgz",
"integrity": "sha512-M+QMrHNKgcuiLaRGZxJ4aQi5/OCRfKC4+T/63dsHyLFZ53/FFpF6a/ytSO1Q+tzOplZ5o99S+i8FVaZqNQ3LmQ==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@ngrx/router-store": {
"version": "18.0.2",
"resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-18.0.2.tgz",
"integrity": "sha512-jUrQ/uJJ53x8O1XbN2YxH2GpRREZlwS5gRxlCoc4fWL4Us/uS1/K6+QfRmKBPtpTKBIixqsOb+dIUV5iwBrivA==",
"peer": true,
"dependencies": {
"tslib": "^2.0.0"
},
"peerDependencies": {
"@angular/common": "^18.0.0",
"@angular/core": "^18.0.0",
"@angular/router": "^18.0.0",
"@ngrx/store": "18.0.2",
"rxjs": "^6.5.3 || ^7.5.0"
}
},
"node_modules/@ngrx/store": {
"version": "18.0.2",
"resolved": "https://registry.npmjs.org/@ngrx/store/-/store-18.0.2.tgz",
"integrity": "sha512-ajwv0+njsO4vzArp9esnFvs1wyUb1U1W8E8LSCKrcW2hWWo9o1Pezj+JRsdQwatxHfrrPFuTDyajsl6GQM/JSA==",
"peer": true,
"dependencies": {
"tslib": "^2.0.0"
},
"peerDependencies": {
"@angular/core": "^18.0.0",
"rxjs": "^6.5.3 || ^7.5.0"
}
},
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ngrx-store-localstorage": {
"version": "18.0.0",
"resolved": "https://registry.npmjs.org/ngrx-store-localstorage/-/ngrx-store-localstorage-18.0.0.tgz",
"integrity": "sha512-WoDePvMWiWF9LQHe+dTqbpm8lxoKCPoIvA0/1enIPTmdLQsOpdDKhMSD5YgwuqDusNfEik3QslProTFGyXZwtw==",
"peer": true,
"dependencies": {
"deepmerge": "^4.2.2",
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/common": "^18.0.1",
"@angular/core": "^18.0.1",
"@ngrx/store": "^18.0.0"
}
},
"node_modules/rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/tassign": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/tassign/-/tassign-1.0.0.tgz",
"integrity": "sha512-k0Ti9f+A1R0BRdArEbiUHldd+A40kZ5qsiNSNk4czx61wkAoSZYjqkaQs0jC63AfgPdCXVPstDq2ZW5ZLRTCgw==",
"peer": true
},
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.0.1", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
"integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="
},
"node_modules/zone.js": {
"version": "0.14.10",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz",
"integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==",
"peer": true
} }
} }
} }
+6 -8
View File
@@ -8,13 +8,11 @@
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/core": ">=14.0.0", "@angular/core": "18.2.3",
"ngrx-store-localstorage": ">=14.0.0", "ngrx-store-localstorage": "^18.0.0",
"@ngrx/effects": ">=14.0.0", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store":">=14.0.0", "@ngrx/router-store": "^18.0.2",
"@ngrx/store":">=14.0.0", "@ngrx/store": "^18.0.2",
"tassign": ">=1.0.0", "tassign": "^1.0.0"
"ngx-openlayers": ">=1.0.0-next.19",
"ol": ">=6.8.1"
} }
} }
@@ -5,7 +5,7 @@ import { IItemLayer } from '../models/item.layer';
import { ILayervalue } from '../models/layer.value'; import { ILayervalue } from '../models/layer.value';
import { IQueryState } from '@farmmaps/common'; import { IQueryState } from '@farmmaps/common';
import { IItem } from '@farmmaps/common'; import { IItem } from '@farmmaps/common';
import { Feature, Observable } from 'ol'; import { Feature } from 'ol';
import { Style } from 'ol/style'; import { Style } from 'ol/style';
import { Geometry } from 'ol/geom'; import { Geometry } from 'ol/geom';
import { IPeriodState } from '../models/period.state'; import { IPeriodState } from '../models/period.state';
@@ -18,6 +18,7 @@ export const SETPARENT = '[Map] SetParent';
export const SETPERIOD = '[Map] SetPeriod'; export const SETPERIOD = '[Map] SetPeriod';
export const STARTSEARCH = '[Map] StartSearch'; export const STARTSEARCH = '[Map] StartSearch';
export const STARTSEARCHSUCCESS = '[Map] StartSearchSuccess'; export const STARTSEARCHSUCCESS = '[Map] StartSearchSuccess';
export const CLICKFEATURE = '[Map] ClickFeature';
export const SELECTFEATURE = '[Map] SelectFeature'; export const SELECTFEATURE = '[Map] SelectFeature';
export const SELECTITEM = '[Map] SelectItem'; export const SELECTITEM = '[Map] SelectItem';
export const SELECTITEMSUCCESS = '[Map] SelectItemSuccess'; export const SELECTITEMSUCCESS = '[Map] SelectItemSuccess';
@@ -56,7 +57,8 @@ export const GETLAYERVALUE = '[Map] GetLayerValue'
export const GETLAYERVALUESUCCESS = '[Map] GetLayerValueSuccess' export const GETLAYERVALUESUCCESS = '[Map] GetLayerValueSuccess'
export const TOGGLESHOWDATALAYERSLIDE = '[Map] ToggleShowDataLayerSlide' export const TOGGLESHOWDATALAYERSLIDE = '[Map] ToggleShowDataLayerSlide'
export const SETVIEWSTATE = '[Map] SetViewState' export const SETVIEWSTATE = '[Map] SetViewState'
export const SETCODELIST = '[Map] SetCodeList' export const CLEARFEATURES = '[Map] ClearFeatures';
export const SETPANELEXTRAWIDE = '[Map] SetPanelExtraWide';
export class Clear implements Action { export class Clear implements Action {
readonly type = CLEAR; readonly type = CLEAR;
@@ -111,6 +113,12 @@ export class StartSearchSuccess implements Action {
constructor(public features: Array<Feature<Geometry>>, public query:IQueryState) { } constructor(public features: Array<Feature<Geometry>>, public query:IQueryState) { }
} }
export class ClickFeature implements Action {
readonly type = CLICKFEATURE;
constructor(public feature:Feature<Geometry>) { }
}
export class SelectFeature implements Action { export class SelectFeature implements Action {
readonly type = SELECTFEATURE; readonly type = SELECTFEATURE;
@@ -329,10 +337,14 @@ export class SetViewState implements Action {
constructor(public enabled:boolean) {} constructor(public enabled:boolean) {}
} }
export class SetCodeList implements Action { export class ClearFeatures implements Action {
readonly type = SETCODELIST; readonly type = CLEARFEATURES;
constructor() {}
}
constructor(public itemType:string, public values: IItem[]) { } export class SetPanelExtraWide implements Action {
readonly type = SETPANELEXTRAWIDE;
constructor(public panelExtraWide:boolean) {}
} }
export type Actions = SetMapState export type Actions = SetMapState
@@ -341,6 +353,7 @@ export type Actions = SetMapState
| SetParent | SetParent
| StartSearch | StartSearch
| StartSearchSuccess | StartSearchSuccess
| ClickFeature
| SelectFeature | SelectFeature
| SelectItem | SelectItem
| SelectItemSuccess | SelectItemSuccess
@@ -381,5 +394,6 @@ export type Actions = SetMapState
| SetPeriod | SetPeriod
| ToggleShowDataLayerSlide | ToggleShowDataLayerSlide
| SetViewState | SetViewState
| SetCodeList; | ClearFeatures
| SetPanelExtraWide;
@@ -1,78 +1,78 @@
import { NgModule ,ModuleWithProviders} from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
//external modules //external modules
import { AngularOpenlayersModule } from 'ngx-openlayers';
import { StoreModule, ActionReducer, MetaReducer } from '@ngrx/store';
import { EffectsModule } from '@ngrx/effects';
import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
import { EffectsModule } from '@ngrx/effects';
import { ActionReducer, MetaReducer, StoreModule } from '@ngrx/store';
import { AngularOpenlayersModule } from '@farmmaps/ng-openlayers';
//common modules //common modules
import { AppCommonModule } from '@farmmaps/common'; import { AppCommonModule } from '@farmmaps/common';
import { MODULE_NAME } from './module-name';
import * as mapReducers from './reducers/map.reducer';
import * as mapActions from './actions/map.actions'; import * as mapActions from './actions/map.actions';
import * as mapEffects from './effects/map.effects'; import * as mapEffects from './effects/map.effects';
import { MODULE_NAME } from './module-name';
import * as mapReducers from './reducers/map.reducer';
import { IMapState} from './models/map.state';
import { ISelectedFeatures } from './models/selected.features';
import { IItemLayer,ItemLayer,ITemporalItemLayer,TemporalItemLayer } from './models/item.layer';
import { IClickedFeature } from './models/clicked.feature'; import { IClickedFeature } from './models/clicked.feature';
import { IItemLayer, ItemLayer, ITemporalItemLayer, TemporalItemLayer } from './models/item.layer';
import { IMapState } from './models/map.state';
import { IPeriodState } from './models/period.state'; import { IPeriodState } from './models/period.state';
import { ISelectedFeatures } from './models/selected.features';
// components // components
import { GpsLocation} from './components/aol/gps-location/gps-location.component'; import { MapRoutingModule } from './common-map-routing.module';
import {FeatureListFeatureCropfieldComponent } from './components/feature-list-feature-cropfield/feature-list-feature-cropfield.component';
import { FeatureListFeatureCroppingschemeComponent} from './components/feature-list-feature-croppingscheme/feature-list-feature-croppingscheme.component';
import { ItemWidgetListComponent} from './components/item-widget-list/item-widget-list.component';
import { AbstractItemListItemComponent, ItemListItemComponent, AbstractItemWidgetComponent } from './components/item-list-item/item-list-item.component';
import { ItemListItemContainerComponent } from './components/item-list-item-container/item-list-item-container.component';
import { AbstractItemListComponent,ItemListComponent} from './components/item-list/item-list.component';
import { AbstractSelectedItemComponent, SelectedItemComponent } from './components/selected-item/selected-item.component';
import { SelectedItemCropfieldComponent } from './components/selected-item-cropfield/selected-item-cropfield.component';
import { SelectedItemGeotiffComponent } from './components/selected-item-geotiff/selected-item-geotiff.component';
import { SelectedItemTemporalComponent} from './components/selected-item-temporal/selected-item-temporal.component';
import {SelectedItemShapeComponent } from './components/selected-item-shape/selected-item-shape.component';
import { SelectedItemContainerComponent } from './components/selected-item-container/selected-item-container.component';
import { AbstractFeatureListFeatureComponent, FeatureListFeatureComponent } from './components/feature-list-feature/feature-list-feature.component';
import {FeatureListFeatureContainerComponent } from './components/feature-list-feature-container/feature-list-feature-container.component';
import { FeatureListCroppingschemeComponent } from './components/feature-list-croppingscheme/feature-list-croppingscheme.component';
import {FeatureListCropfieldComponent } from './components/feature-list-cropfield/feature-list-cropfield.component';
import {FeatureListContainerComponent } from './components/feature-list-container/feature-list-container.component';
import { WidgetHostDirective} from './components/widget-host/widget-host.directive';
import { FeatureListComponent,AbstractFeatureListComponent} from './components/feature-list/feature-list.component';
import { FileDropTargetComponent } from './components/aol/file-drop-target/file-drop-target.component'; import { FileDropTargetComponent } from './components/aol/file-drop-target/file-drop-target.component';
import { ItemVectorSourceComponent } from './components/aol/item-vector-source/item-vector-source.component'; import { GpsLocation } from './components/aol/gps-location/gps-location.component';
import { ItemLayersComponent } from './components/aol/item-layers/item-layers.component'; import { ItemLayersComponent } from './components/aol/item-layers/item-layers.component';
import { ZoomToExtentComponent } from './components/aol/zoom-to-extent/zoom-to-extent.component'; import { ItemVectorSourceComponent } from './components/aol/item-vector-source/item-vector-source.component';
import { RotationResetComponent } from './components/aol/rotation-reset/rotation-reset.component';
import { LayerListComponent } from './components/aol/layer-list/layer-list.component'; import { LayerListComponent } from './components/aol/layer-list/layer-list.component';
import { LayerValuesComponent } from './components/aol/layer-values/layer-values.component';
import { LayerVectorImageComponent } from './components/aol/layer-vector-image/layer-vector-image.component';
import { PanToLocation } from './components/aol/pan-to-location/pan-to-location.component';
import { RotationResetComponent } from './components/aol/rotation-reset/rotation-reset.component';
import { ZoomToExtentComponent } from './components/aol/zoom-to-extent/zoom-to-extent.component';
import { FeatureListContainerComponent } from './components/feature-list-container/feature-list-container.component';
import { FeatureListCropfieldComponent } from './components/feature-list-cropfield/feature-list-cropfield.component';
import { FeatureListCroppingschemeComponent } from './components/feature-list-croppingscheme/feature-list-croppingscheme.component';
import { FeatureListFeatureContainerComponent } from './components/feature-list-feature-container/feature-list-feature-container.component';
import { FeatureListFeatureCropfieldComponent } from './components/feature-list-feature-cropfield/feature-list-feature-cropfield.component';
import { FeatureListFeatureCroppingschemeComponent } from './components/feature-list-feature-croppingscheme/feature-list-feature-croppingscheme.component';
import { AbstractFeatureListFeatureComponent, FeatureListFeatureComponent } from './components/feature-list-feature/feature-list-feature.component';
import { AbstractFeatureListComponent, FeatureListComponent } from './components/feature-list/feature-list.component';
import { GeometryThumbnailComponent } from './components/feature-thumbnail/feature-thumbnail.component';
import { ForChild } from './components/for-item/for-child.decorator';
import { ForItemType } from './components/for-item/for-itemtype.decorator';
import { ForPackage } from './components/for-item/for-package.decorator';
import { ForSourceTask } from './components/for-item/for-sourcetask.decorator';
import { ifZoomToShowDirective } from './components/if-zoom-to-show/if-zoom-to-show.directive';
import { ItemListItemContainerComponent } from './components/item-list-item-container/item-list-item-container.component';
import { AbstractItemListItemComponent, AbstractItemWidgetComponent, ItemListItemComponent } from './components/item-list-item/item-list-item.component';
import { AbstractItemListComponent, ItemListComponent } from './components/item-list/item-list.component';
import { ItemWidgetListComponent } from './components/item-widget-list/item-widget-list.component';
import { LayerSwitcher } from './components/layer-switcher/layer-switcher.component';
import { HistogramDetailsComponent } from './components/legend/histogram-details/histogram-details.component';
import { LegendComponent } from './components/legend/legend.component';
import { StatisticsDetailsComponent } from './components/legend/statistics-details/statistics-details.component';
import { MapSearchComponent } from './components/map-search/map-search.component';
import { MapComponent } from './components/map/map.component';
import { MetaDataModalComponent } from './components/meta-data-modal/meta-data-modal.component'; import { MetaDataModalComponent } from './components/meta-data-modal/meta-data-modal.component';
import { SelectPeriodModalComponent } from './components/select-period-modal/select-period-modal.component'; import { SelectPeriodModalComponent } from './components/select-period-modal/select-period-modal.component';
import { MapComponent } from './components/map/map.component'; import { SelectedItemContainerComponent } from './components/selected-item-container/selected-item-container.component';
import { MapSearchComponent } from './components/map-search/map-search.component'; import { SelectedItemCropfieldComponent } from './components/selected-item-cropfield/selected-item-cropfield.component';
import { MapRoutingModule } from './common-map-routing.module'; import { SelectedItemGeotiffComponent } from './components/selected-item-geotiff/selected-item-geotiff.component';
import { LegendComponent } from './components/legend/legend.component'; import { SelectedItemShapeComponent } from './components/selected-item-shape/selected-item-shape.component';
import { LayerVectorImageComponent } from './components/aol/layer-vector-image/layer-vector-image.component'; import { SelectedItemTemporalComponent } from './components/selected-item-temporal/selected-item-temporal.component';
import {FeatureIconService} from './services/feature-icon.service'; import { AbstractSelectedItemComponent, SelectedItemComponent } from './components/selected-item/selected-item.component';
import { GeolocationService } from './services/geolocation.service'; import { WidgetHostDirective } from './components/widget-host/widget-host.directive';
import {DeviceOrientationService} from './services/device-orientation.service';
import { TemporalService} from './services/temporal.service';
import { WidgetStatusComponent } from './components/widget-status/widget-status.component'; import { WidgetStatusComponent } from './components/widget-status/widget-status.component';
import { ForChild} from './components/for-item/for-child.decorator'; import { ZoomToShowAlert } from './components/zoom-to-show-alert/zoom-to-show-alert.component';
import {ForItemType } from './components/for-item/for-itemtype.decorator'; import { DeviceOrientationService } from './services/device-orientation.service';
import { ForSourceTask} from './components/for-item/for-sourcetask.decorator'; import { FeatureIconService } from './services/feature-icon.service';
import { ForPackage } from './components/for-item/for-package.decorator'; import { GeolocationService } from './services/geolocation.service';
import { PanToLocation} from './components/aol/pan-to-location/pan-to-location.component'; import { TemporalService } from './services/temporal.service';
import {LayerSwitcher} from './components/layer-switcher/layer-switcher.component';
import {HistogramDetailsComponent} from './components/legend/histogram-details/histogram-details.component';
import {StatisticsDetailsComponent} from './components/legend/statistics-details/statistics-details.component';
import { ifZoomToShowDirective} from './components/if-zoom-to-show/if-zoom-to-show.directive';
import { ZoomToShowAlert} from './components/zoom-to-show-alert/zoom-to-show-alert.component';
import { LayerValuesComponent } from './components/aol/layer-values/layer-values.component';
import { GeometryThumbnailComponent } from './components/feature-thumbnail/feature-thumbnail.component';
export function LocalStorageSync(reducer: ActionReducer<any>): ActionReducer<any> { export function LocalStorageSync(reducer: ActionReducer<any>): ActionReducer<any> {
const r = function(state, action) { const r = function(state, action) {
@@ -104,70 +104,13 @@ export function LocalStorageSync(reducer: ActionReducer<any>): ActionReducer<any
const metaReducers: Array<MetaReducer<any, any>> = [LocalStorageSync]; const metaReducers: Array<MetaReducer<any, any>> = [LocalStorageSync];
export { export {
mapEffects,
mapReducers,
mapActions,
ZoomToExtentComponent,
ItemVectorSourceComponent,
ItemLayersComponent,
FileDropTargetComponent,
MapComponent,
MetaDataModalComponent,
RotationResetComponent,
MapSearchComponent,
SelectPeriodModalComponent,
LayerListComponent,
LegendComponent,
LayerVectorImageComponent,
FeatureListComponent,
WidgetHostDirective,
FeatureListContainerComponent,
FeatureListCroppingschemeComponent,
FeatureListCropfieldComponent,
FeatureListFeatureContainerComponent,
FeatureListFeatureComponent,
FeatureListFeatureCroppingschemeComponent,
FeatureListFeatureCropfieldComponent,
SelectedItemContainerComponent,
SelectedItemComponent,
SelectedItemCropfieldComponent,
SelectedItemGeotiffComponent,
SelectedItemTemporalComponent,
SelectedItemShapeComponent,
ItemListItemComponent,
ItemListItemContainerComponent,
ItemListComponent,
ItemWidgetListComponent,
WidgetStatusComponent,
GpsLocation,
PanToLocation,
LayerSwitcher,
AbstractFeatureListComponent, AbstractFeatureListComponent,
AbstractFeatureListFeatureComponent, AbstractFeatureListFeatureComponent, AbstractItemListComponent, AbstractItemListItemComponent, AbstractItemWidgetComponent, AbstractSelectedItemComponent, DeviceOrientationService, FeatureIconService, FeatureListComponent, FeatureListContainerComponent, FeatureListCropfieldComponent, FeatureListCroppingschemeComponent, FeatureListFeatureComponent, FeatureListFeatureContainerComponent, FeatureListFeatureCropfieldComponent, FeatureListFeatureCroppingschemeComponent, FileDropTargetComponent, ForChild,
AbstractSelectedItemComponent, ForItemType, ForPackage, ForSourceTask, GeolocationService, GeometryThumbnailComponent, GpsLocation, IClickedFeature, ifZoomToShowDirective, IItemLayer, IMapState, IPeriodState, ISelectedFeatures, ItemLayer, ItemLayersComponent, ItemListComponent, ItemListItemComponent,
AbstractItemWidgetComponent, ItemListItemContainerComponent, ITemporalItemLayer, ItemVectorSourceComponent, ItemWidgetListComponent, LayerListComponent, LayerSwitcher, LayerVectorImageComponent, LegendComponent, mapActions, MapComponent, mapEffects,
AbstractItemListItemComponent, mapReducers, MapSearchComponent, MetaDataModalComponent, PanToLocation, RotationResetComponent, SelectedItemComponent, SelectedItemContainerComponent, SelectedItemCropfieldComponent,
AbstractItemListComponent, SelectedItemGeotiffComponent, SelectedItemShapeComponent, SelectedItemTemporalComponent, SelectPeriodModalComponent, TemporalItemLayer, TemporalService, WidgetHostDirective, WidgetStatusComponent, ZoomToExtentComponent, ZoomToShowAlert
FeatureIconService, };
GeolocationService,
DeviceOrientationService,
TemporalService,
IMapState,
ISelectedFeatures,
IItemLayer,
ItemLayer,
IPeriodState,
ForChild,
ForItemType,
ForSourceTask,
ForPackage ,
ITemporalItemLayer,
TemporalItemLayer,
ifZoomToShowDirective,
ZoomToShowAlert,
IClickedFeature,
GeometryThumbnailComponent
}
@NgModule({ @NgModule({
imports: [ imports: [
@@ -1,5 +1,5 @@
import { Component, Input, OnDestroy, OnInit, EventEmitter, Output, Inject } from '@angular/core'; import { Component, Input, OnDestroy, OnInit, EventEmitter, Output, Inject } from '@angular/core';
import { MapComponent } from 'ngx-openlayers'; import { MapComponent } from '@farmmaps/ng-openlayers';
import * as proj from 'ol/proj'; import * as proj from 'ol/proj';
import {Point,Geometry} from 'ol/geom'; import {Point,Geometry} from 'ol/geom';
@@ -1,6 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.gps-location { .gps-location {
display:none; display:none;
} }
@@ -14,7 +11,7 @@
} }
.tolerance { .tolerance {
fill: $primary; fill: var(--bs-primary);
fill-opacity:0.4; fill-opacity:0.4;
} }
@@ -23,20 +20,20 @@
} }
.border { .border {
fill: $white; fill: var(--bs-white);
} }
.center { .center {
fill: $primary; fill: var(--bs-primary);
} }
.stop1 { .stop1 {
stop-color: $primary; stop-color: var(--bs-primary);
stop-opacity:1; stop-opacity:1;
} }
.stop2 { .stop2 {
stop-color:$primary; stop-color:var(--bs-primary);
stop-opacity: 0; stop-opacity: 0;
} }
@@ -1,5 +1,5 @@
import { Component, OnInit, Input, ViewChild, ElementRef, OnChanges, SimpleChanges ,Host} from '@angular/core'; import { Component, OnInit, Input, ViewChild, ElementRef, OnChanges, SimpleChanges ,Host} from '@angular/core';
import { MapComponent } from 'ngx-openlayers'; import { MapComponent } from '@farmmaps/ng-openlayers';
import Overlay from 'ol/Overlay'; import Overlay from 'ol/Overlay';
import { fromLonLat, toLonLat } from 'ol/proj'; import { fromLonLat, toLonLat } from 'ol/proj';
@@ -1,5 +1,5 @@
import { Component, Host, Input, Output, EventEmitter,OnDestroy, OnInit, OnChanges, SimpleChanges, forwardRef } from '@angular/core'; import { Component, Host, Input, Output, EventEmitter,OnDestroy, OnInit, OnChanges, SimpleChanges, forwardRef } from '@angular/core';
import { LayerGroupComponent, MapComponent } from 'ngx-openlayers'; import { LayerGroupComponent, MapComponent } from '@farmmaps/ng-openlayers';
import { ItemService,IItem,AppConfig } from '@farmmaps/common'; import { ItemService,IItem,AppConfig } from '@farmmaps/common';
import { IItemLayer, ITemporalItemLayer} from '../../../models/item.layer'; import { IItemLayer, ITemporalItemLayer} from '../../../models/item.layer';
import { ILayerData} from '../../../models/layer.data'; import { ILayerData} from '../../../models/layer.data';
@@ -19,6 +19,7 @@ import VectorTileLayer from 'ol/layer/VectorTile';
import {GeoJSON,MVT} from 'ol/format'; import {GeoJSON,MVT} from 'ol/format';
import { Geometry } from 'ol/geom'; import { Geometry } from 'ol/geom';
import BaseLayer from 'ol/layer/Base'; import BaseLayer from 'ol/layer/Base';
import Feature from 'ol/Feature';
@Component({ @Component({
selector: 'fm-map-item-layers', selector: 'fm-map-item-layers',
@@ -180,9 +181,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
const source = new VectorSource({ const source = new VectorSource({
strategy: loadingstrategy.bbox, strategy: loadingstrategy.bbox,
loader: function (extent: Extent, resolution: number, projection: Projection) { loader: function (extent: Extent, resolution: number, projection: Projection) {
const source = this as VectorSource<Geometry>; const source = this as VectorSource<Feature<Geometry>>;
__this.itemService.getItemFeatures(item.code, extent, projection.getCode(), layerIndex).subscribe(function (data) { __this.itemService.getItemFeatures(item.code, extent, projection.getCode(), layerIndex).subscribe(function (data) {
const features = format.readFeatures(data); const features = format.readFeatures(data).filter(feature => feature instanceof Feature) as Feature[];
for (const f of features) { for (const f of features) {
if (f.get("code")) { if (f.get("code")) {
f.setId(f.get("code")); f.setId(f.get("code"));
@@ -1,6 +1,6 @@
import { Component, Host, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, forwardRef, Inject, InjectionToken } from '@angular/core'; import { Component, Host, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, forwardRef, Inject, InjectionToken, OnDestroy, LOCALE_ID } from '@angular/core';
import { LayerVectorComponent, SourceVectorComponent, MapComponent } from 'ngx-openlayers'; import { LayerVectorComponent, SourceVectorComponent, MapComponent } from '@farmmaps/ng-openlayers';
import { ItemService, ItemTypeService, IItem, IItemType } from '@farmmaps/common'; import { ItemService, ItemTypeService, IItem, IItemType, FolderService } from '@farmmaps/common';
import { Feature } from 'ol'; import { Feature } from 'ol';
import { Point, Geometry } from 'ol/geom'; import { Point, Geometry } from 'ol/geom';
@@ -17,6 +17,9 @@ import { GeoJSON } from 'ol/format';
import { Select } from 'ol/interaction'; import { Select } from 'ol/interaction';
import { IStyles } from '../../../models/style.cache'; import { IStyles } from '../../../models/style.cache';
import { FeatureIconService } from '../../../services/feature-icon.service'; import { FeatureIconService } from '../../../services/feature-icon.service';
import { Subscription } from 'rxjs';
import { getCenter } from 'ol/extent';
import { formatNumber } from '@angular/common';
@Component({ @Component({
selector: 'fm-map-item-source-vector', selector: 'fm-map-item-source-vector',
@@ -25,8 +28,8 @@ import { FeatureIconService } from '../../../services/feature-icon.service';
{ provide: SourceVectorComponent, useExisting: forwardRef(() => ItemVectorSourceComponent) } { provide: SourceVectorComponent, useExisting: forwardRef(() => ItemVectorSourceComponent) }
] ]
}) })
export class ItemVectorSourceComponent extends SourceVectorComponent implements OnInit, OnChanges { export class ItemVectorSourceComponent extends SourceVectorComponent implements OnInit, OnDestroy, OnChanges {
instance: Vector<Geometry>; instance: Vector<Feature<Geometry>>;
private _format: GeoJSON; private _format: GeoJSON;
private _select: Select; private _select: Select;
private _hoverSelect: Select; private _hoverSelect: Select;
@@ -38,8 +41,10 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
@Output() onFeatureSelected: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>(); @Output() onFeatureSelected: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
@Output() onFeatureHover: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>(); @Output() onFeatureHover: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
private stylesCache: IStyles = {}; private stylesCache: IStyles = {};
private sub: Subscription;
private displayMapFeatureSettings: { [code: string]: string[] } = defaultDisplayMapFeatureSettings();
constructor(@Host() private layer: LayerVectorComponent, private itemService: ItemService, private map: MapComponent, private itemTypeService: ItemTypeService, private featureIconService$: FeatureIconService) { constructor(@Host() private layer: LayerVectorComponent, private itemService: ItemService, private map: MapComponent, private itemTypeService: ItemTypeService, private featureIconService$: FeatureIconService, private folderService: FolderService, @Inject(LOCALE_ID) private locale: string) {
super(layer); super(layer);
this._format = new GeoJSON(); this._format = new GeoJSON();
} }
@@ -76,6 +81,18 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
} }
ngOnInit() { ngOnInit() {
this.sub = this.folderService.getFolder('my_settings').subscribe(
userSettingsRoot => {
if (userSettingsRoot == undefined) return;
this.itemService.getChildItemList(userSettingsRoot.code, 'vnd.farmmaps.itemtype.settings.general').subscribe(
items => {
if (items && items.length > 0 && items[0].data?.displayMapFeatureSettings) {
this.displayMapFeatureSettings = items[0].data?.displayMapFeatureSettings;
}
}
)
}
);
this.strategy = loadingstrategy.bbox; this.strategy = loadingstrategy.bbox;
this.format = new GeoJSON(); this.format = new GeoJSON();
this._select = new Select({ this._select = new Select({
@@ -133,7 +150,8 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
fill: new style.Fill({ fill: new style.Fill({
color: fillColor color: fillColor
}), }),
geometry: (feature: Feature<Geometry>) => this.geometry(feature) geometry: (feature: Feature<Geometry>) => this.geometry(feature),
text: this.getDisplayTextForFeature(feature, this.map.instance.getView().getZoom())
}); });
} else { } else {
key = 'file'; key = 'file';
@@ -153,6 +171,10 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
}); });
} }
ngOnDestroy(): void {
if (this.sub) this.sub.unsubscribe();
}
ngOnChanges(changes: SimpleChanges) { ngOnChanges(changes: SimpleChanges) {
if (changes["features"] && this.instance) { if (changes["features"] && this.instance) {
this.instance.clear(true); this.instance.clear(true);
@@ -188,4 +210,51 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
} }
} }
} }
getDisplayTextForFeature(feature: Feature<Geometry>, zoom: number, overrule?: style.Text) {
if (!feature) return null;
const propertiesToShow: string[] = this.displayMapFeatureSettings[feature.get('itemType')];
if (!propertiesToShow) return null;
if (propertiesToShow.length <= 0) return null;
if (zoom < 14) return null;
let displayText = '';
for (let i = 0; i < propertiesToShow.length; i++) {
let value = feature.get(propertiesToShow[i]);
switch (propertiesToShow[i]) {
case "area": value = formatNumber(value, this.locale, '0.1-2') + ' ha'; break;
case "centroid": {
if (feature.getGeometry()) {
const centroid = getCenter(feature.getGeometry().getExtent());
value = Math.round(centroid[0]) + ',' + Math.round(centroid[1]);
}
}
if (value) {
displayText += value + (i < propertiesToShow.length ? '\n' : '');
}
}
const styleText = new style.Text({
font: '13px Calibri,sans-serif',
fill: new style.Fill({ color: '#ffffff' }),
stroke: new style.Stroke({ color: '#000000', width: 2 }),
text: displayText
});
if (overrule) {
if (overrule.getFont()) styleText.setFont(overrule.getFont());
if (overrule.getFill()) styleText.setFill(overrule.getFill());
if (overrule.getStroke()) styleText.setStroke(overrule.getStroke());
}
return styleText;
}
}
}
function defaultDisplayMapFeatureSettings() {
return {
'vnd.farmmaps.itemtype.cropfield': ['name', 'cropTypeName', 'area']
};
} }
@@ -3,7 +3,7 @@ import { IItemLayer } from '../../../models/item.layer';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import * as mapReducers from '../../../reducers/map.reducer'; import * as mapReducers from '../../../reducers/map.reducer';
import * as mapActions from '../../../actions/map.actions'; import * as mapActions from '../../../actions/map.actions';
import { MapComponent } from 'ngx-openlayers'; import { MapComponent } from '@farmmaps/ng-openlayers';
import { ILayervalue } from '../../../models/layer.value'; import { ILayervalue } from '../../../models/layer.value';
import { Observable, interval, Subject } from 'rxjs'; import { Observable, interval, Subject } from 'rxjs';
import { debounce, throttle } from 'rxjs/operators'; import { debounce, throttle } from 'rxjs/operators';
@@ -1,8 +1,9 @@
import { Component, OnDestroy, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'; import { Component, OnDestroy, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';
import { LayerVectorComponent, MapComponent } from 'ngx-openlayers'; import { LayerVectorComponent, MapComponent } from '@farmmaps/ng-openlayers';
import RenderType from 'ol/layer/Vector'; import RenderType from 'ol/layer/Vector';
import { Vector as VectorSource } from 'ol/source'; import { Vector as VectorSource } from 'ol/source';
import { Geometry } from 'ol/geom'; import { Geometry } from 'ol/geom';
import Feature from 'ol/Feature';
@Component({ @Component({
selector: 'fm-map-aol-layer-vector-image', selector: 'fm-map-aol-layer-vector-image',
@@ -14,7 +15,7 @@ export class LayerVectorImageComponent extends LayerVectorComponent implements O
//public source: Vector; //public source: Vector;
@Input() @Input()
renderMode: RenderType<VectorSource<Geometry>> | string = "image"; renderMode: RenderType<VectorSource<Feature<Geometry>>> | string = "image";
constructor(map: MapComponent) { constructor(map: MapComponent) {
super(map); super(map);
@@ -1,11 +1,8 @@
@import "~bootstrap/scss/bootstrap.scss";
.gps-location { .gps-location {
display:block; display:block;
width:2.5em; width:2.5em;
height:2.5em; height:2.5em;
background-color: $body-bg; background-color: var(--bs-body-bg);
background-size: contain; background-size: contain;
margin-top:0.5em; margin-top:0.5em;
border-radius: 1.75em; border-radius: 1.75em;
@@ -17,15 +14,15 @@
} }
.pan-to { .pan-to {
fill: $secondary; fill: var(--bs-secondary);
} }
div.gps-location:hover .pan-to { div.gps-location:hover .pan-to {
fill: $white; fill: var(--bs-white);
} }
.pan-to-centered { .pan-to-centered {
fill: $primary; fill: var(--bs-primary);
} }
div.gps-location:hover .pan-to-centered { div.gps-location:hover .pan-to-centered {
@@ -33,5 +30,5 @@ div.gps-location:hover .pan-to-centered {
} }
.pan-to.pan-to-disabled { .pan-to.pan-to-disabled {
fill: $gray-300; fill: var(--bs-gray-300);
} }
@@ -1,5 +1,5 @@
import { Component, OnInit, Input, Host, OnChanges, SimpleChanges,ChangeDetectorRef } from '@angular/core'; import { Component, OnInit, Input, Host, OnChanges, SimpleChanges,ChangeDetectorRef } from '@angular/core';
import { MapComponent } from 'ngx-openlayers'; import { MapComponent } from '@farmmaps/ng-openlayers';
import {IMapState} from '../../../models/map.state' import {IMapState} from '../../../models/map.state'
import {View} from 'ol'; import {View} from 'ol';
import { fromLonLat } from 'ol/proj'; import { fromLonLat } from 'ol/proj';
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.compass { .compass {
width:2.5em; width:2.5em;
height:2.5em; height:2.5em;
@@ -13,7 +11,7 @@
#north { #north {
display: none; display: none;
fill:$black; fill:var(--bs-black);
} }
#top-l { #top-l {
@@ -33,23 +31,23 @@
} }
div.compass:hover #top-l { div.compass:hover #top-l {
fill:$white; fill:var(--bs-white);
} }
div.compass:hover #top-r { div.compass:hover #top-r {
fill:$gray-300; fill:var(--bs-gray-300);
} }
div.compass:hover #bottom-l { div.compass:hover #bottom-l {
fill:$gray-300; fill:var(--bs-gray-300);
} }
div.compass:hover #bottom-r { div.compass:hover #bottom-r {
fill:$white; fill:var(--bs-white);
} }
div.compass:hover #north { div.compass:hover #north {
fill:$white; fill:var(--bs-white);
} }
.compass-n { .compass-n {
@@ -1,5 +1,5 @@
import { Component, Host, Input, OnInit, ChangeDetectorRef } from '@angular/core'; import { Component, Host, Input, OnInit, ChangeDetectorRef } from '@angular/core';
import { ViewComponent, MapComponent } from 'ngx-openlayers'; import { ViewComponent, MapComponent } from '@farmmaps/ng-openlayers';
import {View} from 'ol'; import {View} from 'ol';
@@ -1,6 +1,6 @@
import { Component, Host, Input, OnInit, OnChanges, SimpleChanges, forwardRef } from '@angular/core'; import { Component, Host, Input, OnInit, OnChanges, SimpleChanges, forwardRef } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { ViewComponent, MapComponent } from 'ngx-openlayers'; import { ViewComponent, MapComponent } from '@farmmaps/ng-openlayers';
@Component({ @Component({
@@ -1,14 +1,10 @@
@import "~bootstrap/scss/bootstrap.scss";
.row { .row {
border-bottom: 1px solid $gray-500; border-bottom: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
} }
.row.selected { .row.selected {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
@media screen and (min-width: 44rem) { @media screen and (min-width: 44rem) {
@@ -64,9 +64,9 @@ export class FeatureListContainerComponent {
viewContainerRef.clear(); viewContainerRef.clear();
if(showItem) { if(showItem) {
this.componentRef = viewContainerRef.createComponent(componentFactory); this.componentRef = viewContainerRef.createComponent(componentFactory);
(<AbstractFeatureListComponent>this.componentRef.instance).features = null; (<AbstractFeatureListComponent>this.componentRef.instance).features = this.features;
(<AbstractFeatureListComponent>this.componentRef.instance).queryState = queryState; (<AbstractFeatureListComponent>this.componentRef.instance).queryState = this.queryState;
(<AbstractFeatureListComponent>this.componentRef.instance).selectedFeature = null; (<AbstractFeatureListComponent>this.componentRef.instance).selectedFeature = this.selectedFeature;
} }
} }
@@ -1,22 +1,20 @@
@import "~bootstrap/scss/bootstrap.scss";
fm-map-feature-list-feature-container { fm-map-feature-list-feature-container {
width:100%; width:100%;
pointer-events:none; pointer-events:none;
} }
.row { .row {
border-bottom: 1px solid $gray-500; border-bottom: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
padding-left:1.5rem; padding-left:1.5rem;
} }
.row.selected { .row.selected {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
.cropfields { .cropfields {
border-top: 1px solid $gray-500; border-top: 1px solid var(--bs-gray-500);
margin-left: -1.25rem; margin-left: -1.25rem;
margin-right: -1.25rem; margin-right: -1.25rem;
} }
@@ -1,22 +1,20 @@
@import "~bootstrap/scss/bootstrap.scss";
fm-map-feature-list-feature-container { fm-map-feature-list-feature-container {
width:100%; width:100%;
pointer-events:none; pointer-events:none;
} }
.row { .row {
border-bottom: 1px solid $gray-500; border-bottom: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
padding-left:1.5rem; padding-left:1.5rem;
} }
.row.selected { .row.selected {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
.farms { .farms {
border-top: 1px solid $gray-500; border-top: 1px solid var(--bs-gray-500);
margin-left: -1.25rem; margin-left: -1.25rem;
margin-right: -1.25rem; margin-right: -1.25rem;
} }
@@ -1,7 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.card-title { .card-title {
font-size: 1rem; font-size: 1rem;
white-space: nowrap; white-space: nowrap;
@@ -1,7 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.card-title { .card-title {
font-size: 1rem; font-size: 1rem;
white-space: nowrap; white-space: nowrap;
@@ -1,7 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.card-title { .card-title {
font-size: 1rem; font-size: 1rem;
white-space: nowrap; white-space: nowrap;
@@ -1,15 +1,13 @@
@import "~bootstrap/scss/bootstrap.scss";
fm-map-feature-list-feature-container { fm-map-feature-list-feature-container {
width: 100%; width: 100%;
pointer-events: none; pointer-events: none;
} }
.row { .row {
border-bottom: 1px solid $gray-500; border-bottom: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
} }
.row.selected { .row.selected {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
@@ -23,6 +23,7 @@ export abstract class AbstractFeatureListComponent {
handleFeatureClick(feature:Feature<Geometry>) { handleFeatureClick(feature:Feature<Geometry>) {
if(feature) { if(feature) {
this.store.dispatch(new mapActions.ClickFeature(feature));
const action = this.getAction(feature); const action = this.getAction(feature);
this.store.dispatch(action); this.store.dispatch(action);
} }
@@ -1,7 +1,7 @@
import { Directive, ViewContainerRef,TemplateRef,OnInit,Input, OnChanges } from '@angular/core'; import { Directive, ViewContainerRef,TemplateRef,OnInit,Input, OnChanges } from '@angular/core';
import { Layer } from 'ol/layer'; import { Layer } from 'ol/layer';
import { Source } from 'ol/source'; import { Source } from 'ol/source';
import { MapComponent } from 'ngx-openlayers'; import { MapComponent } from '@farmmaps/ng-openlayers';
@Directive({ @Directive({
selector: '[fmMapIfZoomToShow]', selector: '[fmMapIfZoomToShow]',
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.widget { .widget {
padding:0.8rem; padding:0.8rem;
height:100%; height:100%;
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.widget-container { .widget-container {
overflow:auto; overflow:auto;
margin-bottom:1rem; margin-bottom:1rem;
@@ -7,7 +5,7 @@
.widget { .widget {
position:relative; position:relative;
border: 1px solid $gray-500; border: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
display:inline-block; display:inline-block;
width:50%; width:50%;
@@ -28,7 +26,7 @@
} }
.widget:hover { .widget:hover {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
.widget-container { .widget-container {
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.widget-container { .widget-container {
overflow:auto; overflow:auto;
margin-bottom:1rem; margin-bottom:1rem;
@@ -7,7 +5,7 @@
.widget { .widget {
position:relative; position:relative;
border: 1px solid $gray-500; border: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
display:inline-block; display:inline-block;
width:50%; width:50%;
@@ -28,7 +26,7 @@
} }
.widget:hover { .widget:hover {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
.widget-container { .widget-container {
@@ -1,18 +1,15 @@
@import "~bootstrap/scss/bootstrap.scss";
.layer-switcher { .layer-switcher {
display:block; display:block;
width:2.5em; width:2.5em;
height:2.5em; height:2.5em;
background-color: $body-bg; background-color: var(--bs-body-bg);
background-size: contain; background-size: contain;
margin-top:0.5em; margin-top:0.5em;
text-align: center; text-align: center;
line-height: 2.5em; line-height: 2.5em;
border-radius: 1.75em; border-radius: 1.75em;
padding: 0; padding: 0;
color: $secondary; color: var(--bs-secondary);
} }
.layer-switcher i { .layer-switcher i {
@@ -24,7 +21,7 @@
} }
.layers { .layers {
color:$secondary; color:var(--bs-secondary);
position: absolute; position: absolute;
overflow: hidden; overflow: hidden;
bottom: -1em; bottom: -1em;
@@ -1,15 +1,15 @@
<div class="row ps-3"> <div class="row ps-3">
<div class="col-8 nopadding"><span i18n>Average</span>:</div> <div class="col-8 nopadding"><span i18n>Average</span>:</div>
<div class="col-4 pull-left nopadding">{{histogram.mean| number:'1.0-2'}}</div> <div class="col-4 pull-left nopadding">{{ getScaledValue(histogram.mean)| number:'1.0-2'}}</div>
<div class="col-8 nopadding"><span i18n>Standard deviation</span>:</div> <div class="col-8 nopadding"><span i18n>Standard deviation</span>:</div>
<div class="col-4 pull-left nopadding">{{histogram.stddev| number:'1.0-2'}}</div> <div class="col-4 pull-left nopadding">{{ getScaledValue(histogram.stddev)| number:'1.0-2'}}</div>
<div class="col-8 nopadding"><span i18n>Min</span>:</div> <div class="col-8 nopadding"><span i18n>Min</span>:</div>
<div class="col-4 pull-left nopadding">{{histogram.min| number:'1.0-2'}}</div> <div class="col-4 pull-left nopadding">{{ getScaledValue(histogram.min)| number:'1.0-2'}}</div>
<div class="col-8 nopadding" ><span i18n>Max</span>:</div> <div class="col-8 nopadding" ><span i18n>Max</span>:</div>
<div class="col-4 pull-left nopadding">{{histogram.max| number:'1.0-2'}}</div> <div class="col-4 pull-left nopadding">{{ getScaledValue(histogram.max)| number:'1.0-2'}}</div>
<ng-container *ngIf="showConfidenceInterval()"> <ng-container *ngIf="showConfidenceInterval()">
<div class="col-8 nopadding"><span i18n>Confidence interval</span>:</div> <div class="col-8 nopadding"><span i18n>Confidence interval</span>:</div>
<div class="col-4 pull-left nopadding">{{histogram.confidence * 100| number:'1.0-0'}}%</div> <div class="col-4 pull-left nopadding">{{ getScaledValue(histogram.confidence * 100)| number:'1.0-0'}}%</div>
</ng-container> </ng-container>
</div> </div>
@@ -14,6 +14,17 @@ export class HistogramDetailsComponent {
@Input() @Input()
histogram: IHistogram; histogram: IHistogram;
@Input()
scale: number | null;
public getScaledValue(value: number): number {
let v = value;
if (this.scale && this.scale != 0) {
v = this.scale * value;
}
return v;
}
showConfidenceInterval(): boolean { showConfidenceInterval(): boolean {
return this.histogram.confidence != null && this.histogram.confidence !== 1; return this.histogram.confidence != null && this.histogram.confidence !== 1;
} }
@@ -35,7 +35,7 @@
</ng-container> </ng-container>
<ng-template #histogram> <ng-template #histogram>
<fm-map-histogram-details [histogram]="layer.renderer.band.histogram"></fm-map-histogram-details> <fm-map-histogram-details [histogram]="layer.renderer.band.histogram" [scale]="layer.scale"></fm-map-histogram-details>
</ng-template> </ng-template>
</div> </div>
</td> </td>
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
div.map-search { div.map-search {
position: absolute; position: absolute;
top: 0.5rem; top: 0.5rem;
@@ -106,7 +104,7 @@ div.map-search.searchcollapsed button[type="submit"] {
} }
.form-control, .form-control:focus { .form-control, .form-control:focus {
border-color: $secondary; border-color: var(--bs-secondary);
} }
@@ -10,6 +10,7 @@
panelVisible:panelVisible$|async, panelVisible:panelVisible$|async,
openedModalName:openedModalName$|async, openedModalName:openedModalName$|async,
panelCollapsed:panelCollapsed$|async, panelCollapsed:panelCollapsed$|async,
panelExtraWide:panelExtraWide$|async,
searchMinified:searchMinified$|async, searchMinified:searchMinified$|async,
selectedItem:selectedItem$|async, selectedItem:selectedItem$|async,
parentItem:parentItem$|async, parentItem:parentItem$|async,
@@ -64,7 +65,7 @@
</div> </div>
<div class="side-panel-container"> <div class="side-panel-container">
<fm-side-panel [resizeable]="true" (onResize)="handlePanelResize($event)" [visible]="state.panelVisible && noContent" [collapsed]="state.panelCollapsed" [collapsable]="false"> <fm-side-panel [resizeable]="true" (onResize)="handlePanelResize($event)" [visible]="state.panelVisible && noContent" [collapsed]="state.panelCollapsed" [collapsable]="false" [extrawide]="state.panelExtraWide">
<div class="panel-wrapper" *ngIf="noContent"> <div class="panel-wrapper" *ngIf="noContent">
<div class="panel-top bg-secondary" *ngIf="!(state.searchMinified)"> <div class="panel-top bg-secondary" *ngIf="!(state.searchMinified)">
</div> </div>
@@ -84,7 +85,7 @@
</div> </div>
</div> </div>
</fm-side-panel> </fm-side-panel>
<fm-side-panel [resizeable]="true" [visible]="!noContent"> <fm-side-panel [resizeable]="true" [visible]="!noContent" [extrawide]="state.panelExtraWide">
<router-outlet (activate)="handleSidepaneloutletActivate($event)" (deactivate)="handleSidepaneloutletDeactivate($event)"></router-outlet> <router-outlet (activate)="handleSidepaneloutletActivate($event)" (deactivate)="handleSidepaneloutletDeactivate($event)"></router-outlet>
</fm-side-panel> </fm-side-panel>
</div> </div>
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
aol-map { position:absolute;width:100%;height:calc( 100vh );} aol-map { position:absolute;width:100%;height:calc( 100vh );}
.arrow { .arrow {
@@ -195,7 +193,7 @@ timespan.menuVisible {
width: 4rem; width: 4rem;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
color: $primary; color: var(--bs-primary);
} }
.shortcut-icon > .farm-icon { .shortcut-icon > .farm-icon {
@@ -36,7 +36,6 @@ import {Extent,createEmpty,extend } from 'ol/extent';
import {transform} from 'ol/proj'; import {transform} from 'ol/proj';
import { tassign } from 'tassign'; import { tassign } from 'tassign';
import * as style from 'ol/style'; import * as style from 'ol/style';
import { ICodeLists } from '../../models/codelist.cache';
@Component({ @Component({
@@ -67,6 +66,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
public parentCode$: Observable<string> =this.store.select(mapReducers.selectGetParentCode); public parentCode$: Observable<string> =this.store.select(mapReducers.selectGetParentCode);
public panelVisible$: Observable<boolean> = this.store.select(mapReducers.selectGetPanelVisible); public panelVisible$: Observable<boolean> = this.store.select(mapReducers.selectGetPanelVisible);
public panelCollapsed$: Observable<boolean> = this.store.select(mapReducers.selectGetPanelCollapsed); public panelCollapsed$: Observable<boolean> = this.store.select(mapReducers.selectGetPanelCollapsed);
public panelExtraWide$: Observable<boolean> = this.store.select(mapReducers.selectGetPanelExtraWide);
public selectedFeature$: Observable<Feature<Geometry>> = this.store.select(mapReducers.selectGetSelectedFeature); public selectedFeature$: Observable<Feature<Geometry>> = this.store.select(mapReducers.selectGetSelectedFeature);
public clickedFeature: Subject<Feature<Geometry>> = new Subject<Feature<Geometry>>(); public clickedFeature: Subject<Feature<Geometry>> = new Subject<Feature<Geometry>>();
public selectedItem$: Observable<IItem> = this.store.select(mapReducers.selectGetSelectedItem); public selectedItem$: Observable<IItem> = this.store.select(mapReducers.selectGetSelectedItem);
@@ -86,8 +86,6 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
public overlayLayersCollapsed = true; public overlayLayersCollapsed = true;
public extent$: Observable<Extent> = this.store.select(mapReducers.selectGetExtent); public extent$: Observable<Extent> = this.store.select(mapReducers.selectGetExtent);
public styles$:Observable<IStyles> = this.store.select(mapReducers.selectGetStyles); public styles$:Observable<IStyles> = this.store.select(mapReducers.selectGetStyles);
public codeLists$: Observable<ICodeLists> = this.store.select(mapReducers.selectGetCodeLists);
public codeList$ = (id: string) => this.store.select(mapReducers.selectGetCodeList(id));
public fullscreen$: Observable<boolean> = this.store.select(commonReducers.selectGetFullScreen); public fullscreen$: Observable<boolean> = this.store.select(commonReducers.selectGetFullScreen);
private lastUrl = ""; private lastUrl = "";
private initialized = false; private initialized = false;
@@ -195,6 +193,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
} }
handleFeatureClick(feature: Feature<Geometry>) { handleFeatureClick(feature: Feature<Geometry>) {
this.store.dispatch(new mapActions.ClickFeature(feature));
this.clickedFeature.next(feature); this.clickedFeature.next(feature);
} }
@@ -210,12 +209,18 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
if(component && component.hasOwnProperty('clickedFeature')) { if(component && component.hasOwnProperty('clickedFeature')) {
(component as IClickedFeature).clickedFeature = this.clickedFeature; (component as IClickedFeature).clickedFeature = this.clickedFeature;
} }
if(component && component.hasOwnProperty('extrawide')) {
this.store.dispatch(new mapActions.SetPanelExtraWide(true));
}
} }
handleSidepaneloutletDeactivate(component:any) { handleSidepaneloutletDeactivate(component:any) {
if(component && component.hasOwnProperty('clickedFeature')) { if(component && component.hasOwnProperty('clickedFeature')) {
(component as IClickedFeature).clickedFeature = null; (component as IClickedFeature).clickedFeature = null;
} }
if(component && component.hasOwnProperty('extrawide')) {
this.store.dispatch(new mapActions.SetPanelExtraWide(false));
}
} }
handlePrerender(event:any) { handlePrerender(event:any) {
@@ -368,7 +373,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
else { else {
return of(null); return of(null);
} }
})).subscribe((newUrlState) =>{ })).subscribe((newUrlState: any) => {
if(newUrlState) { if(newUrlState) {
//console.debug(`State to url`); //console.debug(`State to url`);
this.replaceUrl(newUrlState.mapState,newUrlState.queryState,newUrlState.replaceUrl); this.replaceUrl(newUrlState.mapState,newUrlState.queryState,newUrlState.replaceUrl);
@@ -1,13 +1,9 @@
@import "~bootstrap/scss/bootstrap.scss";
.row { .row {
border-bottom: 1px solid $gray-500; border-bottom: 1px solid var(--bs-gray-500);
user-select: none; user-select: none;
} }
.row:hover { .row:hover {
background-color: $gray-100; background-color: var(--bs-gray-100);
} }
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.big-icon { .big-icon {
width: 100%; width: 100%;
color: white; color: white;
@@ -25,6 +25,7 @@
<li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-plus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li> <li *ngIf="!getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleAddAsLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-plus" aria-hidden="true" i18n-title title="Add as layer"></i>&nbsp;<span i18n>Add as overlay</span></a></li>
<li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li> <li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li>
</ng-container> </ng-container>
<li><fm-item-link class="text-primary p-0" [itemCode]="item.code" pathSuffix="data" [showText]="true"></fm-item-link></li>
</ul> </ul>
</div> </div>
<fm-map-zoom-to-show-alert [layer]="itemLayer?.layer"></fm-map-zoom-to-show-alert> <fm-map-zoom-to-show-alert [layer]="itemLayer?.layer"></fm-map-zoom-to-show-alert>
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.big-icon { .big-icon {
width: 100%; width: 100%;
color: white; color: white;
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.big-icon { .big-icon {
width: 100%; width: 100%;
color: white; color: white;
@@ -42,6 +42,7 @@
<li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li> <li *ngIf="getItemLayer(item,itemLayer.layerIndex)"><a href="#" (click)="handleRemoveLayer(item,itemLayer.layerIndex)"><i class="fas fa-layer-minus" aria-hidden="true" i18n-title title="Remove overlay"></i>&nbsp;<span i18n>Remove overlay</span></a></li>
</ng-container> </ng-container>
<li><a href="#" (click)="handleGoToChart(item)"><i class="fal fa-line-chart" aria-hidden="true" i18m-title title="Show chart"></i>&nbsp;<span i18n>Show chart</span></a></li> <li><a href="#" (click)="handleGoToChart(item)"><i class="fal fa-line-chart" aria-hidden="true" i18m-title title="Show chart"></i>&nbsp;<span i18n>Show chart</span></a></li>
<li><a href="#" (click)="download(item,$event)"><i class="fal fa-download" aria-hidden="true" i18n-title title="Download"></i>&nbsp;<span i18n>Download</span></a></li>
</ul> </ul>
</div> </div>
</div> </div>
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.big-icon { .big-icon {
width: 100%; width: 100%;
color: white; color: white;
@@ -2,7 +2,7 @@ import { Component, Injectable } from '@angular/core';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import * as mapReducers from '../../reducers/map.reducer'; import * as mapReducers from '../../reducers/map.reducer';
import { commonReducers, ItemTypeService, IItem } from '@farmmaps/common'; import { commonReducers, ItemTypeService, IItem, ItemService, IItemLinkType, IUrlType } from '@farmmaps/common';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { ForItemType } from '../for-item/for-itemtype.decorator'; import { ForItemType } from '../for-item/for-itemtype.decorator';
import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component'; import { AbstractSelectedItemComponent } from '../selected-item/selected-item.component';
@@ -11,7 +11,6 @@ import * as mapActions from '../../actions/map.actions';
import { IItemLayer } from '../../models/item.layer'; import { IItemLayer } from '../../models/item.layer';
import {TemporalService} from '../../services/temporal.service'; import {TemporalService} from '../../services/temporal.service';
@ForItemType("vnd.farmmaps.itemtype.temporal") @ForItemType("vnd.farmmaps.itemtype.temporal")
@Injectable() @Injectable()
@Component({ @Component({
@@ -21,7 +20,7 @@ import {TemporalService} from '../../services/temporal.service';
}) })
export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent { export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent {
constructor(store: Store<mapReducers.State | commonReducers.State>, itemTypeService: ItemTypeService, location: Location, router: Router,public temporalService:TemporalService) { constructor(store: Store<mapReducers.State | commonReducers.State>, public itemService: ItemService, itemTypeService: ItemTypeService, location: Location, router: Router,public temporalService:TemporalService) {
super(store, itemTypeService,location,router); super(store, itemTypeService,location,router);
} }
@@ -61,4 +60,15 @@ export class SelectedItemTemporalComponent extends AbstractSelectedItemComponent
this.router.navigate(['/viewer', 'temporal', 'item', item.parentCode, new Date(Date.parse(item.dataDate)).getUTCFullYear()]); this.router.navigate(['/viewer', 'temporal', 'item', item.parentCode, new Date(Date.parse(item.dataDate)).getUTCFullYear()]);
return false; return false;
} }
download(item:IItem,event:MouseEvent) {
event.stopPropagation();
event.preventDefault();
const itemLink : IItemLinkType = {itemcode:item.code,pathsuffix:"download", validminutes:10}
console.log('download1', itemLink)
const foo = this.itemService.getItemLink(itemLink).subscribe((itemLinkUrl:IUrlType) => {
console.log('download2', itemLinkUrl)
window.location.href =itemLinkUrl.url
})
}
} }
@@ -1,5 +1,3 @@
@import "~bootstrap/scss/bootstrap.scss";
.big-icon { .big-icon {
width: 100%; width: 100%;
color: white; color: white;
@@ -5,7 +5,7 @@ import { ROUTER_NAVIGATED, RouterReducerState } from '@ngrx/router-store';
import * as fromRouter from '@ngrx/router-store'; import * as fromRouter from '@ngrx/router-store';
import { createEffect, Actions, ofType } from '@ngrx/effects'; import { createEffect, Actions, ofType } from '@ngrx/effects';
import { EMPTY, Observable, of, forkJoin } from 'rxjs'; import { EMPTY, Observable, of } from 'rxjs';
import { withLatestFrom, switchMap, map, catchError, mergeMap } from 'rxjs/operators'; import { withLatestFrom, switchMap, map, catchError, mergeMap } from 'rxjs/operators';
import { GeoJSON, WKT } from 'ol/format'; import { GeoJSON, WKT } from 'ol/format';
@@ -41,7 +41,7 @@ export const {
selectRouteParam, // factory function to select a route param selectRouteParam, // factory function to select a route param
selectRouteData, // select the current route data selectRouteData, // select the current route data
selectUrl, // select the current url selectUrl, // select the current url
} = fromRouter.getSelectors(getRouterState); } = fromRouter.getRouterSelectors(getRouterState);
@Injectable() @Injectable()
@@ -99,65 +99,6 @@ export class MapEffects {
color: 'rgba(0, 0, 0, 0)' color: 'rgba(0, 0, 0, 0)'
}) })
}))); })));
// cache code lists
forkJoin([
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl017'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl018'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl020'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl022'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl104'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl127'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl232'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl251'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl256'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl259'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl263'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl264'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl290'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl291'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl293'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl405'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl411'),
this.itemService$.getItemList('vnd.farmmaps.itemtype.codelist.cl421'),
]).subscribe(([
cl017,
cl018,
cl020,
cl022,
cl104,
cl127,
cl232,
cl251,
cl256,
cl259,
cl263,
cl264,
cl290,
cl291,
cl293,
cl405,
cl411,
cl421,
]) => {
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl017', cl017));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl018', cl018));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl020', cl020));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl020', cl020));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl104', cl104));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl127', cl127));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl232', cl232));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl251', cl251));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl256', cl256));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl259', cl259));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl263', cl263));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl264', cl264));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl290', cl290));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl291', cl291));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl293', cl293));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl405', cl405));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl411', cl411));
actions.push(new mapActions.SetCodeList('vnd.farmmaps.itemtype.codelist.cl421', cl421));
});
return actions; return actions;
} }
@@ -192,7 +133,7 @@ export class MapEffects {
f.id = f.properties["code"]; f.id = f.properties["code"];
} }
} }
return of(new mapActions.StartSearchSuccess(this._geojsonFormat.readFeatures(features), a.queryState)); return of(new mapActions.StartSearchSuccess(this._geojsonFormat.readFeatures(features).filter(feature => feature instanceof Feature) as Feature[], a.queryState));
} }
), ),
catchError(error => of(new commonActions.Fail(error)))); catchError(error => of(new commonActions.Fail(error))));
@@ -277,7 +218,7 @@ export class MapEffects {
if (!this.overrideSelectedItemLayer) { if (!this.overrideSelectedItemLayer) {
return this.itemService$.getFeature(action.item.code, "EPSG:3857").pipe( return this.itemService$.getFeature(action.item.code, "EPSG:3857").pipe(
map((feature: any) => { map((feature: any) => {
const f = this._geojsonFormat.readFeature(feature); const f = this._geojsonFormat.readFeature(feature) as Feature;
f.setId(action.item.code); f.setId(action.item.code);
return new mapActions.AddFeatureSuccess(f); return new mapActions.AddFeatureSuccess(f);
}), }),
@@ -1,5 +0,0 @@
import { IItem } from '@farmmaps/common';
export interface ICodeLists {
[id: string]: IItem[];
}
@@ -1,5 +1,5 @@
import { tassign } from 'tassign'; import { tassign } from 'tassign';
import { IItem } from '@farmmaps/common'; import { IItem,Item } from '@farmmaps/common';
import { IItemLayer,ItemLayer,ITemporalItemLayer,TemporalItemLayer} from '../models/item.layer'; import { IItemLayer,ItemLayer,ITemporalItemLayer,TemporalItemLayer} from '../models/item.layer';
import { IMapState} from '../models/map.state'; import { IMapState} from '../models/map.state';
import { IQueryState} from '@farmmaps/common'; import { IQueryState} from '@farmmaps/common';
@@ -17,7 +17,6 @@ import {Geometry} from 'ol/geom';
import { ROUTER_NAVIGATION, RouterNavigationAction } from '@ngrx/router-store'; import { ROUTER_NAVIGATION, RouterNavigationAction } from '@ngrx/router-store';
import { MODULE_NAME } from '../module-name'; import { MODULE_NAME } from '../module-name';
import { ICodeLists } from '../models/codelist.cache';
const startDate:Date = new Date(new Date(Date.now()).getFullYear(), new Date(Date.now()).getMonth() - 3, 1); const startDate:Date = new Date(new Date(Date.now()).getFullYear(), new Date(Date.now()).getMonth() - 3, 1);
const endDate:Date = new Date(Date.now()); const endDate:Date = new Date(Date.now());
@@ -50,6 +49,7 @@ export interface State {
features: Array<Feature<Geometry>>, features: Array<Feature<Geometry>>,
panelVisible: boolean, panelVisible: boolean,
panelCollapsed: boolean, panelCollapsed: boolean,
panelExtraWide: boolean,
selectedFeature: Feature<Geometry>, selectedFeature: Feature<Geometry>,
selectedItem:IItem, selectedItem:IItem,
parentItem:IItem, parentItem:IItem,
@@ -73,8 +73,7 @@ export interface State {
layerValuesEnabled:boolean, layerValuesEnabled:boolean,
layerValues: Array<ILayervalue> layerValues: Array<ILayervalue>
showDataLayerSlide:boolean, showDataLayerSlide:boolean,
viewEnabled: boolean, viewEnabled:boolean
codeLists:ICodeLists,
} }
export const initialState: State = { export const initialState: State = {
@@ -96,6 +95,7 @@ export const initialState: State = {
features: [], features: [],
panelVisible: false, panelVisible: false,
panelCollapsed: false, panelCollapsed: false,
panelExtraWide: false,
selectedFeature: null, selectedFeature: null,
selectedItem: null, selectedItem: null,
parentItem: null, parentItem: null,
@@ -119,8 +119,7 @@ export const initialState: State = {
layerValuesEnabled:false, layerValuesEnabled:false,
layerValues:[], layerValues:[],
showDataLayerSlide:false, showDataLayerSlide:false,
viewEnabled: true, viewEnabled:true
codeLists: {}
} }
export function reducer(state = initialState, action: mapActions.Actions | commonActions.Actions | RouterNavigationAction): State { export function reducer(state = initialState, action: mapActions.Actions | commonActions.Actions | RouterNavigationAction): State {
@@ -391,6 +390,9 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
case mapActions.CLEARLAYERS: { case mapActions.CLEARLAYERS: {
return tassign(state, {overlayLayers: [], selectedOverlayLayer: null}); return tassign(state, {overlayLayers: [], selectedOverlayLayer: null});
} }
case mapActions.CLEARFEATURES: {
return tassign(state, {features: [], selectedFeature: null});
}
case mapActions.SETVISIBILITY: { case mapActions.SETVISIBILITY: {
const a = action as mapActions.SetVisibility; const a = action as mapActions.SetVisibility;
if(state.selectedItemLayer == a.itemLayer) { if(state.selectedItemLayer == a.itemLayer) {
@@ -572,11 +574,9 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
} }
return state; return state;
} }
case mapActions.SETCODELIST:{ case mapActions.SETPANELEXTRAWIDE:{
const a = action as mapActions.SetCodeList; const a= action as mapActions.SetPanelExtraWide;
const codeLists = tassign(state.codeLists); return tassign(state,{panelExtraWide:a.panelExtraWide});
codeLists[a.itemType] = a.values;
return tassign(state,{codeLists:codeLists});
} }
default: { default: {
return state; return state;
@@ -589,6 +589,7 @@ export const getParentCode = (state: State) => state.parentCode;
export const getFeatures = (state: State) => state.features; export const getFeatures = (state: State) => state.features;
export const getPanelVisible = (state: State) => state.panelVisible; export const getPanelVisible = (state: State) => state.panelVisible;
export const getPanelCollapsed = (state: State) => state.panelCollapsed; export const getPanelCollapsed = (state: State) => state.panelCollapsed;
export const getPanelExtraWide = (state: State) => state.panelExtraWide;
export const getSelectedFeature = (state: State) => state.selectedFeature; export const getSelectedFeature = (state: State) => state.selectedFeature;
export const getSelectedItem = (state: State) => state.selectedItem; export const getSelectedItem = (state: State) => state.selectedItem;
export const getParentItem = (state: State) => state.parentItem; export const getParentItem = (state: State) => state.parentItem;
@@ -616,7 +617,7 @@ export const getLayerValues = (state:State) => state.layerValues;
export const getLayerValuesX = (state:State) => state.layerValuesX; export const getLayerValuesX = (state:State) => state.layerValuesX;
export const getLayerValuesY = (state:State) => state.layerValuesY; export const getLayerValuesY = (state:State) => state.layerValuesY;
export const getViewEnabled = (state:State) => state.viewEnabled; export const getViewEnabled = (state:State) => state.viewEnabled;
export const getCodeLists = (state:State) => state.codeLists;
export const selectMapState = createFeatureSelector<State>(MODULE_NAME); export const selectMapState = createFeatureSelector<State>(MODULE_NAME);
export const selectGetMapState= createSelector(selectMapState, getMapState); export const selectGetMapState= createSelector(selectMapState, getMapState);
@@ -624,6 +625,7 @@ export const selectGetParentCode = createSelector(selectMapState, getParentCode)
export const selectGetFeatures = createSelector(selectMapState, getFeatures); export const selectGetFeatures = createSelector(selectMapState, getFeatures);
export const selectGetPanelVisible = createSelector(selectMapState, getPanelVisible); export const selectGetPanelVisible = createSelector(selectMapState, getPanelVisible);
export const selectGetPanelCollapsed = createSelector(selectMapState, getPanelCollapsed); export const selectGetPanelCollapsed = createSelector(selectMapState, getPanelCollapsed);
export const selectGetPanelExtraWide = createSelector(selectMapState, getPanelExtraWide);
export const selectGetSelectedFeature = createSelector(selectMapState, getSelectedFeature); export const selectGetSelectedFeature = createSelector(selectMapState, getSelectedFeature);
export const selectGetSelectedItem = createSelector(selectMapState, getSelectedItem); export const selectGetSelectedItem = createSelector(selectMapState, getSelectedItem);
export const selectGetParentItem = createSelector(selectMapState, getParentItem); export const selectGetParentItem = createSelector(selectMapState, getParentItem);
@@ -651,5 +653,5 @@ export const selectGetLayerValues = createSelector(selectMapState,getLayerValues
export const selectGetLayerValuesX = createSelector(selectMapState,getLayerValuesX); export const selectGetLayerValuesX = createSelector(selectMapState,getLayerValuesX);
export const selectGetLayerValuesY = createSelector(selectMapState,getLayerValuesY); export const selectGetLayerValuesY = createSelector(selectMapState,getLayerValuesY);
export const selectGetViewEnabled = createSelector(selectMapState,getViewEnabled); export const selectGetViewEnabled = createSelector(selectMapState,getViewEnabled);
export const selectGetCodeLists = createSelector(selectMapState, getCodeLists);
export const selectGetCodeList = (id: string) => createSelector(selectGetCodeLists, (codeLists) => codeLists[id]);
-6
View File
@@ -9,8 +9,6 @@ import {
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
declare const require: any;
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
@@ -18,7 +16,3 @@ getTestBed().initTestEnvironment(
teardown: { destroyAfterEach: false } teardown: { destroyAfterEach: false }
} }
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
+10 -2
View File
@@ -2,7 +2,6 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/lib", "outDir": "../../out-tsc/lib",
"target": "es2020",
"module": "es2015", "module": "es2015",
"moduleResolution": "node", "moduleResolution": "node",
"declaration": true, "declaration": true,
@@ -11,18 +10,27 @@
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"experimentalDecorators": true, "experimentalDecorators": true,
"importHelpers": true, "importHelpers": true,
"esModuleInterop": true,
"types": [], "types": [],
"lib": [ "lib": [
"dom", "dom",
"es2018" "es2018"
],
"paths": {
"@angular/*": [
"node_modules/@angular/*"
] ]
}
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"skipTemplateCodegen": true, "skipTemplateCodegen": true,
"strictMetadataEmit": true, "strictMetadataEmit": true,
"fullTemplateTypeCheck": true, "fullTemplateTypeCheck": true,
"strictInjectionParameters": true, "strictInjectionParameters": true,
"enableResourceInlining": true "enableResourceInlining": true,
"compilationMode": "partial"
}, },
"exclude": [ "exclude": [
"src/test.ts", "src/test.ts",
@@ -2,7 +2,6 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/lib", "outDir": "../../out-tsc/lib",
"target": "es2020",
"module": "es2015", "module": "es2015",
"moduleResolution": "node", "moduleResolution": "node",
"declaration": true, "declaration": true,
+542 -4
View File
@@ -11,17 +11,555 @@
"tslib": "^2.0.0" "tslib": "^2.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": ">=14.0.0", "@angular/common": "^18.2.3",
"@angular/core": ">=14.0.0", "@angular/core": "^18.2.3",
"cesium": ">=1.82.1", "cesium": "^1.97.0",
"ngx-openlayers": "1.0.0-next.19",
"ol-cesium": ">=2.13.0" "ol-cesium": ">=2.13.0"
} }
}, },
"../../dist/libs/ng-openlayers": {
"version": "18.0.0",
"extraneous": true,
"license": "MPL-2.0",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/common": "^18.2.3",
"@angular/core": "^18.2.3",
"ol": "^8.2.0"
}
},
"dist/ng-openlayers": {
"extraneous": true
},
"node_modules/@angular/common": {
"version": "18.2.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.3.tgz",
"integrity": "sha512-NFL4yXXImSCH7i1xnHykUjHa9vl9827fGiwSV2mnf7LjSUsyDzFD8/54dNuYN9OY8AUD+PnK0YdNro6cczVyIA==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/core": {
"version": "18.2.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.3.tgz",
"integrity": "sha512-VGhMJxj7d0rYpqVfQrcGRB7EE/BCziotft/I/YPl6bOMPSAvMukG7DXQuJdYpNrr62ks78mlzHlZX/cdmB9Prw==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"rxjs": "^6.5.3 || ^7.4.0",
"zone.js": "~0.14.10"
}
},
"node_modules/@cesium/engine": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@cesium/engine/-/engine-11.0.0.tgz",
"integrity": "sha512-0z3mJNNly407h3/bAvGoGnjA0ygprkVz32z9x1VNmPXf9AuybKu7Q4wRrChUhC/qsNj3L45kP6KqyDuHSe2bhw==",
"peer": true,
"dependencies": {
"@tweenjs/tween.js": "^25.0.0",
"@zip.js/zip.js": "^2.7.34",
"autolinker": "^4.0.0",
"bitmap-sdf": "^1.0.3",
"dompurify": "^3.0.2",
"draco3d": "^1.5.1",
"earcut": "^3.0.0",
"grapheme-splitter": "^1.0.4",
"jsep": "^1.3.8",
"kdbush": "^4.0.1",
"ktx-parse": "^0.7.0",
"lerc": "^2.0.0",
"mersenne-twister": "^1.1.0",
"meshoptimizer": "^0.21.0",
"pako": "^2.0.4",
"protobufjs": "^7.1.0",
"rbush": "^4.0.0",
"topojson-client": "^3.1.0",
"urijs": "^1.19.7"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@cesium/widgets": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/@cesium/widgets/-/widgets-8.0.0.tgz",
"integrity": "sha512-Rnid5BbLBZjwFdbr3lgOwK3fhql/BeEbf5l9ZZE+Zc7V8Fb6wgKM8QmrL+bbJ+BtuiELp+SkNxcF97Ktifxb4g==",
"peer": true,
"dependencies": {
"@cesium/engine": "^11.0.0",
"nosleep.js": "^0.12.0"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@petamoriken/float16": {
"version": "3.8.7",
"resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.7.tgz",
"integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==",
"peer": true
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
"peer": true
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
"peer": true
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
"peer": true
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
"peer": true
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
"peer": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
"peer": true
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
"peer": true
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
"peer": true
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
"peer": true
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
"peer": true
},
"node_modules/@tweenjs/tween.js": {
"version": "25.0.0",
"resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-25.0.0.tgz",
"integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==",
"peer": true
},
"node_modules/@types/node": {
"version": "22.5.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
"integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
"peer": true,
"dependencies": {
"undici-types": "~6.19.2"
}
},
"node_modules/@types/rbush": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/rbush/-/rbush-3.0.4.tgz",
"integrity": "sha512-knSt9cCW8jj1ZSFcFeBZaX++OucmfPxxHiRwTahZfJlnQsek7O0bazTJHWD2RVj9LEoejUYF2de3/stf+QXcXw==",
"peer": true
},
"node_modules/@zip.js/zip.js": {
"version": "2.7.52",
"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.52.tgz",
"integrity": "sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q==",
"peer": true,
"engines": {
"bun": ">=0.7.0",
"deno": ">=1.0.0",
"node": ">=16.5.0"
}
},
"node_modules/autolinker": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-4.0.0.tgz",
"integrity": "sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==",
"peer": true,
"dependencies": {
"tslib": "^2.3.0"
}
},
"node_modules/bitmap-sdf": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
"integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==",
"peer": true
},
"node_modules/cesium": {
"version": "1.121.1",
"resolved": "https://registry.npmjs.org/cesium/-/cesium-1.121.1.tgz",
"integrity": "sha512-WpdaGFd8qCOHiE9khV0sWWjCMXAX1U9Aou8MzMC/F0Akp6YqcOk4HLk4LLhZKeOjO/Bh27iTIW2mxEZ5+dtCxg==",
"peer": true,
"dependencies": {
"@cesium/engine": "^11.0.0",
"@cesium/widgets": "^8.0.0"
},
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/color-name": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz",
"integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==",
"peer": true,
"engines": {
"node": ">=12.20"
}
},
"node_modules/color-parse": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.0.2.tgz",
"integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==",
"peer": true,
"dependencies": {
"color-name": "^2.0.0"
}
},
"node_modules/color-rgba": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-3.0.0.tgz",
"integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==",
"peer": true,
"dependencies": {
"color-parse": "^2.0.0",
"color-space": "^2.0.0"
}
},
"node_modules/color-space": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-space/-/color-space-2.0.1.tgz",
"integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==",
"peer": true
},
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"peer": true
},
"node_modules/dompurify": {
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
"integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==",
"peer": true
},
"node_modules/draco3d": {
"version": "1.5.7",
"resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz",
"integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
"peer": true
},
"node_modules/earcut": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz",
"integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==",
"peer": true
},
"node_modules/geotiff": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.1.3.tgz",
"integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==",
"peer": true,
"dependencies": {
"@petamoriken/float16": "^3.4.7",
"lerc": "^3.0.0",
"pako": "^2.0.4",
"parse-headers": "^2.0.2",
"quick-lru": "^6.1.1",
"web-worker": "^1.2.0",
"xml-utils": "^1.0.2",
"zstddec": "^0.1.0"
},
"engines": {
"node": ">=10.19"
}
},
"node_modules/geotiff/node_modules/lerc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz",
"integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==",
"peer": true
},
"node_modules/grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"peer": true
},
"node_modules/jsep": {
"version": "1.3.9",
"resolved": "https://registry.npmjs.org/jsep/-/jsep-1.3.9.tgz",
"integrity": "sha512-i1rBX5N7VPl0eYb6+mHNp52sEuaS2Wi8CDYx1X5sn9naevL78+265XJqy1qENEk7mRKwS06NHpUqiBwR7qeodw==",
"peer": true,
"engines": {
"node": ">= 10.16.0"
}
},
"node_modules/kdbush": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz",
"integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
"peer": true
},
"node_modules/ktx-parse": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/ktx-parse/-/ktx-parse-0.7.1.tgz",
"integrity": "sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ==",
"peer": true
},
"node_modules/lerc": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lerc/-/lerc-2.0.0.tgz",
"integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==",
"peer": true
},
"node_modules/long": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==",
"peer": true
},
"node_modules/mersenne-twister": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/mersenne-twister/-/mersenne-twister-1.1.0.tgz",
"integrity": "sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==",
"peer": true
},
"node_modules/meshoptimizer": {
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.21.0.tgz",
"integrity": "sha512-WabtlpnK/GgD0GMwYd1fBTfYHf4MIcQPEg6dt7y4GuDcY51RzLSkSNE8ZogD7U3Vs2/fIf4z89TOLpA80EOnhg==",
"peer": true
},
"node_modules/nosleep.js": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/nosleep.js/-/nosleep.js-0.12.0.tgz",
"integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==",
"peer": true
},
"node_modules/ol": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/ol/-/ol-10.1.0.tgz",
"integrity": "sha512-/efepydpzhFoeczA9KAN5t7G0WpFhP46ZXEfSl6JbZ7ipQZ2axpkYB2qt0qcOUlPFYMt7/XQFApH652KB08tTg==",
"peer": true,
"dependencies": {
"@types/rbush": "^3.0.3",
"color-rgba": "^3.0.0",
"color-space": "^2.0.1",
"earcut": "^3.0.0",
"geotiff": "^2.0.7",
"pbf": "4.0.1",
"rbush": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/openlayers"
}
},
"node_modules/ol-cesium": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/ol-cesium/-/ol-cesium-2.17.0.tgz",
"integrity": "sha512-XaMXjQYuq2eMPAgAx2e1wjN4I4QwfmPC+9YgU4xoMCj/MBj8oDQusyloQ4TaovypqbZg+0jJDDSZc7BhXckBwA==",
"peer": true,
"peerDependencies": {
"cesium": ">= 1.62.0",
"ol": ">= 6.0.1 || 7 || 8"
}
},
"node_modules/pako": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
"peer": true
},
"node_modules/parse-headers": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz",
"integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==",
"peer": true
},
"node_modules/pbf": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pbf/-/pbf-4.0.1.tgz",
"integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==",
"peer": true,
"dependencies": {
"resolve-protobuf-schema": "^2.1.0"
},
"bin": {
"pbf": "bin/pbf"
}
},
"node_modules/protobufjs": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
"integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
"hasInstallScript": true,
"peer": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/protocol-buffers-schema": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==",
"peer": true
},
"node_modules/quick-lru": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz",
"integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==",
"peer": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/quickselect": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz",
"integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==",
"peer": true
},
"node_modules/rbush": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/rbush/-/rbush-4.0.1.tgz",
"integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==",
"peer": true,
"dependencies": {
"quickselect": "^3.0.0"
}
},
"node_modules/resolve-protobuf-schema": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
"integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
"peer": true,
"dependencies": {
"protocol-buffers-schema": "^3.3.1"
}
},
"node_modules/rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/topojson-client": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
"integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
"peer": true,
"dependencies": {
"commander": "2"
},
"bin": {
"topo2geo": "bin/topo2geo",
"topomerge": "bin/topomerge",
"topoquantize": "bin/topoquantize"
}
},
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/undici-types": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"peer": true
},
"node_modules/urijs": {
"version": "1.19.11",
"resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz",
"integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
"peer": true
},
"node_modules/web-worker": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz",
"integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==",
"peer": true
},
"node_modules/xml-utils": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.10.1.tgz",
"integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==",
"peer": true
},
"node_modules/zone.js": {
"version": "0.14.10",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz",
"integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==",
"peer": true
},
"node_modules/zstddec": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz",
"integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==",
"peer": true
} }
} }
} }
+6 -7
View File
@@ -4,14 +4,13 @@
"publishConfig": { "publishConfig": {
"registry": "https://repository.akkerweb.nl/repository/npm-hosted/" "registry": "https://repository.akkerweb.nl/repository/npm-hosted/"
}, },
"peerDependencies": {
"@angular/common": ">=14.0.0",
"@angular/core": ">=14.0.0",
"ngx-openlayers": "1.0.0-next.19",
"cesium": ">=1.82.1",
"ol-cesium": ">=2.13.0"
},
"dependencies": { "dependencies": {
"tslib": "^2.0.0" "tslib": "^2.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.3",
"@angular/core": "18.2.3",
"cesium": "^1.97.0",
"ol-cesium": ">=2.13.0"
} }
} }
@@ -1,14 +1,15 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { AppCommonModule } from '@farmmaps/common';
import { AppCommonMapModule } from '@farmmaps/common-map';
import { AngularOpenlayersModule } from '@farmmaps/ng-openlayers';
import { Switch2D3DComponent } from './components/olcs/switch2d3d/switch2d3d.component'; import { Switch2D3DComponent } from './components/olcs/switch2d3d/switch2d3d.component';
import { AppCommonModule} from '@farmmaps/common';
import { AppCommonMapModule} from '@farmmaps/common-map';
@NgModule({ @NgModule({
declarations: [Switch2D3DComponent], declarations: [Switch2D3DComponent],
imports: [ imports: [
AppCommonModule, AppCommonModule,
AppCommonMapModule AppCommonMapModule,
AngularOpenlayersModule,
], ],
exports: [Switch2D3DComponent] exports: [Switch2D3DComponent]
}) })
@@ -1,17 +1,15 @@
@import "~bootstrap/scss/bootstrap.scss";
.twotreed { .twotreed {
display:block; display:block;
width:2.5em; width:2.5em;
height:2.5em; height:2.5em;
background-color: $body-bg; background-color: var(--bs-body-bg);
background-size: contain; background-size: contain;
margin-top:0.5em; margin-top:0.5em;
text-align: center; text-align: center;
line-height: 2.5em; line-height: 2.5em;
border-radius: 1.75em; border-radius: 1.75em;
padding: 0; padding: 0;
color: $secondary; color: var(--bs-secondary);
} }
.fa-spinner { .fa-spinner {
@@ -1,6 +1,6 @@
import { Component, OnInit,Input,Host } from '@angular/core'; import { Component, OnInit,Input,Host } from '@angular/core';
import { Interaction} from 'ol/interaction'; import { Interaction} from 'ol/interaction';
import { MapComponent } from 'ngx-openlayers'; import { MapComponent } from '@farmmaps/ng-openlayers';
import OLCesium from 'olcs/OLCesium'; import OLCesium from 'olcs/OLCesium';
import RasterSynchronizer from 'olcs/RasterSynchronizer'; import RasterSynchronizer from 'olcs/RasterSynchronizer';
import VectorSynchronizer from 'olcs/VectorSynchronizer'; import VectorSynchronizer from 'olcs/VectorSynchronizer';
@@ -49,7 +49,11 @@ export class Switch2D3DComponent {
this.interactions=[]; this.interactions=[];
this.map.instance.getInteractions().forEach((i) => { this.map.instance.getInteractions().forEach((i) => {
if(i.getActive()) { if(i.getActive()) {
this.interactions.push(i); // AW-6241 TODO How to fix?
// error TS2345: Argument of type 'import("C:/Project/Farmmaps/FarmMapsLib/node_modules/ol/interaction/Interaction").default'
// is not assignable to parameter of type 'import("C:/Project/Farmmaps/FarmMapsLib/projects/common-map3d/node_modules/ol/interaction/Interaction").default'.
// Line below commented out
// this.interactions.push(i);
i.setActive(false); i.setActive(false);
} }
}); });
-11
View File
@@ -8,13 +8,6 @@ import {
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } 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. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
@@ -22,7 +15,3 @@ getTestBed().initTestEnvironment(
teardown: { destroyAfterEach: false } teardown: { destroyAfterEach: false }
} }
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
+10 -1
View File
@@ -11,18 +11,27 @@
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"experimentalDecorators": true, "experimentalDecorators": true,
"importHelpers": true, "importHelpers": true,
"esModuleInterop": true,
"types": [], "types": [],
"lib": [ "lib": [
"dom", "dom",
"es2018" "es2018"
],
"paths": {
"@angular/*": [
"node_modules/@angular/*"
] ]
}
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"skipTemplateCodegen": true, "skipTemplateCodegen": true,
"strictMetadataEmit": true, "strictMetadataEmit": true,
"fullTemplateTypeCheck": true, "fullTemplateTypeCheck": true,
"strictInjectionParameters": true, "strictInjectionParameters": true,
"enableResourceInlining": true "enableResourceInlining": true,
"compilationMode": "partial"
}, },
"exclude": [ "exclude": [
"src/test.ts", "src/test.ts",
+3739 -16
View File
File diff suppressed because it is too large Load Diff
+17 -17
View File
@@ -1,25 +1,25 @@
{ {
"name": "@farmmaps/common", "name": "@farmmaps/common",
"version": "2.0.0", "version": "2.1.0",
"publishConfig": { "publishConfig": {
"registry": "https://repository.akkerweb.nl/repository/npm-hosted/" "registry": "https://repository.akkerweb.nl/repository/npm-hosted/"
}, },
"peerDependencies": { "peerDependencies": {
"@ng-bootstrap/ng-bootstrap": ">=10.0.0", "@ng-bootstrap/ng-bootstrap": "^17.0.1",
"@angular/common": ">=14.0.0", "@angular/common": "18.2.3",
"@angular/core": ">=14.0.0", "@angular/core": "18.2.3",
"@angular/forms": ">=14.0.0", "@angular/forms": "18.2.3",
"@ngrx/effects": ">=14.0.0", "@ngrx/effects": "^18.0.2",
"@ngrx/router-store": ">=14.0.0", "@ngrx/router-store": "^18.0.2",
"@ngrx/store": ">=14.0.0", "@ngrx/store": "^18.0.2",
"tassign": ">=1.0.0", "tassign": "^1.0.0",
"bootstrap": ">=4.4.1", "bootstrap": "^5.3.3",
"@microsoft/signalr": ">=3.1.3", "@microsoft/signalr": "^3.1.16",
"ngx-uploadx": ">=5.1.0", "ngx-uploadx": "^6.2.0",
"angular-oauth2-oidc": ">=13.0.0", "angular-oauth2-oidc": "^17.0.2",
"moment": ">=2.27.0", "moment": "^2.29.4",
"ngx-avatar": ">=4.1.0", "ngx-avatars": "^1.8.0",
"ngx-image-cropper": ">=3.3.5", "ngx-image-cropper": "^7.0.0",
"ngx-clipboard": ">=14.0.1" "ngx-clipboard": "^16.0.0"
} }
} }
@@ -71,6 +71,8 @@ export const TOGGLENOTIFICATIONMENU = '[AppCommon] ToggleNotificationMenu';
export const TOGGLEHELPMENU = '[AppCommon] ToggleHelpMenu'; export const TOGGLEHELPMENU = '[AppCommon] ToggleHelpMenu';
export const TOGGLESETTINGMENU = '[AppCommon] ToggleSettingMenu';
export const SETMENUVISIBLE = '[AppCommon] SetMenuVisible'; export const SETMENUVISIBLE = '[AppCommon] SetMenuVisible';
export const ONLINE = '[AppCommon] Online'; export const ONLINE = '[AppCommon] Online';
@@ -81,6 +83,8 @@ export const SETPAGEMODE = '[AppCommon] SetPageMode';
export const SETUNREADNOTIFICATIONS = '[AppCommon] SetUnreadNotifications'; export const SETUNREADNOTIFICATIONS = '[AppCommon] SetUnreadNotifications';
export const SWITCHLANGUAGE = '[AppCommon] SwitchLanguage';
export class InitUser implements Action { export class InitUser implements Action {
readonly type = INITUSER; readonly type = INITUSER;
@@ -332,6 +336,12 @@ export class ToggleHelpMenu implements Action {
constructor() { } constructor() { }
} }
export class ToggleSettingMenu implements Action {
readonly type = TOGGLESETTINGMENU;
constructor() { }
}
export class SetMenuVisible implements Action { export class SetMenuVisible implements Action {
readonly type = SETMENUVISIBLE; readonly type = SETMENUVISIBLE;
@@ -363,6 +373,12 @@ export class SetUnreadNotifications implements Action {
} }
export class SwitchLanguage implements Action {
readonly type = SWITCHLANGUAGE;
constructor(public locale:string) { }
}
export type Actions = OpenModal export type Actions = OpenModal
| InitRoot | InitRoot
@@ -408,7 +424,9 @@ export type Actions = OpenModal
| ToggleAppMenu | ToggleAppMenu
| ToggleNotificationMenu | ToggleNotificationMenu
| ToggleHelpMenu | ToggleHelpMenu
| ToggleSettingMenu
| NotificationEvent | NotificationEvent
| SetUnreadNotifications; | SetUnreadNotifications
| SwitchLanguage;
@@ -7,6 +7,7 @@ import {NavBarGuard} from './services/nav-bar-guard.service';
import {FullScreenGuard} from './services/full-screen-guard.service'; import {FullScreenGuard} from './services/full-screen-guard.service';
import {SessionClearedComponent} from './components/session-cleared/session-cleared.component'; import {SessionClearedComponent} from './components/session-cleared/session-cleared.component';
import {NotFoundComponent} from './components/not-found/not-found.component'; import {NotFoundComponent} from './components/not-found/not-found.component';
import { ProductionGuard } from './services/production-guard.service';
const routes = [ const routes = [
@@ -21,7 +22,7 @@ const routes = [
}, },
{ {
path: '**', component: NotFoundComponent, path: '**', component: NotFoundComponent,
canActivate: [NavBarGuard] canActivate: [NavBarGuard, ProductionGuard]
} }
]; ];
@@ -13,11 +13,13 @@ import { SchemaService } from './services/schema.service';
import { FolderService } from './services/folder.service'; import { FolderService } from './services/folder.service';
import { TimespanService } from './services/timespan.service'; import { TimespanService } from './services/timespan.service';
import { ItemService } from './services/item.service'; import { ItemService } from './services/item.service';
import { TaskService } from './services/task.service';
import { AdminService } from './services/admin.service'; import { AdminService } from './services/admin.service';
import { EventService } from './services/event.service'; import { EventService } from './services/event.service';
import { TypeaheadService } from './services/typeahead.service'; import { TypeaheadService } from './services/typeahead.service';
import { UserService } from './services/user.service'; import { UserService } from './services/user.service';
import { ImageService } from './services/image.service'; import { ImageService } from './services/image.service';
import { DownloadService } from './services/download.service';
import { GeolocatorService } from './services/geolocator.service'; import { GeolocatorService } from './services/geolocator.service';
import { WeatherService} from './services/weather.service'; import { WeatherService} from './services/weather.service';
import { AppConfig } from './shared/app.config'; import { AppConfig } from './shared/app.config';
@@ -43,11 +45,13 @@ export {
ItemTypeService, ItemTypeService,
TimespanService, TimespanService,
ItemService, ItemService,
TaskService,
AdminService, AdminService,
EventService, EventService,
TypeaheadService, TypeaheadService,
UserService, UserService,
ImageService, ImageService,
DownloadService,
GeolocatorService, GeolocatorService,
WeatherService, WeatherService,
AppConfig, AppConfig,
+76 -116
View File
@@ -1,16 +1,16 @@
// angular modules // angular modules
import { NgModule, APP_INITIALIZER, ModuleWithProviders, Injector, Optional, SkipSelf,InjectionToken } from '@angular/core'; import { CommonModule } from '@angular/common';
import { CommonModule, DatePipe } from '@angular/common'; import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http'; import { InjectionToken, NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
// external modules // external modules
import { OAuthModule, AuthConfig, OAuthService, OAuthStorage } from 'angular-oauth2-oidc';
import { StoreModule, Store } from '@ngrx/store';
import { EffectsModule } from '@ngrx/effects';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { UploadxModule } from 'ngx-uploadx'; import { EffectsModule } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';
import { OAuthModule } from 'angular-oauth2-oidc';
import { ClipboardModule } from 'ngx-clipboard'; import { ClipboardModule } from 'ngx-clipboard';
import { UploadxModule } from 'ngx-uploadx';
// routing module // routing module
@@ -19,123 +19,71 @@ import { AppCommonRoutingModule } from './common-routing.module';
import { MODULE_NAME } from './module-name'; import { MODULE_NAME } from './module-name';
//components //components
import { SafePipe } from './shared/safe.pipe'; import { AvatarModule } from 'ngx-avatars';
import { AuthConfigFactory, IAuthconfigFactory } from './shared/authconfigFactory'; import { ImageCropperModule } from 'ngx-image-cropper';
import * as commonActions from './actions/app-common.actions';
import { AppMenuComponent } from './components/app-menu/app-menu.component';
import { AppComponent } from './components/app/app.component'; import { AppComponent } from './components/app/app.component';
import { AuthCallbackComponent } from './components/auth-callback/auth-callback.component'; import { AuthCallbackComponent } from './components/auth-callback/auth-callback.component';
import { SessionClearedComponent } from './components/session-cleared/session-cleared.component'; import { AvatarComponent } from './components/avatar/avatar.component';
import { ResumableFileUploadComponent } from './components/resumable-file-upload/resumable-file-upload.component';
import { NotFoundComponent } from './components/not-found/not-found.component';
import { NotImplementedComponent } from './components/not-implemented/not-implemented.component';
import { SidePanelComponent } from './components/side-panel/side-panel.component';
import { TimespanComponent } from './components/timespan/timespan.component';
import { TagInputComponent } from './components/tag-input/tag-input.component';
import { MenuBackgroundComponent } from './components/menu-background/menu-background.component';
import { HasPackageDirective} from './components/has-package/has-package.directive';
import { PackageExistsDirective} from './components/package-exists/package-exists.directive';
import { HasClaimDirective } from './components/has-claim/has-claim.directive';
import { HasRoleDirective } from './components/has-role/has-role.directive';
import { UserMenuComponent} from './components/user-menu/user-menu.component';
import { ThumbnailComponent } from './components/thumbnail/thumbnail.component';
import { Alert } from './enumerations/alert.enum';
import { IEventMessage } from './models/event.message';
import { IItem, Item } from './models/item';
import { WeatherCurrentObservation } from './models/weatherCurrentObservation';
import { IItemType } from './models/item.type';
import { IItemTypes } from './models/item.types';
import { IItemTask, ItemTask } from './models/itemTask';
import { IListItem } from './models/list.item';
import { ITypeaheadItem } from './models/typeahead.item'
import { IJsonline } from './models/json-line';
import { ISenMLItem } from './models/senml-item';
import { IPackage,IPackages } from './models/package';
import { IUser } from './models/user';
import { IQueryState } from './models/query.state';
import { IDataLayer } from './models/data.layer';
import { IColor,IGradientstop} from './models/gradient';
import * as commonActions from './actions/app-common.actions';
import * as commonReducers from './reducers/app-common.reducer';
import * as commonEffects from './effects/app-common.effects';
import { SecureOAuthStorage} from './shared/secureOAuthStorage';
import { GradientComponent } from './components/gradient/gradient.component';
import { GradientSelectComponent } from './components/gradient-select/gradient-select.component';
import { AppMenuComponent } from './components/app-menu/app-menu.component';
import { NotificationMenuComponent} from './components/notification-menu/notification-menu.component';
import { HelpMenuComponent} from './components/help-menu/help-menu.component';
import { BackButtonComponent } from './components/back-button/back-button.component'; import { BackButtonComponent } from './components/back-button/back-button.component';
import { EditImageModalComponent } from './components/edit-image-modal/edit-image-modal.component'; import { EditImageModalComponent } from './components/edit-image-modal/edit-image-modal.component';
import { AvatarComponent } from './components/avatar/avatar.component'; import { GradientSelectComponent } from './components/gradient-select/gradient-select.component';
import { AvatarModule } from 'ngx-avatar'; import { GradientComponent } from './components/gradient/gradient.component';
import { ImageCropperModule } from 'ngx-image-cropper'; import { HasClaimDirective } from './components/has-claim/has-claim.directive';
import { HasPackageDirective } from './components/has-package/has-package.directive';
import { HasRoleDirective } from './components/has-role/has-role.directive';
import { HelpMenuComponent } from './components/help-menu/help-menu.component';
import { SettingMenuComponent } from './components/setting-menu/setting-menu.component';
import { ItemLinkComponent } from './components/item-link/item-link.component';
import { MenuBackgroundComponent } from './components/menu-background/menu-background.component';
import { NotFoundComponent } from './components/not-found/not-found.component';
import { NotImplementedComponent } from './components/not-implemented/not-implemented.component';
import { NotificationMenuComponent } from './components/notification-menu/notification-menu.component';
import { PackageExistsDirective } from './components/package-exists/package-exists.directive';
import { ResumableFileUploadComponent } from './components/resumable-file-upload/resumable-file-upload.component';
import { SessionClearedComponent } from './components/session-cleared/session-cleared.component';
import { SidePanelComponent } from './components/side-panel/side-panel.component';
import { TagInputComponent } from './components/tag-input/tag-input.component';
import { ThumbnailComponent } from './components/thumbnail/thumbnail.component';
import { TimespanComponent } from './components/timespan/timespan.component';
import { UserMenuComponent } from './components/user-menu/user-menu.component';
import * as commonEffects from './effects/app-common.effects';
import { Alert } from './enumerations/alert.enum';
import { IDataLayer } from './models/data.layer';
import { IEventMessage } from './models/event.message';
import { IColor, IGradientstop } from './models/gradient';
import { IItem, Item } from './models/item';
import { IItemType } from './models/item.type';
import { IItemTypes } from './models/item.types';
import { IItemLinkType } from './models/itemlink.type';
import { IItemTask, ItemTask } from './models/itemTask';
import { IJsonline } from './models/json-line';
import { IListItem } from './models/list.item';
import { IPackage, IPackages } from './models/package';
import { IQueryState } from './models/query.state';
import { ISenMLItem } from './models/senml-item';
import { ITypeaheadItem } from './models/typeahead.item';
import { IUrlType } from './models/url.type';
import { IUser } from './models/user';
import { WeatherCurrentObservation } from './models/weatherCurrentObservation';
import * as commonReducers from './reducers/app-common.reducer';
import { AuthConfigFactory, IAuthconfigFactory } from './shared/authconfigFactory';
import { SafePipe } from './shared/safe.pipe';
import { SecureOAuthStorage } from './shared/secureOAuthStorage';
export const FM_COMMON_STARTPAGE = new InjectionToken<string>('fm-common-startpage'); export const FM_COMMON_STARTPAGE = new InjectionToken<string>('fm-common-startpage');
export { export {
SafePipe, Alert, AppComponent, AuthCallbackComponent, AuthConfigFactory, AvatarComponent, BackButtonComponent, commonActions,
AuthCallbackComponent, commonReducers, EditImageModalComponent,
AppComponent,
SessionClearedComponent,
ResumableFileUploadComponent,
NotFoundComponent,
NotImplementedComponent,
SidePanelComponent,
TimespanComponent,
TagInputComponent,
UserMenuComponent,
ThumbnailComponent,
HasPackageDirective,
PackageExistsDirective,
HasClaimDirective,
HasRoleDirective,
Alert,
IEventMessage,
IItem,
Item,
IItemType,
IItemTypes,
IItemTask,
ItemTask,
IListItem,
ITypeaheadItem,
IUser,
IQueryState,
IPackage,
IPackages,
commonActions,
commonReducers,
IAuthconfigFactory,
AuthConfigFactory,
MenuBackgroundComponent,
SecureOAuthStorage,
WeatherCurrentObservation,
IJsonline,
ISenMLItem,
IDataLayer,
IColor,
IGradientstop,
BackButtonComponent,
AvatarComponent,
EditImageModalComponent,
GradientComponent, GradientComponent,
GradientSelectComponent GradientSelectComponent, HasClaimDirective, HasPackageDirective, HasRoleDirective, IAuthconfigFactory, IColor, IDataLayer, IEventMessage, IGradientstop, IItem, IItemLinkType, IItemTask, IItemType, IItemTypes, IJsonline, IListItem, IPackage,
IPackages, IQueryState, ISenMLItem, Item, ItemLinkComponent, ItemTask, ITypeaheadItem, IUrlType, IUser, MenuBackgroundComponent, NotFoundComponent,
NotImplementedComponent, PackageExistsDirective, ResumableFileUploadComponent, SafePipe, SecureOAuthStorage, SessionClearedComponent, SidePanelComponent, TagInputComponent, ThumbnailComponent, TimespanComponent, UserMenuComponent, WeatherCurrentObservation
}; };
@NgModule({ @NgModule({ declarations: [
imports: [
CommonModule,
HttpClientModule,
AppCommonRoutingModule,
StoreModule.forFeature(MODULE_NAME, commonReducers.reducer),
EffectsModule.forFeature([commonEffects.AppCommonEffects]),
OAuthModule.forRoot(),
NgbModule,
FormsModule,
UploadxModule,
ClipboardModule,
AvatarModule,
ImageCropperModule
],
declarations: [
AppComponent, AppComponent,
AuthCallbackComponent, AuthCallbackComponent,
SidePanelComponent, SidePanelComponent,
@@ -157,10 +105,12 @@ export {
AppMenuComponent, AppMenuComponent,
NotificationMenuComponent, NotificationMenuComponent,
HelpMenuComponent, HelpMenuComponent,
SettingMenuComponent,
BackButtonComponent, BackButtonComponent,
ThumbnailComponent, ThumbnailComponent,
EditImageModalComponent, EditImageModalComponent,
AvatarComponent AvatarComponent,
ItemLinkComponent
], ],
exports: [ exports: [
NgbModule, NgbModule,
@@ -189,8 +139,18 @@ export {
BackButtonComponent, BackButtonComponent,
ThumbnailComponent, ThumbnailComponent,
AvatarComponent, AvatarComponent,
ItemLinkComponent,
EditImageModalComponent EditImageModalComponent
] ], imports: [CommonModule,
}) AppCommonRoutingModule,
StoreModule.forFeature(MODULE_NAME, commonReducers.reducer),
EffectsModule.forFeature([commonEffects.AppCommonEffects]),
OAuthModule.forRoot(),
NgbModule,
FormsModule,
UploadxModule,
ClipboardModule,
AvatarModule,
ImageCropperModule], providers: [provideHttpClient(withInterceptorsFromDi())] })
export class AppCommonModule { export class AppCommonModule {
} }
@@ -33,6 +33,7 @@
<fm-resumable-file-upload></fm-resumable-file-upload> <fm-resumable-file-upload></fm-resumable-file-upload>
</ng-container> </ng-container>
<div class="user-menu apponly"> <div class="user-menu apponly">
<fm-setting-menu [user]="user|async" [showMenu]="settingMenuVisible|async"></fm-setting-menu>
<fm-help-menu [user]="user|async" [showMenu]="helpMenuVisible|async"></fm-help-menu> <fm-help-menu [user]="user|async" [showMenu]="helpMenuVisible|async"></fm-help-menu>
<fm-notification-menu [user]="user|async" [unread]="unreadNotifications|async" [showMenu]="notificationMenuVisible|async"></fm-notification-menu> <fm-notification-menu [user]="user|async" [unread]="unreadNotifications|async" [showMenu]="notificationMenuVisible|async"></fm-notification-menu>
<fm-app-menu [user]="user|async" [showMenu]="appMenuVisible|async"></fm-app-menu> <fm-app-menu [user]="user|async" [showMenu]="appMenuVisible|async"></fm-app-menu>
@@ -1,9 +1,3 @@
/* Import Bootstrap & Fonts */
@import "~bootstrap/scss/bootstrap.scss";
// custom styles // custom styles
.btn:focus { .btn:focus {
@@ -16,7 +10,7 @@
.form-control:focus { .form-control:focus {
box-shadow: none; box-shadow: none;
border-color: $input-border-color; border-color: var(--bs-input-border-color);
} }
@@ -125,7 +119,7 @@ body { background: #f1f1f1; line-height: 18px; user-select:none;font-family: Lat
max-height:0em; max-height:0em;
} }
fm-help-menu,fm-app-menu,fm-user-menu,fm-notification-menu { fm-help-menu,fm-app-menu,fm-user-menu,fm-notification-menu,fm-setting-menu {
display: inline-block; display: inline-block;
margin-left: 1rem; margin-left: 1rem;
} }
@@ -45,6 +45,7 @@ export class AppComponent implements OnInit, OnDestroy {
public accountMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetAccountMenuVisible); public accountMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetAccountMenuVisible);
public appMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetAppMenuVisible); public appMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetAppMenuVisible);
public notificationMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetNotificationMenuVisible); public notificationMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetNotificationMenuVisible);
public settingMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetSettingMenuVisible);
public helpMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetHelpMenuVisible); public helpMenuVisible: Observable<boolean> = this.store$.select(appReducers.SelectGetHelpMenuVisible);
public unreadNotifications: Observable<number> = this.store$.select(appReducers.SelectgetUnreadNotifications); public unreadNotifications: Observable<number> = this.store$.select(appReducers.SelectgetUnreadNotifications);
public user: Observable<IUser> = this.store$.select(appReducers.SelectGetUser); public user: Observable<IUser> = this.store$.select(appReducers.SelectGetUser);
@@ -115,18 +116,11 @@ export class AppComponent implements OnInit, OnDestroy {
return action; return action;
} }
async loadItemTypes() {
await this.itemTypeService$.load(this.appConfig$)
}
ngOnInit() { ngOnInit() {
this.InstallRouteEventHandler(); this.InstallRouteEventHandler();
this.InstallEventServiceEventHandler(); this.InstallEventServiceEventHandler();
this.InstallAuthenticationEventHandler(); this.InstallAuthenticationEventHandler();
this.InstallHealthCheck(); this.InstallHealthCheck();
//load item types
this.loadItemTypes();
} }
@HostListener('document:keyup', ['$event']) @HostListener('document:keyup', ['$event'])
@@ -1,4 +1,4 @@
import { Router, CanActivate } from '@angular/router'; import { Router } from '@angular/router';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { OAuthService } from 'angular-oauth2-oidc'; import { OAuthService } from 'angular-oauth2-oidc';
import { } from '@angular/router'; import { } from '@angular/router';
@@ -6,7 +6,7 @@ import { } from '@angular/router';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
export class AuthCallbackGuard implements CanActivate { export class AuthCallbackGuard {
constructor(private router$: Router,private oauthService$:OAuthService) {} constructor(private router$: Router,private oauthService$:OAuthService) {}
@@ -1,10 +1,10 @@
<span class="avatar-container" [title]="name"> <span class="avatar-container" [title]="name">
<ngx-avatar <ngx-avatars
class="farmmaps-avatar" class="farmmaps-avatar"
[src]="src" [src]="src"
[name]="name" [name]="name"
[size]="size" [size]="size"
[round]='true' [round]='true'
> >
</ngx-avatar> </ngx-avatars>
</span> </span>
@@ -1,12 +1,10 @@
@import "~bootstrap/scss/bootstrap.scss";
.back-button { .back-button {
cursor: default; cursor: default;
color: $primary; color: var(--bs-primary);
display: block; display: block;
} }
.back-button:hover { .back-button:hover {
cursor: pointer; cursor: pointer;
color: $secondary; color: var(--bs-secondary);
} }
@@ -1,6 +1,6 @@
import {Component, HostListener} from '@angular/core'; import { Location } from "@angular/common";
import {Location} from "@angular/common"; import { Component, EventEmitter, HostListener, Output } from '@angular/core';
import { DeviceService} from '../../services/device.service'; import { DeviceService } from '../../services/device.service';
@Component({ @Component({
selector: 'fm-back-button', selector: 'fm-back-button',
@@ -8,16 +8,18 @@ import { DeviceService} from '../../services/device.service';
styleUrls: ['./back-button.component.scss'] styleUrls: ['./back-button.component.scss']
}) })
export class BackButtonComponent { export class BackButtonComponent {
@Output() beforeLocationBack = new EventEmitter();
@HostListener('click') @HostListener('click')
onBackClicked() { onBackClicked() {
this.beforeLocationBack.emit();
this.location.back(); this.location.back();
} }
constructor(private location: Location,private deviceService:DeviceService) { } constructor(private location: Location,private deviceService:DeviceService) {
}
public show() { public show() {
return !this.deviceService.IsMobile(); return !this.deviceService.IsMobile();
} }
} }
@@ -11,7 +11,7 @@
<i class="fal fa-image"></i> <i class="fal fa-image"></i>
<div i18n>No image selected</div> <div i18n>No image selected</div>
</div> </div>
<image-cropper #imageCropper <image-cropper #imageCropper output="base64"
[imageChangedEvent]="imageChangedEvent" [imageChangedEvent]="imageChangedEvent"
[maintainAspectRatio]="true" [maintainAspectRatio]="true"
[format]="imageType" [format]="imageType"
@@ -1,5 +1,5 @@
import { Component, OnInit,ViewChild,ElementRef,EventEmitter, Output } from '@angular/core'; import { Component, OnInit,ViewChild,ElementRef,EventEmitter, Output } from '@angular/core';
import { HttpClient, HttpParams,HttpHeaders } from "@angular/common/http"; import { HttpClient, HttpParams, HttpHeaders } from "@angular/common/http";
import {NgbModal} from "@ng-bootstrap/ng-bootstrap" import {NgbModal} from "@ng-bootstrap/ng-bootstrap"
import { ImageCroppedEvent,LoadedImage } from 'ngx-image-cropper'; import { ImageCroppedEvent,LoadedImage } from 'ngx-image-cropper';
import {ImageService } from '../../services/image.service'; import {ImageService } from '../../services/image.service';
@@ -0,0 +1 @@
<span class="item-link" (click)="copylink(copiedtt)" triggers="manual" ngbTooltip="Link copied" #copiedtt="ngbTooltip" ><i ngbTooltip='Copy link' class="fa-solid fa-link"></i> <span *ngIf="showText" i18n>Copy link</span></span>
@@ -0,0 +1,44 @@
import { Component, Input, OnDestroy} from '@angular/core';
import { IItemLinkType} from '../../models/itemlink.type'
import { IUrlType } from '../../models/url.type';
import { ItemService } from '../../common-service.module';
import { Subscription } from 'rxjs';
import { ClipboardService } from 'ngx-clipboard'
@Component({
selector: 'fm-item-link',
templateUrl: './item-link.component.html'
})
export class ItemLinkComponent implements OnDestroy {
@Input() itemCode:string;
@Input() pathSuffix:string;
@Input() query:string;
@Input() validMinutes:number;
@Input() showText:boolean;
private sub : Subscription = null;
constructor(private itemService:ItemService,private clipboardService$: ClipboardService) { }
copylink(tooltip) {
if(this.sub) {
this.sub.unsubscribe();
}
let link: IItemLinkType = {itemcode:this.itemCode,pathsuffix:this.pathSuffix,query:this.query,validminutes:this.validMinutes}
this.sub = this.itemService.getItemLink(link).subscribe((url:IUrlType) => {
this.clipboardService$.copy(url.url);
tooltip.open();
setTimeout(() => {
tooltip.close();
}, 2000);
})
}
ngOnDestroy(): void {
if(this.sub) {
this.sub.unsubscribe();
}
}
}
@@ -1,13 +1,10 @@
/* Import Bootstrap & Fonts */
@import "~bootstrap/scss/bootstrap.scss";
div.resumable-file-upload { div.resumable-file-upload {
position: fixed; position: fixed;
right: 0px; right: 0px;
bottom: 0px; bottom: 0px;
width: 300px; width: 300px;
max-height: 250px; max-height: 250px;
z-index: 1;
/*z-index:2000 !important;*/ /*z-index:2000 !important;*/
} }
@@ -76,7 +73,7 @@ div.card-header span.fa {
} }
.upload-file.busy > div > span.fa-times { .upload-file.busy > div > span.fa-times {
color: $danger; color: var(--bs-danger);
width: 20px; width: 20px;
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
@@ -94,7 +91,7 @@ div.card-header span.fa {
} }
.upload-file > div.errormessage { .upload-file > div.errormessage {
color: $danger; color: var(--bs-danger);
display: none; display: none;
} }
@@ -0,0 +1,8 @@
<div>
<div (click)="toggle($event)" class="rounded-circle menu-button hidden" [ngClass]="{'hidden':!user || noContent}">
<span i18n-title title="Settings"><i class="fas fa-gear" aria-hidden="true"></i></span>
<div class="menu hidden" [ngClass]="{'hidden':!showMenu}">
<router-outlet name="setting-menu" (activate)="activateRoute()" (deactivate)="deActivateRoute()"></router-outlet>
</div>
</div>
</div>
@@ -0,0 +1,80 @@
.menu-button {
background-color: gray;
display: inline-block;
width: 2.5em;
height: 2.5em;
line-height: 2.5em;
text-align: center;
font-size: 1rem;
position: relative;
}
div.menu-button > span {
color:white;
}
.menu {
max-height: calc( 100vh - 4rem);
//transition: max-height 0.2s;
overflow: hidden;
box-shadow: 0 0 20px rgba(0,0,0,.3);
position: fixed;
top: 3.4rem;
right:0.5rem;
left:0.5rem;
background-color: #fff;
border-radius: 0.25rem;
padding: 0.5rem;
z-index: 3;
}
:host-context(.fullscreen) .menu {
top:4em;
}
.card {
padding:0.5rem;
min-width: 10rem;
}
.card-body {
text-align: left;
}
.hidden {
max-height: 0;
}
.menu.hidden {
padding: 0;
}
.menu-button.hidden {
overflow: hidden;
}
@media screen and (min-width: 44rem) {
.menu {
position: absolute;
top: 3rem;
right:0;
left: unset;
max-width: 30em;
}
:host-context(.fullscreen) .menu {
top: 3rem;
}
}
.unread {
display: block;
position: absolute;
top:-0.5em;
right: -0.5em;
}
.unread.hidden {
display: none;
}
@@ -0,0 +1,37 @@
import { Input } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import { IUser } from '../../models/user';
import {Store} from '@ngrx/store';
import * as appReducers from '../../reducers/app-common.reducer';
import * as appActions from '../../actions/app-common.actions';
@Component({
selector: 'fm-setting-menu',
templateUrl: './setting-menu.component.html',
styleUrls: ['./setting-menu.component.scss']
})
export class SettingMenuComponent implements OnInit {
@Input() user:IUser;
@Input() showMenu:boolean;
public noContent = true;
constructor(private store: Store<appReducers.State>) { }
ngOnInit(): void {
}
toggle(event:MouseEvent) {
event.stopPropagation();
this.store.dispatch(new appActions.ToggleSettingMenu());
}
activateRoute() {
this.noContent=false;
}
deActivateRoute() {
this.noContent=true;
}
}
@@ -1,4 +1,4 @@
<div class="side-panel hidden" [ngClass]="{'hidden':!visible,'collapsed':collapsed,'resizeable':(resizeable && mobile),'resizing':resizing,'left':left}" [ngStyle]="{'top':top}"> <div class="side-panel hidden" [ngClass]="{'hidden':!visible,'collapsed':collapsed,'resizeable':(resizeable && mobile),'resizing':resizing,'left':left,'extrawide':extrawide}" [ngStyle]="{'top':top}">
<div *ngIf="collapsable" class="arrow rounded-end p-2" (click)="handleToggleClick($event)"> <div *ngIf="collapsable" class="arrow rounded-end p-2" (click)="handleToggleClick($event)">
<i class="fal fa-chevron-left" aria-hidden="true"></i> <i class="fal fa-chevron-left" aria-hidden="true"></i>
</div> </div>
@@ -15,7 +15,7 @@
} }
.side-panel.collapsed { .side-panel.collapsed {
left:-22rem; left:-44rem;
} }
.arrow { .arrow {
@@ -76,7 +76,6 @@ div.resizegrip > span {
.resizeable .resizegrip { .resizeable .resizegrip {
display:block; display:block;
} }
.resizeable .content { .resizeable .content {
@@ -94,10 +93,17 @@ div.resizegrip > span {
.side-panel.hidden { .side-panel.hidden {
width: 22rem; width: 22rem;
left:-24rem; left:-22rem;
height:100%; height:100%;
top: 0px; top: 0px;
} }
.side-panel.extrawide {
top:0px;
width: 44rem;
height:100%;
left:0px;
}
} }
@@ -1,4 +1,4 @@
import { Component, Input,Output,ViewChild,EventEmitter, ElementRef,OnChanges,SimpleChanges,HostListener,ChangeDetectorRef } from '@angular/core'; import { Component, Input,Output,ViewChild,EventEmitter, ElementRef,OnChanges,SimpleChanges,HostListener,ChangeDetectorRef, ViewEncapsulation } from '@angular/core';
@Component({ @Component({
selector: 'fm-side-panel', selector: 'fm-side-panel',
@@ -13,6 +13,7 @@ export class SidePanelComponent implements OnChanges {
@Input() public collapsable: boolean; @Input() public collapsable: boolean;
@Input() public resizeable = false; @Input() public resizeable = false;
@Input() public left = false; @Input() public left = false;
@Input() public extrawide: boolean;
@Output() onResize: EventEmitter<number> = new EventEmitter<number>(); @Output() onResize: EventEmitter<number> = new EventEmitter<number>();
@ViewChild("resizeGrip") elementView: ElementRef; @ViewChild("resizeGrip") elementView: ElementRef;
public mobile = true; public mobile = true;
@@ -41,7 +42,7 @@ export class SidePanelComponent implements OnChanges {
} }
ngAfterViewInit() { ngAfterViewInit() {
this.parentHeight = this.element.nativeElement.offsetParent.clientHeight; this.parentHeight = this.element.nativeElement.offsetParent?.clientHeight;
this.setTop(); this.setTop();
} }
@@ -5,6 +5,9 @@
<div class="card" *ngIf="user"> <div class="card" *ngIf="user">
<div class="card-body"> <div class="card-body">
<div class="username">{{user.name}}</div> <div class="username">{{user.name}}</div>
<div *ngIf="getProvider(); let provider">
<small><span i18n>Provider</span><span> {{provider}}</span></small>
</div>
<div><a href="#" (click)="logout($event)" i18n>logout</a></div> <div><a href="#" (click)="logout($event)" i18n>logout</a></div>
</div> </div>
</div> </div>
@@ -20,11 +20,14 @@ export class UserMenuComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
} }
getLetter():string { getProvider():string | null {
if (this.user && this.user.firstName && this.user.lastName) const ownedClaims = this.oauthService.getIdentityClaims();
return this.user.firstName.substr(0,1).toUpperCase() + if(ownedClaims) {
this.user.lastName.substr(0,1).toUpperCase(); if (ownedClaims["idp"] != "local") {
return this.user && this.user.name ? this.user.name.substr(0,1).toUpperCase():""; return ownedClaims["idp"];
}
}
return null;
} }
logout(event:MouseEvent) { logout(event:MouseEvent) {
@@ -1,4 +1,4 @@
import { Injectable } from '@angular/core'; import { Injectable, Inject, LOCALE_ID } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { OAuthService,UserInfo } from 'angular-oauth2-oidc'; import { OAuthService,UserInfo } from 'angular-oauth2-oidc';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
@@ -16,6 +16,7 @@ import {StateSerializerService} from '../services/state-serializer.service';
@Injectable() @Injectable()
export class AppCommonEffects { export class AppCommonEffects {
locale: string;
login$ = createEffect(() => this.actions$.pipe( login$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.LOGIN), ofType(appCommonActions.LOGIN),
@@ -47,11 +48,27 @@ export class AppCommonEffects {
first(), first(),
switchMap((action) => { switchMap((action) => {
return zip(this.userService$.getCurrentUser(),from(this.oauthService$.loadUserProfile())).pipe( return zip(this.userService$.getCurrentUser(),from(this.oauthService$.loadUserProfile())).pipe(
switchMap(([user,userInfo]) => {return of(new appCommonActions.InitUserSuccess(user,userInfo as UserInfo))} ), switchMap(([user,userInfo]) => {
if (location.hostname === 'localhost' || user.language === undefined || user.language === this.locale)
{
return of(new appCommonActions.InitUserSuccess(user,userInfo as UserInfo))
}
return of(new appCommonActions.SwitchLanguage(user.language))
}),
catchError(error => of(new appCommonActions.Fail(error)))) catchError(error => of(new appCommonActions.Fail(error))))
} }
))); )));
switchLanguage$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.SWITCHLANGUAGE),
switchMap((action) => {
const a = action as appCommonActions.SwitchLanguage;
if (location.pathname.includes(`/${this.locale}/`)) {
const newPath = location.pathname.replace(`/${this.locale}/`, `/${a.locale}/`);
location.replace(newPath);
}
return of(undefined);
})),{ dispatch:false});
initUserPackages$ = createEffect(() => this.actions$.pipe( initUserPackages$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.INITUSERPACKAGES), ofType(appCommonActions.INITUSERPACKAGES),
@@ -139,16 +156,23 @@ export class AppCommonEffects {
const itemType = itemtypes[a.item.itemType]; const itemType = itemtypes[a.item.itemType];
var editor = itemType && itemType.editor ? itemType.editor : editor; var editor = itemType && itemType.editor ? itemType.editor : editor;
} }
this.router$.navigate(['/editor',editor,'item', a.item.code]) if (editor == 'croppingscheme') {
// Exeception: no 'item' in route
this.router$.navigate(['/editor', editor, a.item.code])
}
else {
this.router$.navigate(['/editor', editor, 'item', a.item.code])
}
return []; return [];
} }
))); )
));
viewItem$ = createEffect(() => this.actions$.pipe( viewItem$ = createEffect(() => this.actions$.pipe(
ofType(appCommonActions.VIEWITEM), ofType(appCommonActions.VIEWITEM),
withLatestFrom(this.store$.select(appCommonReducers.selectGetItemTypes)), withLatestFrom(this.store$.select(appCommonReducers.selectGetItemTypes)),
switchMap(([action, itemtypes]) => { switchMap(([action, itemtypes]) => {
const a = action as appCommonActions.EditItem; const a = action as appCommonActions.ViewItem;
const itemType = itemtypes[a.item.itemType]; const itemType = itemtypes[a.item.itemType];
const viewer = itemType.viewer; const viewer = itemType.viewer;
const editor = itemType.editor; const editor = itemType.editor;
@@ -201,7 +225,8 @@ export class AppCommonEffects {
constructor(private actions$: Actions, private store$: Store<appCommonReducers.State>, private oauthService$: OAuthService, private itemService$: ItemService, private folderService$:FolderService, private userService$: UserService, private router$: Router, private stateSerializerService$:StateSerializerService) { constructor(private actions$: Actions, private store$: Store<appCommonReducers.State>, private oauthService$: OAuthService, private itemService$: ItemService, private folderService$:FolderService, private userService$: UserService, private router$: Router, private stateSerializerService$:StateSerializerService, @Inject(LOCALE_ID) locale: string) {
this.locale = locale;
store$.dispatch(new appCommonActions.LoadItemTypes()); store$.dispatch(new appCommonActions.LoadItemTypes());
} }
} }
+1
View File
@@ -25,6 +25,7 @@ export class Item implements IItem {
public state?: number; public state?: number;
public data?:any; public data?:any;
public isEditable?:boolean; public isEditable?:boolean;
public owner?: string;
constructor() { constructor() {
} }
@@ -1,6 +1,7 @@
export interface IItemTask { export interface IItemTask {
code?: string; code?: string;
workflowCode?: string;
taskType?: string; taskType?: string;
attributes?: any; attributes?: any;
message?: string, message?: string,
@@ -11,6 +12,7 @@ export interface IItemTask {
export class ItemTask implements IItemTask { export class ItemTask implements IItemTask {
public code?:string; public code?:string;
public workflowCode?: string;
public taskType?: string; public taskType?: string;
public attributes?: any; public attributes?: any;
public message?: string; public message?: string;
@@ -0,0 +1,6 @@
export interface IItemLinkType {
itemcode: string;
pathsuffix?: string;
query?: string;
validminutes?: number;
}
@@ -11,4 +11,5 @@ export interface IListItem {
size?: number; size?: number;
state?: number; state?: number;
thumbnail?: boolean; thumbnail?: boolean;
owner?: string;
} }
@@ -0,0 +1,3 @@
export interface IUrlType {
url: string;
}
@@ -26,6 +26,7 @@ export interface State {
appMenuVisible: boolean, appMenuVisible: boolean,
notificationMenuVisible: boolean, notificationMenuVisible: boolean,
helpMenuVisible: boolean, helpMenuVisible: boolean,
settingMenuVisible: boolean,
unreadNotifications: number, unreadNotifications: number,
isOnline: boolean, isOnline: boolean,
isPageMode:boolean isPageMode:boolean
@@ -47,6 +48,7 @@ export const initialState: State = {
appMenuVisible: false, appMenuVisible: false,
notificationMenuVisible: false, notificationMenuVisible: false,
helpMenuVisible: false, helpMenuVisible: false,
settingMenuVisible: false,
unreadNotifications: 0, unreadNotifications: 0,
isOnline: true, isOnline: true,
isPageMode: true isPageMode: true
@@ -64,6 +66,8 @@ export function reducer(state = initialState, action: appCommonActions.Actions )
code:a.user.code, code:a.user.code,
email:claims["email"]!== undefined ? claims["email"] : a.user.name, email:claims["email"]!== undefined ? claims["email"] : a.user.name,
name:claims["name"]!== undefined?claims["name"] : a.user.email, name:claims["name"]!== undefined?claims["name"] : a.user.email,
lastName:a.user.lastName,
firstName:a.user.firstName,
claims:claims, claims:claims,
searchable: false searchable: false
}; };
@@ -104,26 +108,29 @@ export function reducer(state = initialState, action: appCommonActions.Actions )
}); });
} }
case appCommonActions.TOGGLEMENU: { case appCommonActions.TOGGLEMENU: {
return tassign(state, { menuVisible: !state.menuVisible,accountMenuVisible:!state.menuVisible?false:state.accountMenuVisible,appMenuVisible:!state.menuVisible?false:state.appMenuVisible,notificationMenuVisible:!state.menuVisible?false:state.notificationMenuVisible,helpMenuVisible:!state.menuVisible?false:state.helpMenuVisible }); return tassign(state, { menuVisible: !state.menuVisible,accountMenuVisible:!state.menuVisible?false:state.accountMenuVisible,appMenuVisible:!state.menuVisible?false:state.appMenuVisible,notificationMenuVisible:!state.menuVisible?false:state.notificationMenuVisible,helpMenuVisible:!state.menuVisible?false:state.helpMenuVisible,settingMenuVisible:!state.menuVisible?false:state.settingMenuVisible });
} }
case appCommonActions.TOGGLEACCOUNTMENU: { case appCommonActions.TOGGLEACCOUNTMENU: {
return tassign(state, { accountMenuVisible: !state.accountMenuVisible,appMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false }); return tassign(state, { accountMenuVisible: !state.accountMenuVisible,appMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false,settingMenuVisible:false });
} }
case appCommonActions.TOGGLEAPPMENU: { case appCommonActions.TOGGLEAPPMENU: {
return tassign(state, { appMenuVisible: !state.appMenuVisible,accountMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false }); return tassign(state, { appMenuVisible: !state.appMenuVisible,accountMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false,settingMenuVisible:false });
} }
case appCommonActions.TOGGLENOTIFICATIONMENU: { case appCommonActions.TOGGLENOTIFICATIONMENU: {
return tassign(state, { notificationMenuVisible : !state.notificationMenuVisible,accountMenuVisible:false,appMenuVisible:false,helpMenuVisible:false }); return tassign(state, { notificationMenuVisible : !state.notificationMenuVisible,accountMenuVisible:false,appMenuVisible:false,helpMenuVisible:false,settingMenuVisible:false });
} }
case appCommonActions.TOGGLEHELPMENU: { case appCommonActions.TOGGLEHELPMENU: {
return tassign(state, { helpMenuVisible : !state.helpMenuVisible,accountMenuVisible:false,appMenuVisible:false,notificationMenuVisible:false }); return tassign(state, { helpMenuVisible : !state.helpMenuVisible,accountMenuVisible:false,appMenuVisible:false,notificationMenuVisible:false,settingMenuVisible:false });
}
case appCommonActions.TOGGLESETTINGMENU: {
return tassign(state, { settingMenuVisible : !state.settingMenuVisible,accountMenuVisible:false,appMenuVisible:false,notificationMenuVisible:false,helpMenuVisible:false });
} }
case appCommonActions.ESCAPE: { case appCommonActions.ESCAPE: {
return tassign(state, { menuVisible: false,accountMenuVisible:false,appMenuVisible: false,notificationMenuVisible:false,helpMenuVisible:false }); return tassign(state, { menuVisible: false,accountMenuVisible:false,appMenuVisible: false,notificationMenuVisible:false,helpMenuVisible:false,settingMenuVisible:false });
} }
case appCommonActions.SETMENUVISIBLE: { case appCommonActions.SETMENUVISIBLE: {
const a = action as appCommonActions.SetMenuVisible; const a = action as appCommonActions.SetMenuVisible;
return tassign(state, { menuVisible: a.visible,accountMenuVisible:a.visible?false:state.accountMenuVisible,appMenuVisible:a.visible?false:state.appMenuVisible,notificationMenuVisible:a.visible?false:state.notificationMenuVisible,helpMenuVisible:a.visible?false:state.helpMenuVisible }); return tassign(state, { menuVisible: a.visible,accountMenuVisible:a.visible?false:state.accountMenuVisible,appMenuVisible:a.visible?false:state.appMenuVisible,notificationMenuVisible:a.visible?false:state.notificationMenuVisible,helpMenuVisible:a.visible?false:state.helpMenuVisible,settingMenuVisible:a.visible?false:state.settingMenuVisible });
} }
case appCommonActions.INITUSERPACKAGESSUCCESS:{ case appCommonActions.INITUSERPACKAGESSUCCESS:{
const a = action as appCommonActions.InitUserPackagesSuccess; const a = action as appCommonActions.InitUserPackagesSuccess;
@@ -201,6 +208,7 @@ export const getAccountMenuVisible = (state: State) => state.accountMenuVisible;
export const getAppMenuVisible = (state: State) => state.appMenuVisible; export const getAppMenuVisible = (state: State) => state.appMenuVisible;
export const getNotificationMenuVisible = (state: State) => state.notificationMenuVisible; export const getNotificationMenuVisible = (state: State) => state.notificationMenuVisible;
export const getHelpMenuVisible = (state: State) => state.helpMenuVisible; export const getHelpMenuVisible = (state: State) => state.helpMenuVisible;
export const getSettingMenuVisible = (state: State) => state.settingMenuVisible;
export const getUnreadNotifications = (state: State) => state.unreadNotifications; export const getUnreadNotifications = (state: State) => state.unreadNotifications;
export const getIsOnline = (state: State) => state.isOnline; export const getIsOnline = (state: State) => state.isOnline;
export const getIsPageMode = (state: State) => state.isPageMode; export const getIsPageMode = (state: State) => state.isPageMode;
@@ -225,6 +233,7 @@ export const SelectGetAccountMenuVisible = createSelector(selectAppCommonState,g
export const SelectGetAppMenuVisible = createSelector(selectAppCommonState,getAppMenuVisible); export const SelectGetAppMenuVisible = createSelector(selectAppCommonState,getAppMenuVisible);
export const SelectGetNotificationMenuVisible = createSelector(selectAppCommonState,getNotificationMenuVisible); export const SelectGetNotificationMenuVisible = createSelector(selectAppCommonState,getNotificationMenuVisible);
export const SelectGetHelpMenuVisible = createSelector(selectAppCommonState,getHelpMenuVisible); export const SelectGetHelpMenuVisible = createSelector(selectAppCommonState,getHelpMenuVisible);
export const SelectGetSettingMenuVisible = createSelector(selectAppCommonState,getSettingMenuVisible);
export const SelectgetUnreadNotifications = createSelector(selectAppCommonState,getUnreadNotifications); export const SelectgetUnreadNotifications = createSelector(selectAppCommonState,getUnreadNotifications);
export const SelectGetIsOnline = createSelector(selectAppCommonState,getIsOnline); export const SelectGetIsOnline = createSelector(selectAppCommonState,getIsOnline);
@@ -1,9 +1,11 @@
import { HttpClient, HttpParams } from "@angular/common/http";
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { IItem } from '../models/item'; import { IItem } from '../models/item';
import { HttpClient, HttpParams } from "@angular/common/http"; import { IItemTask } from '../models/itemTask';
import { IUser } from '../models/user';
import { AppConfig } from "../shared/app.config"; import { AppConfig } from "../shared/app.config";
import {ItemTypeService} from './itemtype.service'; import { ItemTypeService } from './itemtype.service';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
@@ -42,4 +44,12 @@ export class AdminService {
deleteItem(code: string): Observable<any> { deleteItem(code: string): Observable<any> {
return this.httpClient.delete<any>(`${this.ApiEndpoint()}/api/v1/admin/${code}`); return this.httpClient.delete<any>(`${this.ApiEndpoint()}/api/v1/admin/${code}`);
} }
getAllUsers(): Observable<IUser[]> {
return this.httpClient.get<IUser[]>(`${this.ApiEndpoint()}/api/v1/admin/users`);
}
postItemTask(item: IItem, task: IItemTask): Observable<IItemTask> {
return this.httpClient.post<IItemTask>(`${this.ApiEndpoint()}/api/v1/admin/${item.code}/tasks`, task);
}
} }

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