< Summary

Class:SearchBarView
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/SearchBarView/SearchBarView.cs
Covered lines:54
Uncovered lines:7
Coverable lines:61
Total lines:145
Line coverage:88.5% (54 of 61)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%110100%
SetResultCount(...)0%110100%
ShowFilters(...)0%110100%
SetSortTypes(...)0%110100%
OnSortButtonPressed()0%3.213071.43%
OnSortTypeSelected(...)0%220100%
OnToggleOwner(...)0%110100%
OnToggleOperator(...)0%110100%
OnToggleContributor(...)0%110100%
ReportFilter()0%220100%
SetSearchBar(...)0%44095.24%
OnUpdateResultCount()0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/SearchBarView/SearchBarView.cs

#LineLine coverage
 1using TMPro;
 2using UnityEngine;
 3using UnityEngine.UI;
 4
 5internal class SearchBarConfig
 6{
 7    public bool showFilterOwner;
 8    public bool showFilterOperator;
 9    public bool showFilterContributor;
 10    public bool showResultLabel;
 11}
 12
 13internal class SearchBarView : MonoBehaviour
 14{
 15    private const string RESULT_FORMAT = "Results ({0})";
 16
 17    [SerializeField] internal SearchInputField inputField;
 18    [SerializeField] internal Button sortButton;
 19    [SerializeField] internal TextMeshProUGUI sortTypeLabel;
 20    [SerializeField] internal Toggle ownerToggle;
 21    [SerializeField] internal Toggle operatorToggle;
 22    [SerializeField] internal Toggle contributorToggle;
 23    [SerializeField] private TextMeshProUGUI resultLabel;
 24    [SerializeField] internal SortDropdownView sortDropdown;
 25
 26    private bool filterOwner = false;
 27    private bool filterOperator = false;
 28    private bool filterContributor = false;
 29
 30    private ISectionSearchHandler searchHandler;
 31
 32    private void Awake()
 33    {
 1134        sortButton.onClick.AddListener(OnSortButtonPressed);
 35
 1136        ownerToggle.onValueChanged.AddListener(OnToggleOwner);
 1137        operatorToggle.onValueChanged.AddListener(OnToggleOperator);
 1138        contributorToggle.onValueChanged.AddListener(OnToggleContributor);
 39
 1140        filterOwner = ownerToggle.isOn;
 1141        filterOperator = operatorToggle.isOn;
 1142        filterContributor = contributorToggle.isOn;
 43
 1444        inputField.OnSearchText += text => searchHandler?.SetSearchString(text);
 1145        sortDropdown.OnSortTypeSelected += OnSortTypeSelected;
 1146    }
 47
 848    public void SetResultCount(int count) { resultLabel.text = string.Format(RESULT_FORMAT, count); }
 49
 50    public void ShowFilters(bool filterOwner, bool filterOperator, bool filterContributor)
 51    {
 352        ownerToggle.gameObject.SetActive(filterOwner);
 353        operatorToggle.gameObject.SetActive(filterOperator);
 354        contributorToggle.gameObject.SetActive(filterContributor);
 355    }
 56
 657    public void SetSortTypes(string[] types) { sortDropdown.AddSortType(types); }
 58
 59    private void OnSortButtonPressed()
 60    {
 161        if (sortDropdown.gameObject.activeSelf)
 62        {
 063            sortDropdown.gameObject.SetActive(false);
 064            return;
 65        }
 66        else
 67        {
 168            sortDropdown.gameObject.SetActive(true);
 69        }
 70
 171            if (sortDropdown.GetSortTypesCount() > 1)
 72        {
 173            sortDropdown.Show();
 74        }
 175    }
 76
 77    private void OnSortTypeSelected(string type)
 78    {
 179        sortTypeLabel.text = type;
 180        searchHandler?.SetSortType(type);
 181    }
 82
 83    private void OnToggleOwner(bool isOn)
 84    {
 285        filterOwner = isOn;
 286        ReportFilter();
 287    }
 88
 89    private void OnToggleOperator(bool isOn)
 90    {
 291        filterOperator = isOn;
 292        ReportFilter();
 293    }
 94
 95    private void OnToggleContributor(bool isOn)
 96    {
 297        filterContributor = isOn;
 298        ReportFilter();
 299    }
 100
 12101    private void ReportFilter() { searchHandler?.SetFilter(filterOwner, filterOperator, filterContributor); }
 102
 103    public void SetSearchBar(ISectionSearchHandler handler, SearchBarConfig config)
 104    {
 5105        if (searchHandler != null)
 106        {
 0107            searchHandler.OnUpdated -= OnUpdateResultCount;
 108        }
 109
 5110        searchHandler = handler;
 111
 5112        if (searchHandler == null)
 1113            return;
 114
 115
 4116        sortDropdown.Clear();
 4117        sortDropdown.AddSortType(handler.sortTypes);
 118
 4119        if (config != null)
 120        {
 1121            ShowFilters(config.showFilterOwner, config.showFilterOperator, config.showFilterContributor);
 1122            resultLabel.gameObject.SetActive(config.showResultLabel);
 123        }
 124
 4125        ownerToggle.SetIsOnWithoutNotify(handler.filterOwner);
 4126        operatorToggle.SetIsOnWithoutNotify(handler.filterOperator);
 4127        contributorToggle.SetIsOnWithoutNotify(handler.filterContributor);
 4128        filterOwner = handler.filterOwner;
 4129        filterOperator = handler.filterOperator;
 4130        filterContributor = handler.filterContributor;
 131
 4132        sortTypeLabel.text = handler.sortType;
 4133        inputField.inputField.SetTextWithoutNotify(handler.searchString);
 4134        SetResultCount(handler.resultCount);
 135
 4136        searchHandler.OnUpdated += OnUpdateResultCount;
 4137    }
 138
 139    private void OnUpdateResultCount()
 140    {
 0141        if (searchHandler == null)
 0142            return;
 0143        SetResultCount(searchHandler.resultCount);
 0144    }
 145}