< Summary

Class:DCL.Builder.NewLandProjectDetailView
Assembly:BuildModeHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/BuildModeHUD/Scripts/Common/NewLandProjectDetailView.cs
Covered lines:2
Uncovered lines:27
Coverable lines:29
Total lines:96
Line coverage:6.8% (2 of 29)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
NewLandProjectDetailView()0%110100%
Awake()0%2100%
OnDestroy()0%2100%
SetSceneNameValidationActive(...)0%2100%
SetActive(...)0%2100%
SetCreateProjectButtonActive(...)0%12300%
CreateProject()0%6200%
UpdateSceneNameCharCounter()0%2100%
UpdateSceneDescriptionCharCounter()0%2100%
Cancel()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/BuildModeHUD/Scripts/Common/NewLandProjectDetailView.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using System.Collections.Generic;
 4using TMPro;
 5using UnityEngine;
 6using UnityEngine.UI;
 7
 8namespace DCL.Builder
 9{
 10    public interface INewProjectDetailView
 11    {
 12        /// <summary>
 13        /// Create project button pressed
 14        /// </summary>
 15        event Action<string, string> OnCreatePressed;
 16
 17        event Action<string> OnSceneNameChange;
 18
 19        void SetActive(bool isActive);
 20
 21        void SetSceneNameValidationActive(bool isActive);
 22
 23        void SetCreateProjectButtonActive(bool isActive);
 24    }
 25
 26    public class NewLandProjectDetailView : MonoBehaviour, INewProjectDetailView
 27    {
 28        [SerializeField] internal Button cancelButton;
 29        [SerializeField] internal Button createProjectButton;
 30        [SerializeField] internal TMP_Text createProjectButtonText;
 31
 32        [Header("Project name")]
 33        [SerializeField] internal TMP_InputField sceneNameInput;
 34        [SerializeField] internal TMP_Text sceneNameValidationText;
 35        [SerializeField] internal TMP_Text sceneNameCharCounterText;
 2036        [SerializeField] internal int sceneNameCharLimit = 30;
 37
 38        [Header("Project description")]
 39        [SerializeField] internal TMP_InputField sceneDescriptionInput;
 40        [SerializeField] internal TMP_Text sceneDescriptionCharCounterText;
 2041        [SerializeField] internal int sceneDescriptionCharLimit = 140;
 42
 43        public event Action<string, string> OnCreatePressed;
 44        public event Action<string> OnSceneNameChange;
 45
 46        private void Awake()
 47        {
 048            cancelButton.onClick.AddListener(Cancel);
 049            createProjectButton.onClick.AddListener(CreateProject);
 50
 051            sceneNameInput.onValueChanged.AddListener((newText) =>
 52            {
 053                UpdateSceneNameCharCounter();
 054                OnSceneNameChange?.Invoke(newText);
 055            });
 56
 057            sceneDescriptionInput.onValueChanged.AddListener((newText) =>
 58            {
 059                UpdateSceneDescriptionCharCounter();
 060            });
 61
 062            sceneNameInput.characterLimit = sceneNameCharLimit;
 063            sceneDescriptionInput.characterLimit = sceneDescriptionCharLimit;
 064        }
 65
 66        private void OnDestroy()
 67        {
 068            createProjectButton.onClick.RemoveListener(CreateProject);
 69
 070            sceneNameInput.onValueChanged.RemoveAllListeners();
 071            sceneDescriptionInput.onValueChanged.RemoveAllListeners();
 072        }
 73
 074        public void SetSceneNameValidationActive(bool isActive) { sceneNameValidationText.enabled = isActive; }
 75
 076        public void SetActive(bool isActive) { gameObject.SetActive(isActive); }
 77
 78        public void SetCreateProjectButtonActive(bool isActive)
 79        {
 080            createProjectButton.interactable = isActive;
 081            createProjectButtonText.color = new Color(createProjectButtonText.color.r, createProjectButtonText.color.g, 
 082        }
 83
 84        internal void CreateProject()
 85        {
 086            OnCreatePressed?.Invoke(sceneNameInput.text, sceneDescriptionInput.text);
 087            SetActive(false);
 088        }
 89
 090        internal void UpdateSceneNameCharCounter() { sceneNameCharCounterText.text = $"{sceneNameInput.text.Length}/{sce
 91
 092        internal void UpdateSceneDescriptionCharCounter() { sceneDescriptionCharCounterText.text = $"{sceneDescriptionIn
 93
 094        internal void Cancel() { SetActive(false); }
 95    }
 96}