Skip to content

Commit 63ab020

Browse files
committed
1 parent 1ab1e6c commit 63ab020

File tree

29 files changed

+127
-482
lines changed

29 files changed

+127
-482
lines changed

src/api/reports/awsReports.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { axiosInstance } from 'api';
2-
import { default as devAxiosInstance } from 'api/apiDev';
32

43
import type { Report, ReportData, ReportItem, ReportItemValue, ReportMeta, ReportValue } from './report';
54
import { ReportType } from './report';
@@ -63,9 +62,9 @@ export const ReportTypePaths: Partial<Record<ReportType, string>> = {
6362
export function runReport(reportType: ReportType, query: string) {
6463
const path = ReportTypePaths[reportType];
6564

66-
// For use with API development
67-
if (reportType === ReportType.ec2Compute) {
68-
return devAxiosInstance.get<AwsReport>(`${path}?${query}`);
69-
}
65+
// For use with API development -- see 'api/apiDev'
66+
// if (reportType === ReportType.ec2Compute) {
67+
// return devAxiosInstance.get<AwsReport>(`${path}?${query}`);
68+
// }
7069
return axiosInstance.get<AwsReport>(`${path}?${query}`);
7170
}

src/api/resources/awsResource.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { ResourceType } from './resource';
66
export const ResourceTypePaths: Partial<Record<ResourceType, string>> = {
77
[ResourceType.account]: 'resource-types/aws-accounts/',
88
[ResourceType.aws_category]: 'resource-types/aws-categories/',
9+
[ResourceType.aws_ec2_instance]: 'resource-types/aws-ec2-compute-instances/',
10+
[ResourceType.aws_ec2_os]: 'resource-types/aws-ec2-compute-os/',
911
[ResourceType.region]: 'resource-types/aws-regions/',
1012
[ResourceType.service]: 'resource-types/aws-services/',
1113
};

src/api/resources/resource.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { PagedMetaData, PagedResponse } from 'api/api';
33
export interface ResourceData {
44
account_alias?: string;
55
cluster_alias?: string;
6+
instance_name?: string;
67
key?: string;
78
value?: string | string[];
89
}
@@ -13,6 +14,8 @@ export interface Resource extends PagedResponse<ResourceData, PagedMetaData> {}
1314
export const enum ResourceType {
1415
account = 'account',
1516
aws_category = 'aws_category',
17+
aws_ec2_instance = 'instance',
18+
aws_ec2_os = 'operating_system',
1619
cluster = 'cluster',
1720
gcpProject = 'gcp_project',
1821
node = 'node',

src/api/resources/resourceUtils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ export function isResourceTypeValid(resourcePathsType: ResourcePathsType, resour
3232
switch (resourceType) {
3333
case ResourceType.account:
3434
case ResourceType.aws_category:
35+
case ResourceType.aws_ec2_instance:
36+
case ResourceType.aws_ec2_os:
3537
case ResourceType.cluster:
3638
case ResourceType.gcpProject:
3739
case ResourceType.node:

src/routes/components/dataToolbar/dataToolbar.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ export class DataToolbarBase extends React.Component<DataToolbarProps, DataToolb
273273
key,
274274
});
275275

276+
if (!(filter && filters)) {
277+
return;
278+
}
276279
this.setState(
277280
{
278281
filters,

src/routes/components/dataToolbar/utils/category.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export const getCategoryInput = ({
5858
return (
5959
<ToolbarFilter
6060
categoryName={categoryOption}
61-
chips={getChips(filters[categoryOption.key] as Filter[])}
61+
chips={getChips(filters?.[categoryOption.key] as Filter[])}
6262
deleteChip={onDelete}
6363
key={categoryOption.key}
6464
showToolbarItem={currentCategory === categoryOption.key}
@@ -71,6 +71,7 @@ export const getCategoryInput = ({
7171
isDisabled={isDisabled && !_hasFilters}
7272
onSelect={value => onCategoryInputSelect(value, categoryOption.key)}
7373
placeholder={intl.formatMessage(messages.filterByPlaceholder, { value: placeholderKey })}
74+
resourceKey={categoryOption.resourceKey}
7475
resourcePathsType={resourcePathsType}
7576
resourceType={categoryOption.key as ResourceType}
7677
/>
@@ -124,12 +125,12 @@ export const onCategoryInput = ({
124125
key?: string;
125126
}) => {
126127
if (event && event.key && event.key !== 'Enter') {
127-
return {};
128+
return {}; // For destructure
128129
}
129130

130131
const val = cleanInput(categoryInput);
131132
if (val.trim() === '') {
132-
return {};
133+
return {}; // For destructure
133134
}
134135

135136
const isExcludes = currentExclude === ExcludeType.exclude;

src/routes/components/dataToolbar/utils/common.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface Filters {
1313
export interface ToolbarChipGroupExt extends ToolbarChipGroup {
1414
ariaLabelKey?: string;
1515
placeholderKey?: string;
16+
resourceKey?: string;
1617
selectClassName?: string; // A selector from routes/components/dataToolbar/dataToolbar.scss
1718
selectOptions?: ToolbarChipGroup[];
1819
}

src/routes/components/dataToolbar/utils/orgUntits.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ export const getOrgUnitSelect = ({
3232
const selectOptions: SelectWrapperOption[] = getOrgUnitOptions(orgReport).map(option => ({
3333
description: option.key,
3434
compareTo: item =>
35-
filters[orgUnitIdKey] ? (filters[orgUnitIdKey] as any).find(filter => filter.value === item.value) : false,
35+
filters?.[orgUnitIdKey] ? (filters[orgUnitIdKey] as any).find(filter => filter.value === item.value) : false,
3636
toString: () => option.name,
3737
value: option.key,
3838
}));
3939

4040
const chips = []; // Get selected items as PatternFly's ToolbarChip type
4141
const selections = []; // Select options and selections must be same type
42-
if (filters[orgUnitIdKey] && Array.isArray(filters[orgUnitIdKey])) {
42+
if (filters?.[orgUnitIdKey] && Array.isArray(filters[orgUnitIdKey])) {
4343
(filters[orgUnitIdKey] as any).map(filter => {
4444
const selection = selectOptions.find(option => option.value === filter.value);
4545
if (selection) {

src/routes/components/dataToolbar/utils/tags.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export const getTagValueSelect = ({
137137
return (
138138
<ToolbarFilter
139139
categoryName={categoryName}
140-
chips={getChips(filters.tag[tagKeyOption.key])}
140+
chips={getChips(filters?.tag?.[tagKeyOption.key])}
141141
deleteChip={onDelete}
142142
key={tagKeyOption.key}
143143
showToolbarItem={currentCategory === tagKey && currentTagKey === tagKeyOption.key}
@@ -147,7 +147,7 @@ export const getTagValueSelect = ({
147147
onTagValueSelect={onTagValueSelect}
148148
onTagValueInput={onTagValueInput}
149149
onTagValueInputChange={onTagValueInputChange}
150-
selections={filters.tag[tagKeyOption.key] ? filters.tag[tagKeyOption.key].map(filter => filter.value) : []}
150+
selections={filters?.tag?.[tagKeyOption.key] ? filters.tag[tagKeyOption.key].map(filter => filter.value) : []}
151151
tagKey={currentTagKey}
152152
tagKeyValue={tagKeyValueInput}
153153
tagPathsType={tagPathsType}

src/routes/components/export/exportModal.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
Radio,
1414
TextInput,
1515
} from '@patternfly/react-core';
16-
import type { ReportPathsType } from 'api/reports/report';
16+
import type { ReportPathsType, ReportType } from 'api/reports/report';
1717
import type { AxiosError } from 'axios';
1818
import { format } from 'date-fns';
1919
import messages from 'locales/messages';
@@ -35,10 +35,12 @@ export interface ExportModalOwnProps {
3535
groupBy?: string;
3636
isAllItems?: boolean;
3737
isOpen: boolean;
38+
isTimeScoped?: boolean;
3839
items?: ComputedReportItem[];
3940
onClose(isOpen: boolean);
4041
reportPathsType: ReportPathsType;
4142
reportQueryString: string;
43+
reportType: ReportType;
4244
resolution?: 'daily' | 'monthly'; // Default resolution
4345
showAggregateType?: boolean; // Monthly resolution filters are not valid with date range
4446
showFormatType?: boolean; // Format type; CVS / JSON
@@ -144,9 +146,11 @@ export class ExportModalBase extends React.Component<ExportModalProps, ExportMod
144146
intl,
145147
isAllItems,
146148
isExportsToggleEnabled,
149+
isTimeScoped,
147150
items,
148151
reportPathsType,
149152
reportQueryString,
153+
reportType,
150154
showAggregateType = true,
151155
showFormatType = true,
152156
showTimeScope = true,
@@ -200,6 +204,7 @@ export class ExportModalBase extends React.Component<ExportModalProps, ExportMod
200204
formatType={formatType}
201205
groupBy={groupBy}
202206
isAllItems={isAllItems}
207+
isTimeScoped={isTimeScoped}
203208
items={items}
204209
key="confirm"
205210
timeScope={showTimeScope ? timeScope : undefined}
@@ -208,6 +213,7 @@ export class ExportModalBase extends React.Component<ExportModalProps, ExportMod
208213
name={defaultName}
209214
reportPathsType={reportPathsType}
210215
reportQueryString={reportQueryString}
216+
reportType={reportType}
211217
resolution={resolution}
212218
/>,
213219
<Button ouiaId="cancel-btn" key="cancel" onClick={this.handleOnClose} variant={ButtonVariant.link}>

0 commit comments

Comments
 (0)