Compare commits

...

12 Commits

585 changed files with 280228 additions and 73 deletions

View File

@@ -213,17 +213,20 @@
},
"active": "41ed24ce492fd06e",
"lastOpenFiles": [
"legacy/CCNetLogReader/CCNetControls/obj/Debug/TempPE",
"legacy/CCNetLogReader/CCNetControls/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache",
"legacy/CCNetLogReader/CCNetControls/obj/Debug/CCNetControls.csproj.FileListAbsolute.txt",
"legacy/CCNetLogReader/CCNetControls/obj/Debug",
"legacy/CCNetLogReader/CCNetControls/bin/Debug",
"legacy/CCNetLogReader/CCNetControls/Properties/AssemblyInfo.cs",
"legacy/CCNetLogReader/CCNetControls/obj",
"legacy/CCNetLogReader/CCNetControls/bin",
"legacy/CCNetLogReader/CCNetControls/Properties",
"legacy/CCNetLogReader/CCNetControls/ManuscriptLogin.resx",
"legacy/CCNetLogReader/CCNetControls/ManuscriptLogin.cs",
"src/Database/Services/PasswordHasher.cs",
"src/Database/Services/DatabaseSeeder.cs",
"src/Database/Services/DatabaseMigrator.cs",
"src/Database/Repositories/IUserRepository.cs",
"src/Database/Repositories/IPublicationRepository.cs",
"src/Database/Repositories/IProjectRepository.cs",
"src/Database/Repositories/IPackageRepository.cs",
"src/Database/Repositories/IFogBugzRepository.cs",
"src/Database/Repositories/IBuildRepository.cs",
"src/Database/Models/User.cs",
"src/Database/Models/StorageProvider.cs",
"README-Database.md",
"src/Frontend/README.md",
"legacy.md",
"claude.md",
"implementation.md",
"statement-of-work.md",

441
README-Database.md Normal file
View File

@@ -0,0 +1,441 @@
# Database Implementation
This document describes the PostgreSQL database implementation for the Software Release Management Platform.
## Architecture Overview
The database layer uses **Entity Framework Core 8** with **PostgreSQL 15** and includes:
- **Soft Delete Pattern**: All entities support soft deletes with audit trail
- **Repository Pattern**: Clean abstraction layer for data access
- **Database Constraints**: Enforced data integrity at the database level
- **JSON Support**: PostgreSQL JSONB columns for flexible configuration storage
- **Migration Support**: Code-first database schema management
- **Connection Pooling**: Optimized for high-performance applications
## Entity Relationships
```mermaid
erDiagram
Users {
int Id PK
string Username UK
string PasswordHash
string Role
datetime CreatedAt
datetime LastLogin
bool IsDeleted
}
Projects {
int Id PK
string Name
string CCNetProjectName UK
string Status
datetime CreatedAt
bool IsDeleted
}
Builds {
int Id PK
int ProjectId FK
string BuildNumber
string Status
datetime StartTime
datetime EndTime
bool IsDeleted
}
Packages {
int Id PK
string Title
string Version
int ProjectId FK
int SourceBuildId FK
string Status
datetime PublishDate
bool IsDeleted
}
PackageConfigurations {
int Id PK
int PackageId FK
string BuildFolder
bool ZipContents
jsonb StorageSettings
jsonb HelpCenterSettings
bool IsDeleted
}
Publications {
int Id PK
int PackageId FK
string Status
datetime PublishedAt
jsonb PublicationDetails
bool IsDeleted
}
PublishingSteps {
int Id PK
int PublicationId FK
string StepName
string Status
int ProgressPercent
datetime StartedAt
datetime CompletedAt
bool IsDeleted
}
FogBugzCases {
int Id PK
int CaseId UK
string Title
string Status
datetime LastUpdated
bool IsOpen
bool IsDeleted
}
FogBugzEvents {
int Id PK
int CaseId FK
string EventType
string User
datetime EventDate
string ReleaseNote
int ZendeskNumber
bool IsDeleted
}
BuildCommits {
int Id PK
int BuildId FK
string CommitHash
string FogBugzCaseId
jsonb ModifiedFiles
datetime CommitDate
bool IsDeleted
}
StorageProviders {
int Id PK
string Name UK
string Type
jsonb Configuration
bool IsActive
bool IsDeleted
}
HelpCenterProviders {
int Id PK
string Name UK
string Type
jsonb Configuration
bool IsActive
bool IsDeleted
}
Projects ||--o{ Builds : "produces"
Projects ||--o{ Packages : "contains"
Builds ||--o{ BuildCommits : "includes"
Packages ||--o{ PackageConfigurations : "configured by"
Packages ||--o{ Publications : "published as"
Publications ||--o{ PublishingSteps : "tracked by"
FogBugzCases ||--o{ FogBugzEvents : "has history"
BuildCommits }o--|| FogBugzCases : "references"
```
## Database Schema
### Core Tables
#### Users
- **Purpose**: User authentication and authorization
- **Key Features**: Role-based access control, password hashing, audit trail
#### Projects
- **Purpose**: CruiseControl.NET project integration
- **Key Features**: Maps to CC.NET project names, tracks build history
#### Builds
- **Purpose**: Individual build records from CC.NET
- **Key Features**: Build status tracking, timing information, artifact paths
#### BuildCommits
- **Purpose**: Source code commits within builds
- **Key Features**: FogBugz case linking, modified files (JSON), commit metadata
### Package Management
#### Packages
- **Purpose**: User-defined software release configurations
- **Key Features**: Version tracking, publishing status, project association
#### PackageConfigurations
- **Purpose**: Package-specific publishing settings
- **Key Features**: Storage settings (JSON), help center settings (JSON), build options
### Publishing Workflow
#### Publications
- **Purpose**: Publishing execution records
- **Key Features**: Workflow status, publication details (JSON), timing
#### PublishingSteps
- **Purpose**: Individual workflow step tracking
- **Key Features**: Progress percentage, error handling, step ordering
### External Integration
#### FogBugzCases & FogBugzEvents
- **Purpose**: FogBugz/Manuscript integration
- **Key Features**: Case history, release note extraction, Zendesk linking
#### StorageProviders & HelpCenterProviders
- **Purpose**: External service configuration
- **Key Features**: Pluggable providers, encrypted configuration (JSON)
## Soft Delete Implementation
All entities inherit from `BaseEntity` with soft delete support:
```csharp
public abstract class BaseEntity
{
public int Id { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public bool IsDeleted { get; set; }
public DateTime? DeletedAt { get; set; }
public string? DeletedBy { get; set; }
public string? CreatedBy { get; set; }
public string? UpdatedBy { get; set; }
}
```
### Query Filters
Entity Framework automatically filters out soft-deleted records:
```csharp
modelBuilder.Entity<User>().HasQueryFilter(e => !e.IsDeleted);
```
### Manual Override
To include soft-deleted records:
```csharp
var allUsers = context.Users.IgnoreQueryFilters().Where(u => u.IsDeleted);
```
## Repository Pattern
### Interface Example
```csharp
public interface IUserRepository
{
Task<User?> GetByIdAsync(int id);
Task<User?> GetByUsernameAsync(string username);
Task<List<User>> GetAllAsync();
Task<User> CreateAsync(User user);
Task<User> UpdateAsync(User user);
Task DeleteAsync(int id, string deletedBy);
Task<bool> ExistsAsync(int id);
}
```
### Benefits
- Clean separation of concerns
- Testable data access layer
- Consistent error handling
- Transaction management
## Database Configuration
### Connection String
Production connection strings stored in `secrets.yaml`:
```yaml
Database:
ConnectionString: "Host=localhost;Port=5432;Database=software_release_management;Username=postgres;Password=your_secure_password"
```
### Performance Settings
```json
{
"Database": {
"CommandTimeout": 30,
"Pooling": {
"MinPoolSize": 5,
"MaxPoolSize": 100,
"ConnectionIdleLifetime": 300
},
"Retry": {
"EnableRetryOnFailure": true,
"MaxRetryCount": 5,
"MaxRetryDelay": 30
}
}
}
```
## Setup Instructions
### 1. Prerequisites
- Docker and Docker Compose
- .NET 8 SDK
- PostgreSQL client tools (optional)
### 2. Start Database
```bash
# Start PostgreSQL with Docker Compose
docker compose up postgres -d
# Optional: Start with PgAdmin
docker compose --profile dev up -d
```
### 3. Run Migrations
```bash
cd src/Database
dotnet ef migrations add InitialCreate
dotnet ef database update
```
### 4. Seed Data
```bash
# Development environment automatically seeds test data
ASPNETCORE_ENVIRONMENT=Development dotnet run
```
## Development Workflow
### Creating Migrations
```bash
# Navigate to Database project
cd src/Database
# Create new migration
dotnet ef migrations add MigrationName
# Review generated migration files
# Apply migration
dotnet ef database update
```
### Database Scripts
```bash
# Generate SQL script for production deployment
dotnet ef migrations script --output migrations.sql
# Generate script for specific migration range
dotnet ef migrations script PreviousMigration TargetMigration
```
### Data Seeding
The database automatically seeds:
- Default users (admin, user, readonly)
- Storage providers (AWS S3, Box.com, FTP)
- Help center providers (Zendesk, Salesforce)
- Test projects and packages (development only)
## Security Features
### Password Hashing
- BCrypt with work factor 12
- Automatic salt generation
- Secure password verification
### Secrets Management
- Production secrets in `secrets.yaml`
- Environment variable overrides
- Docker secrets support
### Database Security
- Connection pooling limits
- SQL injection protection (parameterized queries)
- Role-based access control
- Audit logging
## Performance Considerations
### Indexing Strategy
- Primary keys (clustered indexes)
- Foreign key relationships
- Query optimization indexes:
- `Users.Username` (unique)
- `Projects.CCNetProjectName` (unique)
- `Builds.StartTime`, `Builds.Status`
- `FogBugzCases.LastUpdated`
- `Publications.Status`, `Publications.PublishedAt`
### JSON Column Usage
PostgreSQL JSONB columns provide:
- Efficient storage and querying
- Flexible configuration schemas
- GIN index support for complex queries
### Connection Pooling
- Configured connection limits
- Idle connection cleanup
- Health check monitoring
## Monitoring and Maintenance
### Health Checks
```csharp
services.AddHealthChecks()
.AddDbContextCheck<DatabaseContext>("database");
```
### Logging
- Entity Framework query logging
- Migration execution logs
- Performance monitoring
- Error tracking
### Backup Strategy
```bash
# Database backup
pg_dump -h localhost -p 5432 -U postgres -d software_release_management > backup.sql
# Restore from backup
psql -h localhost -p 5432 -U postgres -d software_release_management < backup.sql
```
## Troubleshooting
### Common Issues
1. **Connection Issues**
```bash
# Check PostgreSQL status
docker compose logs postgres
# Test connection
psql -h localhost -p 5432 -U postgres -d software_release_management
```
2. **Migration Failures**
```bash
# Reset migrations (development only)
dotnet ef database drop --force
dotnet ef database update
```
3. **Performance Issues**
```sql
-- Check slow queries
SELECT query, mean_time, calls
FROM pg_stat_statements
ORDER BY mean_time DESC LIMIT 10;
```
### Support
- Check Entity Framework documentation
- Review PostgreSQL logs
- Monitor application performance
- Use PgAdmin for database administration
## Next Steps
- Set up monitoring and alerting
- Implement database backup automation
- Configure read replicas for scaling
- Set up connection string encryption

73
docker-compose.yml Normal file
View File

@@ -0,0 +1,73 @@
version: '3.8'
services:
postgres:
image: postgres:15-alpine
container_name: srm_postgres
environment:
POSTGRES_DB: software_release_management
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
PGDATA: /var/lib/postgresql/data/pgdata
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data/pgdata
- ./scripts/init-db.sql:/docker-entrypoint-initdb.d/01-init-db.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d software_release_management"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- srm-network
# Database migration service
database-migrator:
build:
context: ./src/Database
dockerfile: Dockerfile.migrator
container_name: srm_db_migrator
depends_on:
postgres:
condition: service_healthy
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ConnectionStrings__DefaultConnection=Host=postgres;Port=5432;Database=software_release_management;Username=postgres;Password=postgres
networks:
- srm-network
restart: no
# PgAdmin for database management (optional)
pgadmin:
image: dpage/pgadmin4:latest
container_name: srm_pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: admin@company.com
PGADMIN_DEFAULT_PASSWORD: admin123
PGADMIN_CONFIG_SERVER_MODE: 'False'
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False'
ports:
- "5050:80"
volumes:
- pgadmin_data:/var/lib/pgadmin
- ./scripts/servers.json:/pgadmin4/servers.json:ro
depends_on:
- postgres
networks:
- srm-network
profiles:
- dev
restart: unless-stopped
volumes:
postgres_data:
driver: local
pgadmin_data:
driver: local
networks:
srm-network:
driver: bridge
name: software-release-management

View File

@@ -127,54 +127,79 @@ graph TB
#### 2. Project Service (`project-service`)
- **Purpose**: CruiseControl.NET integration and project management
- **Technology**: ASP.NET Core Web API
- **Integration Method**: TCP Remoting (`tcp://{server}:21234/CruiseManager.rem`)
- **Responsibilities**:
- Parse CC.NET log files
- Cache build history and status
- Connect to CC.NET via ThoughtWorks.CruiseControl.Remote library
- Parse XML build logs and extract commit information
- Regex pattern matching for FogBugz case ID extraction
- Cache build history and status with modified file tracking
- Project configuration management
- Build status monitoring
- Build status monitoring and real-time updates
#### 3. Manuscript Service (`manuscript-service`)
- **Purpose**: FogBugz/Manuscript integration
- **Technology**: ASP.NET Core Web API
- **Integration Method**: HTTP API (`http://{server}/api.asp`)
- **Authentication**: Token-based authentication system
- **Responsibilities**:
- Developer comment extraction
- Feature timing data aggregation
- Release note data compilation
- Case/bug retrieval with full event history
- Status tracking (Opened, Resolved, Closed, Reactivated)
- Release note extraction from case events
- Zendesk ticket number linking
- Event history processing and caching
- Developer comment extraction and aggregation
#### 4. Document Service (`document-service`)
- **Purpose**: PDF generation and document management
- **Technology**: ASP.NET Core + iText7 or QuestPDF
- **Technology**: ASP.NET Core + QuestPDF (modern, container-friendly)
- **Responsibilities**:
- Release note PDF generation
- Template management
- Document versioning
- Release note PDF generation with FogBugz data integration
- Template variable replacement ({{VERSION}}, {{DATE}}, {{PROJECT}})
- Document versioning and storage
- Multi-format document support (PDF primary)
- Template management and customization
#### 5. Storage Service (`storage-service`)
- **Purpose**: Cloud storage abstraction layer
- **Technology**: ASP.NET Core Web API
- **Storage Providers**:
- **AWS S3**: AWS SDK for .NET
- **AWS S3**: AWS SDK for .NET with CloudFront CDN integration
- **Box.com**: Box .NET SDK
- **FTP**: FluentFTP library
- **Pattern**: Strategy pattern for provider abstraction
- **Key Features**:
- File compression and decompression (ZIP support)
- Folder cleanup and old version management
- Upload progress tracking with real-time updates
- CDN integration for fast content delivery
- Multi-file batch upload operations
#### 6. Help Center Service (`helpcenter-service`)
- **Purpose**: Support article updates
- **Purpose**: Support article updates with template processing
- **Technology**: ASP.NET Core Web API
- **Integrations**:
- **Zendesk**: Zendesk API v2
- **Zendesk**: Zendesk API v2 with ZendeskApi_v2 library
- **Salesforce Service**: Salesforce REST API
- **Pattern**: Strategy pattern for provider abstraction
- **Key Features**:
- Template variable replacement ({{VERSION}}, {{SWURL}}, {{PDFURL}})
- Multi-locale support (default: en-us)
- Article versioning and rollback capabilities
- Automated article publishing workflows
- Link generation for software downloads and documentation
#### 7. Publishing Service (`publishing-service`)
- **Purpose**: Orchestrate complete publishing workflows
- **Technology**: ASP.NET Core + Hangfire
- **Responsibilities**:
- Package creation from successful builds
- Coordinate document generation
- Manage cloud uploads
- Update help center articles
- Workflow status tracking
- Multi-step workflow orchestration with progress tracking
- Coordinate document generation with FogBugz data
- Manage cloud uploads with compression and cleanup
- Update help center articles with template processing
- Workflow status tracking and real-time notifications
- Error handling and retry mechanisms
- Package configuration validation
- Publishing history and audit trail
### Database Design
@@ -191,13 +216,26 @@ erDiagram
Packages {
int Id PK
string Name
string Title
string Version
string Description
int ProjectId FK
int SourceBuildId FK
json CloudStorageConfig
json HelpCenterConfig
string Status
datetime PublishDate
datetime CreatedAt
datetime UpdatedAt
}
PackageConfigurations {
int Id PK
int PackageId FK
string BuildFolder
boolean ZipContents
boolean DeleteOldPublishedBuilds
string ReleaseNoteTemplate
json StorageSettings
json HelpCenterSettings
datetime CreatedAt
datetime UpdatedAt
}
@@ -223,6 +261,41 @@ erDiagram
string ArtifactPath
}
BuildCommits {
int Id PK
int BuildId FK
string CommitHash
string Comment
string User
datetime CommitDate
string FogBugzCaseId
json ModifiedFiles
string ReleaseNote
}
FogBugzCases {
int Id PK
int CaseId
string Title
string Project
string Area
string Status
datetime LastUpdated
boolean IsOpen
}
FogBugzEvents {
int Id PK
int CaseId FK
string EventType
string User
string Comment
string StatusString
datetime EventDate
string ReleaseNote
int ZendeskNumber
}
Publications {
int Id PK
int PackageId FK
@@ -232,6 +305,17 @@ erDiagram
json PublicationDetails
}
PublishingSteps {
int Id PK
int PublicationId FK
string StepName
string Status
string Details
datetime StartedAt
datetime CompletedAt
int ProgressPercent
}
StorageProviders {
int Id PK
string Name
@@ -249,14 +333,23 @@ erDiagram
}
Projects ||--o{ Builds : "produces builds"
Builds ||--o| Packages : "creates package"
Projects ||--o{ Packages : "user creates packages for"
Builds ||--o{ Packages : "can be referenced by"
Builds ||--o{ BuildCommits : "contains commits"
Packages ||--o{ Publications : "has publications"
Packages ||--o{ PackageConfigurations : "has configuration"
Publications ||--o{ PublishingSteps : "tracked by steps"
BuildCommits ||--o| FogBugzCases : "may reference"
FogBugzCases ||--o{ FogBugzEvents : "has event history"
```
#### Core Entities
```sql
-- Packages: Top-level finalized software releases
Packages (Id, Name, Version, Description, SourceBuildId, CloudStorageConfig, HelpCenterConfig, Status, CreatedAt, UpdatedAt)
-- Packages: User-defined software release configurations
Packages (Id, Title, Version, Description, ProjectId, SourceBuildId, Status, PublishDate, CreatedAt, UpdatedAt)
-- Package-specific configurations
PackageConfigurations (Id, PackageId, BuildFolder, ZipContents, DeleteOldPublishedBuilds, ReleaseNoteTemplate, StorageSettings, HelpCenterSettings, CreatedAt, UpdatedAt)
-- Projects from CruiseControl.NET
Projects (Id, Name, Description, CCNetProjectName, Status, CreatedAt, UpdatedAt)
@@ -264,9 +357,21 @@ Projects (Id, Name, Description, CCNetProjectName, Status, CreatedAt, UpdatedAt)
-- Build information
Builds (Id, ProjectId, BuildNumber, Status, StartTime, EndTime, LogPath, ArtifactPath)
-- Individual commit information from build logs
BuildCommits (Id, BuildId, CommitHash, Comment, User, CommitDate, FogBugzCaseId, ModifiedFiles, ReleaseNote)
-- FogBugz case information
FogBugzCases (Id, CaseId, Title, Project, Area, Status, LastUpdated, IsOpen)
-- FogBugz case event history
FogBugzEvents (Id, CaseId, EventType, User, Comment, StatusString, EventDate, ReleaseNote, ZendeskNumber)
-- Publishing history
Publications (Id, PackageId, Status, PublishedAt, ReleaseNotesPath, PublicationDetails)
-- Publishing workflow step tracking
PublishingSteps (Id, PublicationId, StepName, Status, Details, StartedAt, CompletedAt, ProgressPercent)
-- User management
Users (Id, Username, PasswordHash, Role, CreatedAt, LastLogin)
@@ -281,9 +386,21 @@ HelpCenterProviders (Id, Name, Type, Configuration, IsActive)
```csharp
public interface ICloudStorageProvider
{
Task<string> UploadAsync(string containerName, string fileName, Stream content);
Task<string> UploadAsync(string containerName, string fileName, Stream content, IProgress<UploadProgress> progress = null);
Task<string> UploadFileAsync(string containerName, string localFilePath, IProgress<UploadProgress> progress = null);
Task<bool> DeleteAsync(string containerName, string fileName);
Task<Stream> DownloadAsync(string containerName, string fileName);
Task<bool> DeleteFolderContentsAsync(string containerName, string folderPath, List<string> excludeFiles);
Task<List<string>> UploadFolderAsync(string containerName, string localFolderPath, bool zipContents, IProgress<UploadProgress> progress = null);
Task<string> GetPublicUrlAsync(string containerName, string fileName);
}
public class UploadProgress
{
public string FileName { get; set; }
public long BytesTransferred { get; set; }
public long TotalBytes { get; set; }
public int PercentComplete { get; set; }
}
```
@@ -291,9 +408,97 @@ public interface ICloudStorageProvider
```csharp
public interface IHelpCenterProvider
{
Task<bool> UpdateArticleAsync(string articleId, string content, string title);
Task<bool> UpdateArticleAsync(string articleId, string content, string title = null);
Task<bool> UpdateArticleWithTemplateAsync(string articleId, string templateContent, Dictionary<string, string> variables);
Task<string> CreateArticleAsync(string content, string title, string categoryId);
Task<bool> PublishArticleAsync(string articleId);
Task<ArticleInfo> GetArticleAsync(string articleId);
Task<bool> TestConnectionAsync();
}
public class ArticleInfo
{
public string Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public string Locale { get; set; }
public DateTime LastUpdated { get; set; }
public bool IsPublished { get; set; }
}
```
### CruiseControl.NET Integration Interface
```csharp
public interface ICCNetClient
{
Task<List<ProjectStatus>> GetProjectStatusAsync();
Task<List<string>> GetBuildNamesAsync(string projectName);
Task<string> GetBuildLogAsync(string projectName, string buildName);
Task<bool> TestConnectionAsync();
}
public class ProjectStatus
{
public string Name { get; set; }
public IntegrationStatus BuildStatus { get; set; }
public string LastSuccessfulBuildLabel { get; set; }
public DateTime LastBuildDate { get; set; }
}
public class BuildCommitInfo
{
public string ProjectName { get; set; }
public string BuildNumber { get; set; }
public string Comment { get; set; }
public string User { get; set; }
public DateTime Date { get; set; }
public string FogBugzCaseId { get; set; }
public List<string> ModifiedFiles { get; set; }
}
```
### FogBugz Integration Interface
```csharp
public interface IManuscriptClient
{
Task<bool> LogOnAsync();
Task<FogBugzCase> GetCaseAsync(int caseId);
Task<List<FogBugzEvent>> GetCaseEventsAsync(int caseId);
Task<string> GetReleaseNoteAsync(int caseId);
Task<FogBugzStatus> GetCaseStatusAsync(int caseId);
Task<bool> TestConnectionAsync();
}
public class FogBugzCase
{
public int Id { get; set; }
public string Title { get; set; }
public string Project { get; set; }
public string Area { get; set; }
public string Status { get; set; }
public DateTime LastUpdated { get; set; }
public bool IsOpen { get; set; }
public List<FogBugzEvent> Events { get; set; }
}
public class FogBugzEvent
{
public string User { get; set; }
public string Comment { get; set; }
public string StatusString { get; set; }
public DateTime Timestamp { get; set; }
public string ReleaseNote { get; set; }
public int ZendeskNumber { get; set; }
public FogBugzStatus Status { get; set; }
}
public enum FogBugzStatus
{
Unknown,
Opened,
Resolved,
Closed,
Reactivated
}
```
@@ -461,13 +666,38 @@ src/
- PostgreSQL with persistent volumes
- Health checks and restart policies
## Questions for Next Phase
## External Service Integration Details
1. **CC.NET Integration**: What format are the log files? XML, plain text, or proprietary?
2. **Manuscript API**: Is there existing API documentation or will we need to reverse-engineer?
3. **Document Templates**: Do you have existing release note templates or should we create standard ones?
4. **Cloud Storage**: Any specific bucket/container naming conventions?
5. **Help Center**: Do you have existing article templates or categories to work with?
### CruiseControl.NET Integration
- **Connection Method**: TCP Remoting (`tcp://{server}:21234/CruiseManager.rem`)
- **Library**: ThoughtWorks.CruiseControl.Remote
- **Log Format**: XML with embedded modification details
- **FogBugz Case Extraction**: Regex pattern matching on commit comments
- **Supported Patterns**:
- Comments starting with case number
- "fb{number}" or "FB{number}" patterns
- "asp?{number}" patterns
- Full URL patterns with "cases/{number}"
### FogBugz/Manuscript Integration
- **Connection Method**: HTTP API (`http://{server}/api.asp`)
- **Authentication**: Token-based with session management
- **Event Processing**: Full case history with status tracking
- **Release Note Extraction**: From "ReleaseNoted" events with `<IGNORE>` filtering
- **Status Mapping**: Opened, Resolved, Closed, Reactivated
- **Zendesk Linking**: Custom field parsing for ticket numbers
### AWS S3 Integration
- **CDN**: CloudFront integration for fast content delivery
- **Features**: Folder cleanup, progress tracking, public URL generation
- **Compression**: ZIP file creation with SharpSevenZip
- **Cleanup**: Automatic deletion of old versions based on configuration
### Zendesk Integration
- **API Version**: Zendesk API v2 with ZendeskApi_v2 library
- **Template Variables**: `{{VERSION}}`, `{{SWURL}}`, `{{PDFURL}}`
- **URL Generation**: Automatic CloudFront URL generation for downloads
- **Locale Support**: Multi-locale article updates (default: en-us)
## Publishing Workflow
@@ -477,39 +707,76 @@ sequenceDiagram
participant UI as React Frontend
participant GW as API Gateway
participant PUB as Publishing Service
participant PROJ as Project Service
participant MAN as Manuscript Service
participant DOC as Document Service
participant STOR as Storage Service
participant HELP as Help Center Service
participant HF as Hangfire
participant SH as SignalR Hub
participant DB as Database
Note over User,UI: Package Creation Phase
User->>UI: Select Build & Create Package
UI->>GW: POST /api/packages/create-from-build
GW->>PUB: Create Package from Build
PUB->>SH: Package Created Notification
SH->>UI: Real-time Package Status
Note over User,UI: Package Management Phase
User->>UI: Create/Edit Package Configuration
UI->>GW: POST /api/packages
Note over UI: Package List View, Package Details Form
UI->>GW: GET /api/packages (List View)
UI->>GW: GET /api/packages/{id} (Details)
Note over User,UI: Publishing Phase
User->>UI: Select Package & Initiate Publishing
UI->>GW: POST /api/publish/package/{id}
User->>UI: Select Package & Build Version
UI->>GW: POST /api/publish/package/{id}/build/{buildId}
GW->>PUB: Queue Publishing Job
PUB->>HF: Enqueue Background Job
PUB->>HF: Enqueue Multi-Step Background Job
PUB->>SH: Notify Job Started
SH->>UI: Show Publishing Progress UI
Note over HF: Background Processing Starts
Note over HF: Step 1: Validate Package Configuration
HF->>DB: Create Publication Record
HF->>PUB: Validate Package Settings
PUB->>SH: Progress Update (10%)
HF->>DOC: Generate Release Notes PDF
DOC-->>HF: PDF Generated
Note over HF: Step 2: Collect Build Data
HF->>PROJ: Get Build Commits
PROJ->>DB: Query BuildCommits for Build
PUB->>SH: Progress Update (20%)
HF->>STOR: Upload Package + PDF to Cloud
STOR-->>HF: Upload Complete
Note over HF: Step 3: Query FogBugz for Release Notes
HF->>MAN: Get Case Details for Commits
MAN->>DB: Cache FogBugz Events
PUB->>SH: Progress Update (30%)
HF->>HELP: Update Help Center Articles
HELP-->>HF: Articles Updated
Note over HF: Step 4: Generate Release Notes PDF
HF->>DOC: Generate PDF with FogBugz Data
DOC->>DB: Store Document Path
PUB->>SH: Progress Update (50%)
HF->>SH: Notify Completion
SH->>UI: Real-time Publication Status
UI->>User: Show Completion Status
Note over HF: Step 5: Compress Files (if configured)
HF->>PUB: Compress Build Artifacts
PUB->>SH: Progress Update (60%)
Note over HF: Step 6: Upload to Cloud Storage
HF->>STOR: Upload Package + PDF
STOR->>PUB: Upload Progress Events
PUB->>SH: Progress Update (75%)
Note over HF: Step 7: Clean Up Old Versions
HF->>STOR: Delete Old Published Builds
PUB->>SH: Progress Update (80%)
Note over HF: Step 8: Update Help Center Articles
HF->>HELP: Update with Template Variables
HELP->>PUB: Article Update Complete
PUB->>SH: Progress Update (90%)
Note over HF: Step 9: Update Package Status
HF->>DB: Update Package PublishDate
HF->>DB: Complete Publication Record
Note over HF: Step 10: Send Completion Notification
HF->>SH: Notify Complete (100%)
SH->>UI: Show Success with Download Links
UI->>User: Display Publication Summary
```
## Data Flow Architecture
@@ -529,13 +796,13 @@ flowchart TD
subgraph "Core Data Model"
PROJ[Projects<br/>CC.NET Projects]
BUILDS[Builds<br/>From Projects]
PKG[Packages<br/>Finalized Releases]
PKG[Packages<br/>User-Defined Configs]
PUB_DATA[Publications<br/>Publishing History]
end
subgraph "Processing Layer"
DS[Document Service<br/>PDF Generator]
PUB[Publishing Service<br/>Package Creator & Orchestrator]
PUB[Publishing Service<br/>Workflow Orchestrator]
end
subgraph "Output Channels"
@@ -552,10 +819,10 @@ flowchart TD
PS --> PROJ
MS --> PROJ
PROJ --> BUILDS
BUILDS --> PKG
PKG --> PUB_DATA
UI --> PKG
PKG --> PROJ
PKG --> BUILDS
PKG --> PUB
PUB --> DS
PUB --> STOR
@@ -577,12 +844,175 @@ flowchart TD
class UI ui
```
## Frontend Views
### Package Management Interface
- **Package List View**: Display all packages with columns for Title, Project, Build, Status, Publish Date
- Search and filtering capabilities
- Real-time status updates via SignalR
- Color coding for build status (Success/Failure/In Progress)
- **Package Details/Create Form**:
- **Basic Info**: Title, Description, Version
- **Project Association**: Dropdown from available CC.NET projects
- **Build Selection**: Dropdown from successful builds with date/version info
- **Configuration Tab**:
- Build folder path
- Compression settings (ZIP contents toggle)
- Cleanup settings (delete old versions toggle)
- Release note template selection
- **Storage Tab**:
- Cloud storage provider selection
- Folder/bucket configuration
- CDN settings
- **Help Center Tab**:
- Article ID association
- Template content with variable placeholders
- Multi-locale support
- Status tracking with progress indicators
### Project Dashboard
- **Project List View**: CC.NET projects with real-time build status
- Build history and success/failure rates
- Last successful build information
- Project status monitoring
### Build Management
- **Build History View**: Detailed commit information
- Commit comments and modified files
- FogBugz case associations
- User attribution and timestamps
- Release note preview from FogBugz cases
- Search and filtering by user, date range, FogBugz status
### Publishing Dashboard
- **Active Publications View**: Real-time publishing progress
- Step-by-step progress indicators
- Detailed status for each publishing step
- Error handling and retry capabilities
- Download links upon completion
- **Publication History**: Audit trail of all publications
- Success/failure status
- Detailed logs and timing information
- Download links to generated documents and packages
### Real-time Features
- **SignalR Integration**: Live updates for:
- Build status changes
- Publishing progress (0-100%)
- Step completion notifications
- Error alerts and notifications
## Detailed Publishing Workflow Steps
Based on legacy analysis, the publishing workflow consists of these detailed steps:
### Step 1: Package Configuration Validation (10%)
- Verify package configuration exists and is complete
- Validate build folder paths and permissions
- Check storage provider credentials and connectivity
- Verify help center article IDs and templates
- Create publication record in database
### Step 2: Build Data Collection (20%)
- Query CC.NET for build information
- Parse XML build logs to extract commit data
- Apply regex patterns to identify FogBugz case references
- Store build commits with user and file modification data
- Track progress with real-time updates
### Step 3: FogBugz Data Integration (30%)
- Query FogBugz API for case details referenced in commits
- Process case event history for status and release notes
- Filter release notes (exclude `<IGNORE>` entries)
- Cache FogBugz data to reduce API calls
- Update build commits with release note content
### Step 4: Document Generation (50%)
- Generate PDF using QuestPDF with modern templates
- Integrate FogBugz release notes and case information
- Include build version, date, and project information
- Store generated document with version tracking
- Support for multiple document formats if needed
### Step 5: File Processing (60%)
- Compress build artifacts if configured (ZIP format)
- Prepare local staging directory
- Copy necessary files for upload
- Apply naming conventions based on package configuration
- Progress tracking for large file operations
### Step 6: Cloud Storage Upload (75%)
- Upload compressed package and documentation
- Generate CDN URLs for fast content delivery
- Support progress tracking with real-time updates
- Handle upload failures with retry mechanisms
- Set appropriate permissions and metadata
### Step 7: Version Cleanup (80%)
- Delete old published versions if configured
- Maintain specified number of historical versions
- Clean up temporary local files
- Update storage usage tracking
- Log cleanup operations for audit trail
### Step 8: Help Center Updates (90%)
- Process template variables in article content
- Replace `{{VERSION}}`, `{{SWURL}}`, `{{PDFURL}}` placeholders
- Generate download URLs with CloudFront integration
- Update articles via Zendesk API
- Support multi-locale article updates
### Step 9: Database Updates (95%)
- Update package publish date and version
- Complete publication record with success details
- Update package configuration if needed
- Create audit log entries
- Store download URLs and document paths
### Step 10: Notification and Completion (100%)
- Send real-time completion notification via SignalR
- Generate publication summary with download links
- Update UI with success status and metrics
- Trigger any configured post-publication webhooks
- Clean up background job resources
## Next Steps
1. Set up development environment with Docker Compose
2. Create solution structure and shared contracts
3. Implement core database models and Entity Framework setup
4. Build API Gateway with authentication
5. Develop individual services in parallel
6. Create React frontend with SignalR integration
7. Integration testing and deployment scripts
1. **Phase 1: Core Infrastructure**
- Set up development environment with Docker Compose
- Create solution structure with all identified services
- Implement enhanced database models with EF Core migrations
- Build API Gateway with JWT authentication and SignalR hubs
2. **Phase 2: External Service Integration**
- Implement CC.NET client with TCP remoting
- Build FogBugz client with HTTP API integration
- Create cloud storage abstraction with S3/CloudFront support
- Develop Zendesk client with template processing
3. **Phase 3: Core Services Development**
- Project Service with XML log parsing and regex case extraction
- Manuscript Service with event processing and caching
- Document Service with QuestPDF integration
- Storage Service with compression and cleanup capabilities
- Help Center Service with template variable replacement
4. **Phase 4: Publishing Workflow**
- Implement 10-step publishing workflow with Hangfire
- Build progress tracking and real-time notifications
- Create error handling and retry mechanisms
- Develop workflow orchestration and coordination
5. **Phase 5: Frontend Development**
- React frontend with advanced package management
- Real-time publishing dashboard with progress tracking
- Build history and FogBugz integration views
- Publication history and audit trail interface
6. **Phase 6: Testing and Deployment**
- Comprehensive integration testing with external services
- Performance testing for large file uploads and processing
- Security testing for credential management and API access
- Production deployment with monitoring and logging

362
legacy.md Normal file
View File

@@ -0,0 +1,362 @@
# Legacy System Analysis: CCNetLogReader Solution
## Executive Summary
The existing legacy application is a comprehensive Windows Forms-based software development insight and release management platform built in C#. It successfully implements most of the functionality outlined in the statement of work, providing CruiseControl.NET integration, FogBugz/Manuscript integration, automated release note generation, and publishing workflows to cloud storage and help center platforms.
## Solution Architecture
The solution consists of 6 main projects in a modular architecture:
### Project Structure
```mermaid
graph TB
subgraph "Legacy Solution Structure"
MAIN[CCNetLogReader<br/>Main WinForms App]
CCNET[CCNetWrapper<br/>CC.NET Data Layer]
FOGBUGZ[FogbugzWrapper<br/>Manuscript API Client]
CONTROLS[CCNetControls<br/>UI Components]
EDIT[ManuscriptEdit<br/>Standalone Editor]
ZENDESK[ZendeskTickets<br/>Ticket Utilities]
end
MAIN --> CCNET
MAIN --> FOGBUGZ
MAIN --> CONTROLS
EDIT --> FOGBUGZ
classDef main fill:#e1f5fe
classDef wrapper fill:#f3e5f5
classDef utility fill:#e8f5e8
class MAIN main
class CCNET,FOGBUGZ wrapper
class CONTROLS,EDIT,ZENDESK utility
```
### Core Projects
1. **CCNetLogReader** - Primary Windows Forms application and orchestration layer
2. **CCNetWrapper** - CruiseControl.NET integration and data models
3. **FogbugzWrapper** - FogBugz/Manuscript API client and data structures
4. **CCNetControls** - Custom UI controls and login dialogs
5. **ManuscriptEdit** - Standalone manuscript editing utility
6. **ZendeskTickets** - Zendesk ticket management utilities
## Data Structures and Models
### Configuration System
The application uses XML-based configuration (`Configuration.xml`) with the following key structures:
#### SoftwarePackage Configuration
```csharp
public class SoftwarePackage
{
public string Name { get; set; } // Package display name
public string ProjectName { get; set; } // CC.NET project reference
public string PublishedBuild { get; set; } // Current published version
public DateTime PublishedDate { get; set; } // Last publish date
public string ProjectBuildFolder { get; set; } // Build artifact location
public long ZDArticleID { get; set; } // Zendesk article ID
public string ZDArticleText { get; set; } // Article template with placeholders
public bool ZipContents { get; set; } // Compress files for upload
public bool DeleteOldPublishedBuilds { get; set; } // Cleanup old versions
public string ReleaseNoteDocxTemplate { get; set; } // Word template path
}
```
#### External Service Configurations
- **ZendeskConfiguration**: Locale, subdomain, username, API key
- **S3Configuration**: AWS credentials, bucket, CloudFront domain
### Build and Project Data Models
#### ServerBuild (`ServerBuild.cs`)
```csharp
public class ServerBuild
{
public string ProjectName { get; private set; }
public IntegrationStatus BuildStatus { get; private set; }
public string LastSuccessfulBuildLabel { get; private set; }
public DateTime LastBuildDate { get; private set; }
public DateTime? PublishedDate { get; private set; }
}
```
#### BuildLog (`CCNetWrapper/BuildLog.cs`)
```csharp
public class BuildLog
{
public string ProjectName { get; set; }
public string BuildNumber { get; set; }
public string Comment { get; set; }
public string ReleaseNote { get; set; }
public List<string> ModifiedFiles { get; set; }
public string User { get; set; }
public DateTime Date { get; set; }
public string Fogbugz { get; set; } // FogBugz case ID reference
public FBEvent.FBStatuses FBStatus { get; set; } // Status from FogBugz
}
```
#### ProjectLog (`CCNetWrapper/ProjectLog.cs`)
```csharp
public class ProjectLog
{
public List<BuildLog> BuildLogs { get; set; }
// Integrates with FogBugz to populate status and release notes
public void SetFBClient(FogbugzClient fogbugzClient, ref long progTotal, ref long progCurrent)
}
```
### FogBugz Integration Models
#### Case Management (`FogbugzWrapper/Cases.cs`)
```csharp
public class Case
{
public List<int> IxBug { get; set; } // Bug/Case ID
public int IxProject { get; set; } // Project ID
public bool FOpen { get; set; } // Case open status
public string STitle { get; set; } // Case title
public string SProject { get; set; } // Project name
public string SStatus { get; set; } // Current status
public DateTime DtLastUpdated { get; set; } // Last modification
public Events Events { get; set; } // Case event history
}
```
#### Event Tracking (`FogbugzWrapper/FBEvent.cs`)
```csharp
public class FBEvent
{
public enum FBStatuses { UNKNOWN, Opened, Resolved, Closed, Reactivated }
public string User { get; set; }
public string Comment { get; set; }
public string StatusString { get; set; }
public string TimeStamp { get; set; }
public string ReleaseNote { get; set; } // Release note content
public int ZendeskNumber { get; set; } // Linked Zendesk ticket
}
```
## External System Integrations
### CruiseControl.NET Integration
**Connection Method**: TCP Remoting (`tcp://{server}:21234/CruiseManager.rem`)
**Key Components**:
- Uses ThoughtWorks.CruiseControl.Remote library
- Connects via `CruiseServerClientFactory.GenerateRemotingClient()`
- Retrieves project status and build history
- Parses build logs for commit information
**Data Flow**:
```mermaid
sequenceDiagram
participant App as CCNetLogReader
participant CC as CruiseControl.NET
participant Wrapper as CCNetWrapper
App->>CC: Connect via TCP Remoting
CC->>App: Project List & Status
App->>CC: Request Build History
CC->>App: Build Log Data
App->>Wrapper: Parse Build Logs
Wrapper->>App: Structured BuildLog Objects
```
### FogBugz/Manuscript Integration
**Connection Method**: HTTP API (`http://{server}/api.asp`)
**Authentication**: Token-based authentication system
**Key Capabilities**:
- Case/bug retrieval with full event history
- Status tracking (Opened, Resolved, Closed, Reactivated)
- Release note extraction from case events
- Zendesk ticket number linking
**API Endpoints Used**:
- `logon` - Authentication
- Case queries for status and release notes
- Event history parsing for status changes
### Cloud Storage Integration
#### AWS S3 Client (`S3Client.cs`)
```csharp
public class s3Client
{
IAmazonS3 _s3;
s3Config _config;
// Uses AWS SDK for .NET
// Supports file upload with progress tracking
// Integrates with CloudFront for CDN delivery
}
```
**Configuration**:
- Access Key, Secret Key, Region (us-east-2)
- Bucket name and CloudFront domain
- Support for file compression and cleanup
### Zendesk Integration
#### Zendesk Client (`ZendeskClient.cs`)
```csharp
public class ZendeskClient
{
ZendeskApi _zd;
zdConfig _config;
// Uses ZendeskApi_v2 library
// Supports help center article updates
// Template-based content replacement
}
```
**Key Features**:
- Article updating with templated content
- Support for multiple locales (default: en-us)
- API key authentication
- Template variables: `{{VERSION}}`, `{{SWURL}}`, `{{PDFURL}}`
## Publishing Workflow
The legacy system implements a comprehensive publishing workflow:
```mermaid
flowchart TD
START[User Selects Package] --> CONFIG[Load Package Config]
CONFIG --> COLLECT[Collect Build Data]
COLLECT --> FOGBUGZ[Query FogBugz for Release Notes]
FOGBUGZ --> GENERATE[Generate Release Notes Document]
GENERATE --> PACKAGE[Package Files for Upload]
PACKAGE --> UPLOAD[Upload to S3]
UPLOAD --> ZENDESK[Update Zendesk Article]
ZENDESK --> UPDATE[Update Package Configuration]
UPDATE --> COMPLETE[Publishing Complete]
subgraph "Document Generation"
GENERATE --> WORD[Use Word Template]
WORD --> PDF[Convert to PDF]
end
subgraph "File Processing"
PACKAGE --> ZIP[Compress if Configured]
ZIP --> DELETE[Delete Old Versions]
end
```
### Release Notes Generation
**Technology**: Microsoft Office Interop (Word automation)
**Process**:
1. Load DOCX template from configured path
2. Replace template variables with build data
3. Include FogBugz release notes from case events
4. Generate final document output
**Template Variables**:
- Version information from build numbers
- Release notes from FogBugz case events
- Build dates and project information
## Configuration Options
### Software Package Configuration
Each package supports the following options:
- **Project Mapping**: Links to specific CC.NET projects
- **Version Tracking**: Maintains published version history
- **File Processing**: Compression and cleanup options
- **Cloud Storage**: S3 bucket and path configuration
- **Help Center**: Zendesk article ID and template text
- **Release Notes**: Word template path and generation settings
### System-Wide Settings
- **Build Root**: Base directory for build artifacts
- **Local Publish Root**: Staging directory for local processing
- **External Service Credentials**: Stored in configuration XML
## Key Implementation Patterns
### Configuration Management
- XML serialization for persistent configuration
- Automatic deserialization on application startup
- Support for multiple software package definitions
### Error Handling
- Global exception handling in main application thread
- User-friendly error dialogs with stack trace details
- Logging integration for debugging
### UI Architecture
- Windows Forms with custom controls
- Data binding for project and build information
- Progress tracking for long-running operations
### External Service Abstraction
- Wrapper classes for each external integration
- Configuration-driven service connections
- Token and credential management
## Security Considerations
**⚠️ Security Issues Identified**:
1. **Hardcoded Credentials**: API keys and credentials are stored in plaintext in source code files:
- AWS credentials in `S3Client.cs:19-20`
- Zendesk credentials in `ZendeskClient.cs:18-19`
- FogBugz token in `FogbugzClient.cs:14`
2. **Configuration File Exposure**: `Configuration.xml` contains sensitive information in plaintext
3. **No Credential Rotation**: Static credentials without rotation mechanisms
## Recommendations for Modern Implementation
### Architecture Migration
1. **Service-Oriented**: Migrate from monolithic WinForms to microservices
2. **Web-Based UI**: Replace WinForms with modern web interface
3. **Container-Based**: Dockerize services for deployment flexibility
### Security Improvements
1. **Secrets Management**: Implement proper secrets management (Azure Key Vault, AWS Secrets Manager)
2. **OAuth/OIDC**: Replace API keys with modern authentication
3. **Environment-Based Config**: Use environment variables for sensitive data
### Technology Modernization
1. **.NET Core/8**: Upgrade from .NET Framework
2. **Entity Framework**: Replace manual XML configuration with database
3. **Background Jobs**: Use Hangfire or similar for async processing
4. **SignalR**: Add real-time updates for build status
## Data Migration Strategy
### Configuration Data
- **Source**: `Configuration.xml` with hardcoded package definitions
- **Target**: PostgreSQL database with `Packages`, `StorageProviders`, `HelpCenterProviders` tables
- **Migration**: Parse XML and insert into normalized database schema
### Historical Data
- **Build History**: Maintain existing CC.NET integration patterns
- **FogBugz Data**: Preserve case linking and release note associations
- **Publishing History**: Create audit trail for package publications
## Questions for Implementation Phase
1. **CC.NET Version**: What version of CruiseControl.NET is currently deployed?
2. **FogBugz API**: Are there any API rate limits or authentication changes needed?
3. **Document Templates**: Should Word template processing be migrated to a different solution?
4. **Legacy Data**: How much historical build and publication data should be migrated?
5. **Deployment Environment**: Will the new system run on the same infrastructure or be cloud-native?

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,180 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\DTS\\Code\\CCNetLogReader\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|d:\\dts\\code\\ccnetlogreader\\ccnetlogreader\\publish.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\publish.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetwrapper\\projectlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|solutionrelative:ccnetwrapper\\projectlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\s3client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\s3client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetwrapper\\buildlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|solutionrelative:ccnetwrapper\\buildlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\releasenotes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\releasenotes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\configuration.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\configuration.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{3761CF6E-7A65-4D28-9C02-0AFD08093876}|ZendeskTickets\\ZendeskTickets.csproj|D:\\DTS\\Code\\CCNetLogReader\\zendesktickets\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{3761CF6E-7A65-4D28-9C02-0AFD08093876}|ZendeskTickets\\ZendeskTickets.csproj|solutionrelative:zendesktickets\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 280,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "MainWindow.cs [Design]",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\MainWindow.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs [Design]",
"RelativeToolTip": "CCNetLogReader\\MainWindow.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:55:12.163Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Publish.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Publish.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\Publish.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Publish.cs",
"RelativeToolTip": "CCNetLogReader\\Publish.cs",
"ViewState": "AgIAABEBAAAAAAAAAAAkwCMBAAAUAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-13T17:32:32.561Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "S3Client.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\S3Client.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\S3Client.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\S3Client.cs",
"RelativeToolTip": "CCNetLogReader\\S3Client.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T14:19:49.212Z"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "MainWindow.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\MainWindow.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs",
"RelativeToolTip": "CCNetLogReader\\MainWindow.cs",
"ViewState": "AgIAAJgAAAAAAAAAAAD4v6YAAAAQAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:53:07.003Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "BuildLog.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\BuildLog.cs",
"RelativeDocumentMoniker": "CCNetWrapper\\BuildLog.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\BuildLog.cs",
"RelativeToolTip": "CCNetWrapper\\BuildLog.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAswAsAAAAWAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:52:29.728Z"
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "ReleaseNotes.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\ReleaseNotes.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\ReleaseNotes.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\ReleaseNotes.cs",
"RelativeToolTip": "CCNetLogReader\\ReleaseNotes.cs",
"ViewState": "AgIAAIkAAAAAAAAAAAAewJ8AAABTAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:51:09.515Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "ProjectLog.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\ProjectLog.cs",
"RelativeDocumentMoniker": "CCNetWrapper\\ProjectLog.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\ProjectLog.cs",
"RelativeToolTip": "CCNetWrapper\\ProjectLog.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABsAAAAMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:48:04.268Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "App.config",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\App.config",
"RelativeDocumentMoniker": "CCNetLogReader\\App.config",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\App.config",
"RelativeToolTip": "CCNetLogReader\\App.config",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAnAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2025-06-24T13:32:33.819Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "Configuration.xml",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Configuration.xml",
"RelativeDocumentMoniker": "CCNetLogReader\\Configuration.xml",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Configuration.xml",
"RelativeToolTip": "CCNetLogReader\\Configuration.xml",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
"WhenOpened": "2025-06-04T17:22:25.219Z"
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "Program.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\ZendeskTickets\\Program.cs",
"RelativeDocumentMoniker": "ZendeskTickets\\Program.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\ZendeskTickets\\Program.cs",
"RelativeToolTip": "ZendeskTickets\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAwAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-16T16:33:34.822Z"
}
]
}
]
}
]
}

View File

@@ -0,0 +1,180 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\DTS\\Code\\CCNetLogReader\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|d:\\dts\\code\\ccnetlogreader\\ccnetlogreader\\publish.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\publish.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetwrapper\\projectlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|solutionrelative:ccnetwrapper\\projectlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\s3client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\s3client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetwrapper\\buildlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}|CCNetWrapper\\CCNetWrapper.csproj|solutionrelative:ccnetwrapper\\buildlog.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\releasenotes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\releasenotes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|D:\\DTS\\Code\\CCNetLogReader\\ccnetlogreader\\configuration.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}|CCNetLogReader\\CCNetLogReader.csproj|solutionrelative:ccnetlogreader\\configuration.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{3761CF6E-7A65-4D28-9C02-0AFD08093876}|ZendeskTickets\\ZendeskTickets.csproj|D:\\DTS\\Code\\CCNetLogReader\\zendesktickets\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{3761CF6E-7A65-4D28-9C02-0AFD08093876}|ZendeskTickets\\ZendeskTickets.csproj|solutionrelative:zendesktickets\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 280,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "MainWindow.cs [Design]",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\MainWindow.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs [Design]",
"RelativeToolTip": "CCNetLogReader\\MainWindow.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:55:12.163Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Publish.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Publish.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\Publish.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Publish.cs",
"RelativeToolTip": "CCNetLogReader\\Publish.cs",
"ViewState": "AgIAABEBAAAAAAAAAAAkwCMBAAAUAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-13T17:32:32.561Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "S3Client.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\S3Client.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\S3Client.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\S3Client.cs",
"RelativeToolTip": "CCNetLogReader\\S3Client.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T14:19:49.212Z"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "MainWindow.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\MainWindow.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\MainWindow.cs",
"RelativeToolTip": "CCNetLogReader\\MainWindow.cs",
"ViewState": "AgIAAJgAAAAAAAAAAAD4v6YAAAAQAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:53:07.003Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "BuildLog.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\BuildLog.cs",
"RelativeDocumentMoniker": "CCNetWrapper\\BuildLog.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\BuildLog.cs",
"RelativeToolTip": "CCNetWrapper\\BuildLog.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAswAsAAAAWAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:52:29.728Z"
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "ReleaseNotes.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\ReleaseNotes.cs",
"RelativeDocumentMoniker": "CCNetLogReader\\ReleaseNotes.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\ReleaseNotes.cs",
"RelativeToolTip": "CCNetLogReader\\ReleaseNotes.cs",
"ViewState": "AgIAAIkAAAAAAAAAAAAewJ8AAABTAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:51:09.515Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "ProjectLog.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\ProjectLog.cs",
"RelativeDocumentMoniker": "CCNetWrapper\\ProjectLog.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetWrapper\\ProjectLog.cs",
"RelativeToolTip": "CCNetWrapper\\ProjectLog.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABsAAAAMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-06-25T12:48:04.268Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "App.config",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\App.config",
"RelativeDocumentMoniker": "CCNetLogReader\\App.config",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\App.config",
"RelativeToolTip": "CCNetLogReader\\App.config",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAnAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2025-06-24T13:32:33.819Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "Configuration.xml",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Configuration.xml",
"RelativeDocumentMoniker": "CCNetLogReader\\Configuration.xml",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\Configuration.xml",
"RelativeToolTip": "CCNetLogReader\\Configuration.xml",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
"WhenOpened": "2025-06-04T17:22:25.219Z"
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "Program.cs",
"DocumentMoniker": "D:\\DTS\\Code\\CCNetLogReader\\ZendeskTickets\\Program.cs",
"RelativeDocumentMoniker": "ZendeskTickets\\Program.cs",
"ToolTip": "D:\\DTS\\Code\\CCNetLogReader\\ZendeskTickets\\Program.cs",
"RelativeToolTip": "ZendeskTickets\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAwAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-16T16:33:34.822Z"
}
]
}
]
}
]
}

View File

@@ -0,0 +1 @@
{"CustomColumnOrderings":{"name":0,"file-path":1,"file-name":2,"neutral-value":3,"neutral-comment":4,"type":5},"ShowValidationErrors":true,"SelectedResourceGroups":["D:\\DTS\\Code\\CCNetLogReader\\CCNetLogReader\\ReleaseNotes.resx"],"VisibleColumnKeys":["name","neutral-value"]}

View File

@@ -0,0 +1 @@
{"RootPath":"D:\\DTS\\Code\\CCNetLogReader\\CCNetControls","ProjectFileName":"CCNetControls.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Class1.cs"},{"SourceFile":"ManuscriptLogin.cs"},{"SourceFile":"ManuscriptLogin.Designer.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.5.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\DTS\\Code\\CCNetLogReader\\CCNetControls\\bin\\Debug\\CCNetControls.dll","OutputItemRelativePath":"CCNetControls.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0E428D2F-849C-4F21-ACDC-6517DB54CC93}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CCNetControls</RootNamespace>
<AssemblyName>CCNetControls</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="ManuscriptLogin.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ManuscriptLogin.Designer.cs">
<DependentUpon>ManuscriptLogin.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ManuscriptLogin.resx">
<DependentUpon>ManuscriptLogin.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CCNetControls
{
public class Class1
{
}
}

View File

@@ -0,0 +1,134 @@
namespace CCNetControls
{
partial class ManuscriptLogin
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.txt_UserName = new System.Windows.Forms.TextBox();
this.txt_Password = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.txt_UserName, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.txt_Password, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.button1, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(477, 87);
this.tableLayoutPanel1.TabIndex = 0;
//
// txt_UserName
//
this.txt_UserName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txt_UserName.Location = new System.Drawing.Point(105, 3);
this.txt_UserName.Name = "txt_UserName";
this.txt_UserName.Size = new System.Drawing.Size(369, 20);
this.txt_UserName.TabIndex = 0;
//
// txt_Password
//
this.txt_Password.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txt_Password.Location = new System.Drawing.Point(105, 29);
this.txt_Password.Name = "txt_Password";
this.txt_Password.Size = new System.Drawing.Size(369, 20);
this.txt_Password.TabIndex = 1;
this.txt_Password.UseSystemPasswordChar = true;
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.button1, 2);
this.button1.Location = new System.Drawing.Point(3, 55);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(471, 23);
this.button1.TabIndex = 2;
this.button1.Text = "Login";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(96, 13);
this.label1.TabIndex = 3;
this.label1.Text = "User Name (email):";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(3, 26);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(56, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Password:";
//
// ManuscriptLogin
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(477, 87);
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "ManuscriptLogin";
this.Text = "ManuscriptLogin";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TextBox txt_UserName;
private System.Windows.Forms.TextBox txt_Password;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Windows.Forms;
namespace CCNetControls
{
public partial class ManuscriptLogin : Form
{
public ManuscriptLogin()
{
InitializeComponent();
}
public event EventHandler<EventArgs> LoginCompleted;
private void button1_Click(object sender, EventArgs e)
{
LoginCompleted.Invoke(new string[] { txt_UserName.Text, txt_Password.Text }, e);
this.Close();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CCNetControls")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("VPG")]
[assembly: AssemblyProduct("CCNetControls")]
[assembly: AssemblyCopyright("Copyright © VPG 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0e428d2f-849c-4f21-acdc-6517db54cc93")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5.2", FrameworkDisplayName = ".NET Framework 4.5.2")]

View File

@@ -0,0 +1,64 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.10.35013.160
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CCNetLogReader", "CCNetLogReader\CCNetLogReader.csproj", "{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FogbugzWrapper", "FogbugzWrapper\FogbugzWrapper.csproj", "{4A6B9D30-DA78-4BFE-B7CD-38774BE0508F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FogbugzLogReader", "FogbugzLogReader\FogbugzLogReader.csproj", "{8991D639-3139-4B43-A33C-7B61FE9C4AFC}"
ProjectSection(ProjectDependencies) = postProject
{4A6B9D30-DA78-4BFE-B7CD-38774BE0508F} = {4A6B9D30-DA78-4BFE-B7CD-38774BE0508F}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CCNetWrapper", "CCNetWrapper\CCNetWrapper.csproj", "{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManuscriptEdit", "ManuscriptEdit\ManuscriptEdit.csproj", "{F9C4A673-6392-4319-9CD4-255A6C0A48C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZendeskTickets", "ZendeskTickets\ZendeskTickets.csproj", "{3761CF6E-7A65-4D28-9C02-0AFD08093876}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CCNetControls", "CCNetControls\CCNetControls.csproj", "{0E428D2F-849C-4F21-ACDC-6517DB54CC93}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}.Release|Any CPU.Build.0 = Release|Any CPU
{4A6B9D30-DA78-4BFE-B7CD-38774BE0508F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A6B9D30-DA78-4BFE-B7CD-38774BE0508F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A6B9D30-DA78-4BFE-B7CD-38774BE0508F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A6B9D30-DA78-4BFE-B7CD-38774BE0508F}.Release|Any CPU.Build.0 = Release|Any CPU
{8991D639-3139-4B43-A33C-7B61FE9C4AFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8991D639-3139-4B43-A33C-7B61FE9C4AFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8991D639-3139-4B43-A33C-7B61FE9C4AFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8991D639-3139-4B43-A33C-7B61FE9C4AFC}.Release|Any CPU.Build.0 = Release|Any CPU
{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E9CAA4F-8D10-4F53-8F3E-ACD0B9BA9441}.Release|Any CPU.Build.0 = Release|Any CPU
{F9C4A673-6392-4319-9CD4-255A6C0A48C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F9C4A673-6392-4319-9CD4-255A6C0A48C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F9C4A673-6392-4319-9CD4-255A6C0A48C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9C4A673-6392-4319-9CD4-255A6C0A48C0}.Release|Any CPU.Build.0 = Release|Any CPU
{3761CF6E-7A65-4D28-9C02-0AFD08093876}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3761CF6E-7A65-4D28-9C02-0AFD08093876}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3761CF6E-7A65-4D28-9C02-0AFD08093876}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3761CF6E-7A65-4D28-9C02-0AFD08093876}.Release|Any CPU.Build.0 = Release|Any CPU
{0E428D2F-849C-4F21-ACDC-6517DB54CC93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E428D2F-849C-4F21-ACDC-6517DB54CC93}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E428D2F-849C-4F21-ACDC-6517DB54CC93}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E428D2F-849C-4F21-ACDC-6517DB54CC93}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DF4CBB89-46D0-42AD-9906-39CC88542F9D}
EndGlobalSection
EndGlobal

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="CCNetLogReader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="CCNetLogReader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<applicationSettings>
<CCNetLogReader.Properties.Settings>
<setting name="ManuscriptServerAddress" serializeAs="String">
<value>manuscript.dts.local</value>
</setting>
</CCNetLogReader.Properties.Settings>
</applicationSettings>
<userSettings>
<CCNetLogReader.Properties.Settings>
<setting name="CCNetServerAddress" serializeAs="String">
<value>jalapeno.dts.local</value>
</setting>
<setting name="ManuscriptToken" serializeAs="String">
<value />
</setting>
</CCNetLogReader.Properties.Settings>
</userSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="application.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>

View File

@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{CC6D8022-D2AA-423A-ABD6-A8C368C5A431}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>CCNetLogReader</RootNamespace>
<AssemblyName>CCNetLogReader</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>5.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
<HintPath>..\packages\AWSSDK.Core.3.7.402.44\lib\net45\AWSSDK.Core.dll</HintPath>
</Reference>
<Reference Include="AWSSDK.S3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
<HintPath>..\packages\AWSSDK.S3.3.7.416.14\lib\net45\AWSSDK.S3.dll</HintPath>
</Reference>
<Reference Include="DocumentFormat.OpenXml, Version=3.3.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\DocumentFormat.OpenXml.3.3.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
<Reference Include="DocumentFormat.OpenXml.Framework, Version=3.3.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\DocumentFormat.OpenXml.Framework.3.3.0\lib\net46\DocumentFormat.OpenXml.Framework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.4\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=9.0.0.4, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.9.0.4\lib\net462\Microsoft.Extensions.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=9.0.0.4, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.4\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging, Version=9.0.0.4, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.9.0.4\lib\net462\Microsoft.Extensions.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=9.0.0.4, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.9.0.4\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Options, Version=9.0.0.4, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Options.9.0.4\lib\net462\Microsoft.Extensions.Options.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Primitives, Version=9.0.0.4, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Primitives.9.0.4\lib\net462\Microsoft.Extensions.Primitives.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Office.Interop.Excel.15.0.4795.1001\lib\net20\Microsoft.Office.Interop.Excel.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Office.Interop.Word.15.0.4797.1004\lib\net20\Microsoft.Office.Interop.Word.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="NetReflector, Version=1.1.2009.1214, Culture=neutral, PublicKeyToken=2f4dd8b32acbcd8e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\NetReflector.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="SharpSevenZip, Version=2.0.22.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SharpSevenZip.2.0.22\lib\net48\SharpSevenZip.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.4\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="ThoughtWorks.CruiseControl.Core">
<HintPath>lib\ThoughtWorks.CruiseControl.Core.dll</HintPath>
</Reference>
<Reference Include="ThoughtWorks.CruiseControl.Remote">
<HintPath>lib\ThoughtWorks.CruiseControl.Remote.dll</HintPath>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="ZendeskApi_v2, Version=3.12.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ZendeskApi_v2.3.12.4\lib\net462\ZendeskApi_v2.dll</HintPath>
</Reference>
<Reference Include="ZstdSharp, Version=0.8.4.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
<HintPath>..\packages\ZstdSharp.Port.0.8.4\lib\net462\ZstdSharp.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Configuration.cs" />
<Compile Include="Logging.cs" />
<Compile Include="MainWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainWindow.Designer.cs">
<DependentUpon>MainWindow.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Publish.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Publish.Designer.cs">
<DependentUpon>Publish.cs</DependentUpon>
</Compile>
<Compile Include="ReleaseNotes.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ReleaseNotes.Designer.cs">
<DependentUpon>ReleaseNotes.cs</DependentUpon>
</Compile>
<Compile Include="S3Client.cs" />
<Compile Include="ServerBuild.cs" />
<Compile Include="ZendeskClient.cs" />
<EmbeddedResource Include="MainWindow.resx">
<DependentUpon>MainWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Publish.resx">
<DependentUpon>Publish.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ReleaseNotes.resx">
<DependentUpon>ReleaseNotes.cs</DependentUpon>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="5.ico" />
<Content Include="Configuration.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CCNetControls\CCNetControls.csproj">
<Project>{0e428d2f-849c-4f21-acdc-6517db54cc93}</Project>
<Name>CCNetControls</Name>
</ProjectReference>
<ProjectReference Include="..\CCNetWrapper\CCNetWrapper.csproj">
<Project>{2e9caa4f-8d10-4f53-8f3e-acd0b9ba9441}</Project>
<Name>CCNetWrapper</Name>
</ProjectReference>
<ProjectReference Include="..\FogbugzWrapper\FogbugzWrapper.csproj">
<Project>{4a6b9d30-da78-4bfe-b7cd-38774be0508f}</Project>
<Name>FogbugzWrapper</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Analyzer Include="..\packages\AWSSDK.S3.3.7.416.14\analyzers\dotnet\cs\AWSSDK.S3.CodeAnalysis.dll" />
<Analyzer Include="..\packages\AWSSDK.S3.3.7.416.14\analyzers\dotnet\cs\SharedAnalysisCode.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\SharpSevenZip.2.0.22\build\SharpSevenZip.targets" Condition="Exists('..\packages\SharpSevenZip.2.0.22\build\SharpSevenZip.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\SharpSevenZip.2.0.22\build\SharpSevenZip.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SharpSevenZip.2.0.22\build\SharpSevenZip.targets'))" />
</Target>
</Project>

View File

@@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace CCNetLogReader
{
[Serializable]
public class Configuration
{
public class ZendeskConfiguration
{
public string Locale { get; set; } = "en-us";
public string Subdomain { get; set; } = "dtsweb";
public string Username { get; set; }
public string ApiKey { get; set; }
}
public class S3Configuration
{
public string AccessKey { get; set; }
public string SecretKey { get; set; }
public string Region { get; set; }
public string Bucket { get; set; }
public string CloudfrontDomain { get; set; }
}
public class SoftwarePackage
{
public string Name { get; set; }
public string ProjectName { get; set; }
public string PublishedBuild { get; set; }
public DateTime PublishedDate { get; set; }
public string ProjectBuildFolder { get; set; }
//public string LocalPublishFolder { get; set; }
//public string S3PublishFolder { get; set; }
public long ZDArticleID { get; set; }
public string ZDArticleText { get; set; }
public string DeleteOldFiles { get; set; }
public bool ZipContents { get; set; }
public bool DeleteOldPublishedBuilds { get; set; }
public string ReleaseNoteDocxTemplate { get; set; }
}
public string BuildRoot { get; set; } = @"C:\dts\DataPRO Installers\";
public string LocalPublishRoot { get; set; } = @"C:\dts\DataPRO Installers\local\";
public ZendeskConfiguration ZendeskConfig { get; set; }
public S3Configuration S3Config { get; set; }
[XmlArray("SoftwarePackages")]
[XmlArrayItem("SoftwarePackage")]
public List<SoftwarePackage> SoftwarePackages { get; set; }
public Configuration()
{
SoftwarePackages = new List<SoftwarePackage>();
}
public static void Serialize(string file, Configuration opt)
{
XmlSerializer xs
= new XmlSerializer(opt.GetType());
StreamWriter writer = File.CreateText(file);
xs.Serialize(writer, opt);
writer.Flush();
writer.Close();
}
public static Configuration Deserialize(string file)
{
XmlSerializer xs
= new XmlSerializer(
typeof(Configuration));
if (File.Exists(file))
{
StreamReader reader = File.OpenText(file);
Configuration c = (Configuration)xs.Deserialize(reader);
reader.Close();
return c;
}
else { return new Configuration(); }
}
}
}

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BuildRoot>D:\DTS\DataPRO Installers\Builds\DataPRO\DATAPRO_MAINT_4_00</BuildRoot>
<LocalPublishRoot>D:\DTS\SoftwarePublish\LocalPublish\</LocalPublishRoot>
<ZendeskConfig>
<Locale>en-us</Locale>
<Subdomain>dtsweb</Subdomain>
<username>nathan.brown@dtsweb.com</username>
<apikey>WNgdiDNgJGWkwUbDNukh1QrduiV0ugTsvMRKcuTY</apikey>
</ZendeskConfig>
<S3Config>
<AccessKey>AKIA4SZHOEQBTOZHRNVC</AccessKey>
<SecretKey>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</SecretKey>
<Region>us-east-2</Region>
<Bucket>dtssoftware</Bucket>
<CloudfrontDomain>https://d2w2x5ma3ii6fr.cloudfront.net/</CloudfrontDomain>
</S3Config>
<SoftwarePackages>
<SoftwarePackage>
<Name>DataPRO-LTS</Name>
<ProjectName>DATAPRO_MAINT_4_00</ProjectName>
<ProjectBuildFolder>D:\DTS\SoftwarePublish\Builds\DataPRO\DATAPRO_MAINT_4_00</ProjectBuildFolder>
<PublishedBuild>4.0.1205.52239</PublishedBuild>
<PublishedDate>2025-04-16T00:00:00</PublishedDate>
<ZDArticleID>38618912715539</ZDArticleID>
<ZDArticleText>DataPRO LTS is updated to: {{VERSION}}. &lt;br/&gt; Please find the installer available for download here: {{SWURL}}. &lt;br/&gt;Release Notes are available here: {{PDFURL}}</ZDArticleText>
<ZipContents>true</ZipContents>
<DeleteOldPublishedBuilds>true</DeleteOldPublishedBuilds>
<ReleaseNoteDocxTemplate>D:\DTS\SoftwarePublish\PublishTemplate.docx</ReleaseNoteDocxTemplate>
</SoftwarePackage>
<SoftwarePackage>
<Name>DataPRO-Stable</Name>
<ProjectName>DATAPRO_MAINT_4_04</ProjectName>
<ProjectBuildFolder>D:\DTS\SoftwarePublish\Builds\DataPRO\DATAPRO_MAINT_4_04</ProjectBuildFolder>
<PublishedBuild>4.4.305</PublishedBuild>
<PublishedDate>2025-04-16T00:00:00</PublishedDate>
<ZDArticleID>40671808792339</ZDArticleID>
<ZDArticleText>DataPRO Stable is updated to: {{VERSION}}. &lt;br/&gt; Please find the installer available for download here: {{SWURL}}. &lt;br/&gt;Release Notes are available here: {{PDFURL}}</ZDArticleText>
<ZipContents>true</ZipContents>
<DeleteOldPublishedBuilds>true</DeleteOldPublishedBuilds>
<ReleaseNoteDocxTemplate>D:\DTS\SoftwarePublish\PublishTemplate.docx</ReleaseNoteDocxTemplate>
</SoftwarePackage>
<SoftwarePackage>
<Name>DataPRO-Preview</Name>
<ProjectName>DATAPRO_MAINT_4_04</ProjectName>
<ProjectBuildFolder>D:\DTS\SoftwarePublish\Builds\DataPRO\DATAPRO_MAINT_4_04</ProjectBuildFolder>
<PublishedBuild>4.4.305</PublishedBuild>
<PublishedDate>2025-07-09T00:00:00</PublishedDate>
<ZDArticleID>40671808792339</ZDArticleID>
<ZDArticleText>DataPRO Preview is updated to: {{VERSION}}. &lt;br/&gt; Please find the installer available for download here: {{SWURL}}. &lt;br/&gt;Release Notes are available here: {{PDFURL}}</ZDArticleText>
<ZipContents>true</ZipContents>
<DeleteOldPublishedBuilds>true</DeleteOldPublishedBuilds>
<ReleaseNoteDocxTemplate>D:\DTS\SoftwarePublish\PublishTemplate.docx</ReleaseNoteDocxTemplate>
</SoftwarePackage>
</SoftwarePackages>
</Configuration>

View File

@@ -0,0 +1,39 @@
namespace WindowsFormsApp4
{
partial class Form2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Text = "Form2";
}
#endregion
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp4
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace CCNetLogReader
{
public static class Logger
{
public static void Error(string message, string module="")
{
WriteEntry(message, "error", module);
}
public static void Error(Exception ex, string module = "")
{
WriteEntry(ex.Message, "error", module);
}
public static void Warning(string message, string module = "")
{
WriteEntry(message, "warning", module);
}
public static void Info(string message, string module = "")
{
WriteEntry(message, "info", module);
}
private static void WriteEntry(string message, string type, string module = "")
{
string text = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}\t{type}\t{message}";
Trace.WriteLine(text, type);
}
}
}

View File

@@ -0,0 +1,493 @@
namespace CCNetLogReader
{
partial class MainWindow
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow));
this.btn_Connect = new System.Windows.Forms.Button();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.txt_Server = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.btn_Filter = new System.Windows.Forms.Button();
this.ckbx_UpdateFogbugz = new System.Windows.Forms.CheckBox();
this.label4 = new System.Windows.Forms.Label();
this.txt_CommentSearch = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.txt_SearchBuildNames = new System.Windows.Forms.TextBox();
this.txt_Old = new System.Windows.Forms.TextBox();
this.txt_Recent = new System.Windows.Forms.TextBox();
this.btnPublish = new System.Windows.Forms.Button();
this.dgv_Projects = new System.Windows.Forms.DataGridView();
this.dgv_CommitComments = new System.Windows.Forms.DataGridView();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.clearCacheToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.allToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.manuscriptToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.logonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.miscToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.releaseNotesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.publishSelectedBuildToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgv_Projects)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgv_CommitComments)).BeginInit();
this.statusStrip1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// btn_Connect
//
this.btn_Connect.Dock = System.Windows.Forms.DockStyle.Fill;
this.btn_Connect.Location = new System.Drawing.Point(829, 6);
this.btn_Connect.Margin = new System.Windows.Forms.Padding(6);
this.btn_Connect.Name = "btn_Connect";
this.btn_Connect.Size = new System.Drawing.Size(216, 54);
this.btn_Connect.TabIndex = 0;
this.btn_Connect.Text = "Connect";
this.btn_Connect.UseVisualStyleBackColor = true;
this.btn_Connect.Click += new System.EventHandler(this.btn_Connect_Click);
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.dgv_Projects, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.dgv_CommitComments, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.statusStrip1, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 42);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(6);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(1810, 1003);
this.tableLayoutPanel1.TabIndex = 2;
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 5;
this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 2);
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel2.Controls.Add(this.txt_Server, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.btn_Connect, 2, 0);
this.tableLayoutPanel2.Controls.Add(this.btn_Filter, 4, 1);
this.tableLayoutPanel2.Controls.Add(this.ckbx_UpdateFogbugz, 0, 3);
this.tableLayoutPanel2.Controls.Add(this.label4, 2, 3);
this.tableLayoutPanel2.Controls.Add(this.txt_CommentSearch, 3, 3);
this.tableLayoutPanel2.Controls.Add(this.label2, 2, 2);
this.tableLayoutPanel2.Controls.Add(this.label3, 2, 1);
this.tableLayoutPanel2.Controls.Add(this.label5, 0, 1);
this.tableLayoutPanel2.Controls.Add(this.txt_SearchBuildNames, 1, 1);
this.tableLayoutPanel2.Controls.Add(this.txt_Old, 3, 1);
this.tableLayoutPanel2.Controls.Add(this.txt_Recent, 3, 2);
this.tableLayoutPanel2.Controls.Add(this.btnPublish, 4, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(6, 6);
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(6);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 4;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 37F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(1798, 203);
this.tableLayoutPanel2.TabIndex = 2;
//
// txt_Server
//
this.txt_Server.Dock = System.Windows.Forms.DockStyle.Fill;
this.txt_Server.Location = new System.Drawing.Point(249, 6);
this.txt_Server.Margin = new System.Windows.Forms.Padding(6);
this.txt_Server.Name = "txt_Server";
this.txt_Server.Size = new System.Drawing.Size(568, 29);
this.txt_Server.TabIndex = 1;
this.txt_Server.TextChanged += new System.EventHandler(this.txt_Server_TextChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 0);
this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(70, 25);
this.label1.TabIndex = 2;
this.label1.Text = "Server";
//
// btn_Filter
//
this.btn_Filter.Dock = System.Windows.Forms.DockStyle.Fill;
this.btn_Filter.Location = new System.Drawing.Point(1637, 72);
this.btn_Filter.Margin = new System.Windows.Forms.Padding(6);
this.btn_Filter.Name = "btn_Filter";
this.btn_Filter.Size = new System.Drawing.Size(155, 54);
this.btn_Filter.TabIndex = 0;
this.btn_Filter.Text = "Filter Build Number";
this.btn_Filter.UseVisualStyleBackColor = true;
this.btn_Filter.Click += new System.EventHandler(this.btn_Filter_Click);
//
// ckbx_UpdateFogbugz
//
this.ckbx_UpdateFogbugz.AutoSize = true;
this.ckbx_UpdateFogbugz.Enabled = false;
this.ckbx_UpdateFogbugz.Location = new System.Drawing.Point(6, 179);
this.ckbx_UpdateFogbugz.Margin = new System.Windows.Forms.Padding(6);
this.ckbx_UpdateFogbugz.Name = "ckbx_UpdateFogbugz";
this.ckbx_UpdateFogbugz.Size = new System.Drawing.Size(231, 29);
this.ckbx_UpdateFogbugz.TabIndex = 5;
this.ckbx_UpdateFogbugz.Text = "Update FogBugz Data";
this.ckbx_UpdateFogbugz.UseVisualStyleBackColor = true;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(829, 173);
this.label4.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(75, 25);
this.label4.TabIndex = 2;
this.label4.Text = "Search";
//
// txt_CommentSearch
//
this.txt_CommentSearch.Dock = System.Windows.Forms.DockStyle.Fill;
this.txt_CommentSearch.Location = new System.Drawing.Point(1057, 179);
this.txt_CommentSearch.Margin = new System.Windows.Forms.Padding(6);
this.txt_CommentSearch.Name = "txt_CommentSearch";
this.txt_CommentSearch.Size = new System.Drawing.Size(568, 29);
this.txt_CommentSearch.TabIndex = 3;
this.txt_CommentSearch.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(829, 132);
this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(101, 25);
this.label2.TabIndex = 2;
this.label2.Text = "Minor End";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(829, 66);
this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(107, 25);
this.label3.TabIndex = 2;
this.label3.Text = "Minor Start";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(6, 66);
this.label5.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(190, 25);
this.label5.TabIndex = 2;
this.label5.Text = "Search Build Names";
//
// txt_SearchBuildNames
//
this.txt_SearchBuildNames.Dock = System.Windows.Forms.DockStyle.Fill;
this.txt_SearchBuildNames.Location = new System.Drawing.Point(249, 72);
this.txt_SearchBuildNames.Margin = new System.Windows.Forms.Padding(6);
this.txt_SearchBuildNames.Name = "txt_SearchBuildNames";
this.txt_SearchBuildNames.Size = new System.Drawing.Size(568, 29);
this.txt_SearchBuildNames.TabIndex = 4;
this.txt_SearchBuildNames.TextChanged += new System.EventHandler(this.txt_SearchBuildNames_TextChanged);
//
// txt_Old
//
this.txt_Old.Dock = System.Windows.Forms.DockStyle.Fill;
this.txt_Old.Location = new System.Drawing.Point(1057, 72);
this.txt_Old.Margin = new System.Windows.Forms.Padding(6);
this.txt_Old.Name = "txt_Old";
this.txt_Old.Size = new System.Drawing.Size(568, 29);
this.txt_Old.TabIndex = 1;
//
// txt_Recent
//
this.txt_Recent.Dock = System.Windows.Forms.DockStyle.Fill;
this.txt_Recent.Location = new System.Drawing.Point(1057, 138);
this.txt_Recent.Margin = new System.Windows.Forms.Padding(6);
this.txt_Recent.Name = "txt_Recent";
this.txt_Recent.Size = new System.Drawing.Size(568, 29);
this.txt_Recent.TabIndex = 1;
//
// btnPublish
//
this.btnPublish.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnPublish.Enabled = false;
this.btnPublish.Location = new System.Drawing.Point(1634, 3);
this.btnPublish.Name = "btnPublish";
this.btnPublish.Size = new System.Drawing.Size(161, 60);
this.btnPublish.TabIndex = 6;
this.btnPublish.Text = "Publish";
this.btnPublish.UseVisualStyleBackColor = true;
this.btnPublish.Click += new System.EventHandler(this.btnPublish_Click);
//
// dgv_Projects
//
this.dgv_Projects.AllowUserToAddRows = false;
this.dgv_Projects.AllowUserToDeleteRows = false;
this.dgv_Projects.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgv_Projects.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgv_Projects.Location = new System.Drawing.Point(6, 221);
this.dgv_Projects.Margin = new System.Windows.Forms.Padding(6);
this.dgv_Projects.Name = "dgv_Projects";
this.dgv_Projects.ReadOnly = true;
this.dgv_Projects.RowHeadersVisible = false;
this.dgv_Projects.RowHeadersWidth = 51;
this.dgv_Projects.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgv_Projects.Size = new System.Drawing.Size(893, 736);
this.dgv_Projects.TabIndex = 3;
this.dgv_Projects.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_Projects_CellContentClick);
this.dgv_Projects.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgv_CellStyles);
this.dgv_Projects.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_CellMouseClick);
this.dgv_Projects.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_CellMouseDoubleClick);
//
// dgv_CommitComments
//
this.dgv_CommitComments.AllowUserToAddRows = false;
this.dgv_CommitComments.AllowUserToDeleteRows = false;
this.dgv_CommitComments.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgv_CommitComments.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgv_CommitComments.Location = new System.Drawing.Point(911, 221);
this.dgv_CommitComments.Margin = new System.Windows.Forms.Padding(6);
this.dgv_CommitComments.Name = "dgv_CommitComments";
this.dgv_CommitComments.ReadOnly = true;
this.dgv_CommitComments.RowHeadersVisible = false;
this.dgv_CommitComments.RowHeadersWidth = 51;
this.dgv_CommitComments.Size = new System.Drawing.Size(893, 736);
this.dgv_CommitComments.TabIndex = 4;
this.dgv_CommitComments.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_CommitComments_CellClick);
this.dgv_CommitComments.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView2_CellDoubleClick);
this.dgv_CommitComments.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgv_CellStyles);
//
// statusStrip1
//
this.tableLayoutPanel1.SetColumnSpan(this.statusStrip1, 2);
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripProgressBar1});
this.statusStrip1.Location = new System.Drawing.Point(0, 963);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 26, 0);
this.statusStrip1.Size = new System.Drawing.Size(1810, 40);
this.statusStrip1.TabIndex = 5;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Size = new System.Drawing.Size(183, 30);
//
// menuStrip1
//
this.menuStrip1.GripMargin = new System.Windows.Forms.Padding(2, 2, 0, 2);
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.manuscriptToolStripMenuItem,
this.miscToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(7, 4, 0, 4);
this.menuStrip1.Size = new System.Drawing.Size(1810, 42);
this.menuStrip1.TabIndex = 3;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.clearCacheToolStripMenuItem,
this.toolStripSeparator1,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(62, 34);
this.fileToolStripMenuItem.Text = "File";
//
// clearCacheToolStripMenuItem
//
this.clearCacheToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.projectToolStripMenuItem,
this.allToolStripMenuItem});
this.clearCacheToolStripMenuItem.Name = "clearCacheToolStripMenuItem";
this.clearCacheToolStripMenuItem.Size = new System.Drawing.Size(241, 40);
this.clearCacheToolStripMenuItem.Text = "Clear Cache";
//
// projectToolStripMenuItem
//
this.projectToolStripMenuItem.Name = "projectToolStripMenuItem";
this.projectToolStripMenuItem.Size = new System.Drawing.Size(195, 40);
this.projectToolStripMenuItem.Text = "Project";
this.projectToolStripMenuItem.Click += new System.EventHandler(this.projectToolStripMenuItem_Click);
//
// allToolStripMenuItem
//
this.allToolStripMenuItem.Name = "allToolStripMenuItem";
this.allToolStripMenuItem.Size = new System.Drawing.Size(195, 40);
this.allToolStripMenuItem.Text = "All";
this.allToolStripMenuItem.Click += new System.EventHandler(this.allToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(238, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(241, 40);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
// manuscriptToolStripMenuItem
//
this.manuscriptToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.logonToolStripMenuItem});
this.manuscriptToolStripMenuItem.Name = "manuscriptToolStripMenuItem";
this.manuscriptToolStripMenuItem.Size = new System.Drawing.Size(135, 34);
this.manuscriptToolStripMenuItem.Text = "Manuscript";
//
// logonToolStripMenuItem
//
this.logonToolStripMenuItem.Name = "logonToolStripMenuItem";
this.logonToolStripMenuItem.Size = new System.Drawing.Size(204, 40);
this.logonToolStripMenuItem.Text = "Logon...";
this.logonToolStripMenuItem.Click += new System.EventHandler(this.logonToolStripMenuItem_Click);
//
// miscToolStripMenuItem
//
this.miscToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.releaseNotesToolStripMenuItem,
this.publishSelectedBuildToolStripMenuItem});
this.miscToolStripMenuItem.Name = "miscToolStripMenuItem";
this.miscToolStripMenuItem.Size = new System.Drawing.Size(79, 34);
this.miscToolStripMenuItem.Text = "Misc.";
//
// releaseNotesToolStripMenuItem
//
this.releaseNotesToolStripMenuItem.Name = "releaseNotesToolStripMenuItem";
this.releaseNotesToolStripMenuItem.Size = new System.Drawing.Size(334, 40);
this.releaseNotesToolStripMenuItem.Text = "Release Notes...";
this.releaseNotesToolStripMenuItem.Click += new System.EventHandler(this.releaseNotesToolStripMenuItem_Click);
//
// publishSelectedBuildToolStripMenuItem
//
this.publishSelectedBuildToolStripMenuItem.Name = "publishSelectedBuildToolStripMenuItem";
this.publishSelectedBuildToolStripMenuItem.Size = new System.Drawing.Size(334, 40);
this.publishSelectedBuildToolStripMenuItem.Text = "Publish Selected Build";
this.publishSelectedBuildToolStripMenuItem.Click += new System.EventHandler(this.publishSelectedBuildToolStripMenuItem_Click);
//
// MainWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1810, 1045);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(6);
this.Name = "MainWindow";
this.Text = "CCNetLogReader";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainWindow_FormClosing);
this.Load += new System.EventHandler(this.MainWindow_Load);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dgv_Projects)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgv_CommitComments)).EndInit();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btn_Connect;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.TextBox txt_Server;
private System.Windows.Forms.DataGridView dgv_Projects;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txt_Old;
private System.Windows.Forms.TextBox txt_Recent;
private System.Windows.Forms.Button btn_Filter;
private System.Windows.Forms.DataGridView dgv_CommitComments;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txt_CommentSearch;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox txt_SearchBuildNames;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem clearCacheToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem projectToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem allToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
private System.Windows.Forms.CheckBox ckbx_UpdateFogbugz;
private System.Windows.Forms.ToolStripMenuItem miscToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem releaseNotesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem manuscriptToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem logonToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem publishSelectedBuildToolStripMenuItem;
private System.Windows.Forms.Button btnPublish;
}
}

View File

@@ -0,0 +1,610 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using ThoughtWorks.CruiseControl.Remote;
using SharpSevenZip;
using System.Text;
//using DocumentFormat.OpenXml.Wordprocessing;
namespace CCNetLogReader
{
public partial class MainWindow : Form
{
Configuration configuration = new Configuration();
public static string PROJECT_LOG_DIR { get; } = "Projects\\";
private CCNetWrapper.ProjectLog _projectLog = new CCNetWrapper.ProjectLog();
private static object PROJECT_LOG_LOCK = new object();
private List<string> _buildNames;
public string _projName { get; private set; }
public string _versionNumber { get; private set; }
private const string BUILDNAME_PRE_VERSION_STR = "build";
private string _ipAddressOrHostNameOfCCServer;
private string _managerAddress;
private CruiseServerClientFactory _cruiseServerClientFactory;
private static long _progTotal, _progCurrent;
private FogbugzWrapper.FogbugzClient _fogbugzClient;
public List<ServerBuild> _serverBuilds = new List<ServerBuild>();
public MainWindow()
{
InitializeComponent();
}
private void MainWindow_Load(object sender, EventArgs e)
{
if (!Directory.Exists($"{PROJECT_LOG_DIR}"))
{
Directory.CreateDirectory($"{PROJECT_LOG_DIR}");
}
var configfilename = Path.Combine(Application.StartupPath, "Configuration.xml");
configuration = Configuration.Deserialize(configfilename);
txt_Server.Text = Properties.Settings.Default.CCNetServerAddress;
ConnectToServer();
if (!string.IsNullOrEmpty(Properties.Settings.Default.ManuscriptToken))
{
_fogbugzClient = new FogbugzWrapper.FogbugzClient($@"http://{Properties.Settings.Default.ManuscriptServerAddress}/api.asp?", Properties.Settings.Default.ManuscriptToken);
if (_fogbugzClient.IsLoggedIn())
{
ckbx_UpdateFogbugz.Enabled = true;
}
}
//Configuration.Serialize(configfilename, configuration);
//dgv_Projects.Rows
// .Cast<DataGridViewRow>()
// .Where(r => (r.Cells["PublishedDate"].Value ?? "").ToString() != "")
// .First().Selected = true;
}
private void btn_Connect_Click(object sender, EventArgs e)
{
ConnectToServer();
}
private void ConnectToServer()
{
_projectLog = new CCNetWrapper.ProjectLog();
UpdateFogBugz();
_projName = string.Empty;
_buildNames = new List<string>();
_serverBuilds = new List<ServerBuild>();
if (string.IsNullOrEmpty(txt_Server.Text)) { return; }
_ipAddressOrHostNameOfCCServer = txt_Server.Text; // Complete this value
//var urlAddress = $"http://{_ipAddressOrHostNameOfCCServer}/ccnet/";
_managerAddress = $"tcp://{_ipAddressOrHostNameOfCCServer}:21234/CruiseManager.rem";
_cruiseServerClientFactory = new CruiseServerClientFactory();
DGVDoubleBuffer(dgv_Projects);
DGVDoubleBuffer(dgv_CommitComments);
using (var client = _cruiseServerClientFactory.GenerateRemotingClient(_managerAddress, _ipAddressOrHostNameOfCCServer))
{
//using (var sw = new StreamWriter("datapro.csv", true))
//{
var projectStatuses = client.GetProjectStatus().ToList();
projectStatuses.Sort((x, y) => x.Name.CompareTo(y.Name));
var uniqueBuilds = new List<string>();
Parallel.ForEach(projectStatuses, projectStatus =>
{
DateTime? Published = null;
if (configuration.SoftwarePackages.Any(s => s.ProjectName == projectStatus.Name))
{
var sp = configuration.SoftwarePackages.First(s => s.ProjectName == projectStatus.Name);
Published = sp.PublishedDate;
}
//dataGridView1.Rows.Add(new object[] { projectStatus.Name, projectStatus.BuildStatus, projectStatus.LastSuccessfulBuildLabel, projectStatus.LastBuildDate });
_serverBuilds.Add(new ServerBuild(projectStatus.Name,
projectStatus.BuildStatus,
projectStatus.LastSuccessfulBuildLabel,
projectStatus.LastBuildDate,
Published
));
_projName = projectStatus.Name;
if (_projName.Contains("DATAPRO"))
{
try
{
_buildNames = client.GetBuildNames(_projName).ToList()
.Where(x => x.Contains(BUILDNAME_PRE_VERSION_STR)).ToList();
}
catch { return; }
}
//Application.DoEvents();
});
UpdateBuildLogUI();
}
}
private int GetMinorVersionFromBuildName(string buildName)
{
var buildNameArray = buildName.Split('.');
if (buildNameArray.Count() < 3) { return 0; }
var rv = int.Parse(buildNameArray[3]);
return rv;
}
private void btn_Filter_Click(object sender, EventArgs e)
{
UpdateProjectLogUI(false);
}
private void UpdateBuildLogUI()
{
dgv_Projects.DataSource = null;
_serverBuilds.Sort((x, y) => string.CompareOrdinal(x?.ProjectName, y?.ProjectName));
dgv_Projects.DataSource = _serverBuilds.Where(x => x != null ? x.ProjectName.ToLower().Contains(txt_SearchBuildNames.Text.ToLower()) : false).ToList();
//dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgv_Projects.Columns["ProjectName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
private void UpdateProjectLogUI(bool update)
{
if (update)
{
UpdateChangeLog();
UpdateFogBugz();
}
dgv_CommitComments.DataSource = null;
//if(int.Parse(build.Split('.')[2]) >recentMinor || int.Parse(build.Split('.')[2]) < oldMinor){ continue; }
dgv_CommitComments.DataSource = _projectLog.BuildLogs.Where(x => SearchAndFilter(x)).ToList();
//dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgv_CommitComments.Columns["Comment"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgv_CommitComments.Columns["ReleaseNote"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgv_CommitComments.Columns["ProjectName"].Visible = false;
}
private bool SearchAndFilter(CCNetWrapper.BuildLog buildLog)
{
return (buildLog.Comment.ToLower().Contains(txt_CommentSearch.Text.ToLower()) ||
buildLog.ReleaseNote.ToLower().Contains(txt_CommentSearch.Text.ToLower()) ||
buildLog.Fogbugz.ToLower().Contains(txt_CommentSearch.Text.ToLower()) ||
buildLog.FBStatus.ToString().ToLower().Contains(txt_CommentSearch.Text.ToLower()) ||
buildLog.User.ToLower().Contains(txt_CommentSearch.Text.ToLower())
)
&& buildLog.GetMinorBuildNumber() <= int.Parse(txt_Recent.Text)
&& buildLog.GetMinorBuildNumber() >= int.Parse(txt_Old.Text);
}
public void UpdateFogBugz(bool forceUpdate = false)
{
if (ckbx_UpdateFogbugz.Checked || forceUpdate)
{
this.Cursor = Cursors.WaitCursor;
ManualResetEvent mre = new ManualResetEvent(false);
_progCurrent = 0;
UpdateProgress();
BeginInvoke(new MethodInvoker(delegate ()
{
_projectLog.SetFBClient(_fogbugzClient, ref _progTotal, ref _progCurrent);
mre.Set();
}));
while (!mre.WaitOne(100, false))
{
Application.DoEvents();
toolStripProgressBar1.Value = (int)(Progress * 100.0);
//UpdateProgress();
}
SerializeObject(_projectLog, $"{PROJECT_LOG_DIR}{_projName}.xml");
this.Cursor = Cursors.Default;
}
}
public void UpdateChangeLog()
{
this.Cursor = Cursors.WaitCursor;
dgv_CommitComments.DataSource = null;
int recentMinor = 0;
int oldMinor = 0;
if (File.Exists($"{PROJECT_LOG_DIR}{_projName}.xml"))
{
_projectLog = DeSerializeObject<CCNetWrapper.ProjectLog>($"{PROJECT_LOG_DIR}{_projName}.xml");
}
else
{
_projectLog = new CCNetWrapper.ProjectLog();
}
if (string.IsNullOrEmpty(_projName)
|| !int.TryParse(txt_Recent.Text, out recentMinor)
|| !int.TryParse(txt_Old.Text, out oldMinor)
|| recentMinor <= oldMinor
) { return; }
var existingBuildNumbers = _projectLog.BuildLogs.Select(x => x.BuildNumber).ToList();
//var recentBuildNumbers = _buildNames.ToDictionary(x => $"{x.Split('.')[1]}.{x.Split('.')[2]}.{x.Split('.')[3]}"+ x.Split('.')[4].ToLower()=="xml" ? "": $".{x.Split('.')[4]}", x=>x);
var recentBuildNumbers = new Dictionary<string, string>();
foreach (var bn in _buildNames)
{
var buildNumber = bn.Substring(bn.IndexOf('.') + 1, bn.LastIndexOf('.') - 1 - bn.IndexOf('.'));
recentBuildNumbers[buildNumber] = bn;
}
var buildNamesLimited = recentBuildNumbers.Where(x => !existingBuildNumbers.Contains(x.Key)).ToDictionary(x => x.Key, x => x.Value);
if (buildNamesLimited.Any())
{
using (var client = _cruiseServerClientFactory.GenerateRemotingClient(_managerAddress, _ipAddressOrHostNameOfCCServer))
{
_progTotal = buildNamesLimited.Count;
_progCurrent = 0;
Parallel.ForEach(buildNamesLimited.Values, bn =>
{
var log = string.Empty;
try
{
log = client.GetLog(_projName, bn);
}
catch { return; }
XmlDocument doc = new XmlDocument();
doc.LoadXml(log);
var topNode = doc.SelectSingleNode("cruisecontrol");
if (topNode != null)
{
string build = string.Empty;
string comment = string.Empty;
string user = string.Empty;
string date = string.Empty;
string fogbugz = string.Empty;
List<string> modifiedFiles = new List<string>();
if (null != topNode.SelectSingleNode("modifications") && topNode.SelectSingleNode("modifications").HasChildNodes)
{
comment = topNode.SelectSingleNode("modifications").FirstChild.SelectSingleNode("comment").InnerText.Replace(Environment.NewLine, ";");
foreach (Match m in Regex.Matches(comment, @"\d+"))
{
if (comment.StartsWith(m.Value)
|| (comment.Contains("fb") && (comment.IndexOf("fb") + 2 == comment.IndexOf(m.Value) || comment.IndexOf("fb") + 3 == comment.IndexOf(m.Value)))
|| (comment.Contains("FB") && (comment.IndexOf("FB") + 2 == comment.IndexOf(m.Value) || comment.IndexOf("FB") + 3 == comment.IndexOf(m.Value)))
|| (comment.Contains("asp?") && (comment.IndexOf("asp?") + 4 == comment.IndexOf(m.Value)))
|| (comment.Contains("http://manuscript") && comment.IndexOf("cases/") + 6 == comment.IndexOf(m.Value))
)
{
fogbugz = m.Value; continue;
}
}
//if (string.IsNullOrEmpty(comment)) { return; }
user = topNode.SelectSingleNode("modifications").FirstChild.SelectSingleNode("user").InnerText;
date = topNode.SelectSingleNode("modifications").FirstChild.SelectSingleNode("date").InnerText;
foreach (XmlNode node in topNode.SelectSingleNode("modifications").SelectNodes("modification"))
{
modifiedFiles.Add($"{node.SelectSingleNode("project").InnerText}/{node.SelectSingleNode("filename").InnerText}");
}
}
else { return; }
if (null != topNode.SelectSingleNode("integrationProperties"))
{
build = topNode.SelectSingleNode("integrationProperties").SelectSingleNode("CCNetLabel").InnerText;
}
var bl = new CCNetWrapper.BuildLog(_projName, build, comment, user, date, fogbugz, modifiedFiles);
Interlocked.Increment(ref _progCurrent);
UpdateProgress();
lock (PROJECT_LOG_LOCK)
{
_projectLog.BuildLogs.Add(bl);
Application.DoEvents();
}
}
});
_projectLog.SortByMinorBuild();
SerializeObject(_projectLog, $"{PROJECT_LOG_DIR}{_projName}.xml");
}
}
this.Cursor = Cursors.Default;
}
public void UpdateProgress()
{
BeginInvoke(new MethodInvoker(delegate
{
toolStripProgressBar1.Value = (int)(Progress * 100.0);
}));
}
public double Progress
{
get
{
if (_progTotal == 0L)
{
return 0.0D;
}
return (double)_progCurrent / _progTotal;
}
}
private void DGVDoubleBuffer(DataGridView dgv)
{
Type dgvType = dgv.GetType();
System.Reflection.PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
pi.SetValue(dgv, true, null);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
UpdateProjectLogUI(false);
}
private void txt_SearchBuildNames_TextChanged(object sender, EventArgs e)
{
UpdateBuildLogUI();
}
public void SerializeObjectProtobuf<T>(T serializableObject, string fileName)
{
}
/// <summary>
/// Serializes an object.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="serializableObject"></param>
/// <param name="fileName"></param>
public void SerializeObject<T>(T serializableObject, string fileName)
{
if (serializableObject == null) { return; }
ManualResetEvent mre = new ManualResetEvent(false);
_progCurrent = 0;
_progTotal = 45 * 100;
BeginInvoke(new MethodInvoker(delegate ()
{
try
{
XmlDocument xmlDocument = new XmlDocument();
XmlSerializer serializer = new XmlSerializer(serializableObject.GetType());
using (MemoryStream stream = new MemoryStream())
{
serializer.Serialize(stream, serializableObject);
stream.Position = 0;
xmlDocument.Load(stream);
xmlDocument.Save(fileName);
}
}
catch (Exception ex)
{
//Log exception here
}
mre.Set();
}));
while (!mre.WaitOne(100, false))
{
_progCurrent++;
UpdateProgress();
Application.DoEvents();
}
}
/// <summary>
/// Deserializes an xml file into an object list
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="fileName"></param>
/// <returns></returns>
public T DeSerializeObject<T>(string fileName)
{
if (string.IsNullOrEmpty(fileName)) { return default(T); }
T objectOut = default(T);
ManualResetEvent mre = new ManualResetEvent(false);
_progCurrent = 0;
_progTotal = 45 * 100;
BeginInvoke(new MethodInvoker(delegate ()
{
try
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(fileName);
string xmlString = xmlDocument.OuterXml;
using (StringReader read = new StringReader(xmlString))
{
Type outType = typeof(T);
XmlSerializer serializer = new XmlSerializer(outType);
using (XmlReader reader = new XmlTextReader(read))
{
objectOut = (T)serializer.Deserialize(reader);
}
}
}
catch (Exception)
{
//Log exception here
}
mre.Set();
}));
while (!mre.WaitOne(100, false))
{
_progCurrent++;
UpdateProgress();
Application.DoEvents();
}
return objectOut;
}
private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.Save();
}
private void txt_Server_TextChanged(object sender, EventArgs e)
{
Properties.Settings.Default.CCNetServerAddress = txt_Server.Text;
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void projectToolStripMenuItem_Click(object sender, EventArgs e)
{
if (File.Exists($"{PROJECT_LOG_DIR}{_projName}.xml"))
{
File.Delete($"{PROJECT_LOG_DIR}{_projName}.xml");
}
UpdateProjectLogUI(true);
}
private void allToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (string file in Directory.EnumerateFiles($"{PROJECT_LOG_DIR}", "*.xml").ToList())
{
File.Delete(file);
}
}
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex == -1) { return; }
(sender as DataGridView).Enabled = false;
_projName = dgv_Projects.Rows[e.RowIndex].Cells["ProjectName"].Value.ToString();
using (var client = _cruiseServerClientFactory.GenerateRemotingClient(_managerAddress, _ipAddressOrHostNameOfCCServer))
{
try
{
_buildNames = client.GetBuildNames(_projName).ToList().Where(x => x.Contains(BUILDNAME_PRE_VERSION_STR)).ToList();
}
catch { return; }
if (_buildNames.Any())
{
_buildNames.Sort();
_buildNames.Reverse();
txt_Old.Text = GetMinorVersionFromBuildName(_buildNames.Last()).ToString();
txt_Recent.Text = GetMinorVersionFromBuildName(_buildNames.First()).ToString();
UpdateProjectLogUI(true);
}
}
btnPublish.Enabled = false;
(sender as DataGridView).Enabled = true;
dgv_CommitComments.Rows[0].Selected = true;
}
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
}
private void dgv_CellStyles(object sender, DataGridViewCellFormattingEventArgs e)
{
var dgv = sender as DataGridView;
var bIsFail = false;
if (e.Value is IntegrationStatus buildStatus)
{
switch (buildStatus)
{
case IntegrationStatus.Failure:
case IntegrationStatus.Exception:
case IntegrationStatus.Cancelled:
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Salmon;
break;
default:
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
break;
}
}
else if (e.Value is FogbugzWrapper.FBEvent.FBStatuses fbStatus)
{
switch (fbStatus)
{
case FogbugzWrapper.FBEvent.FBStatuses.Opened:
case FogbugzWrapper.FBEvent.FBStatuses.Reactivated:
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Salmon;
break;
case FogbugzWrapper.FBEvent.FBStatuses.Resolved:
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.PaleGoldenrod;
break;
default:
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
break;
}
}
else if (e.Value is DateTime dt)
{
e.Value = dt.ToString("yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);
}
}
private void releaseNotesToolStripMenuItem_Click(object sender, EventArgs e)
{
var releaseNoteForm = new ReleaseNotes(_serverBuilds);
releaseNoteForm.MainWindowParent = this;
releaseNoteForm.Show();
}
private void logonToolStripMenuItem_Click(object sender, EventArgs e)
{
var manuscriptLogin = new CCNetControls.ManuscriptLogin();
manuscriptLogin.LoginCompleted += ManuscriptLogin_LoginCompleted;
manuscriptLogin.Show();
}
private void ManuscriptLogin_LoginCompleted(object sender, EventArgs e)
{
var output = (string[])sender;
_fogbugzClient = new FogbugzWrapper.FogbugzClient($@"http://{Properties.Settings.Default.ManuscriptServerAddress}/api.asp?", output[0], output[1]);
if(_fogbugzClient.IsLoggedIn())
{
Properties.Settings.Default.ManuscriptToken = _fogbugzClient.Token;
ckbx_UpdateFogbugz.Enabled = true;
}
}
private void publishSelectedBuildToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void dgv_CommitComments_CellClick(object sender, DataGridViewCellEventArgs e)
{
// Enable Publish Button if a config exists
btnPublish.Enabled =
(dgv_Projects.SelectedRows[0].Cells["PublishedDate"].Value != null);
_versionNumber = dgv_CommitComments.Rows[e.RowIndex].Cells["BuildNumber"].Value.ToString();
}
private void btnPublish_Click(object sender, EventArgs e)
{
UpdateFogBugz();
var publishForm = new Publish(this, configuration);
publishForm.Show();
}
private void dgv_Projects_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void dataGridView2_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) { return; }
var fogbugz = dgv_CommitComments.Rows[e.RowIndex].Cells["Fogbugz"].Value.ToString();
System.Diagnostics.Process.Start($"http://{Properties.Settings.Default.ManuscriptServerAddress}/f/cases/{fogbugz}");
}
}
}

View File

@@ -0,0 +1,293 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value>
</metadata>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAMDAAAAAAAACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxACgAbQBcAGsAiQBpALEAZgDSAGQA6gBhAPoAXwD6AF0A6gBa
ANIAWACxAFUAiQBTAFwAUQAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AB0AeQBnAHUArABzAO0AcQD/AG0A/wBrAP8AaQD/AGYA/wBk
AP8AYQD/AF8A/wBdAP8AWgD/AFgA/wBVAP8AUwDtAFEArABPAGcATQAdAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAhAIEAeAB9AM0AewD/AHkA/wB1AP8AcwD/AHEA/wBt
AP8AawD/AGkA/wBmAP8AZAD/AGEA/wBfAP8AXQD/AFoA/wBYAP8AVQD/AFMA/wBRAP8ATwDNAE0AeABL
ACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJAGAAhQDCAIMA/wCBAP8AfQD/AHsA/wB5
AP8AdQD/AHMA/wBxAP8AbQD/AGsA/wBpAP8AZgD/AGQA/wBhAP8AXwD/AF0A/wBaAP8AWAD/AFUA/wBT
AP8AUQD/AE8A/wBNAMIASwBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQAjAI4AkACLAPsAiQD/AIUA/wCD
AP8AgQD/AH0A/wB7AP8AeQD/AHUA/wBzAP8AcQD/AG0A/wBrAP8AaQD/AGYA/wBkAP8AYQD/AF8A/wBd
AP8AWgD/AFgA/wBVAP8AUwD/AFEA/wBPAP8ATQD7AEsAkABJACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWADsAlACwAJEA/wCO
AP8AiwD/AIkA/wCFAP8AgwD/AIEA/wB9AP8AewD/AHkA/wB1AP8AcwD/AHEA/wBtAP8AawD/AGkA/wBm
AP8AZAD/AGEA/wBfAP8AXQD/AFoA/wBYAP8AVQD/AFMA/wBRAP8ATwD/AE0A/wBLALAASQA7AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAQgCZ
AMAAlgD/AJQA/wCRAP8AjgD/AIsA/wCJAP8AhQD/AIMA/wCBAP8AfQD/AHsA/wB5AP8AdQD/AHMA/wBx
AP8AbQD/AGsA/wBpAP8AZgD/AGQA/wBhAP8AXwD/AF0A/wBaAP8AWAD/AFUA/wBTAP8AUQD/AE8A/wBN
AP8ASwDAAEkAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAoQA7AJ4AwACcAP8AmQD/AJYA/wCUAP8AkQD/AI4A/wCLAP8AiQD/AIUA/wCDAP8AgQD/AH0A/wB7
AP8AeQD/AHUA/wBzAP8AcQD/AG0A/wBrAP8AaQD/AGYA/wBkAP8AYQD/AF8A/wBdAP8AWgD/AFgA/wBV
AP8AUwD/AFEA/wBPAP8ATQD/AEsAwABJADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAACnACMApACwAKEA/wCeAP8AnAD/AJkA/wCWAP8AlAD/AJEA/wCOAP8AiwD/AIkA/wCF
AP8AgwD/AIEA/wB9AP8AewD/AHkA/wB1AP8AcwD/AHEA/wBtAP8AawD/AGkA/wBmAP8AZAD/AGEA/wBf
AP8AXQD/AFoA/wBYAP8AVQD/AFMA/wBRAP8ATwD/AE0A/wBLALAASQAjAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpAJAApwD/AKQA/wChAP8AngD/AJwA/wCZAP8AlgD/ApUC/waU
Bv8Lkwv/EJIQ/xKREv8RjRH/D4oP/wqGCv8GgAb/AnwC/wF6Af8AdQD/AHMA/wBxAP8AbQD/AGsA/wJq
Av8Gagb/CmoK/w9qD/8SahL/EmgS/xBkEP8LXwv/BlkG/wJUAv8BUgH/AE8A/wBNAP8ASwCQAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK8AYACtAPsAqQD/AKcA/wCkAP8AoQD/AZ4B/wSe
BP8KnQr/FZ8V/yKiIv8wpjD/Oqg6/0CoQP9CqEL/QKRA/zeeN/8olSj/F4kX/wmACf8CegL/AHUA/wF0
Af8EcwT/CnMK/xR3FP8hfCH/LoIu/zmHOf8/iD//QohC/0CGQP86gDr/K3Qr/xpmGv8LWgv/A1MD/wBP
AP8ATQD7AEsAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQAhALEAwgCvAP8ArQD/AKkA/wCn
AP8BpAH/BqMG/xCkEP8dpx3/LKss/z2vPf9MtEz/W7hb/2S6ZP9svGz/cb1x/3C7cP9hsmH/QKFA/x2M
Hf8Hfwf/AXoB/wR3BP8Neg3/Gn8a/yuGK/87jTv/TJZM/1ibWP9ioGL/aqNq/3ClcP9ypXL/Zpxm/0mI
Sf8ibCL/CloK/wBRAP8ATwD/AE0AwgBLACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtwB4ALUA/wCx
AP8ArwD/AK0A/wCpAP8CqAL/B6YH/xKoEv8gqiD/Ma8x/3LHcv+q3Kr/sd+x/7bgtv+84bz/rdmt/6fW
p/+OyY7/bbht/zidOP8QhRD/AXwB/wR7BP8NfA3/HIIc/y+LL/9yr3L/n8ef/7DRsP+107X/utW6/7LP
sv+nx6f/krqS/3amdv9Bg0H/FGIU/wBTAP8AUQD/AE8A/wBNAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAC9
AB0AuQDNALcA/wC1AP8AsQD/AK4A/wCqAP8AowD/AKIA/xSrFP+M1Iz/8/rz////////////////////
///////////////////g8OD/f8J//0mmSf8TihP/AHkA/wB2AP8AeQD/ib+J/+Xx5f//////////////
////////////////////////+fz5/4ayhv9Sj1L/HGoc/wBVAP8AUwD/AFEA/wBPAM0ATQAdAAAAAAAA
AAAAAAAAAAAAAAC/AGcAvQD/ALkA/wC3AP8AtAD/AKsA/wCfAP8AlQD/KqIq/9bp1v//////////////
///////////////////////////////////f8N//cL1w/0moSf8Hhgf/AHAA/w5yDv/B1sH/////////
/////////////////////////////////////////////3Gmcf9Pj0//HW0d/wBYAP8AVQD/AFMA/wBR
AP8ATwBnAAAAAAAAAAAAAAAAAAAAAADBAKwAvwD/AL0A/wC5AP8AsgD/AKIA/wCLAP8XiBf/vsa+/+zs
7P/////////////////W1tb/qqqq/4iIiP+BgYH/ra2t//v7+//N6c3/Sq1K/zGgMf8AdwD/DGYM/6Gz
of/j4+P/////////////////4eHh/7Ozs/+NjY3/fHx8/5+fn//s7Oz/y+DL/0aMRv88hTz/GGwY/wBa
AP8AWAD/AFUA/wBTAP8AUQCsAAAAAAAAAAAAAAAAAMcAKADFAO0AwQD/AL8A/wC8AP8AqwD/AI4A/wB0
AP95lXn/wMDA/+3t7f//////+fn5/9HR0f+Wm5b/R2FH/yY9Jv8gMyD/Okk6/5mZmf91uHX/GZkZ/wCL
AP8AYgD/Wn5a/7m5uf/k5OT///////7+/v/b29v/rKys/05jTv8qPCr/IC4g/zA8MP+DhoP/qb+p/xZx
Fv8jdyP/EGkQ/wBdAP8AWgD/AFgA/wBVAP8AUwDtAFEAKAAAAAAAAAAAAMkAXADHAP8AxQD/AMEA/wC5
AP8AnwD/AHcA/yJqIv+VlZX/xMTE//n5+f//////9fX1/6rEqv8LcAv/AFIA/wA8AP8AMAD/ADUA/xFW
Ef8yiTL/AIQA/wBtAP8SVhL/jo6O/7m5uf/w8PD///////v7+//N083/ImYi/wBAAP8ALwD/ACMA/wAk
AP8IOQj/PXM9/wBjAP8ObQ7/CGYI/wBfAP8AXQD/AFoA/wBYAP8AVQD/AFMAXAAAAAAAAAAAAMwAiQDJ
AP8AxwD/AMUA/wC0AP8AjQD/AGIA/09oT/+Tk5P/1NTU////////////8Prw/w+jD/8AiwD/AHgA/wBp
AP8AXwD/AF0A/wBoAP8AdgD/AHEA/wBTAP8zVzP/iYmJ/8XFxf////////////////89lj3/AGkA/wBc
AP8ATwD/AEYA/wBDAP8ARwD/AFYA/wBjAP8CZwL/A2YD/wBhAP8AXwD/AF0A/wBaAP8AWAD/AFUAiQAA
AAAAAAAAAM4AsQDMAP8AyQD/AMcA/wCuAP8AewD/AE8A/15iXv+Wlpb/5ubm////////////kdyR/xW0
Ff8EqgT/AJ0A/wCVAP8AjgD/AIkA/wCJAP8AgQD/AGQA/wBCAP9JV0n/i4uL/9fX1////////////7ve
u/8WjBb/B4EH/wB2AP8AbwD/AGgA/wBkAP8AYgD/AGQA/wBnAP8AaQD/AWcB/wBkAP8AYQD/AF8A/wBd
AP8AWgD/AFgAsQAAAAAAAAAAANEA0gDOAP8AzAD/AMkA/wClAP8AbAD/EEUQ/1paWv+YmJj/9fX1////
////////Ys9i/zO/M/8dth3/BKoE/wCnAP8AowD/AJ8A/wCcAP8AhwD/AFwA/wA2AP9WVlb/jo6O/+jo
6P///////////4XFhf8xmzH/IJEg/weBB/8AewD/AHkA/wB0AP8AcQD/AG8A/wBsAP8AawD/AGkA/wBm
AP8AZAD/AGEA/wBfAP8AXQD/AFoA0gAAAAAAAAAAANMA6gDRAP8AzgD/AMwA/wCfAP8AYgD/EjwS/1NT
U/+ZmZn/////////////////U81T/0PFQ/8guSD/Aa0B/wCpAP8ApwD/AKQA/wCgAP8AhQD/AFYA/wAu
AP9PT0//j4+P//X19f///////////3G9cf9DpUP/JZUl/wWDBf8AfQD/AHsA/wB5AP8AdQD/AHMA/wBx
AP8AbQD/AGsA/wBpAP8AZgD/AGQA/wBhAP8AXwD/AF0A6gAAAAAAAAAAANUA+gDTAP8A0QD/AM4A/wCd
AP8AWwD/EDUQ/05OTv+YmJj////////////s+uz/Y9Nj/0/MT/8iuyL/Aa8B/wCtAP8AqQD/AKcA/wCi
AP8AhAD/AE8A/wwtDP9HR0f/jIyM//z8/P///////////2K4Yv9Sr1L/KZkp/wSFBP8AgQD/AH0A/wB7
AP8AeQD/AHUA/wBzAP8AcQD/AG0A/wBrAP8AaQD/AGYA/wBkAP8AYQD/AF8A+gAAAAAAAAAAANgA+gDV
AP8A0wD/ANEA/wCcAP8AWAD/EDYQ/0dHR/+UlJT////////////3/ff/cdhx/1zRXP8qwSr/A7ID/wCv
AP8ArQD/AKkA/wCkAP8AhAD/AEwA/wwsDP9AQED/g4OD//v7+////////////3PBc/9juGP/M6Ez/wiJ
CP8AgwD/AIEA/wB9AP8AewD/AHkA/wB1AP8AcwD/AHEA/wBtAP8AawD/AGkA/wBmAP8AZAD/AGEA+gAA
AAAAAAAAANoA6gDYAP8A1QD/ANMA/wCfAP8AVwD/EDYQ/0BAQP+Hh4f/////////////////gN6A/27X
bv86xzr/CrgK/wGxAf8ArwD/AK0A/wCmAP8AhwD/AE0A/wAoAP9AQED/dHR0/+/v7////////////6HX
of91wnX/RapF/xKREv8BhQH/AIMA/wCBAP8AfQD/AHsA/wB5AP8AdQD/AHMA/wBxAP8AbQD/AGsA/wBp
AP8AZgD/AGQA6gAAAAAAAAAAAN0A0gDaAP8A2AD/ANUA/wClAP8AXAD/CDUI/0BAQP9xcXH/7Ozs////
////////pOik/4Xfhf9X0Vf/H8Af/wW2Bf8BsQH/ArAC/wOuA/8AkgD/AFgA/wApAP88Pjz/XV1d/9XV
1f///////////7niuf+IzIj/Yblh/yedJ/8HjAf/AYUB/wGDAf8EgwT/B4EH/wd/B/8EewT/AXYB/wBz
AP8AcQD/AG0A/wBrAP8AaQD/AGYA0gAAAAAAAAAAAN8AsQDdAP8A2gD/ANgA/wCvAP8AZwD/ADQA/zg+
OP9QUFD/xcXF////////////2vba/5vmm/9/3n//Tc5N/yfCJ/8avRr/HLoc/yK6Iv8Grwb/AHMA/wAr
AP8sOSz/QEBA/6ysrP///////////+b05v+b1Zv/hcqF/1W0Vf8rnyv/G5Ub/xuSG/8ilCL/JZMl/yCN
IP8ShBL/BnwG/wB1AP8AcwD/AHEA/wBtAP8AawD/AGkAsQAAAAAAAAAAAOEAiQDfAP8A3QD/ANoA/wC+
AP8AegD/ADUA/yQ7JP9AQED/j4+P/////////////////7fut/+d5p3/f95//1rSWv9FykX/RslG/1LK
Uv9ExET/AKIA/wBDAP8YMhj/QEBA/3Z2dv/6+vr////////////H6Mf/oNeg/4TKhP9fuF//RqtG/0Oo
Q/9Pq0//WK5Y/0qmSv8pkin/DYIN/wB5AP8AdQD/AHMA/wBxAP8AbQD/AGsAiQAAAAAAAAAAAOMAXADh
AP8A3wD/AN0A/wDLAP8AlQD/AEQA/wg2CP9AQED/UFBQ/8XFxf////////////n++f+07bT/keOR/3Pb
c/9e017/Y9Nj/5vim/+s5az/N8A3/wBrAP8AKgD/OD04/0BAQP+srKz////////////5/fn/wOXA/5XT
lf95xXn/Xrhe/162Xv+Fx4X/weHB/3C5cP9AoUD/FYgV/wB7AP8AeQD/AHUA/wBzAP8AcQD/AG0AXAAA
AAAAAAAAAOUAKADjAO0A4QD/AN8A/wDWAP8AsQD/AGgA/wA1AP8kOyT/QEBA/2dnZ//a2tr/////////
////////6vrq/7ruuv/G8Mb/7vru///////G7sb/W81b/wCVAP8ALwD/FDEU/0BAQP9TU1P/xMTE////
/////////////+r36v/F5sX/vOK8/+Tz5P//////5fPl/3vAe/9Lp0v/GY0Z/wB9AP8AewD/AHkA/wB1
AP8AcwDtAHEAKAAAAAAAAAAAAAAAAADlAKwA4wD/AOEA/wDdAP8AyQD/AJQA/wBIAP8ANQD/ND40/0BA
QP9iYmL/v7+///////////////////////////////////////+567n/Vc5V/wCxAP8AUgD/ACsA/yg4
KP9AQED/UlJS/62trf//////////////////////////////////////3e/d/2a4Zv9EpkT/F44X/wCB
AP8AfQD/AHsA/wB5AP8AdQCsAAAAAAAAAAAAAAAAAAAAAADnAGcA5QD/AOMA/wDhAP8A2AD/ALoA/wB/
AP8AOgD/BDYE/yg8KP9AQED/Q0ND/319ff+wsLD/0dHR/9nZ2f/g4OD/+/v7//////+a45r/N8c3/w25
Df8AfAD/ADoA/wArAP8gNSD/QEBA/0BAQP9xcXH/qKio/83Nzf/a2tr/29vb//Hx8f//////zOjM/zym
PP8wnzD/EY0R/wCDAP8AgQD/AH0A/wB7AP8AeQBnAAAAAAAAAAAAAAAAAAAAAADpAB0A5wDNAOUA/wDj
AP8A4AD/ANQA/wCzAP8AfAD/AEEA/wA1AP8UOBT/ND40/0BAQP9AQED/UFBQ/1lZWf9oaGj/jY2N/565
nv89xj3/E74T/wu6C/8AngD/AG8A/wA+AP8AKwD/DC4M/yw5LP9AQED/QEBA/01NTf9YWFj/YmJi/4CA
gP+dqp3/Z7Fn/xCVEP8Ylhj/Co4K/wCFAP8AgwD/AIEA/wB9AM0AewAdAAAAAAAAAAAAAAAAAAAAAAAA
AAAA6QB4AOcA/wDlAP8A4wD/AN4A/wDTAP8AtwD/AIoA/wBbAP8ANQD/ADUA/wg2CP8QNxD/EDYQ/xE4
Ef8VRxX/B14H/wCAAP8ApgD/ALwA/wS6BP8AsQD/AJsA/wB5AP8AUgD/ADEA/wAqAP8EKwT/EC8Q/xAu
EP8QLhD/FDgU/w5GDv8AWwD/AHkA/wCNAP8HkQf/BI0E/wCJAP8AhQD/AIMA/wCBAHgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA6wAhAOkAwgDnAP8A5QD/AOMA/wDfAP8A1gD/AMMA/wCmAP8AhgD/AGsA/wBe
AP8AWQD/AFoA/wBfAP8AagD/AH4A/wCYAP8ArQD/ALoA/wC9AP8AuAD/ALEA/wCjAP8AjAD/AHIA/wBb
AP8ATAD/AEcA/wBHAP8ASgD/AFEA/wBeAP8AcAD/AIIA/wCOAP8AkQD/AY4B/wCLAP8AiQD/AIUAwgCD
ACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOsAYADpAPsA5wD/AOUA/wDjAP8A4AD/ANwA/wDS
AP8AwwD/ALQA/wCoAP8AoQD/AJ8A/wCgAP8ApgD/AK4A/wC3AP8AvgD/AL8A/wC/AP8AvQD/ALgA/wC1
AP8ArgD/AKEA/wCVAP8AigD/AIEA/wB/AP8AfwD/AIEA/wCHAP8AjgD/AJIA/wCUAP8AkwD/AJEA/wCO
AP8AiwD7AIkAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADrAJAA6QD/AOcA/wDl
AP8A4wD/AOEA/wDfAP8A3QD/ANoA/wDYAP8A1QD/ANMA/wDRAP8AzgD/AMwA/wDJAP8AxwD/AMUA/wDB
AP8AvwD/AL0A/wC5AP8AtwD/ALUA/wCxAP8ArwD/AK0A/wCpAP8ApwD/AKQA/wChAP8AngD/AJwA/wCZ
AP8AlgD/AJQA/wCRAP8AjgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADt
ACMA6wCwAOkA/wDnAP8A5QD/AOMA/wDhAP8A3wD/AN0A/wDaAP8A2AD/ANUA/wDTAP8A0QD/AM4A/wDM
AP8AyQD/AMcA/wDFAP8AwQD/AL8A/wC9AP8AuQD/ALcA/wC1AP8AsQD/AK8A/wCtAP8AqQD/AKcA/wCk
AP8AoQD/AJ4A/wCcAP8AmQD/AJYA/wCUALAAkQAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA7QA7AOsAwADpAP8A5wD/AOUA/wDjAP8A4QD/AN8A/wDdAP8A2gD/ANgA/wDV
AP8A0wD/ANEA/wDOAP8AzAD/AMkA/wDHAP8AxQD/AMEA/wC/AP8AvQD/ALkA/wC3AP8AtQD/ALEA/wCv
AP8ArQD/AKkA/wCnAP8ApAD/AKEA/wCeAP8AnAD/AJkAwACWADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO0AQgDrAMAA6QD/AOcA/wDlAP8A4wD/AOEA/wDf
AP8A3QD/ANoA/wDYAP8A1QD/ANMA/wDRAP8AzgD/AMwA/wDJAP8AxwD/AMUA/wDBAP8AvwD/AL0A/wC5
AP8AtwD/ALUA/wCxAP8ArwD/AK0A/wCpAP8ApwD/AKQA/wChAP8AngDAAJwAQgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtADsA6wCwAOkA/wDn
AP8A5QD/AOMA/wDhAP8A3wD/AN0A/wDaAP8A2AD/ANUA/wDTAP8A0QD/AM4A/wDMAP8AyQD/AMcA/wDF
AP8AwQD/AL8A/wC9AP8AuQD/ALcA/wC1AP8AsQD/AK8A/wCtAP8AqQD/AKcA/wCkALAAoQA7AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA7QAjAOsAkADpAPsA5wD/AOUA/wDjAP8A4QD/AN8A/wDdAP8A2gD/ANgA/wDVAP8A0wD/ANEA/wDO
AP8AzAD/AMkA/wDHAP8AxQD/AMEA/wC/AP8AvQD/ALkA/wC3AP8AtQD/ALEA/wCvAP8ArQD7AKkAkACn
ACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADrAGAA6QDCAOcA/wDlAP8A4wD/AOEA/wDfAP8A3QD/ANoA/wDY
AP8A1QD/ANMA/wDRAP8AzgD/AMwA/wDJAP8AxwD/AMUA/wDBAP8AvwD/AL0A/wC5AP8AtwD/ALUA/wCx
AMIArwBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6wAhAOkAeADnAM0A5QD/AOMA/wDh
AP8A3wD/AN0A/wDaAP8A2AD/ANUA/wDTAP8A0QD/AM4A/wDMAP8AyQD/AMcA/wDFAP8AwQD/AL8A/wC9
AP8AuQDNALcAeAC1ACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp
AB0A5wBnAOUArADjAO0A4QD/AN8A/wDdAP8A2gD/ANgA/wDVAP8A0wD/ANEA/wDOAP8AzAD/AMkA/wDH
AP8AxQDtAMEArAC/AGcAvQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlACgA4wBcAOEAiQDfALEA3QDSANoA6gDYAPoA1QD6ANMA6gDR
ANIAzgCxAMwAiQDJAFwAxwAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP//gAH//wAA//wAAD//
AAD/8AAAD/8AAP/gAAAH/wAA/4AAAAH/AAD/AAAAAP8AAP4AAAAAfwAA/AAAAAA/AAD4AAAAAB8AAPgA
AAAAHwAA8AAAAAAPAADgAAAAAAcAAOAAAAAABwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAgAAAAAAB
AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAAD
AADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4A
AAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/gAAAH/wAA//AAAA//AAD//AAAP/8AAP//gAH//wAA////////
AAA=
</value>
</data>
</root>

View File

@@ -0,0 +1,28 @@
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace CCNetLogReader
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new MainWindow());
}
catch (Exception ex)
{
MessageBox.Show($"{ex.Message}{Environment.NewLine}{Environment.NewLine}{ex.StackTrace}", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

View File

@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WindowsFormsApp4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WindowsFormsApp4")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("cc6d8022-d2aa-423a-abd6-a8c368c5a431")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace CCNetLogReader.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CCNetLogReader.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,67 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace CCNetLogReader.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.11.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("jalapeno.dts.local")]
public string CCNetServerAddress {
get {
return ((string)(this["CCNetServerAddress"]));
}
set {
this["CCNetServerAddress"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string ManuscriptToken {
get {
return ((string)(this["ManuscriptToken"]));
}
set {
this["ManuscriptToken"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("manuscript.dts.local")]
public string ManuscriptServerAddress {
get {
return ((string)(this["ManuscriptServerAddress"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.Specialized.StringCollection Setting {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["Setting"]));
}
}
}
}

View File

@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="CCNetLogReader.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="CCNetServerAddress" Type="System.String" Scope="User">
<Value Profile="(Default)">jalapeno.dts.local</Value>
</Setting>
<Setting Name="ManuscriptToken" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ManuscriptServerAddress" Type="System.String" Scope="Application">
<Value Profile="(Default)">manuscript.dts.local</Value>
</Setting>
<Setting Name="Setting" Type="System.Collections.Specialized.StringCollection" Scope="Application">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@@ -0,0 +1,256 @@
namespace CCNetLogReader
{
partial class Publish
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.txtArticle = new System.Windows.Forms.TextBox();
this.lblProjectName = new System.Windows.Forms.Label();
this.lblVersion = new System.Windows.Forms.Label();
this.btnPublish = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.lblPriorVersion = new System.Windows.Forms.Label();
this.lblBuildFolder = new System.Windows.Forms.Label();
this.lblLocalPublish = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.lblHCArticle = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.dgvTasks = new System.Windows.Forms.DataGridView();
this.colStepName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colProgress = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.dgvTasks)).BeginInit();
this.SuspendLayout();
//
// txtArticle
//
this.txtArticle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtArticle.Location = new System.Drawing.Point(13, 821);
this.txtArticle.Multiline = true;
this.txtArticle.Name = "txtArticle";
this.txtArticle.Size = new System.Drawing.Size(775, 50);
this.txtArticle.TabIndex = 0;
//
// lblProjectName
//
this.lblProjectName.AutoSize = true;
this.lblProjectName.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.14286F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblProjectName.Location = new System.Drawing.Point(13, 33);
this.lblProjectName.Name = "lblProjectName";
this.lblProjectName.Size = new System.Drawing.Size(331, 55);
this.lblProjectName.TabIndex = 1;
this.lblProjectName.Text = "DataPRO LTS";
//
// lblVersion
//
this.lblVersion.AutoSize = true;
this.lblVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblVersion.Location = new System.Drawing.Point(17, 98);
this.lblVersion.Name = "lblVersion";
this.lblVersion.Size = new System.Drawing.Size(214, 32);
this.lblVersion.TabIndex = 2;
this.lblVersion.Text = "4.0.1210.52592";
//
// btnPublish
//
this.btnPublish.Location = new System.Drawing.Point(12, 320);
this.btnPublish.Name = "btnPublish";
this.btnPublish.Size = new System.Drawing.Size(776, 55);
this.btnPublish.TabIndex = 3;
this.btnPublish.Text = "Publish!";
this.btnPublish.UseVisualStyleBackColor = true;
this.btnPublish.Click += new System.EventHandler(this.btnPublish_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(18, 189);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(121, 25);
this.label2.TabIndex = 5;
this.label2.Text = "Build Folder:";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(18, 152);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(130, 25);
this.label1.TabIndex = 4;
this.label1.Text = "Prior Version:";
//
// lblPriorVersion
//
this.lblPriorVersion.AutoSize = true;
this.lblPriorVersion.Location = new System.Drawing.Point(238, 152);
this.lblPriorVersion.Name = "lblPriorVersion";
this.lblPriorVersion.Size = new System.Drawing.Size(148, 25);
this.lblPriorVersion.TabIndex = 6;
this.lblPriorVersion.Text = "4.0.1205.12345";
//
// lblBuildFolder
//
this.lblBuildFolder.AutoSize = true;
this.lblBuildFolder.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblBuildFolder.ForeColor = System.Drawing.SystemColors.HotTrack;
this.lblBuildFolder.Location = new System.Drawing.Point(239, 189);
this.lblBuildFolder.Name = "lblBuildFolder";
this.lblBuildFolder.Size = new System.Drawing.Size(422, 25);
this.lblBuildFolder.TabIndex = 7;
this.lblBuildFolder.Text = "\\\\dts.local\\files\\Software\\Private\\Build\\DataPRO";
this.lblBuildFolder.Click += new System.EventHandler(this.lblBuildFolder_Click);
//
// lblLocalPublish
//
this.lblLocalPublish.AutoSize = true;
this.lblLocalPublish.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblLocalPublish.ForeColor = System.Drawing.SystemColors.HotTrack;
this.lblLocalPublish.Location = new System.Drawing.Point(239, 226);
this.lblLocalPublish.Name = "lblLocalPublish";
this.lblLocalPublish.Size = new System.Drawing.Size(283, 25);
this.lblLocalPublish.TabIndex = 10;
this.lblLocalPublish.Text = "\\\\dts.local\\files\\Software\\Public\\";
this.lblLocalPublish.Click += new System.EventHandler(this.lblLocalPublish_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(18, 226);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(134, 25);
this.label4.TabIndex = 9;
this.label4.Text = "Local Publish:";
//
// lblHCArticle
//
this.lblHCArticle.AutoSize = true;
this.lblHCArticle.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblHCArticle.ForeColor = System.Drawing.SystemColors.HotTrack;
this.lblHCArticle.Location = new System.Drawing.Point(238, 263);
this.lblHCArticle.Name = "lblHCArticle";
this.lblHCArticle.Size = new System.Drawing.Size(345, 25);
this.lblHCArticle.TabIndex = 13;
this.lblHCArticle.Text = "https://support.dtsweb.com/hc/123456";
this.lblHCArticle.Click += new System.EventHandler(this.lblHCArticle_Click);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(17, 263);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(176, 25);
this.label5.TabIndex = 12;
this.label5.Text = "HelpCenter Article:";
//
// dgvTasks
//
this.dgvTasks.AllowUserToAddRows = false;
this.dgvTasks.AllowUserToDeleteRows = false;
this.dgvTasks.AllowUserToResizeColumns = false;
this.dgvTasks.AllowUserToResizeRows = false;
this.dgvTasks.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
this.dgvTasks.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvTasks.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colStepName,
this.colProgress});
this.dgvTasks.Location = new System.Drawing.Point(12, 390);
this.dgvTasks.Name = "dgvTasks";
this.dgvTasks.ReadOnly = true;
this.dgvTasks.RowHeadersVisible = false;
this.dgvTasks.RowHeadersWidth = 72;
this.dgvTasks.RowTemplate.Height = 25;
this.dgvTasks.RowTemplate.ReadOnly = true;
this.dgvTasks.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.dgvTasks.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvTasks.Size = new System.Drawing.Size(776, 389);
this.dgvTasks.TabIndex = 14;
//
// colStepName
//
this.colStepName.HeaderText = "Step";
this.colStepName.MinimumWidth = 9;
this.colStepName.Name = "colStepName";
this.colStepName.ReadOnly = true;
this.colStepName.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.colStepName.Width = 175;
//
// colProgress
//
this.colProgress.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.colProgress.HeaderText = "Progress";
this.colProgress.MinimumWidth = 9;
this.colProgress.Name = "colProgress";
this.colProgress.ReadOnly = true;
this.colProgress.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// Publish
//
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 883);
this.Controls.Add(this.dgvTasks);
this.Controls.Add(this.lblHCArticle);
this.Controls.Add(this.label5);
this.Controls.Add(this.lblLocalPublish);
this.Controls.Add(this.label4);
this.Controls.Add(this.lblBuildFolder);
this.Controls.Add(this.lblPriorVersion);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.btnPublish);
this.Controls.Add(this.lblVersion);
this.Controls.Add(this.lblProjectName);
this.Controls.Add(this.txtArticle);
this.Name = "Publish";
this.Text = "Publish";
this.Load += new System.EventHandler(this.Publish_Load);
((System.ComponentModel.ISupportInitialize)(this.dgvTasks)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox txtArticle;
private System.Windows.Forms.Label lblProjectName;
private System.Windows.Forms.Label lblVersion;
private System.Windows.Forms.Button btnPublish;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label lblPriorVersion;
private System.Windows.Forms.Label lblBuildFolder;
private System.Windows.Forms.Label lblLocalPublish;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label lblHCArticle;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.DataGridView dgvTasks;
private System.Windows.Forms.DataGridViewTextBoxColumn colStepName;
private System.Windows.Forms.DataGridViewTextBoxColumn colProgress;
}
}

View File

@@ -0,0 +1,407 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
using SharpSevenZip;
using Microsoft.Office.Interop.Word;
using CCNetWrapper;
using _Application = Microsoft.Office.Interop.Word._Application;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using DocumentFormat.OpenXml.Office.Word;
using System.Xml.Serialization;
using System.Xml;
using DocumentFormat.OpenXml.Packaging;
namespace CCNetLogReader
{
public partial class Publish : Form
{
MainWindow parent { get; set; }
Configuration configuration = new Configuration();
Configuration.SoftwarePackage packageConfig;
string PublishVersion = "";
public Publish(MainWindow mainWindowParent, Configuration configuration)
{
InitializeComponent();
parent = mainWindowParent;
this.configuration = configuration;
}
private void Publish_Load(object sender, EventArgs e)
{
PublishVersion = parent._versionNumber;
packageConfig = configuration.SoftwarePackages
.First(a => a.ProjectName == parent._projName);
lblProjectName.Text = packageConfig.Name;
lblVersion.Text = $"{parent._projName} | {parent._versionNumber}";
lblPriorVersion.Text = $"{packageConfig.PublishedBuild} ({packageConfig.PublishedDate.ToString("yyyy-MM-dd")})";
lblHCArticle.Text = $"https://support.dtsweb.com/hc/en-us/articles/{packageConfig.ZDArticleID}";
lblBuildFolder.Text = Path.Combine(
packageConfig.ProjectBuildFolder,
PublishVersion
);
lblLocalPublish.Text = Path.Combine(
configuration.LocalPublishRoot,
packageConfig.Name
);
/* Steps to publish:
* choose project and version
* if there is a config in xml, enable publish command
* on publish command:
* determine last release
* build release notes since then
* insure build dir contains software
* zip build folder to local publish
* place release notes in local publish
* upload zip+pdf to remote
* update zendesk notes
* check consistency
* delete old published builds
*/
}
private static ManualResetEvent mre = new ManualResetEvent(false);
private void ThreadSpinWait(int ms, ManualResetEvent wait = null)
{
if (wait == null)
{
// Use our own
wait = new ManualResetEvent(false);
}
System.Threading.Tasks.Task.Run(() =>
{
wait.WaitOne(ms);
wait.Set();
});
wait.WaitOne();
}
private void btnPublish_Click(object sender, EventArgs e)
{
var localPublishFolder = Path.Combine(
configuration.LocalPublishRoot,
packageConfig.Name
);
// Insure LocalPublish Folders exist
dgvTasks.Rows.Add("Prepare", ".");
if (!Directory.Exists(localPublishFolder))
Directory.CreateDirectory(localPublishFolder);
var existingLocalPublishFiles = Directory.GetFiles(localPublishFolder);
var remoteBuildFolder = Path.Combine(
packageConfig.ProjectBuildFolder,
PublishVersion
);
dgvTasks.Rows[0].Cells[1].Value = "Complete";
//var tasks = new List<System.Threading.Tasks.Task>();
var tasks = new List<System.Threading.Tasks.Task>();
// Zip Build Folder to local publish folder
dgvTasks.Rows.Add("Zip Installer", ".");
var localZipFileName = Path.Combine(localPublishFolder, $"DataPRO_Installer-{PublishVersion}.zip");
if (File.Exists(localZipFileName))
File.Delete(localZipFileName);
tasks.Add( System.Threading.Tasks.Task.Factory.StartNew(() =>
ZipFolderToLocation(remoteBuildFolder, localZipFileName))
);
// Build Release Notes from template to publish folder
dgvTasks.Rows.Add("Build Release Notes", ".");
var localDocFileName = Path.Combine(localPublishFolder, $"DataPRO_Release_Notes-{PublishVersion}.pdf");
tasks.Add( System.Threading.Tasks.Task.Factory.StartNew(() =>
CreateReleaseNotesToFile(localDocFileName))
);
System.Threading.Tasks.Task.WaitAll(tasks.ToArray());
tasks.Clear();
// NDB DEBUG
//return;
// Upload to S3 Bucket
dgvTasks.Rows.Add("Upload Installer", ".");
var s3 = new s3Client(
new s3Config()
{
accessKey = configuration.S3Config.AccessKey,
secretKey = configuration.S3Config.SecretKey,
bucket = configuration.S3Config.Bucket,
cloudfrontDomainName = configuration.S3Config.CloudfrontDomain,
region = configuration.S3Config.Region,
});
tasks.Add( System.Threading.Tasks.Task.Factory.StartNew(() =>
s3.uploadAndClearFolder(packageConfig.Name, new List<string>() { localZipFileName, localDocFileName }))
);
System.Threading.Tasks.Task.WaitAll(tasks.ToArray());
dgvTasks.Rows[3].Cells[1].Value = "Complete";
// Update ZD Article:
dgvTasks.Rows.Add("Update HC Article", ".");
var zdc = new ZendeskClient();
var SWURL = configuration.S3Config.CloudfrontDomain
+ packageConfig.Name;
var PDFURL = SWURL;
SWURL = SWURL + "/" + Path.GetFileName(localZipFileName);
PDFURL = PDFURL + "/" + Path.GetFileName(localDocFileName);
SWURL = $"<a href={SWURL}>{Path.GetFileName(localZipFileName)}</a>";
PDFURL = $"<a href={PDFURL}>{Path.GetFileName(localDocFileName)}</a>";
var zdText = packageConfig.ZDArticleText;
zdText = zdText
.Replace("{{SWURL}}", SWURL)
.Replace("{{PDFURL}}", PDFURL)
.Replace("{{VERSION}}", PublishVersion);
zdc.UpdateArticle(packageConfig.ZDArticleID, zdText);
dgvTasks.Rows[4].Cells[1].Value = "Complete";
// Remove prior build from local publish folder
foreach (var f in existingLocalPublishFiles)
{
if (f != localDocFileName && f != localZipFileName)
File.Delete(f);
}
}
public void ZipFolderToLocation(string sourceFolder, string destFile)
{
SharpSevenZipBase.SetLibraryPath(
Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
"7z.dll")
);
SharpSevenZipCompressor compressor = new SharpSevenZipCompressor()
{
ArchiveFormat = OutArchiveFormat.Zip,
TempFolderPath = Path.GetTempPath(),
CompressionMode = CompressionMode.Create,
CompressionLevel = CompressionLevel.Normal,
CompressionMethod = CompressionMethod.Lzma,
ZipEncryptionMethod = ZipEncryptionMethod.Aes256,
EventSynchronization = EventSynchronizationStrategy.AlwaysAsynchronous,
FastCompression = false,
};
compressor.FileCompressionStarted += (s, e) =>
{
dgvTasks.Rows[1].Cells[1].Value = $"{e.PercentDone}% | {e.FileName}";
};
compressor.CompressionFinished += (s, e) =>
{
dgvTasks.Rows[1].Cells[1].Value = "Complete";
};
compressor.CompressDirectory(sourceFolder, destFile);
}
public void CreateReleaseNotesToFile(string docFileName)
{
var templateFile = packageConfig.ReleaseNoteDocxTemplate;
var newtfName = Path.GetFileName(templateFile);
var tfFolder = Path.GetDirectoryName(templateFile);
if (File.Exists(templateFile))
{
if (File.Exists(docFileName))
File.Delete(docFileName);
newtfName = Path.Combine(tfFolder, "newdoc.doc");
File.Copy(templateFile, newtfName, overwrite: true);
}
else
return;
templateFile = newtfName;
string projectHeading = "";
object oMissing = System.Reflection.Missing.Value;
object oFileName = templateFile;
object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
object oStartofDoc = "\\startofdoc"; /* \startofdoc is a predefined bookmark */
object oProjectName = new object();
var wd = WordprocessingDocument.CreateFromTemplate(templateFile);
//Start Word and create a new document.
_Application oWord;
_Document oDoc;
try
{
dgvTasks.Rows[2].Cells[1].Value = "Starting Word";
oWord = new Microsoft.Office.Interop.Word.Application();
oWord.Visible = true;
}
catch
{
MessageBox.Show("An error occured opening Word.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
dgvTasks.Rows[2].Cells[1].Value = "Opening Template";
oDoc = oWord.Documents.Open(ref oFileName, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
}
catch (Exception ex)
{
MessageBox.Show($"An error occured opening the release notes DOCX file: {ex.ToString()}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
return;
}
var wdHead = wd.MainDocumentPart.Document;
var wdPara = wdHead.Body.Descendants<DocumentFormat.OpenXml.Wordprocessing.Paragraph>().First();
//Heading paragraph
dgvTasks.Rows[2].Cells[1].Value = "Creating Document";
Paragraph oPara1;
Object oStartRange = oDoc.Bookmarks.get_Item(ref oStartofDoc).Range;
oPara1 = oDoc.Content.Paragraphs.Add(ref oStartRange);
object oStyle = WdBuiltinStyle.wdStyleHeading1; // set HEADING1 built-in style
oPara1.Range.set_Style(ref oStyle);
oPara1.Range.Text = projectHeading + " " + PublishVersion +
" Released " + DateTime.Now.ToString("yyyy-MM-dd") + "\n";
var wdParagraph = new DocumentFormat.OpenXml.Wordprocessing.Paragraph();
var textRun = new DocumentFormat.OpenXml.Wordprocessing.Run();
//textRun.
//wdPara.Elements().First(). = projectHeading + " " + PublishVersion +
// " Released " + DateTime.Now.ToString("yyyy-MM-dd") + "\n";
//Release notes paragraph
Paragraph oPara2;
oStartRange = oPara1.Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oStartRange);
oStyle = WdBuiltinStyle.wdStyleListNumber; // set NUMBER LIST built-in style
oPara2.Format.set_Style(ref oStyle);
dgvTasks.Rows[2].Cells[1].Value = "Generating Notes Text";
oPara2.Range.Text = GenerateNotesText(); //inject xml output into paragraph
dgvTasks.Rows[2].Cells[1].Value = "Writing to PDF";
oDoc.ExportAsFixedFormat(docFileName, WdExportFormat.wdExportFormatPDF);
oDoc.Close();
oWord.Quit();
File.Delete(newtfName);
dgvTasks.Rows[2].Cells[1].Value = "Complete";
}
public string GenerateNotesText()
{
var logDir = MainWindow.PROJECT_LOG_DIR;
var projLogs = new List<ProjectLog>();
var max = int.MinValue;
var min = int.MaxValue;
var buildNumber = string.Empty;
var outputStringBuilder = new StringBuilder();
var fbs = new List<int>();
dgvTasks.Rows[2].Cells[1].Value = "Checking for local cache";
ProjectLog curProjLog;
if (File.Exists($"{logDir}{packageConfig.ProjectName}.xml"))
{
dgvTasks.Rows[2].Cells[1].Value = "Deserializing";
//var curProjLog = parent.DeSerializeObject<CCNetWrapper.ProjectLog>($"{logDir}{packageConfig.ProjectName}.xml");
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load($"{logDir}{packageConfig.ProjectName}.xml");
string xmlString = xmlDocument.OuterXml;
using (StringReader read = new StringReader(xmlString))
{
Type outType = typeof(CCNetWrapper.ProjectLog );
XmlSerializer serializer = new XmlSerializer(outType);
using (XmlReader reader = new XmlTextReader(read))
{
curProjLog = (CCNetWrapper.ProjectLog)serializer.Deserialize(reader);
}
}
}
foreach (var x in curProjLog.BuildLogs)
{
dgvTasks.Rows[2].Cells[1].Value = $"{x}";
if (x.GetMinorBuildNumber() < min)
{
min = x.GetMinorBuildNumber();
}
if (x.GetMinorBuildNumber() > max)
{
buildNumber = x.BuildNumber;
max = x.GetMinorBuildNumber();
}
if (!string.IsNullOrEmpty(x.Fogbugz) && !string.IsNullOrEmpty(x.ReleaseNote))
{
var fbNum = int.Parse(x.Fogbugz);
if (!fbs.Contains(fbNum))
{
fbs.Add(fbNum);
outputStringBuilder.AppendLine($"MS{x.Fogbugz}. {x.ReleaseNote}");
}
}
};
projLogs.Add(curProjLog);
}
return outputStringBuilder.ToString();
}
private void lblBuildFolder_Click(object sender, EventArgs e)
{
Process.Start("explorer.exe", lblBuildFolder.Text);
}
private void lblLocalPublish_Click(object sender, EventArgs e)
{
Process.Start("explorer.exe", lblLocalPublish.Text);
}
private void lblHCArticle_Click(object sender, EventArgs e)
{
var fileopener = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = "explorer",
Arguments = "\"" + lblHCArticle.Text + "\""
}
};
fileopener.Start();
}
}
}

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="colStepName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProgress.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,314 @@

namespace CCNetLogReader
{
partial class ReleaseNotes
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.dgv_Projects = new System.Windows.Forms.DataGridView();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.dtp_ReleaseDate = new System.Windows.Forms.DateTimePicker();
this.txt_ReleaseVersion = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.txt_Output = new System.Windows.Forms.TextBox();
this.btn_OutputLocation = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.txt_Start = new System.Windows.Forms.TextBox();
this.txt_End = new System.Windows.Forms.TextBox();
this.lbl_MinorStart = new System.Windows.Forms.Label();
this.lbl_MinorEnd = new System.Windows.Forms.Label();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgv_Projects)).BeginInit();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.dgv_Projects, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.dtp_ReleaseDate, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.txt_ReleaseVersion, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.txt_Output, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.btn_OutputLocation, 2, 2);
this.tableLayoutPanel1.Controls.Add(this.label4, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.label5, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.txt_Start, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.txt_End, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.lbl_MinorStart, 2, 3);
this.tableLayoutPanel1.Controls.Add(this.lbl_MinorEnd, 2, 4);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 42);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 6;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1100, 633);
this.tableLayoutPanel1.TabIndex = 0;
//
// dgv_Projects
//
this.dgv_Projects.AllowUserToAddRows = false;
this.dgv_Projects.AllowUserToDeleteRows = false;
this.dgv_Projects.AllowUserToResizeColumns = false;
this.dgv_Projects.AllowUserToResizeRows = false;
this.dgv_Projects.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgv_Projects.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.tableLayoutPanel1.SetColumnSpan(this.dgv_Projects, 3);
this.dgv_Projects.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgv_Projects.Location = new System.Drawing.Point(4, 194);
this.dgv_Projects.Margin = new System.Windows.Forms.Padding(4);
this.dgv_Projects.Name = "dgv_Projects";
this.dgv_Projects.ReadOnly = true;
this.dgv_Projects.RowHeadersVisible = false;
this.dgv_Projects.RowHeadersWidth = 51;
this.dgv_Projects.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
this.dgv_Projects.RowTemplate.Height = 24;
this.dgv_Projects.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgv_Projects.Size = new System.Drawing.Size(1092, 435);
this.dgv_Projects.TabIndex = 0;
this.dgv_Projects.SelectionChanged += new System.EventHandler(this.dgv_Projects_SelectionChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(4, 37);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(135, 25);
this.label1.TabIndex = 1;
this.label1.Text = "Release Date:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(4, 0);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(161, 25);
this.label2.TabIndex = 2;
this.label2.Text = "Release Version:";
//
// dtp_ReleaseDate
//
this.dtp_ReleaseDate.Location = new System.Drawing.Point(173, 41);
this.dtp_ReleaseDate.Margin = new System.Windows.Forms.Padding(4);
this.dtp_ReleaseDate.Name = "dtp_ReleaseDate";
this.dtp_ReleaseDate.Size = new System.Drawing.Size(385, 29);
this.dtp_ReleaseDate.TabIndex = 3;
//
// txt_ReleaseVersion
//
this.txt_ReleaseVersion.Location = new System.Drawing.Point(173, 4);
this.txt_ReleaseVersion.Margin = new System.Windows.Forms.Padding(4);
this.txt_ReleaseVersion.Name = "txt_ReleaseVersion";
this.txt_ReleaseVersion.Size = new System.Drawing.Size(385, 29);
this.txt_ReleaseVersion.TabIndex = 4;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(4, 74);
this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(143, 25);
this.label3.TabIndex = 1;
this.label3.Text = "Output (.docx):";
//
// txt_Output
//
this.txt_Output.Location = new System.Drawing.Point(173, 78);
this.txt_Output.Margin = new System.Windows.Forms.Padding(4);
this.txt_Output.Name = "txt_Output";
this.txt_Output.Size = new System.Drawing.Size(385, 29);
this.txt_Output.TabIndex = 5;
//
// btn_OutputLocation
//
this.btn_OutputLocation.Location = new System.Drawing.Point(566, 78);
this.btn_OutputLocation.Margin = new System.Windows.Forms.Padding(4);
this.btn_OutputLocation.Name = "btn_OutputLocation";
this.btn_OutputLocation.Size = new System.Drawing.Size(103, 34);
this.btn_OutputLocation.TabIndex = 6;
this.btn_OutputLocation.Text = "Load...";
this.btn_OutputLocation.UseVisualStyleBackColor = true;
this.btn_OutputLocation.Click += new System.EventHandler(this.btn_OutputLocation_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(4, 116);
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(113, 25);
this.label4.TabIndex = 2;
this.label4.Text = "Minor Start:";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(4, 153);
this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(107, 25);
this.label5.TabIndex = 2;
this.label5.Text = "Minor End:";
//
// txt_Start
//
this.txt_Start.Location = new System.Drawing.Point(173, 120);
this.txt_Start.Margin = new System.Windows.Forms.Padding(4);
this.txt_Start.Name = "txt_Start";
this.txt_Start.Size = new System.Drawing.Size(385, 29);
this.txt_Start.TabIndex = 5;
//
// txt_End
//
this.txt_End.Location = new System.Drawing.Point(173, 157);
this.txt_End.Margin = new System.Windows.Forms.Padding(4);
this.txt_End.Name = "txt_End";
this.txt_End.Size = new System.Drawing.Size(385, 29);
this.txt_End.TabIndex = 5;
//
// lbl_MinorStart
//
this.lbl_MinorStart.AutoSize = true;
this.lbl_MinorStart.Location = new System.Drawing.Point(566, 116);
this.lbl_MinorStart.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbl_MinorStart.Name = "lbl_MinorStart";
this.lbl_MinorStart.Size = new System.Drawing.Size(23, 25);
this.lbl_MinorStart.TabIndex = 7;
this.lbl_MinorStart.Text = "0";
//
// lbl_MinorEnd
//
this.lbl_MinorEnd.AutoSize = true;
this.lbl_MinorEnd.Location = new System.Drawing.Point(566, 153);
this.lbl_MinorEnd.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbl_MinorEnd.Name = "lbl_MinorEnd";
this.lbl_MinorEnd.Size = new System.Drawing.Size(23, 25);
this.lbl_MinorEnd.TabIndex = 8;
this.lbl_MinorEnd.Text = "0";
//
// menuStrip1
//
this.menuStrip1.GripMargin = new System.Windows.Forms.Padding(2, 2, 0, 2);
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(8, 3, 0, 3);
this.menuStrip1.Size = new System.Drawing.Size(1100, 42);
this.menuStrip1.TabIndex = 1;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.saveToolStripMenuItem,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(62, 36);
this.fileToolStripMenuItem.Text = "&File";
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(174, 40);
this.saveToolStripMenuItem.Text = "&Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(174, 40);
this.exitToolStripMenuItem.Text = "&Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
// ReleaseNotes
//
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1100, 675);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.menuStrip1);
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "ReleaseNotes";
this.Text = "ReleaseNotes";
this.Load += new System.EventHandler(this.ReleaseNotes_Load);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dgv_Projects)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.DataGridView dgv_Projects;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.DateTimePicker dtp_ReleaseDate;
private System.Windows.Forms.TextBox txt_ReleaseVersion;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txt_Output;
private System.Windows.Forms.Button btn_OutputLocation;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox txt_Start;
private System.Windows.Forms.TextBox txt_End;
private System.Windows.Forms.Label lbl_MinorStart;
private System.Windows.Forms.Label lbl_MinorEnd;
}
}

View File

@@ -0,0 +1,183 @@
using CCNetWrapper;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using _Application = Microsoft.Office.Interop.Word._Application;
namespace CCNetLogReader
{
public partial class ReleaseNotes : Form
{
public MainWindow MainWindowParent { get; internal set; }
public ReleaseNotes(List<ServerBuild> serverBuilds)
{
InitializeComponent();
dgv_Projects.DataSource = null;
serverBuilds.Sort((x, y) => string.CompareOrdinal(x?.ProjectName, y?.ProjectName));
dgv_Projects.DataSource = serverBuilds.ToList();
//dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgv_Projects.Columns["ProjectName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
private void btn_OutputLocation_Click(object sender, EventArgs e)
{
using (OpenFileDialog fd = new OpenFileDialog())
{
fd.Title = "Choose Release Note DOCX";
fd.Filter = "Release Notes (*.docx)|*.docx|All Files (*.*)|*.*";
var result = fd.ShowDialog();
if (result == DialogResult.OK)
{
txt_Output.Text = fd.FileName;
}
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txt_ReleaseVersion.Text) && !string.IsNullOrEmpty(txt_Output.Text))
{
docx_write();
}
else if (string.IsNullOrEmpty(txt_ReleaseVersion.Text))
{
MessageBox.Show("No version number entered.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
#region fileIOFunctions
private void docx_write()
{
string projectHeading = "";
object oMissing = System.Reflection.Missing.Value;
object oFileName = txt_Output.Text;
object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
object oStartofDoc = "\\startofdoc"; /* \startofdoc is a predefined bookmark */
object oProjectName = new object();
//Start Word and create a new document.
_Application oWord;
_Document oDoc;
try
{
oWord = new Microsoft.Office.Interop.Word.Application();
oWord.Visible = true;
}
catch
{
MessageBox.Show("An error occured opening Word.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
oDoc = oWord.Documents.Open(ref oFileName, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
}
catch
{
MessageBox.Show("An error occured opening the release notes DOCX file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
return;
}
//Heading paragraph
Paragraph oPara1;
Object oStartRange = oDoc.Bookmarks.get_Item(ref oStartofDoc).Range;
oPara1 = oDoc.Content.Paragraphs.Add(ref oStartRange);
object oStyle = WdBuiltinStyle.wdStyleHeading1; // set HEADING1 built-in style
oPara1.Range.set_Style(ref oStyle);
oPara1.Range.Text = projectHeading + " " + txt_ReleaseVersion.Text +
" Released " + dtp_ReleaseDate.Text + "\n";
//Release notes paragraph
Paragraph oPara2;
oStartRange = oPara1.Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oStartRange);
oStyle = WdBuiltinStyle.wdStyleListNumber; // set NUMBER LIST built-in style
oPara2.Format.set_Style(ref oStyle);
oPara2.Range.Text = outputStringBuilder.ToString(); //inject xml output into paragraph
}
#endregion
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
StringBuilder outputStringBuilder = new StringBuilder();
private void dgv_Projects_SelectionChanged(object sender, EventArgs e)
{
var logDir = MainWindow.PROJECT_LOG_DIR;
var projLogs = new List<ProjectLog>();
var max = int.MinValue;
var min = int.MaxValue;
var buildNumber = string.Empty;
dgv_Projects.Enabled = false;
outputStringBuilder = new StringBuilder();
var fbs = new List<int>();
foreach (DataGridViewRow selRow in dgv_Projects.SelectedRows)
{
var projName = selRow.Cells["ProjectName"].Value.ToString();
if (File.Exists($"{logDir}{projName}.xml"))
{
var curProjLog = MainWindowParent.DeSerializeObject<CCNetWrapper.ProjectLog>($"{logDir}{projName}.xml");
curProjLog.BuildLogs.ForEach(x =>
{
if (x.GetMinorBuildNumber() < min)
{
min = x.GetMinorBuildNumber();
}
if (x.GetMinorBuildNumber() > max)
{
buildNumber = x.BuildNumber;
max = x.GetMinorBuildNumber();
}
if (!string.IsNullOrEmpty(x.Fogbugz) && !string.IsNullOrEmpty(x.ReleaseNote))
{
var fbNum = int.Parse(x.Fogbugz);
if (!fbs.Contains(fbNum))
{
fbs.Add(fbNum);
outputStringBuilder.AppendLine($"MS{x.Fogbugz}. {x.ReleaseNote}");
}
}
});
projLogs.Add(curProjLog);
}
}
lbl_MinorStart.Text = min.ToString();
txt_Start.Text = min.ToString();
lbl_MinorEnd.Text = max.ToString();
txt_End.Text = max.ToString();
txt_ReleaseVersion.Text = buildNumber;
dgv_Projects.Enabled = true;
}
private void ReleaseNotes_Load(object sender, EventArgs e)
{
}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThoughtWorks.CruiseControl.Core.Util;
using Amazon.S3;
using System.IO;
using Microsoft.Extensions.Logging;
using Amazon.S3.Transfer;
using System.Windows.Forms;
using System.Net;
namespace CCNetLogReader
{
public class s3Config
{
public string accessKey = "AKIA4SZHOEQBTOZHRNVC";
public string secretKey = "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";
public string region = "us-east-2"; // Amazon.RegionEndpoint.USEast2;
public string bucket = "";
public string cloudfrontDomainName = "";
}
public class s3Client
{
IAmazonS3 _s3;
s3Config _config = new s3Config();
//ILogger _log;
public s3Client(s3Config config)
{
//var logFactory = LoggerFactory.Create(b => b.AddSimpleConsole(
// s =>
// {
// s.SingleLine = true;
// s.IncludeScopes = true;
// s.TimestampFormat = "yyyy-MM-dd HH:mm:ss ";
// }
//));
//_log = logFactory.CreateLogger<s3Client>();
//_log.LogInformation("Constructing ZendeskClient.");
if (null != config)
_config = config;
_s3 = new AmazonS3Client(
_config.accessKey,
_config.secretKey,
new AmazonS3Config()
{
RegionEndpoint = Amazon.RegionEndpoint.GetBySystemName(_config.region)
}
);
//_log.LogInformation($"Connected to s3 in {_config.region}");
var l = _s3.ListBuckets();
if (!l.Buckets.Select(s => s.BucketName).Contains(_config.bucket))
//_log.LogInformation($"Bucket {_config.bucket} found.");
//else
{
//_log.LogInformation($"Bucket {_config.bucket} NOT found.");
throw new Exception("Not Connected to AWS S3!");
}
}
public void uploadAndClearFolder(string s3folder, List<string> localFileNames)
{
//_log.LogInformation("Insuring s3 folder structure.");
var opts = new Amazon.S3.Model.PutObjectRequest()
{
BucketName = _config.bucket,
Key = s3folder,
};
var create = _s3.PutObject(opts);
//_log.LogInformation("Finding existing files.");
var currentContents = _s3.ListObjectsV2(new Amazon.S3.Model.ListObjectsV2Request()
{
BucketName = _config.bucket,
Prefix = s3folder,
});
//_log.LogInformation($"Files found: {string.Join(",", currentContents.S3Objects.Select(s => s.Key))}");
//if (currentContents.S3Objects.Select(s => s.Key).Contains(s3folder + s3keys))
//{
// //_log.LogInformation($"File {s3folder + s3key} exists. Skipping.");
// return;
//}
//_log.LogInformation($"Uploading {localFileName}");
foreach (var f in localFileNames)
{
var uploadRequest = new TransferUtilityUploadRequest
{
BucketName = _config.bucket,
FilePath = f,
Key = s3folder + "/" + Path.GetFileName(f),
CannedACL = S3CannedACL.PublicRead,
};
//uploadRequest.UploadProgressEvent +=
// new EventHandler<UploadProgressArgs>((object sender, UploadProgressArgs e) =>
// {
// });
var fileTransferUtility = new TransferUtility(_s3);
fileTransferUtility.Upload(uploadRequest);
}
//_log.LogInformation($"Upload {s3key} complete.");
//_log.LogInformation("Deleting pre-existing files.");
foreach (var o in currentContents.S3Objects)
{
if (localFileNames.Select(lfn => Path.GetFileName(lfn)).Contains(o.Key)) continue;
if (o.Key.EndsWith("/")) continue;
if (localFileNames.Contains(o.Key)) continue;
_s3.DeleteObject(_config.bucket, o.Key);
//_log.LogInformation($"{o.Key} deleted.");
}
}
}
}

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThoughtWorks.CruiseControl.Remote;
namespace CCNetLogReader
{
public class ServerBuild
{
public string ProjectName { get; private set; }
public IntegrationStatus BuildStatus { get; private set; }
public string LastSuccessfulBuildLabel { get; private set; }
public DateTime LastBuildDate { get; private set; }
public DateTime? PublishedDate { get; private set; }
public ServerBuild(string projectName, IntegrationStatus buildStatus, string lastSuccessfulBuildLabel, DateTime lastBuildDate, DateTime? publishedDate = null)
{
ProjectName = projectName;
BuildStatus = buildStatus;
LastSuccessfulBuildLabel = lastSuccessfulBuildLabel;
LastBuildDate = lastBuildDate;
PublishedDate = publishedDate;
}
}
}

View File

@@ -0,0 +1,78 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZendeskApi_v2;
using ZendeskApi_v2.HelpCenter;
using ZendeskApi_v2.Models.HelpCenter.Translations;
namespace CCNetLogReader
{
public class zdConfig
{
public string locale = "en-us";
public string subdomain = "dtsweb";
public string username = "nathan.brown@dtsweb.com";
public string apikey = "WNgdiDNgJGWkwUbDNukh1QrduiV0ugTsvMRKcuTY";
}
public class ZendeskClient
{
bool _connected = false;
zdConfig _config = new zdConfig();
ZendeskApi _zd;
//ILogger _log;
public ZendeskClient(zdConfig config = null)
{
//var logFactory = LoggerFactory.Create(b => b.AddSimpleConsole(
// s => {
// s.SingleLine = true;
// s.IncludeScopes = true;
// s.TimestampFormat = "yyyy-MM-dd HH:mm:ss ";
// }
//));
//_log = logFactory.CreateLogger<ZendeskClient>();
//_log.LogInformation("Constructing ZendeskClient.");
if (null != config)
_config = config;
}
public void Connect()
{
//_log.LogInformation("Connecting to Zendesk.");
_zd = new ZendeskApi(
_config.subdomain, _config.username,
_config.apikey, _config.locale);
_connected = true;
}
public void UpdateArticle(long articleID, string Body)
{
//_log.LogInformation($"Updating Article: {articleID}.");
if (!_connected) Connect();
//var locales = _zd.Locales.GetAllLocales();
//foreach (var l in locales.Locales)
//{
// _log.LogInformation(l.Name);
//}
var article = _zd.HelpCenter.Articles.GetArticle(articleID);
var translation = _zd.HelpCenter.Translations.ShowTranslationForArticle(articleID, _config.locale).Translation;
//_log.LogInformation($"Updating Article: {article.Article.Title}.");
translation.Body = Body;
_zd.HelpCenter.Translations.UpdateArticleTranslation(translation);
//_log.LogInformation("Updated Article.");
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,461 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-01-02T16:14:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-10-04T17:56:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified with datapro versions 4.0.1025.49331,4.1.446.49612 and 4.2.154.49638.
Tested Per Dans notes...
1) do an ISO export in run test by having the export flag in edit test setups set with ISO unfiltered EU selected. after exporting check that the MME file contains both test objects in it with any meta data that you set for that test object (like velocity or mass)
2) do an ISO export from the download tab, check that the MME file has the test objects in it
3) do an iso export from the export tab (with a download that has the group with no channels it collected from step 1 or 2), and verify the MME file has all the groups in it.
</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-10-04T17:55:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-10-03T19:52:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-07-13T15:40:19Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-07-13T15:33:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-28T15:05:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0/4.1/4.2@49134</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-06-22T21:43:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-21T18:33:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-06-21T18:28:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-21T18:28:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>to test this issue create a test setup with two groups with one group with no channels, for example:
in this example all my channels are in the car and no channels are on the pole, and I have a different test object value for both groups.
this setup then needs to be used in a couple of different tests
1) do an ISO export in run test by having the export flag in edit test setups set with ISO unfiltered EU selected.  after exporting check that the MME file contains both test objects in it with any meta data that you set for that test object (like velocity or mass)
2) do an ISO export from the download tab, check that the MME file has the test objects in it
3) do an iso export from the export tab (with a download that has the group with no channels it collected from step 1 or 2), and verify the MME file has all the groups in it.
I did notice that some ISO meta data set for laboratory and customer details don't get set from basic info to the export, I don't think this is connected to the patch at all and should be considered a separate issue.
one note, if the test object code is "?" it is skipped in the code ...</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-21T18:21:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-21T17:53:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>now outputs all the meta from test object 2 in the .mme file</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-21T17:52:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>now adds the information in download to the DTS file for objects which don't have channels (which then allows it to be exported from an export tile)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-21T17:22:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-06-21T14:54:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-06-20T22:01:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-20T21:20:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-20T16:08:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>here's a patch that does what's required in theory I think, but probably needs a lot more testing and in depth looking at.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-19T23:12:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-19T16:30:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-19T16:29:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-06T15:30:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-06-06T15:28:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Kate Martin</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-06-06T15:25:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Kate Martin</User>
<Comment>https://dtsweb.zendesk.com/agent/tickets/11963
 
No access to Test Object with no DAS channels in export steps.</Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2023-06-06T15:24:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-09-21T20:06:18Z</TimeStamp>
<ReleaseNote>Added ISO metadata without associated group.</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-03-21T20:39:19Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.345</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-02-21T21:33:58Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-02-18T21:29:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0@46351</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-02-18T21:14:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-18T00:03:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>There's a lot of changes in the patch which aren't relevant, sorry about that, that was some code cleanup that I forgot to check-in by themselves prior to starting work.
This patch only addresses part of Kate's request so far (ability to enter customer/lab/engineer details in edit test setup).
In the UI for EditTestSetup there are 3 new property grids that allow entering in customer/lab/engineer meta data.  These are in an expander that is collapsed by default.  The state of the expander is remembered and stored in the database.
The property grids display each underlying class of data (CustomerDetailsDbRecord, etc).  I made use of attributes to mark some of the properties as not browseable so they don't show up in the UI (id, key reference).
I had to move the mark page modified to save because the test was still showing up as modified after you saved, but I don't think this was specific to any changes for iso meta data.
I added attributes to internationalize the properties so they can be translated in the property grids.
The meta data was already in the xml and in the db, so it hooks into the storage already in place.
Subject:
please review 13735, Need the ability to add ISO metadata without an associated Group
From:
Dan McFadden &lt;dan.mcfadden@dtsweb.com&gt;
Date:
2/17/2022, 3:49 PM
To:
DTSSoftwareDev &lt;DTSSoftwareDev@dtsweb.com&gt;
Jerry, John,
I've submitted a patch for:
13735
Need the ability to add ISO metadata without an associated Group
this handles the other half of setting iso data without channels.  You still do need a group though.
If you set up a group it will now be available in ISO Export and meta data can be set.  This group will be saved without any channels.
Part of the trick to this was changing the code in extra properties to still add a group even if it had no channels or just a blank channel.
The other part of the trick was storing the TestObject and Position in the group's "ExtraProperties".  Here's a test setup with two groups, with one test object (1), which can be seen in ISO Export and serializes back and forth.  I had to remove the microsoft json and replace with the newton.json.  Microsoft recommends this: https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer?redirectedfrom=MSDN&amp;view=netframework-4.8, it was not de-serializing properly.  I'm not sure the group extra properties are being displayed anywhere else, there does appear to be channel extra properties and test extra properties which are displayed though.
 
Attachments:
DTM_13735_metadata2.patch 12.3 KB</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-02-18T00:03:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-02-15T23:34:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-08T21:10:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-09-16T20:50:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Rhonda Murray</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-08-31T16:05:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2021-07-19T18:58:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-07-02T15:48:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-04-30T15:08:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-04-30T15:07:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>So the customer details/Test engineer details contains some of the fields to be changed already, however it seems the desire is to allow overriding the value in those fields as needed and store them somewhere as an override? Once again, in my mind the estimate is allowing additional time to think of a generic solution that allows storing/retrieving test meta data. This ability may already be present...</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2020-10-19T23:51:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2020-10-19T16:45:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>https://dtsweb.zendesk.com/agent/tickets/8022</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2020-10-13T17:36:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Kate Martin</User>
<Comment>All of the ISO meta data should be available to be entered prior to the test if needed irrespective of having a group entered or not.
This is another request to have the customer test number surfaced earlier for example. Please just make all the ISO meta data available for entry prior to a test.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2019-04-16T14:35:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2019-02-15T17:41:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>bug 13063
https://dtsweb.zendesk.com/agent/tickets/4907
 
To the second issue of not having the ability to add metadata without a Group, I'll have to run this by the team and figure out a good design moving forward. We're in testing on our next 2.0 release, so I'm thinking that with the design work and implementation needed it will need to be considered for the 2.1 release Q1 of 2019 at the earliest.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2019-02-15T17:41:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,180 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified with DataPRO v4.0.1119, 4.2.324
Testing Method:
Per Jerry:
Install DataPRO on a system that does not have SQL Server 2019 LocalDB installed and ensure that it gets installed.
Best way I did this was to copy these versions of DataPRO to Quality Laptop which I knew did not have SQL server 2019
Installed DataPRO and was prompted with the following:</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2024-01-12T16:48:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2024-01-12T16:45:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-01-02T21:39:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-01-02T16:22:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>49989 is 4.0</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-12-20T00:39:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-12-19T21:26:08Z</TimeStamp>
<ReleaseNote>Installer now installs MS SQL 2019</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>49979 is 4.2</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-12-18T21:54:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Both 2020 and 2023 versions of InstallShield can install the 2019 version of SQL Server LocalDb, and both have been tested successfully.
DTS already has a license for 2020, so the no-brainer choice is to change from 2016 to that version.
Since the installer will now install SQL 2019 if it isn't already installed on a user's system, whether or not to change our base SQL database from 2014 to 2019 is something to consider. If we stay at 2014, then the first time a 2014 database is in use by SQL 2019, it will automatically undergo an irreversible upgrade.
This seems to be the safest choice for now, but can be changed at any time in the future.
</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-12-16T00:29:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-12-13T17:45:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>there may be other manuscript tickets too ...</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-12-13T17:38:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-12-12T16:56:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Hi Dan,
This is great news. I am more than comfortable explaining we don't support WIN 7.
Chris
-----Original Message-----
From: Dan McFadden &lt;dan.mcfadden@dtsweb.com&gt;
Sent: Wednesday, December 6, 2023 12:28 PM
To: Chris Balogh &lt;chris.balogh@dtsweb.com&gt;
Cc: Jerry Lawrence &lt;jerry.lawrence@dtsweb.com&gt;
Subject: SQL server end of security support note
We had a customer ask not to long ago about the version of SQL server we
currently use and our plans to update.
updating this in the installer is fairly trivial, but may potentially
mean windows 7 or similar OS may not be supported if it's not supported
by the next SQL version to be installed.
https://endoflife.date/mssqlserver
the End of security support for 2014 is july 09 2024.
Can we bite this off for the 4.2 release?  This question is many to get
a go ahead from support from chris.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2023-12-12T16:56:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Rhonda Murray</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-09-02T21:56:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Eric Fizer</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2019-08-15T22:01:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Eric Fizer</User>
<Comment>Chris Balogh (DTS)
Aug 15, 14:55 PDT
Rainer had an issue with SQL 2016 from my touching of his 2014 db.
Eric,
Can you get me an FB ticket for that one too?</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2019-08-15T22:01:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Travis Ralston</User>
<Comment />
<StatusString>Closed</StatusString>
<TimeStamp>2023-04-26T21:44:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Travis Ralston</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2023-04-26T21:44:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Erin Kippen</User>
<Comment>Rev 6 released.  (Updated the IP address info in Appendix C.)  No additional action outstanding.  Case remains open for tracking future updates. (EK)</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2023-03-15T18:21:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Erin Kippen</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-03-15T17:42:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Moors</User>
<Comment>I opened the link today and it appears the IP address statement on page 19 remains. Just wanted to ping.
https://support.dtsweb.com/hc/en-us/articles/202116908-User-s-Manual-SLICE-PRO-Ethernet-Controller-ECM-</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2021-10-19T22:01:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Erin Kippen</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2020-08-12T00:32:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Erin Kippen</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2020-08-06T15:56:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Travis Ralston</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2020-08-06T15:46:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Travis Ralston</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2020-08-06T15:43:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Travis Ralston</User>
<Comment>On page 19, it states what X will equal, depending on the S/N. That final digit, however, can only go as far as 255. So the last two lines (in the orange box), cant be used past 255.
 https://support.dtsweb.com/hc/en-us/articles/202116908-User-s-Manual-SLICE-PRO-Ethernet-Controller-ECM-
Described correctly  in DTS default IP address article. 
https://support.dtsweb.com/hc/en-us/articles/203487037-DTS-Default-IP-Addresses</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2020-08-06T15:43:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,338 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.714, 4.1.38
Non-Linear enabled:
Add Linear
 
 
In 4.1</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-14T21:22:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-12T15:35:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-09T22:28:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in DP 4.0 maint @ rev 47591
Fixed in DP 4.1 Devel @ rev 47592
QA can test with following steps in "Sensor Database" tab
1. With a new or existing Analog linear sensor, engage the "Non-Linear" checkbox in the Info section
2. Expand the Calibration section. Click the "Add Linear" button
3. Linear and Non-linear details should not overlap back in Info.
</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-09T22:04:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>should be in 4.0 and 4.1</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-09T16:48:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-09T00:31:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T23:50:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T18:00:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T18:00:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Found a UI bug when adding/editing a Dual-cal (so simultaneously having Linear and Non-Linear calibrations) sensor. Steps to recreate in Sensor Database:
With a new or existing Analog linear sensor, engage the "Non-Linear" checkbox in the Info section
Expand the Calibration section. Click the "Add Linear" button
Linear and Non-linear details now overlap back in Info. Shouldn't be:</Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2022-08-26T23:51:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.420</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-03-22T23:34:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-03-22T22:49:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in DP 4.0 @ revision: 46549</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-03-22T21:11:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-03-22T16:29:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-03-22T01:03:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Reopened
Capacity value that's modified in Sensor Database does not show in parameters navstep in Test Setups tab.</Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2022-03-18T20:29:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-09T23:20:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-09T22:46:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.308</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-02-08T19:54:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-02-03T19:45:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Implemented in DataPRO 4.0 @ revision: 46233</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-02-03T19:44:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-03T19:25:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-03T19:24:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-03T19:23:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-03T19:22:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-01-29T00:54:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-01-25T21:47:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-01-25T01:27:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-01-11T21:50:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>we could literally collapse everything not essential</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-01-11T18:41:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-01-11T18:30:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Rhonda Murray</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-08-31T16:01:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2021-07-19T18:58:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-04-30T15:08:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-04-30T15:08:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2021-04-28T16:09:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>Only expose "needed" fields in Sensor Database and collapse others. Similar to Test Setup Info</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2021-04-28T16:09:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-06-29T21:23:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2021-06-29T21:23:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Rollin White</User>
<Comment>Confirmed by Tim's startup test of DTS193C</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2009-02-25T01:51:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Chuck Gillen-O'Neel</User>
<Comment>Implemented in version X0A9</Comment>
<StatusString>Resolved (Implemented)</StatusString>
<TimeStamp>2009-02-23T18:21:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Chuck Gillen-O'Neel</User>
<Comment>Implemented in version X0A9</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2009-02-23T18:21:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chuck Gillen-O'Neel</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2009-02-23T18:16:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Rollin White</User>
<Comment />
<StatusString>Assigned to Chuck Schied</StatusString>
<TimeStamp>2009-02-22T19:37:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Rollin White</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2009-02-22T19:37:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,338 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified with dp 4.0.758   Download shows error to user  as it should when disconnecting and reconnecting ethernet cable and does not proceed to view data tab and give  error as before patch</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-10-31T21:33:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-31T17:11:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:55:09Z</TimeStamp>
<ReleaseNote>Addresses an issue when disconnecting and reconnecting ECM during download</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:54:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47720 is 4.0</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-12T15:56:19Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:16:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-26T15:33:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Blocked until MAINT_40 gets the patch applied (4.1 patch is attached).</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-08-24T18:37:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47509 is 4.1</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-19T23:32:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-18T17:52:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-18T17:01:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T21:02:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T20:37:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>booting to 4.1 fallout</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T20:37:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-08T22:10:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-04T23:02:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-04T23:02:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>This can differ between Release and Debug versions based on the value of the ShowCompactHardware user property.
If False, the overall status is Finished because the status of the download is not checked on the SPS (FAILED), but is only checked on the ECM (FINISHED).  Using the list of hardware built in SelectedTestObject is not the correct list to be checking.
There is also another wrinkle to this issue: if the ECM is disconnected, eventually both the ECM and the SPS return a status of IDLE.
Also, the case of one SPS being disconnected from a chain of SPSes should be considered.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-29T16:03:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:50:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:20:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:11:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T14:39:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-12T20:46:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-12T20:10:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-12T17:58:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-07T19:41:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Was able to reproduce this issue with ECM SPE00596 AND B0B7 FW  
Tested with DP 4.0637 and 4.0.640  and got modal message "Failed to read .... Ch001.chn sample ..." during view all step .
 
Steps to reproduce ..
1. Arm ECM in recorder mode  for 10 seconds  post  , 100K SPS and 1 channel  then  record data .
2. During download all step disconnect then reconnect ethernet cable , then wait for download to finish. Did not get a message here in the download all step after download completed.
3. Move to view all step and and click run .. modal message appears   "Failed to read .... Ch001.chn sample ..." during view all step .
 
log file          details  ...
 
2022-07-07 08:46:59.052 DownloadService.Download : calling service available
2022-07-07 08:49:30.412 User Admin navigated to: View all
2022-07-07 08:49:31.612 ModalWindow: Failed to read 2022_07_07 08_26Ch001.000.chn sample 29980
2022-07-07 08:49:46.369 User Admin pressed PageButton:DataProPage_ModalWindow_OK
2022-07-07 09:03:35.847 ModalWindow: Are you sure you want to close DataPRO? Press Yes to close</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-07-07T16:01:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-06T20:24:58Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Not able to reproduce with B0B7 firmware on ECM, and neither 4.0.140 nor 4.0.637.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-07-01T21:54:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-01T19:48:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-06-28T20:33:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>we should surface the issue to the user during the download step ...</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-06-28T18:47:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Found while testing ECM firmware B0B6</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2021-11-04T22:19:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2021-11-03T23:34:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Record a 10-second test with 1 sensor. Start the Download all step, then quickly disconnect/re-connect the ethernet cable. Wait 2 minutes for the download to "finish". A modal dialog displaying, "Failed to read &lt;fn&gt;.chn sample &lt;n&gt;" will appear and the .chn file will be incomplete.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2021-11-03T23:34:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,130 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:56:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified in  DataPRO  4.0.903.48446  , but user values do not show up in DataPRO  4.1.249.48446  see case 30491</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-03-31T20:15:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-03-31T20:14:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-03-31T18:54:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0/4.1@48431</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-03-22T15:26:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>adds 3 columns in sensor database and edit test setup channels.  These columns support sorting and filtering.
these can be set in edit sensor-&gt;Display</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-03-22T15:25:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-03-15T23:15:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-03-15T17:31:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-23T15:54:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-02-22T21:04:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-02-22T21:03:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>##- Please type your reply above this line -##
You are registered as a CC on this support request (dtsweb.zendesk.com/agent/tickets/10031).
Reply to this email to add a comment to the request.
 
Nathan Brown (DTS)
Feb 22, 2022, 14:22 CST
As a DataPRO User, I'd like to keep track of meta-data about sensors (like location, owner, etc) using User Value 1,2,3.
I'd also like to be able to search for sensors with user values that match the search field in the Sensor Database UI.
Currently this is not a field that is searchable.
Thanks everybody!
 
You are an agent. Add a comment by replying to this email or view ticket in Zendesk Support.
Ticket # 10031 Status Open Requester Marcus Ashford CCs Mike Beckage, Dan McFadden, Chad J Ivan, Nathan Brown, Ariel Muckenhirn Group Software Assignee Chris Balogh Priority Normal Type Problem Channel Web Form
 
This email is a service from DTS. Delivered by Zendesk.
[X7YMOE-Y9KK]Ticket-Id:10031Account-Subdomain:dtsweb</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-02-22T21:03:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,290 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Closed</StatusString>
<TimeStamp>2023-12-18T18:13:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2023-12-18T18:13:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-12-18T18:13:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>reopening to set testrail flag true </Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2023-12-18T18:12:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Added to dp 4.0 regression tests  Verify Large Data Viewer is installed with Datapro installation - TestRail</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-04-25T17:57:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified Large Dataviewer is included with Dp 4.0.793.48044 install.</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-01-17T22:47:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-17T22:34:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:53:49Z</TimeStamp>
<ReleaseNote>Large Data Viewer now part of installer</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:53:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47725 is 4.0 (Installer)</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-12T17:19:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47724 is 4.0</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-12T17:11:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:18:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-09-27T23:25:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:47:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-08T20:42:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Blocked / On Hold until added to 4.0</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-09-08T20:41:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-08T20:40:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47573 and 47574 (Installer) are 4.1
Added LargeDataViewer output files to new DataPRO/Modules/LargeDataViewer folder.
Added Post-build event to create new RunTimeModules/LargeDataViewer folder in existing RunTimeModules development folder, if it doesn't already exist.
Added Post-build event to copy contents of DataPRO/Modules/LargeDataViewer folder to new RunTimeModules/LargeDataViewer development folder.
Added Post-build event to create new RunTimeModules/LargeDataViewer folder in existing RunTimeModules build folder, if it doesn't already exist, so that it will be copied with the rest of the development RunTimeModules folder to the RunTimeModules build folder.
</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-08T20:40:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:41:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:39:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:36:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>This is a workaround to our current viewer not being able to view large data files.
 
Real fix is the existing decimation for viewer case 9806</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:35:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T18:01:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-01T23:55:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-01T22:42:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>first step is to check out the large dataviewer, get an idea if it could be included into datapro, if so what estimate, adding to installer is probably pretty easy.
current svn I think is:
http://build:8080/svn/Software/Views/LargeDataViewer</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-01T22:41:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-24T17:46:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-06-28T18:38:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-05-03T20:41:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-04-28T00:36:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-04-28T00:36:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,375 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Randy Chu</User>
<Comment />
<StatusString>Closed</StatusString>
<TimeStamp>2023-12-20T00:40:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Randy Chu</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2023-12-20T00:39:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Randy Chu</User>
<Comment />
<StatusString>Reopened</StatusString>
<TimeStamp>2023-12-20T00:39:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Closed</StatusString>
<TimeStamp>2023-12-18T18:16:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2023-12-18T18:16:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>reopening to set testrail flag to true....</Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2023-12-18T18:15:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:47:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Added to Datapro 4.1 Regression tests.
Datapro Supports 16gb Data Download For S6Air ethernet recorder - TestRail</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-04-24T21:56:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DataPRO v4.0.907, 4.1.257
Tested:
Using a S6A and FWTU to have a S6A use ethernet recorder firmware G1B6. Setting Event attribute to 119 EthEventTotalByteCount to 6442450944 which is 6.442450944 GB. I went the easier route than having to stream in data.
Back to DataPRO I navigated to Download data tab and connected to hardware and downloaded. Very slowly.
Finished downloading in 4.0.907:
In 4.1.257</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-04-18T18:13:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-03-02T20:49:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-03-02T20:03:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-13T16:44:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-18T22:02:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-01-03T18:27:15Z</TimeStamp>
<ReleaseNote>Adds support for 16Gb downloads with Ethernet Data Recorder</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-03T18:26:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>to test this send a lot of data (say 6gb or larger) and download in datapro, compare it to the data sent.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-12-21T01:02:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0/4.1@47980</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-12-21T01:01:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>note, you need to adjust the EVENT attribute, not the arm attribute</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-12-20T21:53:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>if you didn't record anything you might also need to set total event count</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-12-20T17:47:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>you can also manually set EthEventTotalByteCount to 6GB to avoid having to record it, but note that your data may be all 0xFF when you download it though (but should be 6GB)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-12-20T17:35:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-12-13T22:56:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-12-13T19:45:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-20T21:28:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-20T21:07:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-20T21:06:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-30T00:35:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-28T20:56:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-28T20:47:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T21:30:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-24T19:50:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>Bulk reassignment from Dan to DTS Software Dev</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-06-16T17:19:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-06-14T19:59:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-05-17T17:45:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-05-13T16:27:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-05-13T16:27:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>max limit in DP/FWTU is 2GB (max addressable, whether the PC has that much memory is a separate issue)
FWTU has now been updated to allow arbitrary size, including 16GB.
note it takes hours to download 16GB.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-05-13T16:26:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>note that you can use fsutil in windows to create a file of a given size.
note that the parameters for UDPClient are similar to:  UDPStreamClient.exe filename="DataPRO 2021-09-15 10.59.01.log" buffer_size=1400 rate=500000 port=8401 address=192.168.4.79</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-05-12T17:22:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>my goal is to include support in FWTU first, then to port to DP3.4/4.0
will be using our UDPClient to send a file of 8GB first, then expand up to 16GB.
will take a bit of recording time to send 8GB @10Mb/s</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-05-12T16:03:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-05-12T15:51:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Eric Fizer</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-05-11T23:21:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Eric Fizer</User>
<Comment>Steffon D Brigman
May 11, 2022, 13:26 PDT
Hey John,
I was able to test on the spreadbench again today, and I'm not able to get any data from the DDR when I remove power before an event has been completed.
I followed the steps that you provided for changing the EventTimeStamp and setting the EthEventTotalByteCount to the amount of data that I want to record. I'm assuming the max, 16307421180, is 16GB, so I used 16GB, 15GB, 10GB, and 8GB. I still didn't see any DDR data. TotalEventsStored is 1 too.
For some of the tests previously mentioned, I removed power right after triggering the ADRs and waited until about midway through an event to remove power.
I also keep seeing a warning that the ADRs didn't see an event trigger when I go through the steps in the Download Data tab. The download still works as expected, except that no data is downloaded from the DDR.
Attached are the steps that we have for reference. If you can provide immediate assistance for this, I'd greatly appreciate it. A good way to reach me is at 520-545-7989.
Attachment(s)
DDR Data Retrieval Post-Test with Power Loss.pdf
Here is the error:
[2:53 PM] Eric Fizer
2022-05-11 14:34:21.107 -&gt; EventData - QueryEthernetEventInfo [00000190], S6A0070, local: 192.168.1.175:51624, Remote: 192.168.4.70:8301
2022-05-11 14:34:21.110 &lt;- EventData - QueryEthernetEventInfo [00000190]\[00000190] - (1.9688ms), S6A0070 EventId: 0, DataDownloaded: 0, TotalByteCount: 8000000000, TriggerByteCount: 0, FaultByteCount: 0, DataStartTimeStamp: 0, 0
2022-05-11 14:34:21.112 !! An exception of type: System.OverflowException occurred Module: IService.dll, Name: AsyncDownloadOBRDDDRMessage: Array dimensions exceeded supported range. StackTrace: at DTS.DASLib.Service.SLICE6AIR`1.AsyncDownloadOBRDDDR(Object o)
</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-05-11T23:21:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,398 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-01-02T16:15:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-10-17T21:10:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified Das list is deleted and time required to import isf and detect das is much less with post patched versions of datapro when performing isf import .
Time prepatch 2:23 seconds
Time post patch 5-6 seconds
Tested with dp versions 4 0 1072,4.1.473.49733 and 4.2.190.49739.
compared to prepatched version 40 729
1.Imported a large group of das (attached )
2. Created an ISF import file using a SPS and sensors on it .
3. In test setup choosing import isf file and runninghte import in each version of datapro and recording the time differences until it completed.
</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-10-17T21:10:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-08-10T18:14:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-08-10T18:14:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-08-10T18:10:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-08-05T04:07:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-08-01T18:15:49Z</TimeStamp>
<ReleaseNote>now ISF imports will delete hardware before importing</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>49258 is 4.0; 49259 is 4.1; 49260 is 4.2</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-07-27T00:03:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>To test:
Execute a ISF import and ensure that it works correctly.
should take less time to import post patch with a large database (specifically lots of DAS) than pre-patch
grab list of das prior to import and after import, verify that any das are deleted which are actual DAS and not in the import, and any Prototype das aren't deleted.
should be able to open up any existing test setups that had DAS assigned before, but they will now not have DAS assigned, but it shouldn't crash, same thing with groups, the channels should still exist, just no hardware assigned.
maybe test that there are no adverse affects if there's a test setup with a level trigger assigned to a das and the import deletes that das.
same thing with calculated channels</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2023-07-21T23:34:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-07-21T15:36:19Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-07-18T22:54:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-07-18T18:33:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-07-11T14:10:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-01T22:06:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-18T17:29:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-18T17:28:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T20:43:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-12T23:00:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>this is way_way slower in 3.3, this is likely an issue that's already been fixed in 4.0 ...</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-10T21:50:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>don't really see the behavior in 4.0 currently ...</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-10T18:48:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-09T21:03:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T20:58:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T23:48:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-06-28T18:16:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-06-17T19:49:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>with a large DB import an ISF - large delay seen during commit, if you do the same on the blank db, it's fine.
see also case 27059
 
#10539 INTERNAL | DataPRO | Slow ISF Import | HW Database
Submitted
June 17, 2022, 12:17
 
Received via
Web Form
 
Requester
Nathan Brown &lt;nathan.brown@dtsweb.com&gt;
CCs
Chad J Ivan &lt;chad.ivan@dtsweb.com&gt;, Chris Balogh &lt;chris.balogh@dtsweb.com&gt;, Mike Beckage &lt;mike.beckage@dtsweb.com&gt;
Status
Open
 
Type
Problem
 
Priority
Normal
 
Group
Support
 
Assignee
Dan McFadden
Internal Ticket
Yes
 
Ticket Source
Help Center
 
Product Family
Software::DataPRO
 
Software Version
3.1.672
 
Problem Source
Unidentified
 
Current Department [Optional]
Tech Support
Nathan Brown June 17, 2022, 12:17
GM Barrier ISF import took ~20 minutes on 2022-06-15 with DataPRO 3.1.672
 
Narrowed problem down to long database calls after all hardware pinged and was queried.
 
Deleting all hardware from the Data Recorders tab and importing the same ISF again brought the time down to ~4 minutes. 
 
Performance was similar in 3.3 before/after hw deletes as well. To simplify, no logs from 3.3 here.
 
Attached are the DataPRO db, ISF, and logs which include at least 3 sessions showing the long waits which improve in the final run.
 
Very short term, Daniel will delete the hw from Data Recorders if necessary but we'd like to improve this.
 
 
Nathan Brown June 17, 2022, 12:19
I suspect if we could improve the hw queries it will speed up discovery in all areas, not only ISF import. Is this enough info to proceed with manuscript ticket and work?
 
Big thanks Dan for support today!
 
 
Dan McFadden June 17, 2022, 12:42Internal note
should be enough, I'll update the ticket once I'm done creating the manuscript item for it.
I'll assume we should probably address it in 3.1 as well (the version they are currently using)
Support Software by Zendesk</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-06-17T19:49:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,187 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-09-28T14:35:49Z</TimeStamp>
<ReleaseNote>Added option to copy previous version's config settings while not migrating the previous database.</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.682
In previous version I changed an attribute in the config file
I then navigated to newly installed config file and seen the copied value</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-08-04T22:49:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-04T22:20:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47244 is the 4.0 DataPRO modification.
47245 is the 4.0 installer modifications.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-04T22:09:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>The solution introduced a bug which prevents the license file from being copied.</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-08-04T21:22:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-04T16:25:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-04T15:00:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47232 is the 4.0 installer revision.
47233 is the 4.0 DataPRO revision.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-03T22:54:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>The ConfigurationMigration installer Custom Action is being removed, but it's capabilities are being moved to the DatabaseSetup Custom Action.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-03T22:44:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-01T23:32:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-29T16:07:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Currently, the previous config file (if one exists) is always merged with the new config file, regardless of whether or not migration is done, as a Custom Action in the installer.
The solution should remove the Custom Action, and move the merge code to run when the new checkbox is checked at the time that the OK button is clicked (the new checkbox is always checked when the "migrate" radio button is selected).</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-29T16:07:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:50:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:11:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T14:39:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-21T21:42:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-12T21:07:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-06-30T17:41:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-06-30T17:39:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-06-29T21:25:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Currently, the config settings are always copied if a previous version of DataPRO is installed when a new version is being installed.  This happens regardless if the user has chosen to migrate the previous database.
The settings should be copied if a migration will be done, but when a migration is not done, the user should be given the option of whether or not to copy the settings.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-06-29T21:25:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,368 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified with dp 4.1.84.47792    Tmts files match except for placeholders  {}    which are filled in with actual values from the Das when test setup is run .</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-11-01T18:19:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-11-01T15:22:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:52:39Z</TimeStamp>
<ReleaseNote>Adds templates for TmNS 144 bit PCM and TmNS Supercom 4x ADC PCM streaming modes</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:52:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in DP 4.0 maint @ revision: 47716, 47717
</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-05T23:24:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-05T21:55:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:17:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:47:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>wait for 4.0 release to update 4.0</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-09-16T23:08:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T22:42:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T22:18:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T22:16:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Steps to test ,
1. Create two test setups with SLICE6AIR hardware
2. Add stream output with "Tmns 144 bit PCM" to one test and "Tmns supercom" to the other test.
3. run each test separately to the end
4. compare the files created based on the TMATS template to the template with the same name under DASConfig folder. (Templates are under TMATSTemplate folder)
5. the correct templates should have been used by DataPRO to generate the files (Almost identical except the placed holders are using the values) </Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T22:14:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T18:57:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T22:33:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T22:33:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in 4.1 @ rev 47620, 47622(installer)</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-14T22:02:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-09T21:26:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T18:10:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>need to hook to the new switch statement that uses mode specific template files similar to case 29430
 
Specifically, Loc is calling out the last two formats in the dropdown for a stream out config (sensor database tab)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T18:10:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T18:01:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-25T20:14:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-25T20:14:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Loc Pham</User>
<Comment>Please see attached updated PCM TMATS as requested.
Note that firmware will send out with Time Format 2 to be consistent with TmNS. At least at the moment, it's hardcoded and not programable by user.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-24T22:43:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-23T22:40:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>booting to 4.1 fallout</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T20:38:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-27T18:49:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-27T18:47:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Loc will update the TMTS templates required for this ticket when he returns from PTO.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-27T18:47:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Added existing templates for SLICE 6 AIR </Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-27T00:14:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Loc Pham</User>
<Comment>In Chapter10 and current TmNS, firmware only need one setting for IP:PORT to send out data and TMATS.
In this request, TmNS needs to send TMATS out on different stream. For that, firmware will need to provide a new API to set IP:PORT or just PORT number to send TMATS out along with TmNS stream.
TMATS format will take PCM TMATS format with two bitframe from 144 and SuperCom. </Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-27T00:10:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:50:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:11:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-25T23:44:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>see also case 28291</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-12T21:38:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>contact Eric, see if he has any details for what we need the a template file to look like, if he doesn't fallback to loc, if loc doesn't either, create copies of the existing PCM templates for the stream profiles requested?
It's possible the existing templates work just fine for these modes?</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-12T21:05:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-12T21:03:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-12T20:49:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-06-30T15:04:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-06-30T15:04:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,317 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:45:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:45:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T16:54:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T16:53:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified with DP 4.0.725.47650 and DP 4.1.49.47650  And using  A TSR Air with K0D2 fw .</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-21T16:52:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T14:39:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-20T22:58:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Per Loc &amp; Chris, continued TSRAIR dev from when the initial discussion happened pushed out the running counter of ProtocolVersion past the previously agreed upon Phase Two start. For now, the code is there to support the additional phases, but commented out in both v4.0 maint and v4.1 dev until we have definite FW implementations. Once that implementation happens - scheduled post v4.0 ECO and during v4.1 dev - the code can be uncommented and Protocol Version magic numbers assigned at that time.
Changes:
Comment out all IRIG, GPS, and 1PPS protocol version checks for TSRAIR and resolve false. Leave infrastructure commented out for turning back on once implemented in FW
Testing:
Testing can proceed as detailed.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-20T22:04:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-20T21:51:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>blocked for f/w</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-20T21:48:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T21:48:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T22:57:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Tested this with dp 4.0.722.47639 and DP 4.1.43.47631 and was able to save test setup with Clock Master checkbox enabled and  Clock Sync &gt; Clock master input type set to any choice (GPS, iRIG , ETC) And got no pop up error when saving test setup with TSR 0032  K0D2 FW. 
 
Was able to get a pop up message when creating a TSR Air manually in Data Recorders tab and running the same test. 
Reopened after Confirming with John .</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-09-19T22:56:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T16:19:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T17:01:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>When the TSRAIR is chosen as a Clock Master, the only valid input should be None - you should get a save error if GPS, IRIG, etc. are chosen or "Manage clocks outside of DataPRO" is selected.
When the TSRAIR is not a Clock Master, None or PTP should be valid and choosing "Manage clocks outside..." should result in an error.
The "chosen/not chosen as a Clock Master" happens in the Hardware navstep of Edit Test Setup:</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-29T17:07:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>john to include testing notes and reach out to sqa (jaime)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-25T17:35:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>FogBugz</User>
<Comment>From: "John Dowling" &lt;john.dowling@dtsweb.com&gt;
Date: Fri, 5 Aug 2022 11:07:09 -0700
To: "FogBugz" &lt;fogbugz@dtsweb.com&gt;
Cc:
Subject: Automatic reply: Manuscript (Case 29358) DataPRO - Extend time sync features to TSRAIR (Phase 1)
I will be out of the office on PTO on Thurdsay 8/4 and Friday 8/5. I will return to work on Monday 8/8/2022.
Have a good weekend,
John</Comment>
<StatusString>Incoming Email</StatusString>
<TimeStamp>2022-08-06T12:28:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Reactivating
In DP 4.0.682 with 
I created a Test Setup in Clock sync I was able to save with Clock Master Input Clock Type set to GPS and got no error</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-08-05T18:07:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-05T15:46:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-03T15:18:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-03T15:14:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-02T15:15:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Changes:
Implement IsClockSyncProfileSupported plumbing following pattern of IsRecordingModeSupported
Add TSRAIR to types that can be checked for sync
Add validation of ClockSyncProfile support to TestTemplate, EditTestSetupInfoControl
Add validation failure warnings
Testing:
TSRAIR now supports Clock Sync in latest firmware, so update device in FWTU and turn on that system setting in DataPRO and attempt to configure Clock Sync in Edit Test Setup and save the test setup.
When the TSRAIR is chosen as a Clock Master, the only valid input should be None - you should get a save error if GPS, IRIG, etc. are chosen or "Manage clocks outside of DataPRO" is selected.
When the TSRAIR is not a Clock Master, None or PTP should be valid and choosing "Manage clocks outside..." should result in an error.
When running a test and using sync settings that are different than currently configured on the TSRAIR, you should get the warning message and a reboot message in the Hardware Navstep as you do with SLICE6AIR
When running a test you should see Clock Sync settings displayed and tested in the Arm Checklist navstep as you do with SLICE6AIR if Clock Sync settings are chosen for Arm Checklist in Edit Test Setup
Timestamp, Sync, etc. data should be reflected in the .dts file as it does for SLICE6 family</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-07-27T20:00:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-21T21:25:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-20T21:44:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-18T17:54:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-18T17:48:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Currently only SLICE6, SLICE6AIR has features in DataPRO for time sync. Extend these features to TSRAIR:
TSRAIR inherits IClockSyncActions
TSRAIR checks its clock sync settings and adjusts accordingly in CheckHardware
TSRAIR checks its clock sync and displays results during Diagnostics
TSRAIR checks its clock sync and displays results during ArmCheckList
Allow TSRAIR to be selected as Clock Master in Edit Test Setup -&gt; Hardware
Current Phase 1 firmware can only send PTP when Clock Master, not sync to GPS, IRIG, 1PPS. Validate TSRAIR to only "None" for Clock Master Input, following pattern set with IsRecordingModeSupported / IsStreamingProfileSupported
TSRAIR can receive PTP, similar to SLICE6 family
Time, Sync, etc. data should be reflected in the .dts file as it does for SLICE6 family
Firmware tracking feature at 28139.</Comment>

View File

@@ -0,0 +1,168 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:58:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified with DataPRO version 4.0.936, 4.1.281
Tested
Ran test with a S6A
Enabled Automatic mode under test details in info step of test setups
Ran test
At top next to done start (automatic mode)
Test goes past Check Sensor ID</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-05-10T21:26:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-05-09T20:41:05Z</TimeStamp>
<ReleaseNote>Addresses an issue with automatic mode in Check sensors step</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-04-25T20:00:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>This bug appears to have been introduced in 4.0.498 which fixed http://manuscript.dts.local/f/cases/edit/27001/TSR-AIR-fails-to-arm-when-in-Streaming-mode on 5/4/2022.
Along with that fix, two other issues were found during testing, based on "calls being made to UI elements made from a background thread". Sure enough, when I revert
EnableCancel(true)
back to
cancelButton.IsEnabled = true
in the NotAllResolved case in _resolveChannelsControl_PropertyChanged(), Automatic mode proceeds past the Check sensor ID step without this new patch.
However, I'm not sure I want to undo the fix for arming a TSR AIR in Streaming mode from almost a year ago, so this patch is the alternative.
</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-04-25T19:38:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>48624 is 4.0; 48625 is 4.1
To test:
Create a Test Setup to run in Automatic mode.
Run it and ensure that it proceeds past the Check sensor ID step as long as no errors are encountered.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-04-25T19:37:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-04-25T15:35:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-04-24T15:28:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>this is caused by "ConnectIfNeeded" which is setting the state of resolve channels to "NotAllResolved" which then turns off automatic progression (to paused by system).</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-04-24T15:07:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-01T22:06:19Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-28T15:52:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-28T15:52:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:50:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:13:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>This works in 3.3.755</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-25T15:54:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-25T15:10:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-07-25T15:10:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,274 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-09-27T23:18:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.714
Using a slice nano,</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-15T20:23:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-14T21:56:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-26T15:35:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Bug was found if Data folder included tests that don't have DAS that use time sync, manifesting as no tests at all showing up in View Data.
Changes:
Prevents exception if no test modules in test have a timestamp
Adds check to MinUnixTime for enumerable length
Testing:
Create, run, and download data for a test that uses DAS that do not time sync (I used SLICE Micro).
Repeat test as normal below. You should see all tests in View Data tab
r47532 for v4.0 maint and v4.1 dev</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-24T23:40:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Reopening, bug found if Data folder includes non-timesync tests</Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2022-08-24T23:26:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-10T20:43:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment>Verified the fix using DataPro version 4.0.688.47264.  Timestamp issued with each event showed  Date time with milliseconds.  On my system, the timestamp always ended with 000 milli-seconds.  I verified this was not the typical case by watching it run on the developer's system.</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-08-10T20:02:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-09T21:50:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T17:37:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in DP 4.0 @ rev 47259
QA can verify the "View Data" tab the event now has a "Time Stamp:" with milliseconds part , also in the Graphs the event is shown with the milliseconds info.
The date &amp; time is parsed from TriggerTimestampSec element from the dts file and milliseconds part is parsed from TriggerTimestampNanoSec, if the date is before 1/1/1990 then the parsed "Timestamp" element value will be used as it was before.
</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-09T17:31:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-04T20:45:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-03T23:13:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-02T19:17:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-28T16:30:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>\\dts\files\Software\Private\Useful_Test_Files\DataPRO\Data\TSR AIR\MS_29410</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-28T15:39:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>"Time Stamp:" in this context may be using a windows file timestamp
What we want is a timestamp from TriggerTimeStampSec and TriggerTimeStampNanosec. There is a Common utility function that parses out these attributes to a datetime object.
public static Tuple&lt;double, double&gt; MinUnixTime(Test test)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T22:58:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T21:46:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T21:41:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T21:41:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>There's an existing timestamp in the dataviewer that doesn't seem to be accurate for TSR AIR tests.
talking about the left hand side in the test selector in the viewer, this should be using the RTC time to determine the time stamp.
note that the implementation should consider that you have hundreds of tests, so parsing the xml for all the tests could be an ugly thing time wise, might be more efficient to have a text search within the file for &lt;start&gt; and &lt;/end&gt; tags for the property.
TriggerTimeStampSec
is the tag according to chris.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:56:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:50:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Increased time estimate as we may need to discuss what this means</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:32:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-26T20:32:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:15:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-07-26T20:13:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-07-26T19:09:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>24. [Software] Event names need to have second resolution.
[RW] I think 24 is important to have before we consider Phase I done.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-07-26T19:09:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,188 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-03-22T23:38:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-01-02T16:14:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified with DataPRO v4.2.178
Armed and triggered a S6A (inputting a sine wave)
In Run Test in View All step I see the following:
In View Data Tab:</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-10-11T20:26:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-07-21T17:15:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-07-05T20:25:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-07-05T17:23:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-07-05T15:40:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.2@49156
There's nothing explicit to test, but viewing data from the view tab and from run test, and the button functions should all still work.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-07-03T22:35:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-06-30T15:37:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-27T21:24:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-23T14:57:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-06-08T15:06:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-17T21:48:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-17T21:44:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-17T21:34:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-17T21:33:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-16T20:38:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-16T20:34:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Moving as these are not expected to be worked on in 4.1 cycle</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-04T15:44:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-01T22:06:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-01T18:23:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>ReviewFile is largely not needed, we should remove it and abstract out whatever we need</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-01T18:23:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,181 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:43:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified fix with DP 4.0.699.47520 
Followed Steps included in ticket below..</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-15T20:40:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T17:00:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-23T21:42:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>QA can test this ticket as below steps
1. "Enable level-trigger UI" from System Settings (Test Settings)
2. Keep Level Trigger max and min percentage as defaults 0.75 &amp; 0.005
3. In Test Setup open a test with a TSR AIR in it
4. Bring the "Level triggers" step and add High g sensor from left
5. Enter any number greater that 4914.75 g and enter or leave the edit box
6. you will get the error message and the value will be corrected to allowed range 4914.75 g
7. repeat the test for min value which is any value less than 0.32765 like 0.1
8. You should get the error message and the range should be corrected to 32.77
</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T04:31:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T00:42:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in DP 4.1 @ revision: 47514</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-23T00:40:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-22T20:44:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>the scalefactors come from fw per channel on TSR AIR that can be multipled by 32k (2^15). it doesn't matter if its high g, low g, temp, humidity, ars... they all come from fw</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-19T16:37:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-18T23:04:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T21:23:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T21:22:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>current ranges can be backwards calculated from the scalefactor on a TSR AIR dataset for a channel and going backwards, chris has this already calculated though.
case 29416 contains a location of a DTS dataset and a quick calculation of one such range;
don't know if there is a plan to change the ranges in the future and if so how we will handle it, assuming that for the current time the channel range is a constant and not variable.
 [ 0.200000002980232*32767]</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T21:18:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T21:05:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-09T21:04:58Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T21:04:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T20:58:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-09T15:26:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-08T17:39:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>see also case 29417</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-08T17:39:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,146 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T16:13:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Tested with Dp 4.0.793.48044 Using a S6A ethernet recorder  fw version G1B6
1. Created Test setup and set the stream in channel to a non default ip address 
2. Saved test setup armed unit in circ buffer mode and triggered.
3. Used Quickbuild to create a test setup and verified Stream in ip address matched what was entered in previous test  setup and was not default address.</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-01-16T16:13:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-11-04T21:52:19Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:49:32Z</TimeStamp>
<ReleaseNote>Addresses an issue with Quick build and non default UDP addresses</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:49:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47721 is 4.0</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-12T16:14:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:11:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-26T15:34:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Blocked until MAINT_40 gets the patch applied (4.0 patch is attached).</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-08-24T18:35:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47510 is 4.1</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-19T23:36:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-19T19:24:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-18T21:32:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-09T21:45:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-09T21:45:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,182 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Closed</StatusString>
<TimeStamp>2023-12-18T18:18:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2023-12-18T18:18:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>reopening to set testrail flag to true....</Comment>
<StatusString>Reopened</StatusString>
<TimeStamp>2023-12-18T18:18:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Added to  dp4.1 regression tests  Verify Pdf Exports have a index that Show description of each Channel and color coding. - TestRail</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-04-25T18:16:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.793</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-01-12T01:07:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-11-03T20:05:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:33:05Z</TimeStamp>
<ReleaseNote>Adds additional information when exporting pdfs</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47729 is 4.0</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-12T18:42:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:18:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T14:56:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47690 is 3.1; 47691 is 3.3; 47692 is 4.1</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-30T16:28:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-29T15:26:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-27T14:47:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-20T20:56:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:46:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T18:08:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>https://dtsweb.zendesk.com/agent/tickets/10774</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-16T17:31:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-16T17:28:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>All version prior to V4.0.668 &amp; V3.1.687 have the "Save to PDF" feature when using the "View Data" tab but this Save Chart does not have a header or footer that shows what the color code of the channels are, if you are overlaying them.
 
The feature request is to add an index to the PNG/PDF that get generated to show the full description of each signal so this feature would be useful when doing overlays.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-16T17:28:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,144 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:45:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:45:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ 4.1.151, 4.0.792, 3.3.783, 3.1.697
Log: 
2023-01-11 13:28:57.150 ModalWindow: Chart saved succesfully as  C:\DTS\DTS.Suite\Data\S6A\2023_01_11 13_26\Binary\ALL\_Event Number 01\1_11_2023_1_28 PM_55_61.pdf and  C:\DTS\DTS.Suite\Data\S6A\2023_01_11 13_26\Binary\ALL\_Event Number 01\1_11_2023_1_28 PM_55_61.png</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-01-11T22:05:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-11T21:07:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:35:25Z</TimeStamp>
<ReleaseNote>Addresses an issue with duplicate chart saved to PDF log messages</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:35:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-26T23:40:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-20T20:29:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T16:48:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47628 is 3.1; 47629 is 3.3; 47630 is 4.0; 47631 is 4.1</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-16T15:58:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Fix for bug 29492 covers this as well.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T20:14:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T19:54:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T19:53:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>https://dtsweb.zendesk.com/agent/tickets/10774</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-16T17:32:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-16T17:31:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>2022-08-16 12:55:19.299 ModalWindow: Error occurred saving chart to PDF
2022-08-16 12:55:19.350 ModalWindow: Chart saved to PDF succesfully
2022-08-16 12:55:24.158 User Admin pressed PageButton:DataProPage_ModalWindow_OK
2022-08-16 12:55:24.226 ModalWindow: Chart saved to PDF succesfully
2022-08-16 12:55:27.523 User Admin pressed PageButton:DataProPage_ModalWindow_OK
 
The button was only pressed one time so the "Error occurred..." seems a little strange.  The was done in 4.0.520</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-16T17:31:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,202 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.723, 4.1.47
Created a sensor with the following settings:
 
In test setup
Disabled Firewall (this will prevent you from seeing data in wireshark):
Verifiying with Wireshark:</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-21T16:40:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Additional testing instructions after discussing with Loc: disable the Symantec firewall. IT has Group policies / scripts that re-enable it after a while anyway, so something to be aware of that during testing. Wireshark screenshot from a Run Test armed &amp; physically restarted S6A with TmNS settings set in DataPRO of broadcast port of 54024 and TMAT streaming port of 5678 set in TmNS settings:</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T00:23:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T16:19:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Changes:
Fixes TmNS validation, rather than a regex uses LINQ with TryParse to make sure values are positive integers and adds a check for &lt; 65536 so the port value is valid
Testing same as specified. Added a check to maximum valid UDP port value (&lt;= 65535).
checked into v4.0 maint and v4.1 dev in r47638</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-16T22:50:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Reactivating due to value 6810 out of range when saving sensor</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2022-09-16T19:38:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T23:39:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Assuming this is complete as we already have the TmNS configuration in our Stream Out sensor settings
Testing:
Create a Stream Output sensor in the sensor database with settings just like the ones set in the example from the FWTU screenshot in the initial bug description
Create a streaming test with a SLICE6AIR and this sensor attached to the Stream Output channel. Create as many Analog channels with sensors as you wish. Make sure that the S6A is running the firmware version supporting this feature
Run the test and start streaming from the S6A. Check for TMAT streaming at the address and port specified in TmNS attribute 4 (here it's at 239.1.2.10, port 8610). Ask FW for instructions on listening to / verifying TMAT streams.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-08T23:37:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Loc Pham</User>
<Comment>Firmware version G0N3. PROTOCOL_VERSION 38
- FB#29389: Added TMATS (ch10 format with time format 2) stream on optional port number for TmNS.
\\dts\files\Software\Private\Firmware\SLICE\SLICE6 AIR\_INTERNAL\SLICE6AIR-FW-G0N3</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-08T23:24:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Loc Pham</User>
<Comment>Note that TmNS stream will only include TMATS if this port (8610 as example below) is set to non-zero value.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-08T23:03:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>John to review with FW/Loc</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T17:05:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>maint 4.0, can be post ECO</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:05:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:05:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>might need to ping for more details and/or ideas on testing</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-06T20:33:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T18:08:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-24T17:44:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-16T21:52:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>I implemented the new version of firmware to add support TMATS streaming on different port for TmNS option.  I use the reserved values in TMNS system attribute 165 index 3 into the array of uint32. Below is the example of setting TMATS to port 8610 while streaming TmNS data to port 8400. Both on IP 239.1.2.10.
 
I would expect the software changes to only support the port number user want to sent TMATS (in UDP chapter 10 format with 2nd header) while using TmNS (for Sandia).  When TMATS is not needed in the stream, user can set the port to 0 as currently default value.
 
The build will be available soon in a moment from build server. Please let me know if you have any other question.
 
http://manuscript.dts.local/f/cases/29389/Add-TMATS-for-TmNS-stream-on-different-IP-Port-address
 
Thanks,
 
Loc</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-16T21:52:33Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:43:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Tested and verified with dp 4.0.699.47520 and 4.1.43.47631.
Tmats file contains all 18 channels and sensors are correctly mapped .Tested with Netview when streaming and performing a 2g roll</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-19T16:07:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Cannot test this issue  in DP 4.0 to close it because Diagnostics still crashes in dp 4  
Bug was opened   case 29495  and is still open</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-15T21:39:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T16:42:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>This fix should create a correct file with 18 channels using the updated tmats template, QA can verify </Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T23:22:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment>Fixed in DP 4.1 @ rev 47519
Fixed in DP 4.0 maint @ rev 47520</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-08-23T23:21:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T20:08:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-23T17:26:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Farshid Atashband</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-22T20:46:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>would assume we just need to get a new file from f/w with 18 channels.  
it's okay to check this one into 4.0 now as it'll directly be needed by sqa.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-17T16:50:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-16T23:18:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-16T23:18:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-16T22:53:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-16T22:52:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>When TSR Air is armed with datapro in streaming mode  I noticed when performing a 2g roll   the accel low g channels (chans 0 and 1 ) are swapped with some of the ars channels .
 
Then I loaded a tmats default file into fwtu per eric and armed in streaming mode and performed a 2g roll on 1st 3 accel channels with no issue .
Eric mentioned this could be because the DP tmats file is only defining 12 channels and not the entire 18 channels included in the stream .
 
DP 4.0.644 
Left is default tmats file from eric that maps channels correctly in netview 2g roll        Right is default Datapro tmats file 
 
Steps  To reproduce.... 
 
1.Discover TSR Air with Datapro  And create test setup  set checkbox set to streaming ..( might have to enable in system settings). 
2. Navigate to run test  and proceed to arm step , unit will fail to arm at final step because of case 29497  so then Close datapro  and use fwtu to arm unit  with a post trigger setting &gt;0 seconds  and in streaming mode (FWTU will be using the tmats file stored on the tsr air created by datapro ) 
3.Open remote desktop connection &gt;fajita  and open netview and open chapter 10 source &gt;udp   at address 239.1.2.10 , add a line graph display and click the plus icon to add some channels to the display .
4. Channels 1 2 and 3 are the low g sensors and if you perform a 2 g roll you should see a change from +500  to -500 on the netview display for each axis, what I found on the unit I created a test for in datapro is that channels 1 and 2    were swapped with some of the ars channels .
5. If you disarm the tsr air in fwtu and then choose Slice tools&gt;base &gt;manage and select "Set Tmats "    and choose the tmats file attached   &gt;" TSRAir_ANALOG_default_10ksps.tmt " then rearm in fwtu and perform the 2g roll and monitor the first 3 channels they show up correctly and are not swapped with any ars channels.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-16T22:52:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,209 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-11-01T17:26:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Armed S6 air with dp 4 0 758 and Dp 4.1.84.47792 for 10 seconds in recorder+uart mode and sent a text file through the serial input using  Terra term sw  .
Triggered unit  and then downloaded data . Verified Bin file was located in the data directory  and matched the text file that was sent</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-11-01T17:26:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Armed S6 air with dp 4 0 758 and Dp 4.1.84.47792 for 10 seconds in recorder+uart mode and sent a text file through the serial input using  Terra term sw  .
Triggered unit  and then downloaded data . Verified Bin file was located in the data directory  and matched the text file that was sent</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-11-01T17:25:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-31T21:59:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:48:21Z</TimeStamp>
<ReleaseNote>Addresses an issue when download UART data with no other channels set up</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:47:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T21:48:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T21:44:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Committed to v4.0 maint in r47702</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-04T18:00:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:19:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T18:01:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Changes:
DoDownload() was only checking for Analog and Squib when filtering out das to download from. Added UART channel to check
Testing:
Create a test with only a properly configured UART channel. Select a UART recording mode for the test (I used Circular Buffer + UART). Make sure Download All is selected. No time sync settings are necessary
Run test through the Download step, steps should complete successfully
Check test's Binary folder to make sure intended data made it there
Marking test Blocked / On hold as backporting attached patch to v4.0 maint is necessary but will happen after release. Committed to v4.1 dev in r47525</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-24T19:11:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T20:52:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T19:47:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T18:39:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-23T18:38:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-23T18:38:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>John Dowling</User>
<Comment>Hi Dan, Chris
 
I want to use a S6A just to acquire a signal on the UART..
 
 
 
Works AOK (ignoring the unnecessary Sensor ID step that it wants to do) right up to the point of download when ...
 
 
 
2022-08-23 15:08:27.505 Entering DownloadService.QueryDownloadedStatus on thread 50 with units: (S6A0083) Called from: SubControl.CheckForData Line: 0
2022-08-23 15:08:27.505 -&gt;  EventData - QueryTotalEventCount [00001847], S6A0083, local: 192.168.0.252:60000, Remote: 192.168.0.83:8301
2022-08-23 15:08:27.506 &lt;-  EventData - QueryTotalEventCount [00001847]\[00001847] - (1ms), S6A0083 Count: 0
2022-08-23 15:08:27.506 S6A0083 has completed service DownloadService
 
the UART channel needs to count as data to download.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-23T18:38:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,292 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:48:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DataPRO v.4.1.213, 4.0.861
Tested:
Reset arm and system attributes back to default via FWTU
Enabled logging via Tilt Sensor SW 
In DataPRO created a test setup and armed. 
Once complete navigated to Data folder -&gt; my test setup -&gt; event -&gt; Temperature folder</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-02-21T22:57:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-13T16:44:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-02-07T21:00:41Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-01-18T22:48:13Z</TimeStamp>
<ReleaseNote>S6DB will now download a temperature CSV into a temperature folder in dataset when available</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-18T22:47:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0/4.1@48071
Need to also be tested with S6DB attributes cleared, like a brand new S6DB, and with and without RTC</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-01-16T23:44:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>I do not know of a why of ordering the channels in the output from the S6DB, my assumption is that they are in order that they are in the UI, so:
            OnBoardTemp,
            OnBoardHumidity,
            EnvironmentalCh1,
            EnvironmentalCh2,
            EnvironmentalCh3,
            EnvironmentalCh4,
temperature should always be before humidity if both are selected.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T19:15:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>to download CSV of temperature logs you must have configured the S6DB to enable logging - you can use the TiltControl v 2.1 application to do this.
press discovery hardware, then connect to your S6DB
I had to go into the visual studio IDE to enable visibility on MCU temp/MCU humidity to try to log any other settings, but those didn't actually log for me.
Anyhow, you'll need to enable logger with at least 1 sensor, although only the MCU temp/humidity produced logs for me?
you will probably need to restart the S6DB before it starts logging temperatures.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T19:04:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T18:51:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>added "Temperature time format" and "Temperature value format" into System settings-&gt;Test settings-&gt;Data export options
 
changing temperature time/output format in System settings-&gt;Test settings-&gt;Data export should change output in CSV, and restore should restore the settings to defaults.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T18:45:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Subject:
Temperature Logging Download in DataPRO
From:
Chad Ivan &lt;chad.ivan@dtsweb.com&gt;
Date:
1/11/2023, 12:31 PM
To:
Dan McFadden &lt;dan.mcfadden@dtsweb.com&gt;
CC:
Nathan Brown &lt;nathan.brown@dtsweb.com&gt;
 
Dan,
 
I was able to test the SLICE6DB3 unit today and here is what I found..
 
Tilt Sensor Control 2.0.68.46716 seems to work correctly, I was having issues with 2.1 versions.
 
 
After enabling logging and rebooting the ATD via the ON/OFF switch I was able to hit the “Read” button and get samples to show in the grid on the left and the graph updates.
 
Clicking on the Save to CSV creates the file attached.  I have added a (PREFERED) file that takes the “T” out between the Date and Time.  That imports into EXCEL nicely.
 
If we were able to download that file that should fulfill any customer requirement for logging the temperature, or at least its going to be a great starting point. 
 
Thanks for your help,
Chad
 
 
 
Attachments: Temp_S6DB30013_2023-01-11T15.21.24.csv 506 bytes Temp_S6DB30013_2023-01-11T15.21.24(PREFERED).csv 377 bytes</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-14T00:25:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>patch ready, waiting for chris as there's not enough information on the current temperature logger behavior</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-06T16:05:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>note, you'll want to use the most recent FWTU when setting battery install date, etc, previous revisions may have filled in different fields than the UI shows.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-04T18:37:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-04T16:52:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>loading M7 on another S6DB to attempt to bypass issue with s6DB in question (could not communicate with ethernet switch according to EP)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-04T16:51:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Yuba/S6DB currently not booting, waiting for f/w to check it out</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-04T16:18:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-03T19:10:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>note, current S6DB test board is set for WIAMan, requires 20V input</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-03T16:40:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-12-13T22:56:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-12-13T19:50:58Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-20T21:22:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-08-26T17:48:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-08-26T17:47:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>§When downloading data from tests, temperature log should be downloaded into a Temperature folder added to the test data folder, data will be in .CSV file format, corrected for local time (not UTC) so it matches high speed data time stamps</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-08-26T17:47:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,179 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Tested with  DP 40 726    4.1 .50 and 3.3 771 , These version have code per Dan that cause  default the diagnostic file store should fail 20% of the time and the event store 60%   
Verified that invalid config warning is not present in Datapro  when  config file store is corrupt , by recording then downloading and event multiple times with Dans patch in the code , also verified the ConfigReadErrors.log file is created in the logs folder .
From Logs..
DTS.DASLib.Service.SLICE2_Base`1.SLICE2ConfigAttributes.RetrieveXMLConfig(FileStore fileStore, IDASCommunication das) 
2022-09-21 14:53:12.383 Failed to retrieve xml config - Event on SPS01224. Error: System.Exception: Invalid data    at DTS.DASLib.Service.SLICE2_Base`1.SLICE2ConfigAttributes.RetrieveXMLConfig(FileStore fileStore, IDASCommunication das)</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-22T15:24:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T22:44:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Tested with  DP 40 726    and 3.3 771 , These version have code per Dan that cause  default the diagnostic file store should fail 20% of the time and the event store 60%   
Verified that invalid config warning is not present config file store is corrupt , by recording then downloading and event multiple times with Dans patch in the code , also verified the ConfigReadErrors.log file is created in the logs folder which indicates there was a corrupt filestore.
From Logs..
DTS.DASLib.Service.SLICE2_Base`1.SLICE2ConfigAttributes.RetrieveXMLConfig(FileStore fileStore, IDASCommunication das) 
2022-09-21 14:53:12.383 Failed to retrieve xml config - Event on SPS01224. Error: System.Exception: Invalid data    at DTS.DASLib.Service.SLICE2_Base`1.SLICE2ConfigAttributes.RetrieveXMLConfig(FileStore fileStore, IDASCommunication das)</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T22:34:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T21:36:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0 - 4.0.726.47654_DONT_USE has intentional borking
725 and 727 and beyond won't
3.3 - 3.3.771.47658_DO_NOT_USE has intentional borking,
770 and 772 and beyond won't
4.1 - 4.1.50.47661 - DO NOT USE - has intentional borking
49 and 51 and beyond won't</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T21:00:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-21T20:25:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T16:19:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment>need report from Ethan on ZD ticket</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T21:46:30Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T21:10:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T16:20:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-06T16:19:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>3.3/4.0/4.1@47562
there's a pdf attached to the spreadsheet which can give some background if needed, but it's long.
There's a corruption issue that happens that we have not identified the source of yet.  This patch hides a previous warning dialog we had and creates a new log file in the logs folder for when there's an issue.  This lets the user operate with the software for now with less interruptions, but also gives us the chance to continue tracking down the error without bothering the user as much.
in SLICE2.cs I've built in a way to test, all you need to do is run a test or download from a unit many times.  By default the diagnostic file store should fail 20% of the time and the event store 60% of the time.   You should notice anything while running out of place (no warning about invalid config), but check the logs directory for "ConfigReadErrors.log".  It will roll the log file whenever DP rolls files (event completed) or based on file size.
for the actual checkins the testing code is removed, I can build test builds with the code in place when SQA is ready.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-02T23:43:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-02T17:46:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Read from DIAG if EVENT fails</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-01T23:47:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Add a "ConfigFileFallback.log" file and remove existing error dialog</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-01T23:46:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-01T23:43:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-01T23:43:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.717</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-15T21:27:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T16:38:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47566 is MAINT 4.0.</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-07T21:36:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:23:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:23:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47565 is 4.1
Blocked/On Hold until MAINT 4.0 can get the patch.</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T17:23:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>The message was modified from
No license not found, not copied
to
No license found to copy</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:21:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Current implementation requires that a file named "DataPROLicense__DTS.lic" is either in the parent folder to the folder that contains setup.exe (the "version number" folder), or in the C:\DTS\DTS.Suite\&lt;version&gt;\DataPRO folder, in order to be copied to the new DataPRO folder being installed.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:16:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T16:10:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-06T20:06:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-06T20:06:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,102 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.717, 4.1.38
Allow streaming enabled
Set DAS to streaming in info navstep, and assign Stream Out from S6A to channel list, Click Save
No error message</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-15T23:16:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T17:01:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47584 is 4.0; 47585 is 4.1</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-09T17:00:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-08T23:13:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>Moved into sprint</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:29:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T17:29:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T15:24:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>Install DataPRO in Aero initialization mode.
Add a SLICE6Air DAS.
Add a Test Setup, include the SLICE6Air in the Hardware step, and drag the StreamOut channel in the Channels step.
Click Save.
The error message will be displayed even though the Set DAS to Streaming checkbox in the Info step is checked.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T03:52:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T02:33:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-07T02:33:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,122 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.1.197, 4.0.846, 3.3.790
Ch.10 gets exported correctly</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-02-07T16:06:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-02-07T15:24:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-11-02T18:31:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-11-01T19:47:31Z</TimeStamp>
<ReleaseNote>Adds support for PCM intrapacket timestamps in CH10 export</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-11-01T19:45:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-28T18:22:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>I don't know of a way of testing this.
I suppose the only way to test currently is that it still produces a .ch10 file when you export a dataset, but no way to test the specific change.
3.3/4.0/4.1@47782</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-26T23:11:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T19:49:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:29:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:27:58Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-07T15:41:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T15:41:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-07T15:41:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,166 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.714
When installing:
Installing new version I changed name from previously installed license to ALicense.lic
Old license gets copied over</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-15T21:25:17Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-15T17:03:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T20:37:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-13T20:20:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T20:20:22Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T19:55:28Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0@47610, 4.1@47608, updated to always run copy/migrate license, even if a previous install was not found.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T18:14:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T17:45:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>should install license if it has extension .lic in either installer root directory or in the x64 directory (assuming it has &lt;License&gt; and &lt;LicenseAttributes&gt; in the file.
should copy the file with the name as is into the install directory.
Should find a file in the old install path with any name as long as it has an extension .lic.
it will use the first license found.  It will search the root directory of install files first, then subdirectories, then the last install path.
if no license is found it should install but warn no license was found to copy. 
4.0/4.1@47606
 
also note that DataPRO may not start with an oddly named license even if we copy it ... in my test I used StrangelyNamedLicense.lic and it was copied but datapro wouldn't recognize it till I renamed it
DataPROLicense__DTS
looking at the code DP expects:                 FileInfo[] licFiles = folderToSearch.GetFiles("DataPROLicense" + "*.lic"), so DataPROLicense + anything + .lic</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T17:40:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T16:57:55Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T15:22:58Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T15:22:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T15:20:05Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-07T21:44:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>As stated in bug 29606, the current implementation requires that a file named "DataPROLicense__DTS.lic" is either in the parent folder to the folder that contains setup.exe (the "version number" folder), or in the C:\DTS\DTS.Suite\&lt;version&gt;\DataPRO folder, in order to be copied to the new DataPRO folder being installed.
The fix should search for any file with a .lic prefix and the following contents:
&lt;License&gt;
...
&lt;LicenseAttributes&gt;
&lt;/LicenseAttributes&gt;
&lt;/License&gt;
and should add the subfolders of the "version number" folder to the search (e.g., putting the desired license file next to setup.exe should work).</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-07T21:44:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,392 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Chris Balogh</User>
<Comment>Ticket: SLICE6 AIR | CSV Export DTS Zendesk</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2024-06-06T17:19:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.722, 4.1.46, 3.3.770
Tested using SPS, recorder mode, 3 events, 5 seconds post
Ran up to arm and hit start and event using USB Controller while pushing down on weight load
Exported CSV unfiltered, filtered, mV, ADC
After comparing no two files are alike</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-19T22:11:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T16:19:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-14T22:57:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>3.3/4.0/4.1@47615</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-14T16:21:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>from Jerry's testing:
 
I also did a quick check on all of the other exports and it looks like the following also need the fix: Chapter10, TDAS, TDMS, and XLSX.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T15:43:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Subject:
please review 29631,Export in Run test exports the first event repeatedly
From:
Dan McFadden &lt;dan.mcfadden@dtsweb.com&gt;
Date:
9/13/2022, 2:08 PM
To:
DTSSoftwareDev &lt;DTSSoftwareDev@dtsweb.com&gt;
Jerry, John, Chris,
I've submitted a patch into 3.3 maint for:
29631
Export in Run test exports the first event repeatedly
To duplicate this issue, setup a test in multiple event recorder mode, with say 3 events, and Export CSV selected.  Run the test and download all and export all.  I also did download ROI and export ROI, but these were not affected by the issue in my testing.
for instance, looking at two ROI csv exports would show believe differences between exports:
while the CSV export for all would be identical between two event numbers:
tracking this down in the code there was already a fix in the ROI path that was not executed in the ALL path.  I abstracted this out of the ROI path, and now it applies to both the ROI and ALL paths.
Because of the scope of this feature, there may be a lot of testing required, both the ROI and All paths were changed, and while this fixes CSV the same issue may be in other exports as well like XLSX if they used similar logic to start ...
after the patch there should be differences in the export all csv files;
 
Attachments:
DTM_29631_ExportAllMultipleEvents.patch 4.4 KB</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T23:01:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T17:32:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-09T23:31:01Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-09T23:30:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment>https://dtsweb.zendesk.com/agent/tickets/10696</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-09T16:55:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-09T16:45:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>#10696 Data pro multievent mode not exporting files correctly
Submitted
July 29, 2022 at 09:23
 
Received via
Web Form
 
Requester
Zachery Clarke &lt;zachery.w.clarke@nasa.gov&gt;
CCs
Chris Balogh &lt;chris.balogh@dtsweb.com&gt;, Dan McFadden &lt;dan.mcfadden@dtsweb.com&gt;, Mike Beckage &lt;mike.beckage@dtsweb.com&gt;, Nathan Brown &lt;nathan.brown@dtsweb.com&gt;
Status
Open
 
Type
Question
 
Priority
Normal
 
Group
Support
 
Assignee
Nathan Brown
Ticket Source
Help Center
 
Product Family
Software::DataPRO
 
Software Version
DataPro 3.1.576
 
Problem Source
Software::Unidentified
Zachery Clarke July 29, 2022 at 09:23
After using the Multi event mode on Data Pro version 3.1.576 I have noticed a reoccurring but random problem during exporting the data after the test. The run test screen goes as expected but when looking at the data all events exported are the first event. Aka if the test has 4 events then all four will show the same data on the exported file. If you re export the events separately in export data menu then it does as expected. I am not sure why this is happening and it is not a huge problem but thought I would bring it to your attention. I have attached a log file of the test that I last saw this behavior. Unfortunately I can't test any fixes with this setup as it has been shipped to another testing location. 
Thank you 
Zack 
Mike Beckage July 29, 2022 at 14:38
Zack,
 
I am guessing this issue has been solved in a later version of DataPRO. I have assigned this to Nate for follow-up and copied Chris our software manager to chime in.
 
Best regards, Mike
Chris Balogh August 1, 2022 at 09:16Internal note
First, 3.1 did not include support for Multi-event recording modes.
 
Test data attached by Zachery is recorded in 3.3.705 but he's talking about 3.1576. Not sure if this is the reason for the error.
 
The CSV export folder he has shows different data for event 1 and 2. I'm thinking this could have been after the "If you re export the events separately in export data menu then it does as expected"
 
Nathan Brown let me know if you need anything?
 
CC Dan McFadden 
Ariel Muckenhirn August 9, 2022 at 14:29Internal note
Updated Problem Source: Software --&gt; Unidentified
Dan McFadden August 29, 2022 at 13:17Internal note
adding the extra decoration was a feature requested by SQA to make their job easier by making the filenames consistent and uniform across different export, recording mode, and events.  I agree adding the extra decoration can easily make it too long for filenames and cause issues with exports.  We could add a switch in the settings to turn off the adornment (ROI suffix/Event Number)
 
Nathan Brown  any thoughts?
 
here's an example of what his test id looks like from the zip;
 
MSR Aug 2022_Checkout1Set1_2022_07_21 08_25
Zachery Clarke September 8, 2022 at 11:48
Any updates to this problem? I am suppose to go back out to Utah at the end of the month and would like to have a fix before I leave. 
Thank you 
Zack 
 
Dan McFadden September 8, 2022 at 13:39
Hi Zachery,
 
I'd like to help out with this issue. I have some confusion at how to reproduce the issue that you might be able to help out with.  Multiple event recording modes wasn't supported in DataPRO until 3.3.  In the zip attached I see v3.3.705, so maybe this was the version the multiple events was recorded in?
 
looking at the binaries in the dataset attached in 3.3.703, I see similar but different data
 
 
for sure there have been relevant fixes to exports;
  26937 - Export ROI start improperly set in Run Test Export 26732 - Export using browse to file with dataset names files improperly in ISO AND CSV export but I'd like to give a shot at duplicating the issue first to check if the issue is addressed.  Specifically I think the primary complaint in this ticket is 
 
with 3.3.705 run test with multiple events exports event 1 multiple times rather than the actual events
 
Do I have this right?
Zachery Clarke September 9, 2022 at 05:52
Dan,
 
The version that we have been using and having issues with is 3.3.705. The binary files would work correctly it was the .CSV and .XLSX that would only export the first event multiple times. The test data that I sent shows that in the export folder. I can easily recreate the issue by taking a test that has multiple events using the slice nano and exporting the data using the export in the run test mode. Let me know if you can recreate the problem.
 
Have a good day
Zack
Dan McFadden September 9, 2022 at 09:44
Hi Zachery,
 
I was able to reproduce with the by running at test with recorder multiple events with a SPS, then downloading and exporting in run test tab with both ROI and ALL downloads.  The ROI data did not duplicate the issue, but the ALL dataset did have identical data:
ROI:
All:
 
I will create an issue for this and schedule the work
Support Software by Zendesk</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-09T16:45:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,111 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified with Datapro versions.. 3.1.703, 3.3.793, 4.0.910,4.1.257 .
Tested by first removing the odbc Driver 13.1 for SQL Server from add remove programs then  installing datapro  which reinstalls the odbc driver . Then repeated with each version of datapro .Ran each instance of datapro with no errors.</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-04-07T22:39:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-04-06T17:06:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-02-21T15:19:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-02-16T22:59:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-18T00:08:18Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-01-16T22:08:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T16:48:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T16:50:50Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47596 is 3.1; 47597 is 3.3; 47598 is 4.0; 47599 is 4.1</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-12T18:37:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-09T20:24:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-09T20:20:57Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>This was found while investigating how to reproduce bug 20175.
Somehow, as a result of uninstalling/reinstalling "Microsoft ODBC Driver 13.1 for SQL Server (x64)" the Registry contains a path that doesn't exist. However, a path that is similar DOES exist, and can be used.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-09T20:20:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,286 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified fix in the following DataPRO v4.5.65, 4.4.289, 4.2.557, 4.0.1214</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2025-05-15T21:57:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>CCNO
Diagnostics with no jumper wire, passes diagnostics
Realtime
Green (no jumper wire shorted)
shorted:</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2025-05-15T21:36:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-05-08T15:56:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2025-04-29T21:18:24Z</TimeStamp>
<ReleaseNote>Digital input sensors in meter mode should show green background when in default or initial state and red background whenever in toggled or active state.</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-29T20:36:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-29T17:52:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-17T22:46:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2025-04-17T15:45:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T21:30:39Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Resolved</StatusString>
<TimeStamp>2025-04-16T20:53:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T20:41:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>all the patch does is reverse the colors shown, it doesn't apply any other changes.
4.4/4.5@52591
4.0@52592
4.2@52593</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T20:38:04Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T18:47:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T18:47:32Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Nate confirms GM expects that when a digital input channel is in it's default or initial state the background color should be green, and when it's in it's active state it should be red so;
Feature: Digital input colorization in meter mode
Scenario: behavior of normally open and normally closed when open
Given 4 digital input settings, 2 normally open and 2 normally closed
And a SLICE PRO DIM with all 4 ports
When enter meter mode with no channels shorted
Then display with green background for normally open channels
And red background for normally closed channels
Scenario: behavior of normally open and normally closed when closed
Given 4 digital input settings, 2 normally open and 2 normally closed
And a SLICE PRO DIM with all 4 ports
When enter meter mode with all channels actively shorted
Then display with red background for normally open channels
And green background for normally closed channels</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T18:47:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>note Toyota version of this issue:
case 43831</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2025-04-16T18:41:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2025-02-20T21:23:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-05-06T18:10:21Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2024-01-15T16:59:46Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Nate Brown</User>
<Comment>Daniel @ GM reported this today. Lower priority than many things, but it would be good to get this into 4.2 and 4.0 LTS if we can.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-09-06T19:37:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>moving as these are not expected to be worked on in 4.1 development cycle</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-04T15:35:12Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-01T22:06:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T22:04:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T16:22:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:52:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T16:49:02Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-12T19:17:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>When having a slice pro dim in check channels and running up to Realtime navstep and choosing meter mode DP shows correct mode in red when it should be green. 
Steps to reproduce:
Discover and query SPD 
In sensor DB create a digital input with contact closure normally open 
Create a Test Setup with hardware and sensors
Run Test up to diagnostics and then navigate to Check Channels tab
Run through all the steps up to realtime, Notice that in Diagnostics it passes without having to make a connection between pins 1 &amp; 2
but when you choose meter mode in realtime I see the following in red.
with pins still not connected. As soon as I short pins 1&amp;2 with a jumper wire I see green. I was expecting the colors to be switched. 
 
(with pins shorted):</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-12T19:17:13Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,487 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:48:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-07T19:57:59Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Retested  with Files Dan provided , placing them in the Datapro.exe directories of each installation .
Exported  CSV calculated channel data does not match kogawa-san xlsx.  Data
Realtime seems to work correctly as per what testrail test calls for which was original issue case was opened for  though . 
Tested with dp 3.3 3.3.789.48047, 4.0.793.48044, and 4.1
 
I tested as follows..
Import the attached test setup , swap out hw , run test arm and collect data while injecting 87mv on 3 channels and download roi  -.05   to  .190 
place the 3 txt files Dan attached in the datapro.exe directory ...
Export roi unfiltered to Csv , compare cvs with  original attached data  , calculated channels are very  close to original as they should be  . , hw channels are very close as  they should be</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2023-02-07T19:56:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>SO if I dont have a folder structure like what is shown (No Binary folder) Where would I put the Txt files?</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-02-07T00:12:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2023-02-06T23:45:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-01-31T19:17:24Z</TimeStamp>
<ReleaseNote>Addresses an issue where 3D IR-TRACC data did not match expectations on export</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2023-01-31T19:16:25Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>still works in 4.0, the key here is that the .txt files needs to be in the binary directory, not the test data directory, so for example - here it is next to DataPRO.exe</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2023-01-24T21:41:34Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-17T17:19:51Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>sounds like the testing method was probably inaccurate, we can check it out again though.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-17T16:28:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T23:10:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-01-16T23:06:43Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Exported  CSV calculated channel data does not match kogawa-san xlsx.  Data
Realtime seems to work correctly as per what testrail test calls for which was original issue case was opened for  though . 
Tested with dp 3.3 3.3.789.48047, 4.0.793.48044, and 4.1
 
 The issue is Exported csv Calculated channels do not match however 
here are the 4 columns from kogawa-san's xlsx
They dont match the exported csv calculated channels .
 
 
From Dp 3.3 3.3.789.48047
And with DP 4.0.793.48044
 
And with dp 4.1.149
 
 
 
 
I tested as follows..
Import the attached test setup , swap out hw , run test arm and collect data while injecting 87mv on 3 channels and download roi  -.05   to  .190 
place the 3 txt files Dan attached in the binary folder for the data just collected 
Export roi unfiltered to Csv , compare cvs with  original attached data  , calculated channels differ quite a bit. , hw channels are very close as  they should be
 
 
 
 
 
 
 
 
 
 
Realtime data and recorded data shows correct response per the original testrail test on hw channels. 
realtime  4.0.793 potY channel ..</Comment>
<StatusString>Reactivated</StatusString>
<TimeStamp>2023-01-16T23:04:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Reactivated</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-11-03T23:19:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:46:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0@47704</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-04T23:08:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T17:20:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:09:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T14:55:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-28T14:57:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>supplemental patch</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-27T17:29:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-27T17:28:42Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>3.3/4.1@47678  (on hold for 4.0)</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-27T15:21:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>updated to change the serial number of output calculated channels too</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-27T15:09:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-26T22:00:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Subject:
Please review 29654,dp 4.0 476 3D IRTRACC DATA does not match expected data when injecting dc input per test steps
From:
Dan McFadden &lt;dan.mcfadden@dtsweb.com&gt;
Date:
9/26/2022, 2:31 PM
To:
DTSSoftwareDev &lt;DTSSoftwareDev@dtsweb.com&gt;
Chris, Jerry, John,
I've submitted a patch into 4.1 DEVEL for
29654
dp 4.0 476 3D IRTRACC DATA does not match expected data when injecting dc input per test steps
This patch would also need to go into 4.0 and potentially into earlier versions as well.
The first issue is corrected by the change to DiagnosticBase.xaml.cs in the patch.
This portion of the issue does not appear to be present in 3.3 or earlier versions.  I think this happened because NONE got added as an initial offset possibility for all calibrations.  This means that it could select the EU corresponding to the NONE offset on the calibration.  Instead it should use the EU for initial offset for the channel which was identified as using initial EU.
The next issue I detected is probably present in 3.1 and 3.3, but maybe was never noticed before.  Looking at the xlsx from kogawasan (dts internal only, do not distribute), I noticed that
                //this is column r
                var xa1 = δ * Math.Sin(θyprime * Math.PI / 180) + r * Math.Cos(θzprime * Math.PI / 180) * Math.Cos(θyprime * Math.PI / 180);
and
                //this is column t
                var za1 = δ * Math.Cos(θyprime * Math.PI / 180D) - r * Math.Cos(θzprime * Math.PI / 180D) * Math.Sin(θyprime * Math.PI / 180D);
where using -δ in the xlsx but not in the code.
Now testing the issue is important, but it can be difficult to exactly simulate the sensors in question.  To deal with that I created a function ReplaceDataIfNeeded that allows us to use EU data from a file rather than the actual EU data we collected - letting us use the exact same data as in the xlsx.
to test:
place ZPOTEU.txt, DISPLEU.txt, YPOTEU.txt into your binary directory.  These contain the EU from the kogawa-san xlsx.
import the test setup in the issue (also attached for convenience).  Before you import this you'll need to setup allow calculated channels (and allow overdue hardware and sensors in system settings)
import the test setup and re-assign the channels to whatever hardware you actually have:
 
finally adjust the ROI period to what's in the xlsx (-.050 to 190)
when you download roi and it creates the calculated channels it will actually use what's in your files, not what was collected.
run a test, and download roi, export ROI CSV unfiltered, compare with the kogawa-san xlsx.
The two files will not match perfectly (because we don't put EU into the chn files we put ADC and a scale factor, and then re-calculate the EU), but will match pretty closely
here are the 4 columns from kogawa-san's xlsx
here are the same 4 columns from the export CSV
note that the resultant is not in kogawa-san's xlsx, as that was a separate request from honda http://manuscript.dts.local/f/cases/10709/
 
Attachments:
DTM_29654_3DIRTRACC.patch 7.6 KB thor_m_3d_irtracc_kogawa_san_confidential_dts_internal_only_include_data_new.xlsx 6.7 MB ZPOTEU.txt 24.1 KB DISPLEU.txt 29.3 KB YPOTEU.txt 26.8 KB right_lower_chest_ir_trac_569.xml 2.0 MB</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-26T21:39:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>first testing this I encountered an issue with one of the connectors on the Takashi Box/Greg Box - cable 1 excitation was behaving as shorted.
The unit I was using also seemed badly out of calibration and gave different mV readings even when all plugs were connected to the same sig gen source.
I changed the code to always read the same ADC and the same mV roughly for all sensors, which got me in the ballpark.  Checking out the 3D-IRTracc create method, I then discovered this issue;  InitialEU is 0 but we were expecting a value, tracking it down it seems maybe this value is in InitialOffset;</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-23T17:46:40Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T16:20:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-20T21:01:47Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:51:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:51:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-13T19:51:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T19:50:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>realtime data is not correct for all channels
![](index.php?/attachments/get/30315)
![](index.php?/attachments/get/30316)
![](index.php?/attachments/get/30317)
and in recorded data om ch 2
![](index.php?/attachments/get/30318)
ch 3 looks correct in recorded data
![](index.php?/attachments/get/30320)
incorrect recorded data for ch 1
![](index.php?/attachments/get/30321)
good data for ch 3
![](index.php?/attachments/get/30322)
T438526: 3D IRTRACC data is accurate [Needs updating]
http://testrailserver/index.php?/tests/view/438526</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-13T19:50:45Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,171 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:46:08Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Verified with DataPro  4 0 758 .47789   Sum channels work properly in realtime</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-10-31T22:35:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-31T22:01:29Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>ReleaseNoted</StatusString>
<TimeStamp>2022-10-18T17:44:51Z</TimeStamp>
<ReleaseNote>Addresses an issue with SUM calculated channel</ReleaseNote>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-18T17:44:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47730 is 4.0</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-10-12T18:47:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T17:21:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-04T15:20:53Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:17:56Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T15:06:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-10-04T14:56:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment>47697 is 4.1</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-03T22:12:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-10-03T14:51:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jerry Lawrence</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-30T21:39:44Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-21T16:20:10Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:50:00Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-20T20:49:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T16:47:48Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-13T22:11:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Adding a calculated channel (sum) should result in a sum of the dc voltage of the channels, but it does not give that result
t
1v on each hw channel resulted in 1v at the calculated sum channel in realtime I would expect 2v?
![](index.php?/attachments/get/30330)
T438577: Verify realtime view for calculated channels
http://testrailserver/index.php?/tests/view/438577</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-13T22:11:11Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment>Tested and verified with dp 4 0 717 and 4.1 .43 Diagnostics  and trig check passes and successfully armed the TSR in streaming mode.</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-16T19:01:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Justin Richardson</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T16:58:14Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0/4.1@47624</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-14T23:22:06Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>Pass/Fail, install a new TSR AIR DP, get a brand new TSR AIR (or one initialized to just defaults), create a test setup, run check trigger, it should not automatically be triggered, run diagnostics, it should not normally be failed.</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T23:21:26Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>should now no longer get clock sync status when enable clock sync is off
now should use active mode when Use Circular buffer is set in settings (default), which should fix check trigger auto triggering (as the firmware lies on status)
now should not set auto zero deviation % for TSR AIR ever (as the firmware lies on the response).</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T23:11:24Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T20:15:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-14T20:15:16Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-14T19:00:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>as reported by CPB, running diagnostics on a TSR with a new install results in a diagnostics that fails with a clock sync error and potentially an error with auto zero deviation.
also, check trigger immediately triggered with no level trigger set
also, clock sync failure without clock sync enabled</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-14T19:00:27Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,318 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Travis Ralston</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-10-05T17:11:37Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment>ISO file matched accordingly.</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-19T18:50:07Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T16:19:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Tracy Smail</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T21:10:03Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>3.3/4.0/4.1@47633</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-16T21:01:23Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T17:54:15Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>this issue parallels another issue that was fixed some time ago:
http://manuscript.dts.local/f/cases/19038/
in both these cases an offset was being double counted.  In 19038 this was solved by removing the offset from the DataZeroLevelEU that is subtracted when outputting EU.
The issue in 19038 and 29678 is the line
channelFileWriter.WriteLine((channel.Samples.Data[i] - channel.DataZeroOffsetEu).ToString("F6", System.Globalization.CultureInfo.InvariantCulture.NumberFormat));
the channel sample data in an export is already in EU and so I'm not sure there's ever a point in subtracting a DataZeroOffsetEU from eu.  I think this line could be simplified by just removing the - DataZeroLevelOffsetEU, however I chose to follow what 19038 did and zero out this offset from the DataZeroLevelOffsetEU itself. 
I don't think this case actually effects the resolution for 19038, but I re-activated that one for re-testing since it is in the exact same area.
To test, get the zip from manuscript 29678 above.  Export CSV and ISO both unfiltered.  The output should match for the first channel, it should be for the first 5 samples:
4.409630
2.281482
-1.043750
0.020324
2.414491
pre-patch it will not match, post patch it should</Comment>
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T17:52:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>attaching notes from investigation</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T17:04:54Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T16:06:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>相川 隆 - Aikawa, TakashiYesterday 11:18(assign)
Hello, Chris
 
Could you inspect and fix the bug?
 
Bug report
DataPRO 3.1.619
Area: Export - csv, ISO
Issue: difference between csv exported data and ISO exported data.
 
ISO exported data is shifted 19 EU (ch0), 23EU(ch1) from csv exported data.
csv exported data looks same as "view data".
Average over time (-0.025 sec - 0.000 sec) is used however view data plot and csv data looks zeroed probably by diagnostics level.
ISO data looks zeroed by average over time.
 
This is headrest test.
Inoue san never seen this issue with other sled tests.
He think difference is that sled test uses trigger input from testing machine headrest test uses level trigger.
He just noted this issue with this test and did not check other headreat test.
 
 
ISO exported data is shifted 19 EU (ch0), 23EU(ch1) from csv exported data.
 
 
This is filtered data.  Average
-0.025 - 0.000 -19.0189997 -22.95897 -0.019 0.04103     Time csv
Chan 0:JC1360035 csv
Chan 1:JK2160019 ISO Chan 0 ISO Chan 1 csv - ISO Channel 0 csv - ISO
Channel 1 -0.498 1.95116023 3.55363139 20.95116 26.55363 -19 -23 -0.4979 1.66368673 3.04052972 20.66369 26.04053 -19 -23 -0.4978 1.0273232 2.1136106 20.02732 25.11361 -19 -23 -0.4977 0.42707984 1.82953062 19.42708 24.82953 -19 -23 -0.4976 0.05141264 2.57614367 19.05141 25.57614 -19 -23 -0.4975 0.05331608 3.98274117 19.05332 26.98274 -19 -23 -0.4974 0.73440577 5.33076937 19.73441 28.33077 -19 -23 -0.4973 2.18654473 6.00190169 21.18655 29.0019 -19 -23 -0.4972 4.00078881 6.02089568 23.00079 29.0209 -19 -23 -0.4971 5.66538628 5.88109487 24.66539 28.8811 -19 -23 -0.497 6.98491459 5.70455263 25.98492 28.70455 -19 -23  
Thank you,
Takashi
 
HRZ22037-unfiltered csv vs iso
XLSX
 
HRZ22037_filtered csv vs iso
XLSX
相川 隆 - Aikawa, TakashiYesterday 04:14(assign)
井上 様
 
ご報告ありがとうございます。ご迷惑をおかけし申し訳ないことと存じます。
データを確認させていただきます。
 
-----
DTS, Inc. 日本支店
相川 隆
 
Maugan RobertYesterday 02:55(assign)
Assigned to Takashi.
相川 隆 - Aikawa, Takashi - Feel free to copy other support/software people if needed.
 
井上 明 - Inoue, AkiraYesterday 02:43
DTS
相川様
 
いつもお世話になっております。
トヨタ紡織(株) 井上です。
 
一部の試験において、Excelでの計算結果とTrack Report計算結果でピーク値で約20m/s^2程度違いがあり
元データを確認するとISOデータが約2g程度オフセットして書き出している事が分かりました。
現象が見られたのはヘッドレスト衝撃試験になります。
DataPRO Viewerのグラフと比較してもISOデータがオフセットしている事が分かりました。
スレッド試験においては特にこのような現象は見られておりません。
両試験の違いは、
・ヘッドレスト衝撃はレベルトリガーで起動させている スレッドは試験機トリガー信号
・ヘッドレスト衝撃は水平打ち出し式のため、ヘッドフォーム打ち出し時にマイナス加速度が発生している
 (ソフトウェアゼロ算出は -25ms - 0msのアベレージオーバータイムにしております)スレッドは -20ms - 0ms
 
ヘッドレスト試験全てのデータは見れておりません。
取り急ぎ、キャプチャーを送付させて頂きます。
現象をご確認頂けませんでしょうか。
お手数をお掛け致しますが、宜しくお願い致します。
ご参考までに発生したヘッドレスト試験ファイルも併せて添付させて頂きます。</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-16T16:06:20Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0"?>
<ArrayOfFBEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2023-05-24T20:44:38Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment>Verified w/ DP 4.0.722, 4.1.46
Using a SPS, created a test setup and in export option chose CSV (this was the option chosen when I spoke to DM about this)
Recorder mode with multiple events. 
Disable require all units to pass diagnostics
Ran test all the way to export all:
In 4.1.46:</Comment>
<StatusString>Closed</StatusString>
<TimeStamp>2022-09-19T17:54:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Closed</Status>
</FBEvent>
<FBEvent>
<User>Chris Balogh</User>
<Comment />
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T16:19:52Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Jaime Lopez</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-19T15:31:31Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>4.0/4.1@47639
I think this is important enough to include in prior to release.
this apparently was a fix for case 18535 that didn't get included in download all for 4.0/4.1</Comment>
<StatusString>Resolved</StatusString>
<TimeStamp>2022-09-19T14:43:09Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Resolved</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>related case 18535</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-19T14:18:35Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>here's a simple solution to the issue, but would be nice to know why it happens:
 
        public string ReadTestSetupWithEvents(string DownloadFolder, string TestItem, string ExportTestName, ref DTS.Serialization.Test _test, ref DTS.Serialization.TestSetup _testSetup, bool justDTSFile, int eventNumber)
        {
            var directory = BuildDirectorywithEvents(DownloadFolder, TestItem, ExportTestName, eventNumber);
            var testFileName = Path.Combine(directory, ExportTestName + ".dts");
            DTS.Serialization.SliceRaw.File.ReadTestSetup(testFileName, out _test, out _testSetup, justDTSFile);
            if (null == _test)
            {
                var startOfEventNumer = ExportTestName.IndexOf("_Event Number");
                if( startOfEventNumer &gt; 0)
                {
                    testFileName = Path.Combine(directory, ExportTestName.Substring(0, startOfEventNumer), ".dts");
                    DTS.Serialization.SliceRaw.File.ReadTestSetup(testFileName, out _test, out _testSetup, justDTSFile);
                }
            }
            return testFileName;
        }</Comment>
<StatusString>Edited</StatusString>
<TimeStamp>2022-09-16T23:52:36Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment />
<StatusString>Assigned</StatusString>
<TimeStamp>2022-09-16T23:51:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>UNKNOWN</Status>
</FBEvent>
<FBEvent>
<User>Dan McFadden</User>
<Comment>one has Event Number decoration, one does not, because of this 4.0 and 4.1 show no data to export in Export All in run test.</Comment>
<StatusString>Opened</StatusString>
<TimeStamp>2022-09-16T23:51:49Z</TimeStamp>
<ZendeskNumber>0</ZendeskNumber>
<Status>Opened</Status>
</FBEvent>
</ArrayOfFBEvent>

Some files were not shown because too many files have changed in this diff Show More