/// <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); } }
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)); }
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); }
/// <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); }
public EditProjectEvaluationViewData(ProjectEvaluation projectEvaluation, List <EvaluationCriteriaSimple> evaluationCriteriaSimples) { ProjectEvaluation = projectEvaluation; EvaluationCriteriaSimples = evaluationCriteriaSimples; }
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)); }
/// <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();
public static string GetDeleteUrl(this ProjectEvaluation projectEvaluation) { return(DeleteUrlTemplate.ParameterReplace(projectEvaluation.ProjectEvaluationID)); }