protected override void Execute() { var report = _reportsViewerController.GetSelectedReports().FirstOrDefault(); if (report == null) { return; } var reportTemplates = _reportsViewerController.GetCustomReportTemplates(); var reports = _reportsViewerController.GetReports(); var groupNames = reports.OrderByDescending(b => b.Group).Select(a => a.Group).Distinct().ToList(); var taskTemplateIdProvider = new TaskTemplateIdProvider(); var viewModel = new AppendReportViewModel(report.Clone() as Report, _imageService, _reportsViewerController.GetSelectedProject(), groupNames, reportTemplates, taskTemplateIdProvider, true); var view = new AppendReportWindow(viewModel, null); viewModel.Window = view; var result = view.ShowDialog(); if (result != null && (bool)result) { _reportsViewerController.UpdateReports(new List <Report> { viewModel.Report }); } }
private void AddNewReport(Report report) { var selectedProject = _reportsViewerController.GetSelectedProject(); if (selectedProject == null) { return; } var reportTemplates = GetCustomReportTemplates(); var reports = _reportsViewerController.GetReports(); var groupNames = reports.OrderByDescending(b => b.Group).Select(a => a.Group).Distinct().ToList(); var taskTemplateIdProvider = new TaskTemplateIdProvider(); var viewModel = new AppendReportViewModel(report, _imageService, selectedProject, groupNames, reportTemplates, taskTemplateIdProvider); var view = new AppendReportWindow(viewModel, null); viewModel.Window = view; var result = view.ShowDialog(); if (result != null && (bool)result) { _reportsViewerController.AddReports(new List <Report> { viewModel.Report }); } }
public ReportsController(FileBasedProject fileBasedProject, PathInfo pathInfo, TaskTemplateIdProvider taskTemplateIdProvider) { Project = fileBasedProject; PathInfo = pathInfo; TaskTemplateIdProvider = taskTemplateIdProvider; _projectReportsOperations = new ProjectReportsOperations(Project); }
private List <Report> AddRecordData(List <Report> reports) { if (_reports == null) { _reports = new List <Report>(); } var clonedReports = new List <Report>(); foreach (var report in reports) { var existingReport = _reports?.FirstOrDefault(a => a.Id == report.Id); if (existingReport == null) { if (report.Path.EndsWith(".xml", StringComparison.InvariantCultureIgnoreCase) && TaskTemplateIdProvider.TaskTemplateIdExists(report.TemplateId)) { var reportData = File.ReadAllText(report.Path); var addedReport = _projectReportsOperations .AddReport(report.TemplateId, report.Name, report.Description, report.Language, reportData); report.Id = addedReport.Id; report.IsCustomReport = addedReport.IsCustomReport; report.IsStudioReport = true; var reportPath = Path.Combine(ProjectLocalFolder, addedReport.Path); if (string.Compare(report.Path, reportPath, StringComparison.InvariantCultureIgnoreCase) != 0) { AttemptDeleteFile(report.Path); } report.Path = reportPath; } else { report.IsStudioReport = false; } var clonedReport = GetClonedReport(report); clonedReports.Add(clonedReport); } } Project.Save(); var updatedReports = GetUpdatedReports(clonedReports); _reports.AddRange(updatedReports); return(_reports); }
public AppendReportViewModel(Report report, ImageService imageService, IProject project, List <string> groupNames, List <ReportTemplate> reportTemplates, TaskTemplateIdProvider taskTemplateIdProvider, bool isEditMode = false) { Report = report; _imageService = imageService; _project = project; _reportTemplates = reportTemplates; _taskTemplateIdProvider = taskTemplateIdProvider; GroupNames = groupNames; IsEditMode = isEditMode; WindowTitle = IsEditMode ? PluginResources.WindowTitle_EditProjectReport : PluginResources.WindowTitle_AddProjectReport; var projectInfo = _project.GetProjectInfo(); LanguageItems = projectInfo.TargetLanguages .Select(language => new LanguageItem { Name = language.DisplayName, CultureInfo = language.CultureInfo, Image = imageService.GetImage(language.CultureInfo.Name) }) .ToList(); SelectedLanguageItems = new List <LanguageItem> { LanguageItems.FirstOrDefault(a => string.Compare(a.CultureInfo.Name, Report.Language, StringComparison.CurrentCultureIgnoreCase) == 0) }; Date = Report.Date; Name = Report.Name; Group = Report.Group; Description = Report.Description; Path = Report.Path ?? string.Empty; Xslt = Report.XsltPath ?? string.Empty; CanEditProperties = !report.IsStudioReport; }
protected override void Initialize(IViewContext context) { _projectsController = SdlTradosStudio.Application.GetController <ProjectsController>(); _pathInfo = new PathInfo(); _taskTemplateIdProvider = new TaskTemplateIdProvider(); _reportsController = new ReportsController( _projectsController.CurrentProject ?? _projectsController.SelectedProjects.FirstOrDefault(), _pathInfo, _taskTemplateIdProvider); _projectsController.CurrentProjectChanged += ProjectsControllerOnCurrentProjectChanged; _removeReportAction = SdlTradosStudio.Application.GetAction <RemoveReportAction>(); _addReportAction = SdlTradosStudio.Application.GetAction <AddReportAction>(); _editReportAction = SdlTradosStudio.Application.GetAction <EditReportAction>(); _openSettingsAction = SdlTradosStudio.Application.GetAction <OpenSettingsAction>(); _printReportAction = SdlTradosStudio.Application.GetAction <PrintReportAction>(); _refreshAction = SdlTradosStudio.Application.GetAction <RefreshAction>(); _saveAsReportAction = SdlTradosStudio.Application.GetAction <SaveAsReportAction>(); ActivationChanged += ReportsViewerController_ActivationChanged; }
private List <Report> GetUpdatedReports(List <Report> reports, IReadOnlyCollection <ReportTemplate> reportTemplates, bool overwrite, ref List <CustomReportTemplate> customReportTemplates) { var updatedReports = new List <Report>(); foreach (var report in reports) { if (report == null || string.IsNullOrEmpty(report.Path)) { continue; } var reportTemplate = GetReportTemplate(report, reportTemplates); var xmlPath = Path.Combine(ProjectLocalFolder, report.Path); var xsltPath = string.Empty; var shouldOverwrite = overwrite; if (!report.IsStudioReport) { xsltPath = Path.Combine(ProjectLocalFolder, report.XsltPath ?? string.Empty); if (!xmlPath.ToLower().EndsWith(".xml")) { xmlPath = GetPreviousExtensionPath(xmlPath); } if (!File.Exists(xsltPath) || !File.Exists(xmlPath) || !xmlPath.ToLower().EndsWith(".xml")) { updatedReports.Add(report); continue; } } else { if (!File.Exists(xmlPath) || !xmlPath.ToLower().EndsWith(".xml")) { updatedReports.Add(report); continue; } if (!TaskTemplateIdProvider.TaskTemplateIdExists(report.TemplateId)) { throw new Exception(string.Format("Invalid template id {0}", report.TemplateId)); } } if (reportTemplate != null) { var customReportTemplate = customReportTemplates?.FirstOrDefault(a => a.ReportId == report.Id.ToString() && a.ReportTemplateId == reportTemplate.Id); if (customReportTemplate == null) { xsltPath = reportTemplate.Path; shouldOverwrite = true; UpdateCustomTemplates(customReportTemplates, report, reportTemplate); } } else { RemoveCustomReportTemplate(report, customReportTemplates, ref shouldOverwrite); } var reportPath = CreateHtmlReport(report.Id, xsltPath, xmlPath, report.IsStudioReport, shouldOverwrite); SetReportVirtualPath(report, ProjectLocalFolder, reportPath); updatedReports.Add(report); } return(updatedReports); }
private async Task <List <Report> > GetProjectReports() { _reports = new List <Report>(); if (Project != null) { var settingsBundle = Project.GetSettings(); var reportViewerSettings = settingsBundle.GetSettingsGroup <ReportsViewerSettings>(); var savedReports = DeserializeReports(reportViewerSettings.ReportsJson.Value); var studioReports = GetStudioReports(); var reports = new List <Report>(); // get the reports managed by studio with updated settings from the reviewer foreach (var studioReport in studioReports) { var savedReport = savedReports.FirstOrDefault(a => a.Id == studioReport.Id); var report = new Report { Id = studioReport.Id, Name = studioReport.Name, Description = studioReport.Description, Date = studioReport.Date, Group = savedReport?.Group ?? studioReport.Group, Language = studioReport.Language, Path = studioReport.Path, TemplateId = studioReport.TemplateId, IsCustomReport = studioReport.IsCustomReport, IsStudioReport = true, IsSelected = savedReport?.IsSelected ?? false, XsltPath = savedReport?.XsltPath ?? string.Empty }; if (!TaskTemplateIdProvider.TaskTemplateIdExists(studioReport.TemplateId)) { TaskTemplateIdProvider.AddTemplateId(studioReport.TemplateId, studioReport.TemplateId); } reports.Add(report); } // recover also the saved reports that aren't managed by Studio foreach (var report in savedReports) { var existingReport = reports.FirstOrDefault(a => a.Id == report.Id); if (existingReport == null) { reports.Add(report); } } var customReportTemplates = DeserializeCustomReportTemplates(reportViewerSettings.CustomReportTemplatesJson.Value); var overwrite = UICultureChanged(reportViewerSettings); var reportTemplates = GetCustomReportTemplates(); var updatedReports = GetUpdatedReports(reports, reportTemplates, overwrite, ref customReportTemplates); UpdateCustomTemplateReports(customReportTemplates); _reports = updatedReports; } return(await Task.FromResult(GetClonedReports(_reports))); }