File tree Expand file tree Collapse file tree 2 files changed +44
-10
lines changed
10.0/Apps/DeveloperBalance/PageModels
9.0/Apps/DeveloperBalance/PageModels Expand file tree Collapse file tree 2 files changed +44
-10
lines changed Original file line number Diff line number Diff line change @@ -299,13 +299,30 @@ private async Task SelectionChanged(object parameter)
299299 {
300300 if ( parameter is IEnumerable < object > enumerableParameter )
301301 {
302- var changed = enumerableParameter . OfType < Tag > ( ) . ToList ( ) ;
302+ var currentSelection = enumerableParameter . OfType < Tag > ( ) . ToList ( ) ;
303+ var previousSelection = AllTags . Where ( t => t . IsSelected ) . ToList ( ) ;
303304
304- if ( changed . Count == 0 && SelectedTags is not null )
305- changed = SelectedTags . OfType < Tag > ( ) . Except ( enumerableParameter . OfType < Tag > ( ) ) . ToList ( ) ;
305+ // Handle newly selected tags
306+ foreach ( var tag in currentSelection . Except ( previousSelection ) )
307+ {
308+ tag . IsSelected = true ;
309+ if ( ! _project . IsNullOrNew ( ) )
310+ {
311+ await _tagRepository . SaveItemAsync ( tag , _project . ID ) ;
312+ }
313+ }
314+
315+ // Handle deselected tags
316+ foreach ( var tag in previousSelection . Except ( currentSelection ) )
317+ {
318+ tag . IsSelected = false ;
319+ if ( ! _project . IsNullOrNew ( ) )
320+ {
321+ await _tagRepository . DeleteItemAsync ( tag , _project . ID ) ;
322+ }
323+ }
306324
307- if ( changed . Count == 1 )
308- await ToggleTag ( changed [ 0 ] ) ;
325+ SelectedTags = new List < object > ( currentSelection ) ;
309326 }
310327 }
311328}
Original file line number Diff line number Diff line change @@ -299,13 +299,30 @@ private async Task SelectionChanged(object parameter)
299299 {
300300 if ( parameter is IEnumerable < object > enumerableParameter )
301301 {
302- var changed = enumerableParameter . OfType < Tag > ( ) . ToList ( ) ;
302+ var currentSelection = enumerableParameter . OfType < Tag > ( ) . ToList ( ) ;
303+ var previousSelection = AllTags . Where ( t => t . IsSelected ) . ToList ( ) ;
303304
304- if ( changed . Count == 0 && SelectedTags is not null )
305- changed = SelectedTags . OfType < Tag > ( ) . Except ( enumerableParameter . OfType < Tag > ( ) ) . ToList ( ) ;
305+ // Handle newly selected tags
306+ foreach ( var tag in currentSelection . Except ( previousSelection ) )
307+ {
308+ tag . IsSelected = true ;
309+ if ( ! _project . IsNullOrNew ( ) )
310+ {
311+ await _tagRepository . SaveItemAsync ( tag , _project . ID ) ;
312+ }
313+ }
314+
315+ // Handle deselected tags
316+ foreach ( var tag in previousSelection . Except ( currentSelection ) )
317+ {
318+ tag . IsSelected = false ;
319+ if ( ! _project . IsNullOrNew ( ) )
320+ {
321+ await _tagRepository . DeleteItemAsync ( tag , _project . ID ) ;
322+ }
323+ }
306324
307- if ( changed . Count == 1 )
308- await ToggleTag ( changed [ 0 ] ) ;
325+ SelectedTags = new List < object > ( currentSelection ) ;
309326 }
310327 }
311328}
You can’t perform that action at this time.
0 commit comments