/// <summary>
        /// Browse the tree nodes
        /// </summary>
        /// <param name="id"></param>
        /// <param name="parentId"></param>
        /// <param name="direction"></param>
        private async Task BrowseTreeAsync(BrowseDirection direction, int index, bool isLoadingMore, string id = null, List <string> parentId = null)
        {
            IsLoading = true;

            if (!isLoadingMore)
            {
                ParentId = parentId;
                Items    = await BrowseManager.GetTreeAsync(EndpointId,
                                                            id,
                                                            parentId,
                                                            DiscovererId,
                                                            direction,
                                                            index,
                                                            Credential);
            }
            else
            {
                Items = await BrowseManager.GetTreeNextAsync(EndpointId,
                                                             ParentId,
                                                             DiscovererId,
                                                             Credential,
                                                             Items);
            }

            PublishedNodes = await Publisher.PublishedAsync(EndpointId, false);

            foreach (var node in Items.Results)
            {
                if (node.NodeClass == NodeClass.Variable)
                {
                    node.Value = await BrowseManager.ReadValueAsync(EndpointId, node.Id, Credential);

                    // check if publishing enabled
                    foreach (var publishedNode in PublishedNodes.Results)
                    {
                        if (node.Id == publishedNode.PublishedItem.NodeId)
                        {
                            node.PublishedItem = publishedNode.PublishedItem;
                            node.Publishing    = true;
                            break;
                        }
                    }
                }
            }

            if (string.IsNullOrEmpty(DiscovererId))
            {
                NavigationManager.NavigateTo(NavigationManager.BaseUri + "browser/" + "/" + ApplicationId + "/" + EndpointId);
            }
            else
            {
                NavigationManager.NavigateTo(NavigationManager.BaseUri + "browser/" + "/" + DiscovererId + "/" + ApplicationId + "/" + SupervisorId + "/" + EndpointId);
            }
            IsLoading = false;
        }
        /// <summary>
        /// Browse the tree nodes
        /// </summary>
        /// <param name="id"></param>
        /// <param name="parentId"></param>
        /// <param name="direction"></param>
        private async Task BrowseTreeAsync(BrowseDirection direction, int index, bool firstPage, int page, string id = null, List <string> parentId = null)
        {
            CommonHelper.Spinner = "loader-big";

            if (firstPage)
            {
                ParentId = parentId;
                NodeList = await BrowseManager.GetTreeAsync(EndpointId,
                                                            id,
                                                            parentId,
                                                            DiscovererId,
                                                            direction,
                                                            index,
                                                            Credential);
            }
            else
            {
                NodeList = await BrowseManager.GetTreeNextAsync(EndpointId,
                                                                ParentId,
                                                                DiscovererId,
                                                                Credential,
                                                                NodeList);
            }

            PublishedNodes = await Publisher.PublishedAsync(EndpointId, false);

            foreach (var node in NodeList.Results)
            {
                if (node.NodeClass == NodeClass.Variable)
                {
                    // check if publishing enabled
                    foreach (var publishedNode in PublishedNodes.Results)
                    {
                        if (node.Id == publishedNode.PublishedItem.NodeId)
                        {
                            node.PublishedItem = publishedNode.PublishedItem;
                            node.Publishing    = true;
                            break;
                        }
                    }
                }
            }

            PagedNodeList = NodeList.GetPaged(page, CommonHelper.PageLength, NodeList.Error);
            if (string.IsNullOrEmpty(DiscovererId))
            {
                NavigationManager.NavigateTo(NavigationManager.BaseUri + "browser/" + page + "/" + ApplicationId + "/" + EndpointId);
            }
            else
            {
                NavigationManager.NavigateTo(NavigationManager.BaseUri + "browser/" + page + "/" + DiscovererId + "/" + ApplicationId + "/" + SupervisorId + "/" + EndpointId);
            }
            CommonHelper.Spinner = "";
        }