File tree Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -160,12 +160,12 @@ def natural_sort(lst):
160160
161161 # sort table by reference prefix and quantity
162162 def row_sort_key (element ):
163- prefix = re .findall ('^[A-Z ]*' , element [0 ][0 ])[0 ]
163+ prefix = re .findall ('^[^0-9 ]*' , element [0 ][0 ])[0 ]
164164 if prefix in config .component_sort_order :
165165 ref_ord = config .component_sort_order .index (prefix )
166166 else :
167167 ref_ord = config .component_sort_order .index ('~' )
168- return ref_ord , len (element ), alphanum_key (element [0 ][0 ])
168+ return ref_ord , - len (element ), alphanum_key (element [0 ][0 ])
169169
170170 if '~' not in config .component_sort_order :
171171 config .component_sort_order .append ('~' )
Original file line number Diff line number Diff line change @@ -469,7 +469,23 @@ function populateBomHeader(placeHolderColumn = null, placeHolderElements = null)
469469 else return 0 ;
470470 }
471471 }
472-
472+ var referenceRegex = / (?< prefix > [ ^ 0 - 9 ] + ) (?< number > [ 0 - 9 ] + ) / ;
473+ var compareRefs = ( a , b ) => {
474+ var ra = referenceRegex . exec ( a ) ;
475+ var rb = referenceRegex . exec ( b ) ;
476+ if ( ra === null || rb === null ) {
477+ if ( a != b ) return a > b ? 1 : - 1 ;
478+ return 0 ;
479+ } else {
480+ if ( ra . groups . prefix != rb . groups . prefix ) {
481+ return ra . groups . prefix > rb . groups . prefix ? 1 : - 1 ;
482+ }
483+ if ( ra . groups . number != rb . groups . number ) {
484+ return parseInt ( ra . groups . number ) > parseInt ( rb . groups . number ) ? 1 : - 1 ;
485+ }
486+ return 0 ;
487+ }
488+ }
473489 if ( settings . bommode == "netlist" ) {
474490 th = createColumnHeader ( "Net name" , "bom-netname" , ( a , b ) => {
475491 if ( a > b ) return - 1 ;
@@ -502,7 +518,7 @@ function populateBomHeader(placeHolderColumn = null, placeHolderElements = null)
502518 tr . appendChild ( createColumnHeader ( "References" , "references" , ( a , b ) => {
503519 var i = 0 ;
504520 while ( i < a . length && i < b . length ) {
505- if ( a [ i ] != b [ i ] ) return a [ i ] > b [ i ] ? 1 : - 1 ;
521+ if ( a [ i ] != b [ i ] ) return compareRefs ( a [ i ] [ 0 ] , b [ i ] [ 0 ] ) ;
506522 i ++ ;
507523 }
508524 return a . length - b . length ;
You can’t perform that action at this time.
0 commit comments