Beispiel #1
0
        public JsonNetResult GetGraphVizJson(ExportGraphVizViewModel model)
        {
            IUserContext userContext = GetCurrentUser();

            if (!(userContext.IsTaxonRevisionAdministrator() || userContext.IsTaxonEditor()))
            {
                return(new JsonNetResult("Access is not allowed"));
            }

            if (TaxonRelationsTreeCacheManager.CachedTaxonRelationTree == null)
            {
                return(new JsonNetResult("Dyntaxa Tree not yet created. Please try again in 1 minute."));
            }

            if (ModelState.IsValid)
            {
                var tree = TaxonRelationsTreeCacheManager.CachedTaxonRelationTree;

                string graphviz = GraphvizManager.CreateGraphvizFormatRepresentation(
                    userContext,
                    tree,
                    tree.GetTreeNodes(model.GetTaxonIdsFromString()),
                    model.TreeIterationMode,
                    model.RelationTypeMode == TaxonRelationsTreeRelationTypeMode.OnlyValidRelations,
                    new GraphVizFormat()
                {
                    ShowRelationId     = model.ShowRelationId,
                    ShowLumpsAndSplits = model.IncludeLumpSplits
                });

                return(new JsonNetResult(graphviz));
            }

            return(new JsonNetResult("Unexpected error"));
        }
Beispiel #2
0
        public ActionResult Graphviz(ExportGraphVizViewModel model, string downloadTokenValue)
        {
            IUserContext userContext = GetCurrentUser();

            if (!(userContext.IsTaxonRevisionAdministrator() || userContext.IsTaxonEditor()))
            {
                return(RedirectToAction("AccessIsNotAllowed", "Account", new { url = this.Request.Url }));
            }

            if (TaxonRelationsTreeCacheManager.CachedTaxonRelationTree == null)
            {
                ModelState.AddModelError("TreeError", "Dyntaxa Tree not yet created. Please try again in 1 minute.");
            }

            if (ModelState.IsValid)
            {
                var tree = TaxonRelationsTreeCacheManager.CachedTaxonRelationTree;

                string graphviz = GraphvizManager.CreateGraphvizFormatRepresentation(
                    userContext,
                    tree,
                    tree.GetTreeNodes(model.GetTaxonIdsFromString()),
                    model.TreeIterationMode,
                    model.RelationTypeMode == TaxonRelationsTreeRelationTypeMode.OnlyValidRelations,
                    new GraphVizFormat()
                {
                    ShowRelationId     = model.ShowRelationId,
                    ShowLumpsAndSplits = model.IncludeLumpSplits
                });
                return(Content(graphviz));
            }

            // RowDelimiter Dropbox
            var rowDelimiters = from MatchTaxonRowDelimiter rd in Enum.GetValues(typeof(MatchTaxonRowDelimiter))
                                select new { value = (int)rd, text = rd.GetLocalizedDescription() };

            ViewData["RowDelimiter"] = new SelectList(rowDelimiters, "value", "text", model.RowDelimiter.ToString());

            if (userContext.IsTaxonRevisionAdministrator() || userContext.IsTaxonEditor())
            {
                ViewBag.ShowRefreshDyntaxaTaxonTreeButton = true;
            }
            else
            {
                ViewBag.ShowRefreshDyntaxaTaxonTreeButton = false;
            }
            ViewBag.TreeLastUpdatedTime = TaxonRelationsTreeCacheManager.CacheLastUpdatedTime;

            return(View(model));
        }
Beispiel #3
0
        public ActionResult Graphviz(string taxonId)
        {
            IUserContext userContext = GetCurrentUser();

            if (!(userContext.IsTaxonRevisionAdministrator() || userContext.IsTaxonEditor()))
            {
                return(RedirectToAction("AccessIsNotAllowed", "Account", new { url = this.Request.Url }));
            }

            TaxonSearchResult       searchResult = this.TaxonSearchManager.GetTaxon(taxonId);
            ExportGraphVizViewModel model        = null;
            ITaxon taxon = null;

            if (searchResult.NumberOfMatches == 1)
            {
                taxon = searchResult.Taxon;
                this.TaxonIdentifier = TaxonIdTuple.Create(taxonId, searchResult.Taxon.Id);
                ViewBag.Taxon        = taxon;
                model           = new ExportGraphVizViewModel();
                model.ClipBoard = this.TaxonIdentifier.Id.Value.ToString();
            }
            else
            {
                //model = ExportDatabaseViewModel.Create(GetCurrentUser(), taxon);
                model           = new ExportGraphVizViewModel();
                model.ClipBoard = "";
            }
            var rowDelimiters = from MatchTaxonRowDelimiter rd in Enum.GetValues(typeof(MatchTaxonRowDelimiter))
                                select new { value = (int)rd, text = rd.GetLocalizedDescription() };

            ViewData["RowDelimiter"] = new SelectList(rowDelimiters, "value", "text", model.RowDelimiter.ToString());
            ModelState.Remove("TaxonId");

            if (userContext.IsTaxonRevisionAdministrator() || userContext.IsTaxonEditor())
            {
                ViewBag.ShowRefreshDyntaxaTaxonTreeButton = true;
            }
            else
            {
                ViewBag.ShowRefreshDyntaxaTaxonTreeButton = false;
            }
            ViewBag.TreeLastUpdatedTime = TaxonRelationsTreeCacheManager.CacheLastUpdatedTime;

            return(View(model));
        }