Exemplo n.º 1
0
        /// <summary>
        /// Finds the proper text to be used for a tree node
        /// </summary>
        /// <param name="node"> node to find name for </param>
        /// <returns>name of the node to display on tree </returns>
        public static string TextSelector(Object node)
        {
            if (node is ProxyNode)
            {
                node = ((ProxyNode)node).Original;
            }
            string text = node switch
            {
                Project p => p.Name,
                Target t => "Target " + t.Name,
                Folder f => f.Name,
                ProjectEvaluation pe => pe.Name,
                   Microsoft.Build.Logging.StructuredLogger.Task ta => "Task " + ta.Title + " duration " + ta.DurationText,
                AddItem a => "Add Item " + a.Name,
                RemoveItem r => "Remove Item " + r.Name,
                Item i => i.NameAndEquals + " " + i.ShortenedText,
                Metadata m => m.NameAndEquals + " " + m.ShortenedValue,
                EvaluationProfileEntry epe => epe.Title + " " + epe.DurationText + " " + epe.ShortenedElementDescription,
                Property p => p.NameAndEquals + " " + p.ShortenedValue,
                Parameter p => p.Name,
                Message m => m.ShortenedText,
                Import i => "Import " + i.Name + " " + i.Location,
                NoImport ni => "NoImport " + ni.Name + " " + ni.Location + " " + ni.Text,
                Error e => e.ToString(),
                Warning w => w.ToString(),
                Note n => n.Text,
                SourceFile sf => sf.Name,
                SourceFileLine sfl => sfl.LineNumber + " " + sfl.LineText,
                ProxyNode pn => pn.TypeName,
                TimedNode t => t.Name,
                   _ => node.ToString()
            };

            return(text);
        }
 public EditProjectEvaluationViewModel(ProjectEvaluation projectEvaluation)
 {
     ProjectEvaluationID = projectEvaluation.ProjectEvaluationID;
     Comments            = projectEvaluation.Comments;
     SelectedEvaluationCriteriaValues = projectEvaluation.ProjectEvaluationSelectedValues.Any()
                                         ? projectEvaluation.ProjectEvaluationSelectedValues.Select(x => x.EvaluationCriteriaValueID).ToList()
                                         : new List <int>();
 }
 private void VisitImport(Import import, ProjectEvaluation projectEvaluation)
 {
     if (sourceFileResolver.HasFile(import.ProjectFilePath) &&
         sourceFileResolver.HasFile(import.ImportedProjectFilePath) &&
         !string.IsNullOrEmpty(projectEvaluation.ProjectFile))
     {
         var importMap = GetOrCreateImportMap(GetEvaluationKey(projectEvaluation), import.ProjectFilePath);
         AddImport(importMap, import.ProjectFilePath, import.ImportedProjectFilePath, import.Line, import.Column);
     }
 }
Exemplo n.º 4
0
        private PartialViewResult ViewDeleteProjectEvaluation(ProjectEvaluation projectEvaluation, ConfirmDialogFormViewModel viewModel)
        {
            var canDelete      = projectEvaluation.CanDelete();
            var confirmMessage = canDelete
                ? $"<p>Are you sure you want to delete {FieldDefinitionEnum.ProjectEvaluation.ToType().GetFieldDefinitionLabel()} for {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} \"{projectEvaluation.Project.GetDisplayName()}\"?</p>"
                : ConfirmDialogFormViewData.GetStandardCannotDeleteMessage(FieldDefinitionEnum.ProjectEvaluation.ToType().GetFieldDefinitionLabel());

            var viewData = new ConfirmDialogFormViewData(confirmMessage, canDelete);

            return(RazorPartialView <ConfirmDialogForm, ConfirmDialogFormViewData, ConfirmDialogFormViewModel>(viewData, viewModel));
        }
Exemplo n.º 5
0
        public static ProjectEvaluation GetOrCreateProjectEvaluation(Evaluation evaluation, Project project)
        {
            var thisProjectEvaluation = HttpRequestStorage.DatabaseEntities.ProjectEvaluations.SingleOrDefault(x => x.EvaluationID == evaluation.EvaluationID && x.ProjectID == project.ProjectID);

            if (thisProjectEvaluation == null)
            {
                thisProjectEvaluation = new ProjectEvaluation(project, evaluation);
            }

            return(thisProjectEvaluation);
        }
        public void UpdateModel(FirmaSession currentFirmaSession, ProjectEvaluation projectEvaluation)
        {
            projectEvaluation.Comments = Comments;


            //gather all eval Criteria values selected to make sure they are valid
            var selectedEvaluationCriteriaValues = new List <EvaluationCriteriaValue>();

            foreach (var simpleValue in SelectedEvaluationCriteriaValues)
            {
                var evaluationCriteriaValue = HttpRequestStorage.DatabaseEntities.EvaluationCriteriaValues.SingleOrDefault(x => x.EvaluationCriteriaValueID == simpleValue);
                if (evaluationCriteriaValue != null)
                {
                    selectedEvaluationCriteriaValues.Add(evaluationCriteriaValue);
                }
            }



            var updatedSelectedProjectEvaluationValues = new List <ProjectEvaluationSelectedValue>();

            foreach (var selectedEvaluationCriteriaValue in selectedEvaluationCriteriaValues)
            {
                var projectEvaluationSelectedValue = HttpRequestStorage.DatabaseEntities.ProjectEvaluationSelectedValues.SingleOrDefault(x => x.EvaluationCriteriaValueID == selectedEvaluationCriteriaValue.EvaluationCriteriaValueID && x.ProjectEvaluationID == ProjectEvaluationID);
                if (projectEvaluationSelectedValue == null)
                {
                    projectEvaluationSelectedValue = new ProjectEvaluationSelectedValue(ProjectEvaluationID, selectedEvaluationCriteriaValue.EvaluationCriteriaValueID);
                }

                updatedSelectedProjectEvaluationValues.Add(projectEvaluationSelectedValue);
            }



            var allProjectEvaluationSelectedValuesFromDatabase = HttpRequestStorage.DatabaseEntities.AllProjectEvaluationSelectedValues.Local;


            projectEvaluation.ProjectEvaluationSelectedValues.Merge(
                updatedSelectedProjectEvaluationValues,
                allProjectEvaluationSelectedValuesFromDatabase,
                (x, y) => x.ProjectEvaluationSelectedValueID == y.ProjectEvaluationSelectedValueID,
                (x, y) =>
            {
                x.ProjectEvaluationID       = y.ProjectEvaluationID;
                x.EvaluationCriteriaValueID = x.EvaluationCriteriaValueID;
            }, HttpRequestStorage.DatabaseEntities);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Gets a project evaluation
        /// with statistical remaining days
        /// based on a number of simulations.
        /// </summary>
        /// <param name="person">The person.</param>
        /// <param name="issues">The issues.</param>
        /// <param name="numberOfSimulations">The number of simulations.</param>
        /// <param name="standardNumberOfHoursPerDay">The standard number of hours per day.</param>
        /// <returns>
        /// The total project evaluation from the simulations.
        /// </returns>
        public ProjectEvaluation GetProjectEvaluation(PersonView person
            , IList<IssueView> issues
            , int numberOfSimulations
            , double standardNumberOfHoursPerDay)
        {
            // Prepares the container for the simulation results:
            ProjectEvaluation result
                = new ProjectEvaluation
                    (person
                    , standardNumberOfHoursPerDay);

            // Runs through a number of simulations for the given issues:
            for (int simulationNumber = 1;
                simulationNumber <= numberOfSimulations;
                simulationNumber++)
            {
                // In each simulation the container for simulation results
                // is passed along in order to collect the result:
                RunSimulation(issues, result);
            }

            // Returns the container with the simulation results:
            return result;
        }
        public bool DisplayFile(string sourceFilePath, int lineNumber = 0, int column = 0, ProjectEvaluation evaluation = null)
        {
            var text = sourceFileResolver.GetSourceFileText(sourceFilePath);

            if (text == null)
            {
                return(false);
            }

            Action preprocess = preprocessedFileManager.GetPreprocessAction(sourceFilePath, PreprocessedFileManager.GetEvaluationKey(evaluation));

            documentWell.DisplaySource(sourceFilePath, text.Text, lineNumber, column, preprocess);
            return(true);
        }
        private bool Invoke(BaseNode treeNode)
        {
            if (treeNode == null)
            {
                return(false);
            }

            try
            {
                switch (treeNode)
                {
                case AbstractDiagnostic diagnostic:
                    var path = diagnostic.File;
                    if (!DisplayFile(path, diagnostic.LineNumber) &&
                        path != null &&
                        !Path.IsPathRooted(path) &&
                        diagnostic.ProjectFile != null)
                    {
                        // path must be relative, try to normalize:
                        path = Path.Combine(Path.GetDirectoryName(diagnostic.ProjectFile), path);
                        return(DisplayFile(path, diagnostic.LineNumber, diagnostic.ColumnNumber));
                    }

                    if (diagnostic.IsTextShortened)
                    {
                        return(DisplayText(diagnostic.Text, diagnostic.GetType().Name));
                    }

                    break;

                case Target target:
                    return(DisplayTarget(target.SourceFilePath, target.Name));

                case Task task:
                    return(DisplayTask(task.SourceFilePath, task.Parent, task.Name));

                case IHasSourceFile hasSourceFile when hasSourceFile.SourceFilePath != null:
                    int line    = 0;
                    var hasLine = hasSourceFile as IHasLineNumber;
                    if (hasLine != null)
                    {
                        line = hasLine.LineNumber ?? 0;
                    }

                    ProjectEvaluation evaluation = null;
                    if (hasSourceFile is TreeNode node)
                    {
                        // TODO: https://github.com/KirillOsenkov/MSBuildStructuredLog/issues/392
                        evaluation = node.GetNearestParentOrSelf <ProjectEvaluation>();
                    }

                    return(DisplayFile(hasSourceFile.SourceFilePath, line, evaluation: evaluation));

                case SourceFileLine sourceFileLine when sourceFileLine.Parent is SourceFile sourceFile && sourceFile.SourceFilePath != null:
                    return(DisplayFile(sourceFile.SourceFilePath, sourceFileLine.LineNumber));

                case NameValueNode nameValueNode when nameValueNode.IsValueShortened:
                    return(DisplayText(nameValueNode.Value, nameValueNode.Name));

                case TextNode textNode when textNode.IsTextShortened:
                    return(DisplayText(textNode.Text, textNode.Name ?? textNode.GetType().Name));

                default:
                    return(false);
                }
            }
            catch
            {
                // in case our guessing of file path goes awry
            }

            return(false);
        }
Exemplo n.º 10
0
 public EditProjectEvaluationViewData(ProjectEvaluation projectEvaluation, List <EvaluationCriteriaSimple> evaluationCriteriaSimples)
 {
     ProjectEvaluation         = projectEvaluation;
     EvaluationCriteriaSimples = evaluationCriteriaSimples;
 }
Exemplo n.º 11
0
        private PartialViewResult ViewEditProjectEvaluation(EditProjectEvaluationViewModel viewModel, ProjectEvaluation projectEvaluation)
        {
            var evaluationCriteriaSimples = projectEvaluation.Evaluation.EvaluationCriterias.Select(x => new EvaluationCriteriaSimple(x)).ToList();
            var viewData = new EditProjectEvaluationViewData(projectEvaluation, evaluationCriteriaSimples);

            return(RazorPartialView <EditProjectEvaluation, EditProjectEvaluationViewData, EditProjectEvaluationViewModel>(viewData, viewModel));
        }
Exemplo n.º 12
0
        /// <summary>
        /// Runs one simulation.
        /// </summary>
        /// <param name="issues">The issues.</param>
        /// <param name="evaluation">The evaluation container with simulation results.</param>
        private void RunSimulation(IList<IssueView> issues
            , ProjectEvaluation evaluation)
        {
            // In this simulation the remaining hours for the project is calculated:
            double statisticalRemainingForProject = 0d;

            // In one simulation all issues are treated individually:
            foreach (IssueView issue in issues)
            {
                // Gets the simulated remaining hours for the issue:
                double issueDuration
                    = GetSimulatedRemainingHoursForIssue(issue);

                // The simulated remaining hours for the issue
                // is added to the container of the simulation results:
                evaluation.AddIssueEvaluation
                    (issue.Issue
                    , issue.Tasks.Count
                    , issue.Issue.Elapsed
                    , issueDuration);

                // The simulated remaining hours for the issue
                // is added to the remaining hours for the entire project:
                statisticalRemainingForProject
                    += issueDuration;
            }

            // The total simulated remaining hours for the entire project
            // is added to the container of simulation results:
            evaluation.AddEvaluation
                (statisticalRemainingForProject);
        }
 public static string GetEvaluationKey(ProjectEvaluation evaluation) => evaluation == null ? null : evaluation.ProjectFile + evaluation.Id.ToString();
Exemplo n.º 14
0
 public static string GetDeleteUrl(this ProjectEvaluation projectEvaluation)
 {
     return(DeleteUrlTemplate.ParameterReplace(projectEvaluation.ProjectEvaluationID));
 }