@@ -210,9 +210,6 @@ <h2 x-text="t('services')"></h2>
210210 < template x-if ="planOf(service).elsewhere.length ">
211211 < span class ="muted " x-text ="outOfRangeText(planOf(service)) "> </ span >
212212 </ template >
213- < template x-if ="missedBy(service).length ">
214- < span class ="warn " x-text ="t('planMissed', { tag: picks[service.project], keys: missedBy(service).join(', ') }) "> </ span >
215- </ template >
216213 </ div >
217214 </ template >
218215 </ summary >
@@ -548,7 +545,6 @@ <h2 x-text="t('release')"></h2>
548545 planAlso : "also ships" ,
549546 planNoTag : "{keys}: no tag yet." ,
550547 planElsewhere : "{items}, nothing to pick" ,
551- planMissed : "{tag} does not ship {keys}" ,
552548 } ,
553549 ru : {
554550 language : "Язык" ,
@@ -649,7 +645,6 @@ <h2 x-text="t('release')"></h2>
649645 planAlso : "также войдут" ,
650646 planNoTag : "{keys}: тега ещё нет." ,
651647 planElsewhere : "{items}, выбирать нечего" ,
652- planMissed : "{tag} не содержит {keys}" ,
653648 } ,
654649 } ;
655650
@@ -956,13 +951,6 @@ <h2 x-text="t('release')"></h2>
956951 const candidate = this . pickOf ( service ) ;
957952 return candidate ? candidate . jira_keys . map ( ( item ) => item . key ) . filter ( ( key ) => ! this . chosen . includes ( key ) ) : [ ] ;
958953 } ,
959- missedBy ( service ) {
960- const tag = this . picks [ service . project ] ;
961- if ( ! tag || ! this . planOf ( service ) ) return [ ] ;
962- const picked = service . rows . findIndex ( ( row ) => row . tags . some ( ( item ) => item . name === tag ) ) ;
963- return this . chosen . filter ( ( key ) =>
964- this . reach [ key ] . some ( ( item ) => item . project === service . project && item . state === "tag" && picked > item . index ) ) ;
965- } ,
966954 shipsAnyway ( key ) {
967955 return ! this . chosen . includes ( key ) && this . picked . some ( ( { candidate } ) => candidate . jira_keys . some ( ( item ) => item . key === key ) ) ;
968956 } ,
@@ -1011,9 +999,21 @@ <h2 x-text="t('release')"></h2>
1011999
10121000 pick ( service , tag , element ) {
10131001 this . picks [ service . project ] = tag ;
1002+ this . untickMissed ( service ) ;
10141003 element . closest ( "details" ) . open = false ;
10151004 this . writeHash ( ) ;
10161005 } ,
1006+ untickMissed ( service ) {
1007+ const tag = this . picks [ service . project ] ;
1008+ const picked = tag ? service . rows . findIndex ( ( row ) => row . tags . some ( ( item ) => item . name === tag ) ) : - 1 ;
1009+ const missed = this . chosen . filter ( ( key ) =>
1010+ this . reach [ key ] . some ( ( item ) => item . project === service . project && item . state === "tag" && ( picked === - 1 || picked > item . index ) ) ) ;
1011+ if ( ! missed . length ) return ;
1012+ this . chosen = this . chosen . filter ( ( key ) => ! missed . includes ( key ) ) ;
1013+ this . applyIssues ( ) ;
1014+ this . picks [ service . project ] = tag ;
1015+ delete this . autoPicks [ service . project ] ;
1016+ } ,
10171017 closeServices ( ) {
10181018 for ( const item of document . querySelectorAll ( "details.service[open]" ) ) item . open = false ;
10191019 } ,
@@ -1040,6 +1040,7 @@ <h2 x-text="t('release')"></h2>
10401040 this . picks [ service . project ] = known ? tag : "" ;
10411041 if ( known ) wanted . delete ( service . project ) ;
10421042 }
1043+ for ( const service of this . pickable ) this . untickMissed ( service ) ;
10431044 }
10441045 this . ignored = [
10451046 ...issues . filter ( ( key ) => ! ( key in this . reach ) ) ,
0 commit comments