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")); }
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)); }
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)); }