Esempio n. 1
0
        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
                });
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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)));
        }