Fix unstyled content to favor when we have data for now and remove errors from overview page (#38732)

## Summary

  * Changed types to allow null since we can return null and this makes GraphQL happy
  * Changed the indexes to try and query when they are undefined
  * Tested this with bad indexes and good indexes

Fixes this issue below:
![no-indicies](https://user-images.githubusercontent.com/1151048/59315902-08ea1200-8c79-11e9-8074-19b1085dbba2.gif)

Fixes this as well from the GraphQL
<img width="952" alt="Screen Shot 2019-06-11 at 6 04 21 PM" src="https://user-images.githubusercontent.com/1151048/59315911-11dae380-8c79-11e9-8cc4-8a48cf52e970.png">

This DOES show an initial loading when you have no indexes or data as a flash of unstyled content but that is a good trade off to me.

### Checklist

Use ~~strikethroughs~~ to remove checklist items you don't feel are applicable to this PR.

~~- [ ] This was checked for cross-browser compatibility, [including a check against IE11](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility)~~
~~- [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/master/packages/kbn-i18n/README.md)~~
~~- [ ] [Documentation](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#writing-documentation) was added for features that require explanation or tutorials~~

- [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios

~~- [ ] This was checked for [keyboard-only and screenreader accessibility](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Accessibility_testing_checklist)~~

### For maintainers

~~- [ ] This was checked for breaking API changes and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~~
~~- [ ] This includes a feature addition or change that requires a release note and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~~
This commit is contained in:
Frank Hassanabad 2019-06-11 20:15:26 -06:00 committed by GitHub
parent 4b4b079b2d
commit 33352d6911
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 122 additions and 190 deletions

View file

@ -54,10 +54,10 @@ describe('Index Fields & Browser Fields', () => {
});
describe('indicesExistOrDataTemporarilyUnavailable', () => {
test('it returns false when undefined', () => {
test('it returns true when undefined', () => {
let undefVar;
const result = indicesExistOrDataTemporarilyUnavailable(undefVar);
expect(result).toBeFalsy();
expect(result).toBeTruthy();
});
test('it returns true when true', () => {
const result = indicesExistOrDataTemporarilyUnavailable(true);

View file

@ -115,4 +115,4 @@ export class WithSource extends React.PureComponent<WithSourceProps> {
}
export const indicesExistOrDataTemporarilyUnavailable = (indicesExist: boolean | undefined) =>
isUndefined(indicesExist) ? false : indicesExist;
indicesExist || isUndefined(indicesExist);

View file

@ -7647,11 +7647,7 @@
"name": "auditbeatSocket",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7659,11 +7655,7 @@
"name": "filebeatCisco",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7671,11 +7663,7 @@
"name": "filebeatNetflow",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7683,11 +7671,7 @@
"name": "filebeatPanw",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7695,11 +7679,7 @@
"name": "filebeatSuricata",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7707,11 +7687,7 @@
"name": "filebeatZeek",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7719,11 +7695,7 @@
"name": "packetbeatDNS",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7731,11 +7703,7 @@
"name": "packetbeatFlow",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7743,11 +7711,7 @@
"name": "packetbeatTLS",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
}
@ -7766,11 +7730,7 @@
"name": "auditbeatAuditd",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7778,11 +7738,7 @@
"name": "auditbeatFIM",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7790,11 +7746,7 @@
"name": "auditbeatLogin",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7802,11 +7754,7 @@
"name": "auditbeatPackage",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7814,11 +7762,7 @@
"name": "auditbeatProcess",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7826,11 +7770,7 @@
"name": "auditbeatUser",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7838,11 +7778,7 @@
"name": "filebeatSystemModule",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
},
@ -7850,11 +7786,7 @@
"name": "winlogbeat",
"description": "",
"args": [],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": { "kind": "SCALAR", "name": "Float", "ofType": null }
},
"type": { "kind": "SCALAR", "name": "Float", "ofType": null },
"isDeprecated": false,
"deprecationReason": null
}

View file

@ -1180,41 +1180,41 @@ export interface NetworkDnsItem {
}
export interface OverviewNetworkData {
auditbeatSocket: number;
auditbeatSocket?: number | null;
filebeatCisco: number;
filebeatCisco?: number | null;
filebeatNetflow: number;
filebeatNetflow?: number | null;
filebeatPanw: number;
filebeatPanw?: number | null;
filebeatSuricata: number;
filebeatSuricata?: number | null;
filebeatZeek: number;
filebeatZeek?: number | null;
packetbeatDNS: number;
packetbeatDNS?: number | null;
packetbeatFlow: number;
packetbeatFlow?: number | null;
packetbeatTLS: number;
packetbeatTLS?: number | null;
}
export interface OverviewHostData {
auditbeatAuditd: number;
auditbeatAuditd?: number | null;
auditbeatFIM: number;
auditbeatFIM?: number | null;
auditbeatLogin: number;
auditbeatLogin?: number | null;
auditbeatPackage: number;
auditbeatPackage?: number | null;
auditbeatProcess: number;
auditbeatProcess?: number | null;
auditbeatUser: number;
auditbeatUser?: number | null;
filebeatSystemModule: number;
filebeatSystemModule?: number | null;
winlogbeat: number;
winlogbeat?: number | null;
}
export interface UncommonProcessesData {
@ -3248,21 +3248,21 @@ export namespace GetOverviewHostQuery {
export type OverviewHost = {
__typename?: 'OverviewHostData';
auditbeatAuditd: number;
auditbeatAuditd?: number | null;
auditbeatFIM: number;
auditbeatFIM?: number | null;
auditbeatLogin: number;
auditbeatLogin?: number | null;
auditbeatPackage: number;
auditbeatPackage?: number | null;
auditbeatProcess: number;
auditbeatProcess?: number | null;
auditbeatUser: number;
auditbeatUser?: number | null;
filebeatSystemModule: number;
filebeatSystemModule?: number | null;
winlogbeat: number;
winlogbeat?: number | null;
};
}
@ -3291,23 +3291,23 @@ export namespace GetOverviewNetworkQuery {
export type OverviewNetwork = {
__typename?: 'OverviewNetworkData';
auditbeatSocket: number;
auditbeatSocket?: number | null;
filebeatCisco: number;
filebeatCisco?: number | null;
filebeatNetflow: number;
filebeatNetflow?: number | null;
filebeatPanw: number;
filebeatPanw?: number | null;
filebeatSuricata: number;
filebeatSuricata?: number | null;
filebeatZeek: number;
filebeatZeek?: number | null;
packetbeatDNS: number;
packetbeatDNS?: number | null;
packetbeatFlow: number;
packetbeatFlow?: number | null;
packetbeatTLS: number;
packetbeatTLS?: number | null;
};
}

View file

@ -8,26 +8,26 @@ import gql from 'graphql-tag';
export const overviewSchema = gql`
type OverviewNetworkData {
auditbeatSocket: Float!
filebeatCisco: Float!
filebeatNetflow: Float!
filebeatPanw: Float!
filebeatSuricata: Float!
filebeatZeek: Float!
packetbeatDNS: Float!
packetbeatFlow: Float!
packetbeatTLS: Float!
auditbeatSocket: Float
filebeatCisco: Float
filebeatNetflow: Float
filebeatPanw: Float
filebeatSuricata: Float
filebeatZeek: Float
packetbeatDNS: Float
packetbeatFlow: Float
packetbeatTLS: Float
}
type OverviewHostData {
auditbeatAuditd: Float!
auditbeatFIM: Float!
auditbeatLogin: Float!
auditbeatPackage: Float!
auditbeatProcess: Float!
auditbeatUser: Float!
filebeatSystemModule: Float!
winlogbeat: Float!
auditbeatAuditd: Float
auditbeatFIM: Float
auditbeatLogin: Float
auditbeatPackage: Float
auditbeatProcess: Float
auditbeatUser: Float
filebeatSystemModule: Float
winlogbeat: Float
}
extend type Source {

View file

@ -1209,41 +1209,41 @@ export interface NetworkDnsItem {
}
export interface OverviewNetworkData {
auditbeatSocket: number;
auditbeatSocket?: number | null;
filebeatCisco: number;
filebeatCisco?: number | null;
filebeatNetflow: number;
filebeatNetflow?: number | null;
filebeatPanw: number;
filebeatPanw?: number | null;
filebeatSuricata: number;
filebeatSuricata?: number | null;
filebeatZeek: number;
filebeatZeek?: number | null;
packetbeatDNS: number;
packetbeatDNS?: number | null;
packetbeatFlow: number;
packetbeatFlow?: number | null;
packetbeatTLS: number;
packetbeatTLS?: number | null;
}
export interface OverviewHostData {
auditbeatAuditd: number;
auditbeatAuditd?: number | null;
auditbeatFIM: number;
auditbeatFIM?: number | null;
auditbeatLogin: number;
auditbeatLogin?: number | null;
auditbeatPackage: number;
auditbeatPackage?: number | null;
auditbeatProcess: number;
auditbeatProcess?: number | null;
auditbeatUser: number;
auditbeatUser?: number | null;
filebeatSystemModule: number;
filebeatSystemModule?: number | null;
winlogbeat: number;
winlogbeat?: number | null;
}
export interface UncommonProcessesData {
@ -6260,67 +6260,67 @@ export namespace NetworkDnsItemResolvers {
export namespace OverviewNetworkDataResolvers {
export interface Resolvers<Context = SiemContext, TypeParent = OverviewNetworkData> {
auditbeatSocket?: AuditbeatSocketResolver<number, TypeParent, Context>;
auditbeatSocket?: AuditbeatSocketResolver<number | null, TypeParent, Context>;
filebeatCisco?: FilebeatCiscoResolver<number, TypeParent, Context>;
filebeatCisco?: FilebeatCiscoResolver<number | null, TypeParent, Context>;
filebeatNetflow?: FilebeatNetflowResolver<number, TypeParent, Context>;
filebeatNetflow?: FilebeatNetflowResolver<number | null, TypeParent, Context>;
filebeatPanw?: FilebeatPanwResolver<number, TypeParent, Context>;
filebeatPanw?: FilebeatPanwResolver<number | null, TypeParent, Context>;
filebeatSuricata?: FilebeatSuricataResolver<number, TypeParent, Context>;
filebeatSuricata?: FilebeatSuricataResolver<number | null, TypeParent, Context>;
filebeatZeek?: FilebeatZeekResolver<number, TypeParent, Context>;
filebeatZeek?: FilebeatZeekResolver<number | null, TypeParent, Context>;
packetbeatDNS?: PacketbeatDnsResolver<number, TypeParent, Context>;
packetbeatDNS?: PacketbeatDnsResolver<number | null, TypeParent, Context>;
packetbeatFlow?: PacketbeatFlowResolver<number, TypeParent, Context>;
packetbeatFlow?: PacketbeatFlowResolver<number | null, TypeParent, Context>;
packetbeatTLS?: PacketbeatTlsResolver<number, TypeParent, Context>;
packetbeatTLS?: PacketbeatTlsResolver<number | null, TypeParent, Context>;
}
export type AuditbeatSocketResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type FilebeatCiscoResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type FilebeatNetflowResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type FilebeatPanwResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type FilebeatSuricataResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type FilebeatZeekResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type PacketbeatDnsResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type PacketbeatFlowResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type PacketbeatTlsResolver<
R = number,
R = number | null,
Parent = OverviewNetworkData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
@ -6328,60 +6328,60 @@ export namespace OverviewNetworkDataResolvers {
export namespace OverviewHostDataResolvers {
export interface Resolvers<Context = SiemContext, TypeParent = OverviewHostData> {
auditbeatAuditd?: AuditbeatAuditdResolver<number, TypeParent, Context>;
auditbeatAuditd?: AuditbeatAuditdResolver<number | null, TypeParent, Context>;
auditbeatFIM?: AuditbeatFimResolver<number, TypeParent, Context>;
auditbeatFIM?: AuditbeatFimResolver<number | null, TypeParent, Context>;
auditbeatLogin?: AuditbeatLoginResolver<number, TypeParent, Context>;
auditbeatLogin?: AuditbeatLoginResolver<number | null, TypeParent, Context>;
auditbeatPackage?: AuditbeatPackageResolver<number, TypeParent, Context>;
auditbeatPackage?: AuditbeatPackageResolver<number | null, TypeParent, Context>;
auditbeatProcess?: AuditbeatProcessResolver<number, TypeParent, Context>;
auditbeatProcess?: AuditbeatProcessResolver<number | null, TypeParent, Context>;
auditbeatUser?: AuditbeatUserResolver<number, TypeParent, Context>;
auditbeatUser?: AuditbeatUserResolver<number | null, TypeParent, Context>;
filebeatSystemModule?: FilebeatSystemModuleResolver<number, TypeParent, Context>;
filebeatSystemModule?: FilebeatSystemModuleResolver<number | null, TypeParent, Context>;
winlogbeat?: WinlogbeatResolver<number, TypeParent, Context>;
winlogbeat?: WinlogbeatResolver<number | null, TypeParent, Context>;
}
export type AuditbeatAuditdResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type AuditbeatFimResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type AuditbeatLoginResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type AuditbeatPackageResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type AuditbeatProcessResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type AuditbeatUserResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type FilebeatSystemModuleResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;
export type WinlogbeatResolver<
R = number,
R = number | null,
Parent = OverviewHostData,
Context = SiemContext
> = Resolver<R, Parent, Context>;