adding typescript interfaces for type hinting and testing
some code reformatting adding tests for services and components. cleanup of unused dependencies in components. refactor dashboard service so that wrapper is removed before data is passed to component. (no more this.data.data...). refactored components so that variable names are consistent (dashboardService vs smartService). ensure argument and return types are specified everywhere. adding tests for pipes. adding ng test to ci steps. change dir before running npm install. trying to install nodejs in continer. test frontend separately. upload coverage for frontend and backend. upload coverage for frontend and backend. testing coverage file locations. retry file upload.
This commit is contained in:
@@ -1,22 +1,28 @@
|
||||
import { Layout } from 'app/layout/layout.types';
|
||||
import {Layout} from 'app/layout/layout.types';
|
||||
|
||||
// Theme type
|
||||
export type Theme = 'light' | 'dark' | 'system';
|
||||
|
||||
// Device title to display on the dashboard
|
||||
export type DashboardDisplay = 'name' | 'serial_id' | 'uuid' | 'label'
|
||||
|
||||
export type DashboardSort = 'status' | 'title' | 'age'
|
||||
|
||||
export type TemperatureUnit = 'celsius' | 'fahrenheit'
|
||||
|
||||
/**
|
||||
* AppConfig interface. Update this interface to strictly type your config
|
||||
* object.
|
||||
*/
|
||||
export interface AppConfig
|
||||
{
|
||||
export interface AppConfig {
|
||||
theme: Theme;
|
||||
layout: Layout;
|
||||
|
||||
// Dashboard options
|
||||
dashboardDisplay: string;
|
||||
dashboardSort: string;
|
||||
dashboardDisplay: DashboardDisplay;
|
||||
dashboardSort: DashboardSort;
|
||||
|
||||
temperatureUnit: string;
|
||||
temperatureUnit: TemperatureUnit;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import {DeviceModel} from 'app/core/models/device-model';
|
||||
import {SmartModel} from 'app/core/models/measurements/smart-model';
|
||||
import {AttributeMetadataModel} from 'app/core/models/thresholds/attribute-metadata-model';
|
||||
|
||||
// maps to webapp/backend/pkg/models/device_summary.go
|
||||
export interface DeviceDetailsResponseWrapper {
|
||||
success: boolean;
|
||||
errors?: any[];
|
||||
data: {
|
||||
device: DeviceModel;
|
||||
smart_results: SmartModel[];
|
||||
},
|
||||
metadata: { [key: string]: AttributeMetadataModel } | { [key: number]: AttributeMetadataModel };
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
// maps to webapp/backend/pkg/models/device.go
|
||||
export interface DeviceModel {
|
||||
wwn: string;
|
||||
device_name: string;
|
||||
device_uuid: string;
|
||||
device_serial_id: string;
|
||||
device_label: string;
|
||||
device_name?: string;
|
||||
device_uuid?: string;
|
||||
device_serial_id?: string;
|
||||
device_label?: string;
|
||||
|
||||
manufacturer: string;
|
||||
model_name: string;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import {DeviceModel} from 'app/core/models/device-model';
|
||||
import {SmartTemperatureModel} from 'app/core/models/measurements/smart-temperature-model';
|
||||
|
||||
// maps to webapp/backend/pkg/models/device_summary.go
|
||||
export interface DeviceSummaryModel {
|
||||
device: DeviceModel;
|
||||
smart?: SmartSummary;
|
||||
temp_history?: SmartTemperatureModel[];
|
||||
}
|
||||
|
||||
export interface SmartSummary {
|
||||
collector_date?: string,
|
||||
temp?: number
|
||||
power_on_hours?: number
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import {DeviceSummaryModel} from 'app/core/models/device-summary-model';
|
||||
|
||||
// maps to webapp/backend/pkg/models/device_summary.go
|
||||
export interface DeviceSummaryResponseWrapper {
|
||||
success: boolean;
|
||||
errors: any[];
|
||||
data: {
|
||||
summary: { [key: string]: DeviceSummaryModel }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import {SmartTemperatureModel} from './measurements/smart-temperature-model';
|
||||
|
||||
export interface DeviceSummaryTempResponseWrapper {
|
||||
success: boolean;
|
||||
errors: any[];
|
||||
data: {
|
||||
temp_history: { [key: string]: SmartTemperatureModel[]; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// maps to webapp/backend/pkg/models/measurements/smart_ata_attribute.go
|
||||
// maps to webapp/backend/pkg/models/measurements/smart_nvme_attribute.go
|
||||
// maps to webapp/backend/pkg/models/measurements/smart_scsi_attribute.go
|
||||
export interface SmartAttributeModel {
|
||||
attribute_id: number | string
|
||||
value: number
|
||||
thresh: number
|
||||
worst?: number
|
||||
raw_value?: number
|
||||
raw_string?: string
|
||||
when_failed?: string
|
||||
|
||||
transformed_value: number
|
||||
status: number
|
||||
status_reason?: string
|
||||
failure_rate?: number
|
||||
|
||||
chartData?: any[]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// maps to webapp/backend/pkg/models/measurements/smart.go
|
||||
import {SmartAttributeModel} from './smart-attribute-model';
|
||||
|
||||
export interface SmartModel {
|
||||
date: string;
|
||||
device_wwn: string;
|
||||
device_protocol: string;
|
||||
|
||||
temp: number;
|
||||
power_on_hours: number;
|
||||
power_cycle_count: number
|
||||
attrs: { [key: string]: SmartAttributeModel }
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// maps to webapp/backend/pkg/models/measurements/smart_temperature.go
|
||||
export interface SmartTemperatureModel {
|
||||
date: string;
|
||||
temp: number;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
// map to webapp/backend/pkg/thresholds/ata_attribute_metadata.go
|
||||
// map to webapp/backend/pkg/thresholds/nvme_attribute_metadata.go
|
||||
// map to webapp/backend/pkg/thresholds/scsi_attribute_metadata.go
|
||||
export interface AttributeMetadataModel {
|
||||
display_name: string
|
||||
ideal: string
|
||||
critical: boolean
|
||||
description: string
|
||||
|
||||
transform_value_unit?: string
|
||||
observed_thresholds?: any[]
|
||||
display_type: string
|
||||
}
|
||||
Reference in New Issue
Block a user