< Summary

Class:NavmapSearchComponentView
Assembly:Navmap
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/NavMap/NavmapSearchComponentView.cs
Covered lines:43
Uncovered lines:12
Coverable lines:55
Total lines:133
Line coverage:78.1% (43 of 55)
Covered branches:0
Total branches:0
Covered methods:6
Total methods:12
Method coverage:50% (6 of 12)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
NavmapSearchComponentView()0%110100%
Awake()0%110100%
OnSearchValueChanged(...)0%2100%
OnSearchText(...)0%6200%
OnSearchBarSelected(...)0%6200%
SetHistoryRecords(...)0%220100%
SetSearchResultRecords(...)0%330100%
OnSelectedRegularRecord(...)0%6200%
OnSelectedHistoryRecord(...)0%2100%
ClearResults()0%2.092071.43%
RefreshControl()0%2100%
Dispose()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/NavMap/NavmapSearchComponentView.cs

#LineLine coverage
 1using MainScripts.DCL.Controllers.HotScenes;
 2using MainScripts.DCL.Helpers.Utils;
 3using System;
 4using System.Collections.Generic;
 5using UnityEngine;
 6using UnityEngine.Diagnostics;
 7using UnityEngine.UI;
 8
 9public class NavmapSearchComponentView : BaseComponentView, INavmapSearchComponentView
 10{
 11    private const int MAX_RECORDS_COUNT = 5;
 12
 13    [SerializeField] private SearchBarComponentView searchBar;
 14    [SerializeField] internal SearchRecordComponentView recordPrefab;
 15    [SerializeField] internal GameObject noRecordsFound;
 16    [SerializeField] internal Transform recordsParent;
 17    [SerializeField] internal GameObject searchResultsContainer;
 18    [SerializeField] internal Button closeButtonArea;
 19
 20    public event Action<bool> OnSelectedSearchBar;
 21    public event Action<string> OnSearchedText;
 22    public event Action<Vector2Int> OnSelectedSearchRecord;
 23
 24    private UnityObjectPool<SearchRecordComponentView> recordsPool;
 725    internal readonly List<SearchRecordComponentView> usedRecords = new ();
 26
 27    public override void Awake()
 28    {
 529        base.Awake();
 30
 531        searchBar.OnSelected += OnSearchBarSelected;
 532        searchBar.OnSearchText += OnSearchText;
 533        searchBar.OnSearchValueChanged += OnSearchValueChanged;
 534        closeButtonArea.onClick.RemoveAllListeners();
 535        closeButtonArea.onClick.AddListener(()=> OnSelectedSearchBar?.Invoke(false));
 536        recordsPool = new UnityObjectPool<SearchRecordComponentView>(recordPrefab, recordsParent);
 537        recordsPool.Prewarm(MAX_RECORDS_COUNT);
 538    }
 39
 40    private void OnSearchValueChanged(string obj)
 41    {
 042        ClearResults();
 043    }
 44
 45    private void OnSearchText(string searchText)
 46    {
 047        OnSearchedText?.Invoke(searchText);
 048    }
 49
 50    private void OnSearchBarSelected(bool isOnFocus)
 51    {
 052        OnSelectedSearchBar?.Invoke(isOnFocus);
 053    }
 54
 55    public void SetHistoryRecords(string[] previousSearches)
 56    {
 257        ClearResults();
 258        noRecordsFound.SetActive(false);
 259        searchResultsContainer.SetActive(true);
 60
 1261        for(int i = 0; i <= previousSearches.Length - 1; i++)
 62        {
 463            SearchRecordComponentView searchRecordComponentView = recordsPool.Get();
 464            searchRecordComponentView.OnSelectedHistoryRecord -= OnSelectedHistoryRecord;
 465            searchRecordComponentView.OnSelectedHistoryRecord += OnSelectedHistoryRecord;
 466            searchRecordComponentView.SetModel(new SearchRecordComponentModel()
 67            {
 68                recordText = previousSearches[i],
 69                isHistory = true,
 70                playerCount = 0
 71            });
 472            usedRecords.Add(searchRecordComponentView);
 473            searchRecordComponentView.transform.SetAsLastSibling();
 74        }
 275    }
 76
 77    public void SetSearchResultRecords(IReadOnlyList<IHotScenesController.PlaceInfo> places)
 78    {
 279        ClearResults();
 280        searchResultsContainer.SetActive(true);
 281        noRecordsFound.SetActive(places.Count == 0);
 82
 683        foreach (IHotScenesController.PlaceInfo placeInfo in places)
 84        {
 185            SearchRecordComponentView searchRecordComponentView = recordsPool.Get();
 186            searchRecordComponentView.OnSelectedRegularRecord -= OnSelectedRegularRecord;
 187            searchRecordComponentView.OnSelectedRegularRecord += OnSelectedRegularRecord;
 188            searchRecordComponentView.SetModel(new SearchRecordComponentModel()
 89            {
 90                recordText = placeInfo.title,
 91                isHistory = false,
 92                playerCount = placeInfo.user_count,
 93                placeCoordinates = DCL.Helpers.Utils.ConvertStringToVector(placeInfo.base_position)
 94            });
 195            usedRecords.Add(searchRecordComponentView);
 96        }
 297    }
 98
 99    private void OnSelectedRegularRecord(Vector2Int coordinates)
 100    {
 0101        OnSelectedSearchRecord?.Invoke(coordinates);
 0102        searchBar.ClearSearch(false);
 0103    }
 104
 105    private void OnSelectedHistoryRecord(string searchText) =>
 0106        searchBar.SubmitSearch(searchText, true, false);
 107
 108    public void ClearResults()
 109    {
 4110        searchResultsContainer.SetActive(false);
 8111        foreach (var pooledRecord in usedRecords)
 0112            recordsPool.Release(pooledRecord);
 113
 4114        usedRecords.Clear();
 4115    }
 116
 117    public override void RefreshControl()
 118    {
 0119    }
 120
 121    public override void Dispose()
 122    {
 9123        base.Dispose();
 124
 9125        searchBar.onFocused -= OnSearchBarSelected;
 9126        searchBar.OnSearchText -= OnSearchText;
 9127        searchBar.OnSearchValueChanged -= OnSearchValueChanged;
 128
 38129        foreach (var pooledRecord in usedRecords)
 10130            recordsPool.Release(pooledRecord);
 9131        recordsPool.Clear();
 9132    }
 133}