@@ -5,112 +5,130 @@ $("#nrSearchButton").bind("click", function() {
55 $ ( "#nr" ) . parsley ( ) . validate ( ) ;
66} ) ;
77
8+ //
9+ function toggleAlertMaxGKReached ( el ) {
10+ var count = $ ( "#geokretyListTable [name*=\"geokretySelected\"]:checkbox:checked" ) . length ;
11+ if ( count >= { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
12+ $ ( "#geokretySelectAll" ) . prop ( "checked" , false ) ;
13+ showAlertMaxGKReached ( true ) ;
14+ } else {
15+ showAlertMaxGKReached ( false ) ;
16+ }
17+ $ ( "#modalInventorySelectButton span.badge" ) . text ( count ) ;
18+ }
19+
820// change header checkbox
9- $ ( "body" ) . on ( ' change' , "#geokretySelectAll" , function ( ) {
21+ $ ( "body" ) . on ( " change" , "#geokretySelectAll" , function ( ) {
1022 var checked = $ ( this ) . is ( ":checked" ) ;
1123 if ( checked ) {
12- var inventory = $ ( "#geokretyListTable tr:not(.hidden) [name*=' geokretySelected' ]" ) . slice ( 0 , { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) ;
24+ var inventory = $ ( "#geokretyListTable tr:not(.hidden) [name*=\" geokretySelected\" ]" ) . slice ( 0 , { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) ;
1325 inventory . each ( function ( ) {
14- if ( $ ( "#geokretyListTable [name*=' geokretySelected' ]:checkbox:checked" ) . length >= { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
15- $ ( this ) . prop ( "#geokretyListTable " , false ) ;
26+ if ( $ ( "#geokretyListTable [name*=\" geokretySelected\" ]:checkbox:checked" ) . length >= { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
27+ $ ( this ) . prop ( "checked " , false ) ;
1628 return false ;
1729 }
1830 this . checked = checked ;
1931 } )
2032 } else {
21- $ ( "#geokretyListTable tr [name*=' geokretySelected' ]" ) . each ( function ( ) {
33+ $ ( "#geokretyListTable tr [name*=\" geokretySelected\" ]" ) . each ( function ( ) {
2234 $ ( this ) . prop ( "checked" , false ) ;
2335 } )
2436 }
2537 toggleAlertMaxGKReached ( ) ;
2638
2739// change one GeoKret checkbox
28- } ) . on ( ' change' , "#geokretyListTable [name*=' geokretySelected' ]" , function ( ) {
29- var inventory = $ ( "#geokretyListTable [name*=' geokretySelected' ]:checkbox:checked" ) ;
40+ } ) . on ( " change" , "#geokretyListTable [name*=\" geokretySelected\" ]" , function ( ) {
41+ var inventory = $ ( "#geokretyListTable [name*=\" geokretySelected\" ]:checkbox:checked" ) ;
3042 if ( inventory . length > { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
3143 $ ( "#geokretySelectAll" ) . prop ( "checked" , false ) ;
3244 $ ( this ) . prop ( "checked" , false ) ;
3345 }
3446 toggleAlertMaxGKReached ( ) ;
3547
3648// GK specific choose button
37- } ) . on ( ' click' , "#geokretyListTable [name*=' btnChooseGK' ]" , function ( event ) {
49+ } ) . on ( " click" , "#geokretyListTable [name*=\" btnChooseGK\" ]" , function ( event ) {
3850 event . preventDefault ( ) ;
39- var inventory = $ ( "#geokretyListTable [name*=' geokretySelected' ]:checkbox:checked" ) ;
51+ var inventory = $ ( "#geokretyListTable [name*=\" geokretySelected\" ]:checkbox:checked" ) ;
4052 if ( inventory . length <= { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
41- var trackingCode = $ ( this ) . data ( ' trackingcode' ) ;
42- fillTrackingCode ( trackingCode ) ;
53+ var trackingCode = $ ( this ) . data ( " trackingcode" ) ;
54+ fillTrackingCode ( [ trackingCode ] ) ;
4355 }
4456
4557// Select button from the modal
46- } ) . on ( ' click' , "#modalInventorySelectButton" , function ( event ) {
58+ } ) . on ( " click" , "#modalInventorySelectButton" , function ( ) {
4759 var trackingCodes = Array ( ) ;
48- $ ( "#geokretyListTable [name*=' geokretySelected' ]:checkbox:checked" ) . each ( function ( ) {
49- trackingCodes . push ( $ ( this ) . data ( ' trackingcode' ) ) ;
60+ $ ( "#geokretyListTable [name*=\" geokretySelected\" ]:checkbox:checked" ) . each ( function ( ) {
61+ trackingCodes . push ( $ ( this ) . data ( " trackingcode" ) ) ;
5062 } )
5163 fillTrackingCode ( trackingCodes ) ;
5264
53- // Status icon binding on GeoKrety result list (action: remove from selection)
54- } ) . on ( 'click' , "#nrResult [name*='gkStatusIcon']" , function ( event ) {
55- event . preventDefault ( ) ;
56- var trackingCode = $ ( this ) . data ( 'trackingcode' ) ;
57- removeTrackingCode ( trackingCode ) ;
58-
5965// Filter the inventory
60- } ) . on ( ' keyup' , "#gk-filter" , function ( event ) {
66+ } ) . on ( " keyup" , "#gk-filter" , function ( ) {
6167 var filter = $ ( "#gk-filter" ) . val ( ) . toLowerCase ( ) ;
6268 $ ( "#geokretyListTable .gk-name" ) . each ( function ( ) {
63- var title = $ ( this ) . attr ( ' title' ) ;
69+ var title = $ ( this ) . attr ( " title" ) ;
6470 var gkid = $ ( this ) . text ( ) ;
65- var tr = $ ( this ) . closest ( 'tr' ) ;
71+ var tr = $ ( this ) . closest ( "tr" ) ;
6672 if ( ~ latinize ( title . toLowerCase ( ) ) . indexOf ( latinize ( filter ) ) || ~ latinize ( gkid . toLowerCase ( ) ) . indexOf ( latinize ( filter ) ) ) {
67- tr . removeClass ( ' hidden' ) ;
73+ tr . removeClass ( " hidden" ) ;
6874 } else {
69- tr . addClass ( ' hidden' ) ;
75+ tr . addClass ( " hidden" ) ;
7076 }
7177 } ) ;
72- // var inventory = $("#geokretyListTable [name*=' geokretySelected' ]");
78+ // var inventory = $("#geokretyListTable [name*=\" geokretySelected\" ]");
7379 if ( $ ( "#geokretyListTable tr" ) . length > { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
7480 $ ( "#geokretySelectAll" ) . prop ( "checked" , false ) ;
7581 }
7682} )
7783
7884// Check by already added GK
7985function checkAlreadyAddedTrackingCode ( ) {
80- var codes = $ ( "#nr" ) . val ( ) . split ( ',' ) ;
81- codes . forEach ( function ( item ) {
82- $ ( "#geokretyListTable input[data-trackingcode='" + item + "']" ) . each ( function ( ) {
83- $ ( this ) . prop ( "checked" , true ) ;
84- } )
85- } ) ;
86+ const ts = getTS ( ) ;
87+ let codes = [ ] ;
88+
89+ if ( ts ) {
90+ const v = ts . getValue ( ) ; // array for multi, string for single
91+ codes = Array . isArray ( v ) ? v : ( v ? [ v ] : [ ] ) ;
92+ } else {
93+ codes = ( $ ( "#nr" ) . val ( ) || "" ) . split ( "," ) . map ( norm ) . filter ( Boolean ) ;
94+ }
95+
96+ codes . forEach ( function ( item ) {
97+ $ ( "#geokretyListTable input[data-trackingcode]" ) . filter ( function ( ) {
98+ return String ( this . getAttribute ( "data-trackingcode" ) ) . toUpperCase ( ) === item ;
99+ } ) . prop ( "checked" , true ) ;
100+ } ) ;
101+
102+ if ( typeof toggleAlertMaxGKReached === "function" ) {
86103 toggleAlertMaxGKReached ( ) ;
104+ }
87105}
88106
89107// Add a tracking code to the list
90108function fillTrackingCode ( trackingCodes ) {
91- var codes = [ $ ( "#nr" ) . val ( ) , trackingCodes ] . filter ( function ( el ) { return el } ) . join ( ',' ) ;
92- $ ( "#nr" ) . parsley ( ) . reset ( ) ;
93- $ ( "#nr" ) . val ( codes ) . trigger ( "focusout" ) ;
94- $ ( '#modal' ) . modal ( 'hide' ) ;
95- }
109+ const ts = getTS ( ) ;
96110
97- // Remove a tracking code from the list
98- function removeTrackingCode ( trackingCode ) {
99- var foundTrackingCodes = $ ( "#nr" ) . val ( ) . split ( ',' ) . filter ( function ( el ) { return el . toUpperCase ( ) != trackingCode . toUpperCase ( ) } ) . join ( ',' ) ;
111+ const raw = trackingCodes || [ ] ;
112+ const codes = raw . map ( norm ) . filter ( Boolean ) ;
113+
114+ if ( ts ) {
115+ codes . forEach ( ( code ) => {
116+ if ( ! ts . options [ code ] ) {
117+ ts . addOption ( { tracking_code : code , label : code } ) ;
118+ }
119+ ts . addItem ( code , true ) ;
120+ } ) ;
100121 $ ( "#nr" ) . parsley ( ) . reset ( ) ;
101- $ ( "#nr" ) . val ( foundTrackingCodes ) . trigger ( "focusout" ) ;
102- }
122+ $ ( "#modal" ) . modal ( "hide" ) ;
123+ return ;
124+ }
103125
104- //
105- function toggleAlertMaxGKReached ( el ) {
106- var count = $ ( "#geokretyListTable [name*='geokretySelected']:checkbox:checked" ) . length ;
107- if ( count >= { GK_CHECK_TRACKING_CODE_MAX_PROCESSED_ITEMS } ) {
108- $ ( "#geokretySelectAll" ) . prop ( "checked" , false ) ;
109- showAlertMaxGKReached ( true ) ;
110- } else {
111- showAlertMaxGKReached ( false ) ;
112- }
113- $ ( "#modalInventorySelectButton span.badge" ) . text ( count ) ;
126+ // Fallback: plain input as CSV
127+ const current = $ ( "#nr" ) . val ( ) ;
128+ const merged = [ current , codes . join ( "," ) ] . filter ( Boolean ) . join ( "," ) ;
129+ $ ( "#nr" ) . parsley ( ) . reset ( ) ;
130+ $ ( "#nr" ) . val ( merged ) . trigger ( "focusout" ) ;
131+ $ ( "#modal" ) . modal ( "hide" ) ;
114132}
115133
116134// Show/hide warning message
0 commit comments