From 32472ce18c49d61975fe8b29dbadf34a59c05085 Mon Sep 17 00:00:00 2001 From: Roshaan Faisal Date: Wed, 1 Sep 2021 13:45:55 -0400 Subject: [PATCH 1/8] able to view the new screen --- TestResultSummaryService/.Database.js.swp | Bin 0 -> 24576 bytes TestResultSummaryService/.trssConf.json.swp | Bin 0 -> 4096 bytes TestResultSummaryService/Database.js | 22 +- test-result-summary-client/src/App.jsx | 6 +- .../src/Build/.BuildCompare.js.swp | Bin 0 -> 24576 bytes .../src/Build/.TopLevelBuildTable.jsx.swp | Bin 0 -> 24576 bytes .../src/Build/BuildComparisonTable.js | 253 ++++++++++++++++++ .../src/Build/TopLevelBuilds.jsx | 6 +- test-result-summary-client/src/Build/index.js | 1 + 9 files changed, 280 insertions(+), 8 deletions(-) create mode 100644 TestResultSummaryService/.Database.js.swp create mode 100644 TestResultSummaryService/.trssConf.json.swp create mode 100644 test-result-summary-client/src/Build/.BuildCompare.js.swp create mode 100644 test-result-summary-client/src/Build/.TopLevelBuildTable.jsx.swp create mode 100644 test-result-summary-client/src/Build/BuildComparisonTable.js diff --git a/TestResultSummaryService/.Database.js.swp b/TestResultSummaryService/.Database.js.swp new file mode 100644 index 0000000000000000000000000000000000000000..96c367b87c5f44b2eba82a0d574e0f0fc5284b73 GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/TestResultSummaryService/.trssConf.json.swp b/TestResultSummaryService/.trssConf.json.swp new file mode 100644 index 0000000000000000000000000000000000000000..88ab0055da08c820885510a8364178d2438bcb8e GIT binary patch literal 4096 zcmeIuI|{-;5CG7%vk^ou;HTbQKaI88CtPX_dtiDFMhy1`v%A_j2J-S&YE` zZe6|y^%SEbGr1={FS0}E!Fdfwklv7&9?_Csz0;+k!uqhtGH~b6xKkP#?H$ns^H}W& v^WO(tu>cE{2-L)I(C>W)x}A2b*;tp%a*G96fCX591z3OuSbzms;NJvZ4m>sg literal 0 HcmV?d00001 diff --git a/TestResultSummaryService/Database.js b/TestResultSummaryService/Database.js index 09f1677d..77984bb8 100644 --- a/TestResultSummaryService/Database.js +++ b/TestResultSummaryService/Database.js @@ -15,10 +15,22 @@ let db; const dbConnect = await MongoClient.connect(url, { useUnifiedTopology: true }); db = dbConnect.db("exampleDb"); - await db.createCollection('testResults'); - await db.createCollection('output'); - await db.createCollection('auditLogs'); - await db.createCollection('user'); + await db.createCollection('testResults').catch(err => { + if (err.code !== 48) throw err; + return db.collection('testResults'); + }); + await db.createCollection('output').catch(err => { + if (err.code !== 48) throw err; + return db.collection('output'); + }); + await db.createCollection('auditLogs').catch(err => { + if (err.code !== 48) throw err; + return db.collection('auditLogs'); + }); + await db.createCollection('user').catch(err => { + if (err.code !== 48) throw err; + return db.collection('user'); + }); })() class Database { @@ -301,4 +313,4 @@ class UserDB extends Database { } } -module.exports = { TestResultsDB, OutputDB, BuildListDB, ApplicationTestsDB, AuditLogsDB, UserDB, ObjectID }; \ No newline at end of file +module.exports = { TestResultsDB, OutputDB, BuildListDB, ApplicationTestsDB, AuditLogsDB, UserDB, ObjectID }; diff --git a/test-result-summary-client/src/App.jsx b/test-result-summary-client/src/App.jsx index 134be576..87870894 100644 --- a/test-result-summary-client/src/App.jsx +++ b/test-result-summary-client/src/App.jsx @@ -11,7 +11,7 @@ import { TestCompare } from './TestCompare/'; import { ThirdPartyAppView } from './ThirdPartyAppView/'; import { PerfCompare } from './PerfCompare/'; import { TabularView } from './TabularView/'; -import { AllTestsInfo, BuildDetail, DeepHistory, GitNewIssue, TestPerPlatform, PossibleIssues, TopLevelBuilds, ResultSummary, ReleaseSummary } from './Build/'; +import { AllTestsInfo, BuildDetail, DeepHistory, GitNewIssue, TestPerPlatform, PossibleIssues, TopLevelBuilds, ResultSummary, ReleaseSummary} from './Build/'; import { SearchResult } from './Search/'; import { Settings } from './Settings/'; @@ -54,6 +54,7 @@ export default class App extends Component { Dashboard Third Party Applications + By Version @@ -77,6 +78,7 @@ export default class App extends Component { + @@ -84,4 +86,4 @@ export default class App extends Component { } -} \ No newline at end of file +} diff --git a/test-result-summary-client/src/Build/.BuildCompare.js.swp b/test-result-summary-client/src/Build/.BuildCompare.js.swp new file mode 100644 index 0000000000000000000000000000000000000000..fd08f94f6284ac87112cc8a7cf2dc4a2273f6d20 GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js new file mode 100644 index 00000000..66377cf2 --- /dev/null +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -0,0 +1,253 @@ +import React, { Component } from 'react'; +import { CheckOutlined, CloseOutlined, InfoOutlined, LoadingOutlined, QuestionCircleOutlined } from '@ant-design/icons'; +import { Table, Tooltip, Checkbox, Popconfirm } from 'antd'; +import { Link } from 'react-router-dom'; +import { params } from '../utils/query'; +import { fetchData } from '../utils/Utils'; +import BuildLink from './BuildLink'; + +const pageSize = 5; +export default class BuildCompare extends Component { + + state = { + currentPage: 1, + buildInfo: [], + }; + + async componentDidMount() { + await this.updateData(); + } + + async componentDidUpdate(prevProps, prevState) { + if (prevProps.url !== this.props.url) { + await this.updateData(); + } + + if (prevState.currentPage !== this.state.currentPage) { + await this.updateTotals(); + } + } + + async updateData() { + const { buildName, url } = this.props; +console.log(this.props) + const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); + + const buildInfo = builds.map(build => ({ + key: build._id, + build: build, + date: build.timestamp ? new Date(build.timestamp).toLocaleString() : null, + startBy: build.startBy ? build.startBy : "N/A", + jenkins: build, + keepForever: build.keepForever ? build.keepForever : false + })); + this.setState({ buildInfo }); + + await this.updateTotals(); + } + + async updateTotals() { + let { buildInfo, currentPage } = this.state; + if (buildInfo) { + const { buildName, url } = this.props; + // only query getTotals if buildInfo does not have the data + const i = pageSize * (currentPage - 1); + + await Promise.all(buildInfo.slice(i, pageSize * currentPage).map(async build => { + if (build.totals) return; + const totals = await fetchData(`/api/getTotals?buildName=${buildName}&url=${url}&buildNum=${build.build.buildNum}`); + build.totals = totals; + })); + this.forceUpdate(); + } + } + + onChange = page => { + this.setState({ + currentPage: page, + }); + }; + + handleKeepForverClick = async (record) => { + const { buildInfo } = this.state; + if (record.key) { + for (let build of buildInfo) { + if (build.key === record.key) { + build.keepForever = !build.keepForever; + await fetch(`/api/updateKeepForever?_id=${build.key}&keepForever=${build.keepForever}`, { + method: 'get' + }); + break; + } + } + await new Promise(r => setTimeout(r, 100)); + this.setState({ buildInfo }); + } + } + + render() { + const { buildInfo } = this.state; + const { buildName, url, type } = this.props; + if (buildInfo) { + const renderFvTestBuild = (value) => { + if (value && value.buildNum) { + let icon = ""; + if (value.status !== "Done") { + icon = ; + value.buildResult = "PROGRESSING" + } else if (value.buildResult === "SUCCESS") { + icon = ; + } else if (value.buildResult === "FAILURE") { + icon = ; + } else { + icon = ; + } + return
+ Build #{value.buildNum} {icon} + + +
{renderPublishName(value)} +
+ } + return null; + }; + + const renderBuild = (value) => { + if (value && value.buildNum) { + let result = value.buildResult; + if (value.tests && value.tests.length > 0) { + result = value.tests[0].testResult; + if (value.tests[0]._id) { + return
+ + Build #{value.buildNum} + +
; + } + } else { + return
+ Build #{value.buildNum} + +
; + } + } + return null; + }; + + const renderJenkinsLinks = ({ buildName, buildNum, buildUrl, url }) => { + // Temporarily support BlueOcean link under folders + let blueOcean; + if (`${url}`.includes("/jobs") || `${url}`.includes("/build-scripts")) { + let urls = url.split("/job/"); + let basicUrl = urls.shift(); + urls.push(buildName); + let newUrl = urls.join("%2F"); + blueOcean = `${basicUrl}/blue/organizations/jenkins/${newUrl}/detail/${buildName}/${buildNum}`; + } else { + blueOcean = `${url}/blue/organizations/jenkins/${buildName}/detail/${buildName}/${buildNum}`; + } + return ; + }; + + const renderTotals = (value, row, index) => { + if (!value) return
N/A
; + const { failed = 0, passed = 0, disabled = 0, skipped = 0, total = 0 } = value; + const buildResult = row.build.buildResult; + const id = row.build._id; + return <> + Grid + +
+ + + + + +
+ ; + }; + + const renderBuildResults = (value) => { + return
+ +
; + }; + + const renderPublishName = ({ buildParams = [] }) => { + if (buildParams) { + const param = buildParams.find(param => param.name === "overridePublishName"); + if (param) + return param.value; + } + return; + }; + + const columns = [ + { + title: 'Select', + dataIndex: 'select', + key: 'select', + render: (value, record) => { + return + + + } + }, { + title: 'Build', + dataIndex: 'build', + key: 'buildName', + render: renderBuildResults, + }, { + title: 'Vendor', + dataIndex: 'vendor', + key: 'vendorName', + render: renderTotals, + }, { + title: 'JDK Implementation', + dataIndex: 'impl', + key: 'impl', + render: renderTotals, + }, { + title: 'Platforms', + dataIndex: 'platform', + key: 'platform', + render: renderTotals, + }, { + title: 'JDK Version', + dataIndex: 'version', + key: 'version', + sorter: (a, b) => { + return a.version.localeCompare(b.version); + } + }, { + title: 'Start Date', + dataIndex: 'date', + key: 'date', + sorter: (a, b) => { + return a.date.localeCompare(b.date); + } + }, { + title: 'Duration', + dataIndex: 'time', + key: 'time', + sorter: (a, b) => { + return a.time.localeCompare(b.time); + } + } + ]; + + return
{buildName} in server {url}
} + pagination={{ pageSize, onChange: this.onChange }} + />; + } else { + return null; + } + } +} diff --git a/test-result-summary-client/src/Build/TopLevelBuilds.jsx b/test-result-summary-client/src/Build/TopLevelBuilds.jsx index b46ef719..b7953ec6 100644 --- a/test-result-summary-client/src/Build/TopLevelBuilds.jsx +++ b/test-result-summary-client/src/Build/TopLevelBuilds.jsx @@ -1,5 +1,6 @@ import React, { Component } from 'react'; import TopLevelBuildTable from './TopLevelBuildTable'; +import BuildComparisonTable from './BuildComparisonTable'; const { order, fetchData } = require('../utils/Utils'); export default class TopLevelBuilds extends Component { @@ -47,7 +48,10 @@ export default class TopLevelBuilds extends Component {
{Object.keys(builds).sort().map((url, i) => { return builds[url].sort(order).map((buildName, j) => { - return + return ( url === "/build/compare" + ? + : + ); }); })}
); diff --git a/test-result-summary-client/src/Build/index.js b/test-result-summary-client/src/Build/index.js index 5ee77bed..c861a3e7 100644 --- a/test-result-summary-client/src/Build/index.js +++ b/test-result-summary-client/src/Build/index.js @@ -5,5 +5,6 @@ export { default as GitNewIssue } from "./GitNewIssue"; export { default as TestPerPlatform } from "./TestPerPlatform"; export { default as PossibleIssues } from "./PossibleIssues"; export { default as TopLevelBuilds } from "./TopLevelBuilds"; +export { default as BuildComparisonTable } from "./BuildComparisonTable"; export { default as ResultSummary } from "./Summary/ResultSummary"; export {default as ReleaseSummary} from "./ReleaseSummary"; From f252e1302033b64bbb6abc4e3bfc29e67050e11b Mon Sep 17 00:00:00 2001 From: Roshaan Faisal Date: Thu, 2 Sep 2021 12:39:41 -0400 Subject: [PATCH 2/8] populated the table --- TestResultSummaryService/Dockerfile | 2 +- TestResultSummaryService/frontend.js | 2 +- TestResultSummaryService/nginx.conf | 6 ++-- test-result-summary-client/package.json | 2 +- .../src/Build/.BuildCompare.js.swp | Bin 24576 -> 0 bytes .../src/Build/.TopLevelBuildTable.jsx.swp | Bin 24576 -> 0 bytes .../src/Build/BuildComparisonTable.js | 31 ++++++++++++------ test-result-summary-client/src/utils/Utils.js | 25 ++++++++++++++ 8 files changed, 52 insertions(+), 16 deletions(-) delete mode 100644 test-result-summary-client/src/Build/.BuildCompare.js.swp delete mode 100644 test-result-summary-client/src/Build/.TopLevelBuildTable.jsx.swp diff --git a/TestResultSummaryService/Dockerfile b/TestResultSummaryService/Dockerfile index 369f3f3d..929eb811 100644 --- a/TestResultSummaryService/Dockerfile +++ b/TestResultSummaryService/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /usr/src/app COPY . . -EXPOSE 3001 +EXPOSE 3002 CMD npm ci &&\ npm start diff --git a/TestResultSummaryService/frontend.js b/TestResultSummaryService/frontend.js index c2b40596..95eee3ce 100644 --- a/TestResultSummaryService/frontend.js +++ b/TestResultSummaryService/frontend.js @@ -43,7 +43,7 @@ let options = { expressSwagger(options); // all environments -app.set( 'port', process.env.PORT || 3001 ); +app.set( 'port', process.env.PORT || 3002 ); app.listen( app.get( 'port' ), function() { logger.info( 'Express server listening on port ' + app.get( 'port' ) ); diff --git a/TestResultSummaryService/nginx.conf b/TestResultSummaryService/nginx.conf index 4f35644e..1c915445 100644 --- a/TestResultSummaryService/nginx.conf +++ b/TestResultSummaryService/nginx.conf @@ -14,11 +14,11 @@ server { server_name trss.adoptium.net; location ~ /api-docs { - proxy_pass http://localhost:3001; + proxy_pass http://localhost:3002; proxy_http_version 1.1; } location /api/ { - proxy_pass http://localhost:3001; + proxy_pass http://localhost:3002; proxy_http_version 1.1; } @@ -34,4 +34,4 @@ server { try_files $uri $uri/ /index.html; } -} \ No newline at end of file +} diff --git a/test-result-summary-client/package.json b/test-result-summary-client/package.json index 7e1bf473..89a7e64d 100644 --- a/test-result-summary-client/package.json +++ b/test-result-summary-client/package.json @@ -36,7 +36,7 @@ "build": "react-app-rewired build", "test": "react-app-rewired test --env=jsdom" }, - "proxy": "http://localhost:3001", + "proxy": "http://localhost:3002", "devDependencies": { "react-app-rewired": "^2.1.8", "react-scripts": "^3.4.4" diff --git a/test-result-summary-client/src/Build/.BuildCompare.js.swp b/test-result-summary-client/src/Build/.BuildCompare.js.swp deleted file mode 100644 index fd08f94f6284ac87112cc8a7cf2dc4a2273f6d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index 66377cf2..f0751992 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -3,7 +3,7 @@ import { CheckOutlined, CloseOutlined, InfoOutlined, LoadingOutlined, QuestionCi import { Table, Tooltip, Checkbox, Popconfirm } from 'antd'; import { Link } from 'react-router-dom'; import { params } from '../utils/query'; -import { fetchData } from '../utils/Utils'; +import { fetchData, timeConversion } from '../utils/Utils'; import BuildLink from './BuildLink'; const pageSize = 5; @@ -28,19 +28,33 @@ export default class BuildCompare extends Component { } } + retrieveParams(buildParams) { + var params = {} + buildParams.forEach((dict)=> params[dict.name] = dict.value) + return params + } + async updateData() { const { buildName, url } = this.props; console.log(this.props) const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); + //const params=builds.map(build=>this.retrieveParams(build.buildParams)) + //console.log(params) - const buildInfo = builds.map(build => ({ + const buildInfo = builds.map(build => { + console.log(build) + const params = this.retrieveParams(build.buildParams) + console.log(params) + return { key: build._id, build: build, date: build.timestamp ? new Date(build.timestamp).toLocaleString() : null, - startBy: build.startBy ? build.startBy : "N/A", - jenkins: build, - keepForever: build.keepForever ? build.keepForever : false - })); + vendor: build.startBy ? build.startBy : "N/A", + impl: params.JDK_IMPL, + version: params.JDK_VERSION, + platform: params.PLATFORM, + time: timeConversion(build.buildDuration) + }}); this.setState({ buildInfo }); await this.updateTotals(); @@ -173,7 +187,7 @@ console.log(this.props) const renderBuildResults = (value) => { return
- +
; }; @@ -205,17 +219,14 @@ console.log(this.props) title: 'Vendor', dataIndex: 'vendor', key: 'vendorName', - render: renderTotals, }, { title: 'JDK Implementation', dataIndex: 'impl', key: 'impl', - render: renderTotals, }, { title: 'Platforms', dataIndex: 'platform', key: 'platform', - render: renderTotals, }, { title: 'JDK Version', dataIndex: 'version', diff --git a/test-result-summary-client/src/utils/Utils.js b/test-result-summary-client/src/utils/Utils.js index 28a59fd9..5d9581b4 100644 --- a/test-result-summary-client/src/utils/Utils.js +++ b/test-result-summary-client/src/utils/Utils.js @@ -58,3 +58,28 @@ export const fetchData = async(url) => { console.error(e); } } + +export function timeConversion(duration: number) { + const portions: string[] = []; + + const msInHour = 1000 * 60 * 60; + const hours = Math.trunc(duration / msInHour); + if (hours > 0) { + portions.push(hours + 'h'); + duration = duration - (hours * msInHour); + } + + const msInMinute = 1000 * 60; + const minutes = Math.trunc(duration / msInMinute); + if (minutes > 0) { + portions.push(minutes + 'm'); + duration = duration - (minutes * msInMinute); + } + + const seconds = Math.trunc(duration / 1000); + if (seconds > 0) { + portions.push(seconds + 's'); + } + + return portions.join(' '); +} From f3a2fbd035b4a0ff47100497c6042b031808e872 Mon Sep 17 00:00:00 2001 From: Roshaan Faisal Date: Thu, 2 Sep 2021 12:47:23 -0400 Subject: [PATCH 3/8] fixed bug --- .../src/Build/BuildComparisonTable.js | 6 +----- test-result-summary-client/src/Build/TopLevelBuilds.jsx | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index f0751992..b2aecce7 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -38,18 +38,14 @@ export default class BuildCompare extends Component { const { buildName, url } = this.props; console.log(this.props) const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); - //const params=builds.map(build=>this.retrieveParams(build.buildParams)) - //console.log(params) const buildInfo = builds.map(build => { - console.log(build) const params = this.retrieveParams(build.buildParams) - console.log(params) return { key: build._id, build: build, date: build.timestamp ? new Date(build.timestamp).toLocaleString() : null, - vendor: build.startBy ? build.startBy : "N/A", + vendor: "N/A", impl: params.JDK_IMPL, version: params.JDK_VERSION, platform: params.PLATFORM, diff --git a/test-result-summary-client/src/Build/TopLevelBuilds.jsx b/test-result-summary-client/src/Build/TopLevelBuilds.jsx index b7953ec6..1cbc06d5 100644 --- a/test-result-summary-client/src/Build/TopLevelBuilds.jsx +++ b/test-result-summary-client/src/Build/TopLevelBuilds.jsx @@ -42,13 +42,14 @@ export default class TopLevelBuilds extends Component { render() { const { builds, type } = this.state; + const pageUrl=this.props.location.pathname if (builds && type) { return (
{Object.keys(builds).sort().map((url, i) => { return builds[url].sort(order).map((buildName, j) => { - return ( url === "/build/compare" + return ( pageUrl !== "/build/compare" ? : ); From 3477ab81cb1a0fa5e81324856269be87de4a183d Mon Sep 17 00:00:00 2001 From: Roshaan Faisal Date: Thu, 2 Sep 2021 13:13:59 -0400 Subject: [PATCH 4/8] able to filter columns manually --- .../src/Build/BuildComparisonTable.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index b2aecce7..6b360240 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -12,6 +12,7 @@ export default class BuildCompare extends Component { state = { currentPage: 1, buildInfo: [], + curColumns: ["select", "buildName", "impl", "version", "date"] }; async componentDidMount() { @@ -247,8 +248,11 @@ console.log(this.props) } ]; + const colNames=this.state.curColumns + const activeCols=columns.filter(col=> colNames.includes(col.key)) + console.log(columns.filter(col => {return col})) return
{buildName} in server {url}
} pagination={{ pageSize, onChange: this.onChange }} From ff35cfa906a087a1f741973c2402e9b5acc222f7 Mon Sep 17 00:00:00 2001 From: Roshaan Faisal Date: Thu, 2 Sep 2021 17:45:35 -0400 Subject: [PATCH 5/8] functional select columns feature --- test-result-summary-client/package-lock.json | 197 ++++++++++++++++++ test-result-summary-client/package.json | 2 + .../src/Build/BuildComparisonTable.js | 153 ++++++++------ .../src/Build/table.css | 2 +- 4 files changed, 291 insertions(+), 63 deletions(-) diff --git a/test-result-summary-client/package-lock.json b/test-result-summary-client/package-lock.json index 8d053af4..de7040be 100644 --- a/test-result-summary-client/package-lock.json +++ b/test-result-summary-client/package-lock.json @@ -2312,6 +2312,96 @@ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.3.2.tgz", "integrity": "sha512-28A2j9DISNtHRcfc+FSCkxIAMnQoORQYz+UQLjc0+KlsGl80MqfbG3EzqXxzVmCMatlgmHfcX7/DBoMg+ik/Fg==" }, + "@emotion/cache": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", + "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", + "requires": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.0.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "^4.0.3" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "@emotion/react": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.1.tgz", + "integrity": "sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/cache": "^11.4.0", + "@emotion/serialize": "^1.0.2", + "@emotion/sheet": "^1.0.2", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "hoist-non-react-statics": "^3.3.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, + "@emotion/serialize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", + "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "requires": { + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.4", + "@emotion/unitless": "^0.7.5", + "@emotion/utils": "^1.0.0", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + } + } + }, + "@emotion/sheet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.2.tgz", + "integrity": "sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "@emotion/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -6438,6 +6528,35 @@ "utila": "~0.4" } }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, "dom-scroll-into-view": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", @@ -11591,6 +11710,11 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "multiselect-react-dropdown": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/multiselect-react-dropdown/-/multiselect-react-dropdown-2.0.6.tgz", + "integrity": "sha512-PZxHLaGJnCq4a+7IESmP1eST1O1CgvFxaAeB6aMDoWL/UN2hBgk5WJRxEZSCxCTkNpnWBzjPwclCZYiU2zQDGg==" + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -15954,6 +16078,14 @@ "prop-types": "^15.5.8" } }, + "react-input-autosize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", + "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", + "requires": { + "prop-types": "^15.5.8" + } + }, "react-is": { "version": "16.11.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", @@ -16146,6 +16278,40 @@ } } }, + "react-select": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", + "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", + "requires": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.1.1", + "memoize-one": "^5.0.0", + "prop-types": "^15.6.0", + "react-input-autosize": "^3.0.0", + "react-transition-group": "^4.3.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, "react-table": { "version": "6.11.5", "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.11.5.tgz", @@ -16156,6 +16322,32 @@ "react-is": "^16.8.1" } }, + "react-transition-group": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", + "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -18046,6 +18238,11 @@ } } }, + "stylis": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", + "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/test-result-summary-client/package.json b/test-result-summary-client/package.json index 89a7e64d..b997a8e7 100644 --- a/test-result-summary-client/package.json +++ b/test-result-summary-client/package.json @@ -15,6 +15,7 @@ "mathjs": "^7.6.0", "mergely": "^4.3.1", "moment": "^2.29.1", + "multiselect-react-dropdown": "^2.0.6", "npm-check": "^5.9.2", "qs": "^6.10.1", "react": "^16.14.0", @@ -28,6 +29,7 @@ "react-nl2br": "^0.6.1", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", + "react-select": "^4.3.1", "react-table": "^6.11.5", "sweetalert2": "^10.16.9" }, diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index 6b360240..b8251eca 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -5,6 +5,23 @@ import { Link } from 'react-router-dom'; import { params } from '../utils/query'; import { fetchData, timeConversion } from '../utils/Utils'; import BuildLink from './BuildLink'; +import { components } from "react-select"; +import { default as ReactSelect } from "react-select"; + +const Option = (props) => { + return ( +
+ + null} + />{" "} + + +
+ ); +}; const pageSize = 5; export default class BuildCompare extends Component { @@ -12,7 +29,34 @@ export default class BuildCompare extends Component { state = { currentPage: 1, buildInfo: [], - curColumns: ["select", "buildName", "impl", "version", "date"] + optionSelected: [{value: 'Select', label: 'select'}], + allColumns: [ + { + value: 'Select', + label: 'select', + }, { + value: 'Build', + label: 'build', + }, { + value: 'JDK Implementation', + label: 'impl', + }, { + value: 'JDK Version', + label: 'version', + }, { + value: 'Start Date', + label: 'date', + }, { + value: 'Platforms', + label: 'platform', + }, { + value: 'Vendor', + label: 'vendor', + }, { + value: 'Duration', + label: 'time', + } + ] }; async componentDidMount() { @@ -37,7 +81,6 @@ export default class BuildCompare extends Component { async updateData() { const { buildName, url } = this.props; -console.log(this.props) const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); const buildInfo = builds.map(build => { @@ -79,22 +122,27 @@ console.log(this.props) }); }; - handleKeepForverClick = async (record) => { - const { buildInfo } = this.state; - if (record.key) { - for (let build of buildInfo) { - if (build.key === record.key) { - build.keepForever = !build.keepForever; - await fetch(`/api/updateKeepForever?_id=${build.key}&keepForever=${build.keepForever}`, { - method: 'get' - }); - break; - } - } - await new Promise(r => setTimeout(r, 100)); - this.setState({ buildInfo }); - } - } + handleChange = (selected) => { + this.setState({ + optionSelected: selected + }); + }; + + editColumns = () =>{ + var options = this.state.allColumns; + return + }; render() { const { buildInfo } = this.state; @@ -148,39 +196,7 @@ console.log(this.props) return null; }; - const renderJenkinsLinks = ({ buildName, buildNum, buildUrl, url }) => { - // Temporarily support BlueOcean link under folders - let blueOcean; - if (`${url}`.includes("/jobs") || `${url}`.includes("/build-scripts")) { - let urls = url.split("/job/"); - let basicUrl = urls.shift(); - urls.push(buildName); - let newUrl = urls.join("%2F"); - blueOcean = `${basicUrl}/blue/organizations/jenkins/${newUrl}/detail/${buildName}/${buildNum}`; - } else { - blueOcean = `${url}/blue/organizations/jenkins/${buildName}/detail/${buildName}/${buildNum}`; - } - return ; - }; - const renderTotals = (value, row, index) => { - if (!value) return
N/A
; - const { failed = 0, passed = 0, disabled = 0, skipped = 0, total = 0 } = value; - const buildResult = row.build.buildResult; - const id = row.build._id; - return <> - Grid - -
- - - - - -
- ; - }; const renderBuildResults = (value) => { return
@@ -197,7 +213,7 @@ console.log(this.props) return; }; - const columns = [ + const columns=[ { title: 'Select', dataIndex: 'select', @@ -246,17 +262,30 @@ console.log(this.props) return a.time.localeCompare(b.time); } } - ]; - - const colNames=this.state.curColumns - const activeCols=columns.filter(col=> colNames.includes(col.key)) - console.log(columns.filter(col => {return col})) - return
{buildName} in server {url}
} - pagination={{ pageSize, onChange: this.onChange }} - />; + ]; + + const getOptions =() => { + var activeOptions = []; + if (this.state.optionSelected.length < 2) { + const optionSelected = this.state.allColumns.slice(0,5) + this.setState({ optionSelected }) + } + columns.forEach(c => { + this.state.optionSelected.forEach(col => { + if (col.value === c.title) { activeOptions.push(c)} + }) + }) + return activeOptions + } + return
+ {this.editColumns()} +
Server: {url}
} + pagination={{ pageSize, onChange: this.onChange }} + />; + } else { return null; } diff --git a/test-result-summary-client/src/Build/table.css b/test-result-summary-client/src/Build/table.css index 112f1d1f..a95d0e1c 100644 --- a/test-result-summary-client/src/Build/table.css +++ b/test-result-summary-client/src/Build/table.css @@ -8,4 +8,4 @@ .card-body { word-break: break-all; white-space: pre-wrap; -} \ No newline at end of file +} From 9f73ea6d5101dd55fb823d2abcd6064da14f4bdc Mon Sep 17 00:00:00 2001 From: Roshaan Faisal Date: Wed, 8 Sep 2021 14:49:58 -0400 Subject: [PATCH 6/8] the date range functionality works --- test-result-summary-client/package-lock.json | 91 ++++++++++++++++++- test-result-summary-client/package.json | 3 + .../src/Build/BuildComparisonTable.js | 47 +++++++++- 3 files changed, 133 insertions(+), 8 deletions(-) diff --git a/test-result-summary-client/package-lock.json b/test-result-summary-client/package-lock.json index de7040be..ebdf98b1 100644 --- a/test-result-summary-client/package-lock.json +++ b/test-result-summary-client/package-lock.json @@ -2707,6 +2707,11 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@popperjs/core": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.1.tgz", + "integrity": "sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw==" + }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", @@ -6109,9 +6114,9 @@ } }, "date-fns": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", - "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==" + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz", + "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==" }, "de-indent": { "version": "1.0.2", @@ -15728,6 +15733,54 @@ "semver": "^5.6.0" } }, + "react-date-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-date-range/-/react-date-range-1.3.0.tgz", + "integrity": "sha512-ximAsbdf28tT7jMRLenSUeMacZ+s3opgvlUKbXIg7qvpehVfjlcYfQ3MF1C59rUghk44yckPsCxqPm0l8Lb+KA==", + "requires": { + "classnames": "^2.2.6", + "prop-types": "^15.7.2", + "react-list": "^0.8.13", + "shallow-equal": "^1.2.1" + }, + "dependencies": { + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + } + } + }, + "react-datepicker": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.2.1.tgz", + "integrity": "sha512-0gcvHMnX8rS1fV90PjjsB7MQdsWNU77JeVHf6bbwK9HnFxgwjVflTx40ebKmHV+leqe+f+FgUP9Nvqbe5RGyfA==", + "requires": { + "@popperjs/core": "^2.9.2", + "classnames": "^2.2.6", + "date-fns": "^2.0.1", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.10.0", + "react-popper": "^2.2.5" + }, + "dependencies": { + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + } + } + }, "react-day-picker": { "version": "7.4.10", "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-7.4.10.tgz", @@ -16041,6 +16094,11 @@ "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw==", "dev": true }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, "react-grid-layout": { "version": "0.16.6", "resolved": "https://registry.npmjs.org/react-grid-layout/-/react-grid-layout-0.16.6.tgz", @@ -16133,11 +16191,33 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "react-list": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/react-list/-/react-list-0.8.16.tgz", + "integrity": "sha512-LSxfvdwB9Ip+E+8NBtLPW2pcIngzuV0rSoH9nMt9C2lFjZEbnoBY/ib/Zx121jPgFgg3xYkMlMXSzx5gaiP5ig==", + "requires": { + "prop-types": "15" + } + }, "react-nl2br": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/react-nl2br/-/react-nl2br-0.6.1.tgz", "integrity": "sha512-DNUcFMO4j9MjpxPBe1qZf6h+VQ9vhCT5Nyn7vDQp32/gpFzuKaGmWzfk9gDJ8NS0ez9BTxKhqeflirC6sWH3aQ==" }, + "react-onclickoutside": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.11.2.tgz", + "integrity": "sha512-640486eSwU/t5iD6yeTlefma8dI3bxPXD93hM9JGKyYITAd0P1JFkkcDeyHZRqNpY/fv1YW0Fad9BXr44OY8wQ==" + }, + "react-popper": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + }, "react-resizable": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-1.7.5.tgz", @@ -17435,6 +17515,11 @@ } } }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", diff --git a/test-result-summary-client/package.json b/test-result-summary-client/package.json index b997a8e7..077f17e0 100644 --- a/test-result-summary-client/package.json +++ b/test-result-summary-client/package.json @@ -7,6 +7,7 @@ "antd": "^4.16.3", "classnames": "^2.3.1", "codemirror": "^5.62.0", + "date-fns": "^2.23.0", "highcharts": "^9.1.2", "highcharts-react-official": "^2.2.2", "highstock-release": "^6.0.4", @@ -19,6 +20,8 @@ "npm-check": "^5.9.2", "qs": "^6.10.1", "react": "^16.14.0", + "react-date-range": "^1.3.0", + "react-datepicker": "^4.2.1", "react-day-picker": "^7.4.10", "react-dom": "^16.14.0", "react-grid-layout": "^0.16.6", diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index b8251eca..21ddce21 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -7,6 +7,8 @@ import { fetchData, timeConversion } from '../utils/Utils'; import BuildLink from './BuildLink'; import { components } from "react-select"; import { default as ReactSelect } from "react-select"; +import DatePicker from "react-datepicker"; +import "react-datepicker/dist/react-datepicker.css"; const Option = (props) => { return ( @@ -29,6 +31,8 @@ export default class BuildCompare extends Component { state = { currentPage: 1, buildInfo: [], + startDate: new Date(1610188860945), // earlier this year for demo + endDate: new Date(), optionSelected: [{value: 'Select', label: 'select'}], allColumns: [ { @@ -83,18 +87,21 @@ export default class BuildCompare extends Component { const { buildName, url } = this.props; const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); - const buildInfo = builds.map(build => { + const info = builds.map(build => { const params = this.retrieveParams(build.buildParams) + const date = build.timestamp ? new Date(build.timestamp) : null return { key: build._id, build: build, - date: build.timestamp ? new Date(build.timestamp).toLocaleString() : null, + date: (date > this.state.startDate && date < this.state.endDate) ? date.toLocaleString() : null, vendor: "N/A", impl: params.JDK_IMPL, version: params.JDK_VERSION, platform: params.PLATFORM, time: timeConversion(build.buildDuration) }}); + + const buildInfo = info.filter(build => build.date) this.setState({ buildInfo }); await this.updateTotals(); @@ -143,6 +150,37 @@ export default class BuildCompare extends Component { value={this.state.optionSelected} /> }; + + async setStartDate (startDate){ + this.setState({startDate}) + await this.updateData(); + } + + async setEndDate(endDate){ + this.setState({endDate}) + await this.updateData(); + } + + dateRangePicker = () =>{ + return
+ Date Range: + this.setStartDate(new Date(date))} + /> + this.setEndDate(new Date(date))} + /> +
+ } render() { const { buildInfo } = this.state; @@ -196,8 +234,6 @@ export default class BuildCompare extends Component { return null; }; - - const renderBuildResults = (value) => { return
@@ -253,7 +289,7 @@ export default class BuildCompare extends Component { key: 'date', sorter: (a, b) => { return a.date.localeCompare(b.date); - } + }, }, { title: 'Duration', dataIndex: 'time', @@ -278,6 +314,7 @@ export default class BuildCompare extends Component { return activeOptions } return
+ {this.dateRangePicker()} {this.editColumns()}
Date: Sat, 11 Sep 2021 17:34:47 -0400 Subject: [PATCH 7/8] consolidated all builds into one table --- .../src/Build/BuildComparisonTable.js | 59 +++++++++++-------- .../src/Build/TopLevelBuilds.jsx | 43 ++++++++++---- 2 files changed, 65 insertions(+), 37 deletions(-) diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index 21ddce21..416222c4 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -79,31 +79,41 @@ export default class BuildCompare extends Component { retrieveParams(buildParams) { var params = {} - buildParams.forEach((dict)=> params[dict.name] = dict.value) + buildParams.forEach((dict)=> params[dict.name] = dict.value) return params } async updateData() { - const { buildName, url } = this.props; - const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); - - const info = builds.map(build => { - const params = this.retrieveParams(build.buildParams) - const date = build.timestamp ? new Date(build.timestamp) : null - return { - key: build._id, - build: build, - date: (date > this.state.startDate && date < this.state.endDate) ? date.toLocaleString() : null, - vendor: "N/A", - impl: params.JDK_IMPL, - version: params.JDK_VERSION, - platform: params.PLATFORM, - time: timeConversion(build.buildDuration) + const { buildUrlList } = this.props; + console.log(this.props); + //for every build name and url, you need to call the function and push the data to the list + const buildsList = [] + for (let i = 0; buildUrlList && i < buildUrlList.length; i++) { + const buildName = buildUrlList[i][0]; + const url = buildUrlList[i][1]; + const builds = await fetchData(`/api/getBuildHistory?buildName=${buildName}&url=${url}&limit=120`); + for (let j = 0; builds && j < builds.length; j++) { + buildsList.push(builds[j]); + } + } + console.log(buildsList); + const info = buildsList.map(build => { + const params = this.retrieveParams(build.buildParams) + const date = build.timestamp ? new Date(build.timestamp) : null + return { + key: build._id, + build: build, + date: (date > this.state.startDate && date < this.state.endDate) ? date.toLocaleString() : null, + vendor: "N/A", + impl: params.JDK_IMPL, + version: params.JDK_VERSION, + platform: params.PLATFORM, + time: timeConversion(build.buildDuration) }}); - - const buildInfo = info.filter(build => build.date) + + const buildInfo = info.filter(build => build.date) this.setState({ buildInfo }); - + await this.updateTotals(); } @@ -148,9 +158,9 @@ export default class BuildCompare extends Component { onChange={this.handleChange} allowSelectAll={true} value={this.state.optionSelected} - /> + /> }; - + async setStartDate (startDate){ this.setState({startDate}) await this.updateData(); @@ -299,13 +309,13 @@ export default class BuildCompare extends Component { } } ]; - + const getOptions =() => { var activeOptions = []; if (this.state.optionSelected.length < 2) { const optionSelected = this.state.allColumns.slice(0,5) - this.setState({ optionSelected }) - } + this.setState({ optionSelected }) + } columns.forEach(c => { this.state.optionSelected.forEach(col => { if (col.value === c.title) { activeOptions.push(c)} @@ -319,7 +329,6 @@ export default class BuildCompare extends Component {
Server: {url}
} pagination={{ pageSize, onChange: this.onChange }} />; diff --git a/test-result-summary-client/src/Build/TopLevelBuilds.jsx b/test-result-summary-client/src/Build/TopLevelBuilds.jsx index 1cbc06d5..dd6956ca 100644 --- a/test-result-summary-client/src/Build/TopLevelBuilds.jsx +++ b/test-result-summary-client/src/Build/TopLevelBuilds.jsx @@ -42,20 +42,39 @@ export default class TopLevelBuilds extends Component { render() { const { builds, type } = this.state; - const pageUrl=this.props.location.pathname + const pageUrl=this.props.location.pathname + + // if (builds && type) { + // return ( + //
+ // {Object.keys(builds).sort().map((url, i) => { + // return builds[url].sort(order).map((buildName, j) => { + // return ( pageUrl !== "/build/compare" + // ? + // : + // ); + // }); + // })} + //
); + // } else { + // return null; + // } if (builds && type) { - return ( -
- {Object.keys(builds).sort().map((url, i) => { - return builds[url].sort(order).map((buildName, j) => { - return ( pageUrl !== "/build/compare" - ? - : - ); - }); - })} -
); + if( pageUrl !== "/build/compare" ) { + Object.keys(builds).sort().map((url, i) => { + return builds[url].sort(order).map((buildName, j) => { + return + }); + }) + } else { + const buildUrlList = []; + Object.keys(builds).map((url, index) => ( + buildUrlList.push([builds[url], url]) + // console.log("this is my key " + url + " and this is my value " + builds[url]) + )) + return + } } else { return null; } From 1917b9d1effab71ba4c1839c7a137ce13a3f49da Mon Sep 17 00:00:00 2001 From: tharmigaloganathan Date: Sat, 11 Sep 2021 17:43:32 -0400 Subject: [PATCH 8/8] cleanup --- .../src/Build/BuildComparisonTable.js | 4 +--- .../src/Build/TopLevelBuilds.jsx | 19 ------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/test-result-summary-client/src/Build/BuildComparisonTable.js b/test-result-summary-client/src/Build/BuildComparisonTable.js index 416222c4..23e658cf 100644 --- a/test-result-summary-client/src/Build/BuildComparisonTable.js +++ b/test-result-summary-client/src/Build/BuildComparisonTable.js @@ -85,8 +85,7 @@ export default class BuildCompare extends Component { async updateData() { const { buildUrlList } = this.props; - console.log(this.props); - //for every build name and url, you need to call the function and push the data to the list + // consolidates all build information into the buildsList array const buildsList = [] for (let i = 0; buildUrlList && i < buildUrlList.length; i++) { const buildName = buildUrlList[i][0]; @@ -96,7 +95,6 @@ export default class BuildCompare extends Component { buildsList.push(builds[j]); } } - console.log(buildsList); const info = buildsList.map(build => { const params = this.retrieveParams(build.buildParams) const date = build.timestamp ? new Date(build.timestamp) : null diff --git a/test-result-summary-client/src/Build/TopLevelBuilds.jsx b/test-result-summary-client/src/Build/TopLevelBuilds.jsx index dd6956ca..b1a25cbf 100644 --- a/test-result-summary-client/src/Build/TopLevelBuilds.jsx +++ b/test-result-summary-client/src/Build/TopLevelBuilds.jsx @@ -38,28 +38,10 @@ export default class TopLevelBuilds extends Component { this.setState({ builds, type }); } - - render() { const { builds, type } = this.state; const pageUrl=this.props.location.pathname - // if (builds && type) { - // return ( - //
- // {Object.keys(builds).sort().map((url, i) => { - // return builds[url].sort(order).map((buildName, j) => { - // return ( pageUrl !== "/build/compare" - // ? - // : - // ); - // }); - // })} - //
); - // } else { - // return null; - // } - if (builds && type) { if( pageUrl !== "/build/compare" ) { Object.keys(builds).sort().map((url, i) => { @@ -71,7 +53,6 @@ export default class TopLevelBuilds extends Component { const buildUrlList = []; Object.keys(builds).map((url, index) => ( buildUrlList.push([builds[url], url]) - // console.log("this is my key " + url + " and this is my value " + builds[url]) )) return }