diff --git a/packages/react-table/src/demos/table-demos/ExpandCollapseAll.jsx b/packages/react-table/src/demos/table-demos/ExpandCollapseAll.jsx
deleted file mode 100644
index 7582eeb493f..00000000000
--- a/packages/react-table/src/demos/table-demos/ExpandCollapseAll.jsx
+++ /dev/null
@@ -1,152 +0,0 @@
-import React from 'react';
-import { Card, PageSection, Table, TableHeader, TableBody, expandable } from '@patternfly/react-table';
-import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
-
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-class ExpandCollapseAllTableDemo extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- isChecked: false,
- selectedRows: 0,
- expandedRows: 0,
- expandCollapseToggle: 'expand',
- collapseAllAriaLabel: 'Expand all',
- columns: [
- {
- title: 'Repositories',
- cellFormatters: [expandable]
- },
- 'Branches',
- 'Pull requests',
- 'Workspaces',
- 'Last Commit'
- ],
- rows: [
- {
- cells: ['one', 'two', 'three', 'four', 'five']
- },
- {
- isOpen: false,
- cells: ['parent - 1', 'two', 'three', 'four', 'five']
- },
- {
- parent: 1,
- cells: ['child - 1']
- },
- {
- isOpen: false,
- cells: ['parent - 2', 'two', 'three', 'four', 'five']
- },
- {
- parent: 3,
- cells: ['child - 2']
- },
- {
- isOpen: false,
- cells: ['parent - 3', 'two', 'three', 'four', 'five']
- },
- {
- parent: 5,
- cells: ['child - 3']
- }
- ]
- };
- this.onCollapse = this.onCollapse.bind(this);
- this.onSelect = this.onSelect.bind(this);
- }
-
- onCollapse(event, rowIndex, isOpen) {
- const { rows, expandedRows, expandCollapseToggle } = this.state;
- const expandableRowLength = this.state.rows.filter(row => row.isOpen !== undefined).length;
- /**
- * Please do not use rowKey as row index for more complex tables.
- * Rather use some kind of identifier like ID passed with each row.
- */
- const collapseAll = rowIndex === undefined;
- let newRows = Array.from(rows);
- let newExpandedRows = expandedRows;
- if (collapseAll) {
- newRows = newRows.map(r => (r.isOpen === undefined ? r : { ...r, isOpen }));
- newExpandedRows = isOpen ? expandableRowLength : 0;
- } else {
- newRows[rowIndex] = { ...newRows[rowIndex], isOpen };
- newExpandedRows = isOpen ? newExpandedRows + 1 : newExpandedRows - 1;
- }
- let toggle = expandCollapseToggle;
- if (newExpandedRows === expandableRowLength) {
- toggle = 'collapse';
- } else if (newExpandedRows === 0) {
- toggle = 'expand';
- }
- this.setState({
- rows: newRows,
- expandedRows: newExpandedRows,
- expandCollapseToggle: toggle,
- collapseAllAriaLabel: toggle === 'expand' ? 'Expand All' : 'Collapse All'
- });
- }
-
- onSelect(event, isSelected, rowId) {
- let isChecked = null;
- let selectedRows = this.state.selectedRows;
- const selectableRowLength = this.state.rows.filter(row => row.parent === undefined).length;
- let rows;
- if (rowId === -1) {
- rows = this.state.rows.map(row => {
- row.selected = isSelected;
- return row;
- });
- isChecked = isSelected;
- selectedRows = isSelected ? selectableRowLength : 0;
- } else {
- rows = [...this.state.rows];
- rows[rowId] = { ...rows[rowId], selected: isSelected };
- selectedRows = isSelected ? selectedRows + 1 : selectedRows - 1;
- if (selectedRows === 0) {
- isChecked = false;
- } else if (selectedRows === selectableRowLength) {
- isChecked = true;
- }
- }
- this.setState({
- rows,
- isChecked,
- selectedRows
- });
- }
-
- render() {
- const { columns, rows, collapseAllAriaLabel } = this.state;
-
- return (
-
-
-
-
-
-
-
-
-
- );
- }
-}
diff --git a/packages/react-table/src/demos/Table.md b/packages/react-table/src/docs/demos/Table.md
similarity index 99%
rename from packages/react-table/src/demos/Table.md
rename to packages/react-table/src/docs/demos/Table.md
index 6667959281a..1c4e2906f2d 100644
--- a/packages/react-table/src/demos/Table.md
+++ b/packages/react-table/src/docs/demos/Table.md
@@ -3026,7 +3026,7 @@ class PageLayoutDefaultNav extends React.Component {
A toolbar may be added above a sticky table either inside or outside the `OuterScrollContainer`.
-```ts isFullscreen file="examples/ComposableTableStickyToolbar.tsx"
+```ts isFullscreen file="../examples/ComposableTableStickyToolbar.tsx"
```
## Empty states
diff --git a/packages/react-table/src/demos/table-demos/Compact.jsx b/packages/react-table/src/docs/demos/table-demos/Compact.jsx
similarity index 100%
rename from packages/react-table/src/demos/table-demos/Compact.jsx
rename to packages/react-table/src/docs/demos/table-demos/Compact.jsx
diff --git a/packages/react-table/src/demos/table-demos/CompoundExpansion.jsx b/packages/react-table/src/docs/demos/table-demos/CompoundExpansion.jsx
similarity index 100%
rename from packages/react-table/src/demos/table-demos/CompoundExpansion.jsx
rename to packages/react-table/src/docs/demos/table-demos/CompoundExpansion.jsx
diff --git a/packages/react-table/src/docs/demos/table-demos/ExpandCollapseAll.jsx b/packages/react-table/src/docs/demos/table-demos/ExpandCollapseAll.jsx
new file mode 100644
index 00000000000..4abd5a0fb48
--- /dev/null
+++ b/packages/react-table/src/docs/demos/table-demos/ExpandCollapseAll.jsx
@@ -0,0 +1,219 @@
+import React from 'react';
+import { Card, Label, PageSection, Table, TableHeader, TableBody, expandable } from '@patternfly/react-table';
+import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
+import { TextVariants } from '@patternfly/react-core';
+
+const columns = [
+ {
+ title: 'Servers',
+ cellFormatters: [expandable]
+ },
+ 'Threads',
+ 'Applications',
+ 'Workspaces',
+ 'Status'
+];
+
+const serverData = [
+ {
+ name: 'US-Node 1',
+ threads: 18,
+ applications: 42,
+ workspaces: 7,
+ status: { title: },
+ details: (
+
+
+ LocationBoston
+
+
+ Last Modified2 hours ago
+
+
+ URLhttp://www.redhat.com/en/office-locations/US-node1
+
+
+ )
+ },
+ {
+ name: 'US-Node 2',
+ threads: 9,
+ applications: 24,
+ workspaces: 17,
+ status: { title: },
+ details: (
+
+
+ LocationAtlanta
+
+
+ Last Modified5 hours ago
+
+
+ URLhttp://www.redhat.com/en/office-locations/US-node2
+
+
+ )
+ },
+ {
+ name: 'US-Node 3',
+ threads: 8,
+ applications: 47,
+ workspaces: 3,
+ status: { title: },
+ details: (
+
+
+ LocationSan Francisco
+
+
+ Last Modified20 minutes ago
+
+
+ URLhttp://www.redhat.com/en/office-locations/US-node3
+
+
+ )
+ },
+ {
+ name: 'US-Node 4',
+ threads: 6,
+ applications: 4,
+ workspaces: 15,
+ status: { title: },
+ details: (
+
+
+ LocationRaleigh
+
+
+ Last Modified10 minutes ago
+
+
+ URLhttp://www.redhat.com/en/office-locations/US-node4
+
+
+ )
+ },
+ {
+ name: 'US-Node 5',
+ threads: 9,
+ applications: 24,
+ workspaces: 17,
+ status: { title: },
+ details: (
+
+
+ LocationAtlanta
+
+
+ Last Modified15 minutes ago
+
+
+ URLhttp://www.redhat.com/en/office-locations/US-node5
+
+
+ )
+ }
+];
+
+const initialExpandedServerNames = ['US-Node 2']; // Default to expanded
+
+class ExpandCollapseAllTableDemo extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ isChecked: false,
+ selectedRows: 0,
+ expandedRows: 0,
+ expandCollapseToggle: 'expand',
+ collapseAllAriaLabel: 'Expand all',
+ expandedServerNames: initialExpandedServerNames
+ };
+ }
+
+ setServerExpanded = (server, isExpanding) => {
+ this.setState(() => {
+ const otherExpandedServerNames = this.state.expandedServerNames.filter(r => r !== server.name);
+ return {
+ expandedServerNames: isExpanding ? [...otherExpandedServerNames, server.name] : otherExpandedServerNames
+ };
+ });
+ };
+
+ render() {
+ const { collapseAllAriaLabel } = this.state;
+
+ const isServerExpanded = server => this.state.expandedServerNames.includes(server.name);
+ // We want to be able to reference the original data object based on row index. But because an expanded
+ // row takes up two row indexes, servers[rowIndex] will not be accurate like it would in a normal table.
+ // One solution to this is to create an array of data objects indexed by the displayed row index.
+ const serversByRowIndex = [];
+
+ const rows = [];
+ serverData.forEach(server => {
+ rows.push({
+ ...{ isOpen: isServerExpanded(server) },
+ cells: [server.name, server.threads, server.applications, server.workspaces, server.status]
+ });
+ serversByRowIndex.push(server);
+ if (server.details) {
+ const cells = [];
+
+ cells.push({
+ title: server.details
+ });
+
+ rows.push({
+ parent: rows.length - 1,
+ cells
+ });
+ serversByRowIndex.push(null);
+ }
+ });
+
+ const onCollapse = (_e, rowIndex, isOpen) => {
+ const collapseAll = rowIndex === undefined;
+
+ if (collapseAll) {
+ this.setState(() => {
+ return {
+ expandedServerNames: isOpen ? [...serverData.map((server) => server.name)] : []
+ };
+ });
+
+ }
+ else if (serversByRowIndex[rowIndex]) {
+ this.setServerExpanded(serversByRowIndex[rowIndex], isOpen);
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/packages/react-table/src/demos/table-demos/StickyFirstColumn.jsx b/packages/react-table/src/docs/demos/table-demos/StickyFirstColumn.jsx
similarity index 100%
rename from packages/react-table/src/demos/table-demos/StickyFirstColumn.jsx
rename to packages/react-table/src/docs/demos/table-demos/StickyFirstColumn.jsx
diff --git a/packages/react-table/src/demos/examples/ComposableTableStickyToolbar.tsx b/packages/react-table/src/docs/examples/ComposableTableStickyToolbar.tsx
similarity index 100%
rename from packages/react-table/src/demos/examples/ComposableTableStickyToolbar.tsx
rename to packages/react-table/src/docs/examples/ComposableTableStickyToolbar.tsx
diff --git a/packages/react-table/src/docs/examples/Data.jsx b/packages/react-table/src/docs/examples/Data.jsx
new file mode 100644
index 00000000000..a999a49ab4c
--- /dev/null
+++ b/packages/react-table/src/docs/examples/Data.jsx
@@ -0,0 +1,768 @@
+/* eslint-disable no-console */
+import * as React from 'react';
+
+const getRandomInteger = (min, max) => (
+ Math.floor(Math.random() * (max - min + 1)) + min
+);
+
+export const columns = [
+ 'Servers',
+ 'Threads',
+ 'Applications',
+ 'Workspaces',
+ 'Status',
+ 'Location',
+ 'Last Modified',
+ 'URL'
+];
+
+export const rows = [
+ {
+ name: 'US-Node 1',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node1'
+ },
+ {
+ name: 'US-Node 2',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '5 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node2'
+ },
+ {
+ name: 'US-Node 3',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node3'
+ },
+ {
+ name: 'US-Node 4',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node4'
+ },
+ {
+ name: 'US-Node 5',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '15 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node5'
+ },
+ {
+ name: 'US-Node 6',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '4 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node6'
+ },
+ {
+ name: 'US-Node 7',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node7'
+ },
+ {
+ name: 'US-Node 8',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '8 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node8'
+ },
+ {
+ name: 'US-Node 9',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node9'
+ },
+ {
+ name: 'US-Node 10',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node10'
+ },
+ {
+ name: 'US-Node 11',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '55 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node11'
+ },
+ {
+ name: 'US-Node 12',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node12'
+ },
+ {
+ name: 'US-Node 13',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node13'
+ },
+ {
+ name: 'US-Node 14',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '4 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node14'
+ },
+ {
+ name: 'US-Node 15',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node15'
+ },
+ {
+ name: 'US-Node 16',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ lastModified: '5 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node16'
+ },
+ {
+ name: 'US-Node 17',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '5 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node17'
+ },
+ {
+ name: 'US-Node 18',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node18'
+ },
+ {
+ name: 'US-Node 19',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '30 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node19'
+ },
+ {
+ name: 'US-Node 20',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '3 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node20'
+ },
+ {
+ name: 'US-Node 21',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '15 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node21'
+ },
+ {
+ name: 'US-Node 22',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node22'
+ },
+ {
+ name: 'US-Node 23',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node23'
+ },
+ {
+ name: 'US-Node 24',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '40 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node24'
+ },
+ {
+ name: 'US-Node 25',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node25'
+ },
+ {
+ name: 'US-Node 26',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Raleigh', 'Boston', 'Atlanta', 'San Francisco'][getRandomInteger(0, 3)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/US-node26'
+ },
+ {
+ name: 'CZ-Node 1',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '7 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node1'
+ },
+ {
+ name: 'CZ-Node 2',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '50 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node2'
+ },
+ {
+ name: 'CZ-Node 3',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node3'
+ },
+ {
+ name: 'CZ-Node 4',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '3 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node4'
+ },
+ {
+ name: 'CZ-Node 5',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node5'
+ },
+ {
+ name: 'CZ-Node 6',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node6'
+ },
+ {
+ name: 'CZ-Node 7',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '25 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node7'
+ },
+ {
+ name: 'CZ-Node 8',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node8'
+ },
+ {
+ name: 'CZ-Node 9',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '15 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node9'
+ },
+ {
+ name: 'CZ-Node 10',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '3 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node10'
+ },
+ {
+ name: 'CZ-Node 11',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '30 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node11'
+ },
+ {
+ name: 'CZ-Node 12',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '5 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node12'
+ },
+ {
+ name: 'CZ-Node 13',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '45 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node13'
+ },
+ {
+ name: 'CZ-Node 14',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node14'
+ },
+ {
+ name: 'CZ-Node 15',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-node15'
+ },
+ {
+ name: 'CZ-Remote-Node 1',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-Remote-node1'
+ },
+ {
+ name: 'CZ--Remote-Node 2',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '15 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-Remote-node2'
+ },
+ {
+ name: 'CZ-Remote-Node 3',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-Remote-node3'
+ },
+ {
+ name: 'CZ-Remote-Node 4',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-Remote-node4'
+ },
+ {
+ name: 'CZ-Remote-Node 5',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '30 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-Remote-node5'
+ },
+ {
+ name: 'CZ-Remote-Node 6',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-Remote-node6'
+ },
+ {
+ name: 'CZ-Remote-Node 7',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '45 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node7'
+ },
+ {
+ name: 'CZ-Remote-Node 8',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '6 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node8'
+ },
+ {
+ name: 'CZ-Remote-Node 9',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '50 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node9'
+ },
+ {
+ name: 'CZ-Remote-Node 10',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '3 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node10'
+ },
+ {
+ name: 'CZ-Remote-Node 11',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node11'
+ },
+ {
+ name: 'CZ-Remote-Node 12',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node12'
+ },
+ {
+ name: 'CZ-Remote-Node 13',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '5 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node13'
+ },
+ {
+ name: 'CZ-Remote-Node 14',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '30 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node14'
+ },
+ {
+ name: 'CZ-Remote-Node 15',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node15'
+ },
+ {
+ name: 'CZ-Remote-Node 16',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node16'
+ },
+ {
+ name: 'CZ-Remote-Node 17',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '25 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node17'
+ },
+ {
+ name: 'CZ-Remote-Node 18',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: ['Brno', 'Prague'][getRandomInteger(0, 1)],
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/CZ-remote-node18'
+ },
+ {
+ name: 'Bangalore-Node 1',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '25 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node1'
+ },
+ {
+ name: 'Bangalore-Node 2',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node2'
+ },
+ {
+ name: 'Bangalore-Node 3',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '10 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node3'
+ },
+ {
+ name: 'Bangalore-Node 4',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '50 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node4'
+ },
+ {
+ name: 'Bangalore-Node 5',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '3 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node5'
+ },
+ {
+ name: 'Bangalore-Node 6',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node6'
+ },
+ {
+ name: 'Bangalore-Node 7',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '5 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node7'
+ },
+ {
+ name: 'Bangalore-Node 8',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '30 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node8'
+ },
+ {
+ name: 'Bangalore-Node 9',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node9'
+ },
+ {
+ name: 'Bangalore-Node 10',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node10'
+ },
+ {
+ name: 'Bangalore-Node 11',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '40 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node11'
+ },
+ {
+ name: 'Bangalore-Node 12',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '1 hour ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node12'
+ },
+ {
+ name: 'Bangalore-Node 13',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '20 minutes ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node13'
+ },
+ { name: 'Bangalore-Node 14',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '4 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node14'
+ },
+ { name: 'Bangalore-Node 15',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '2 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node15'
+ },
+ {
+ name: 'Bangalore-Node 16',
+ threads: getRandomInteger(1, 20),
+ applications: getRandomInteger(1, 50),
+ workspaces: getRandomInteger(1, 30),
+ status: ['Stopped', 'Running', 'Down', 'Needs Maintenance'][getRandomInteger(0, 3)],
+ location: 'Bangalore',
+ lastModified: '3 hours ago',
+ url: 'http://www.redhat.com/en/office-locations/Bangalore-node16'
+ }
+];