test 02
This commit is contained in:
parent
64626166c7
commit
3c0306d590
|
|
@ -8,3 +8,4 @@ build:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PORT: '8080'
|
PORT: '8080'
|
||||||
|
|
||||||
295
index.js
295
index.js
|
|
@ -1,271 +1,78 @@
|
||||||
const express = require("express");
|
const express = require("express");
|
||||||
const path = require("path");
|
const bodyParser = require("body-parser");
|
||||||
const fs = require("fs");
|
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
const PORT = 8080;
|
||||||
|
|
||||||
app.use(express.static("public"));
|
// Middleware to parse JSON
|
||||||
|
app.use(bodyParser.json());
|
||||||
|
|
||||||
// Set up EJS as the templating engine
|
// In-memory data store
|
||||||
app.set("view engine", "ejs");
|
let items = [];
|
||||||
app.set("views", path.join(__dirname, "views"));
|
let currentId = 1;
|
||||||
|
|
||||||
// Utility to get directories sorted by datetime
|
// Routes
|
||||||
function getSortedReportDirectories(reportDir, env) {
|
|
||||||
const dirents = fs
|
|
||||||
.readdirSync(reportDir, { withFileTypes: true })
|
|
||||||
.filter((dirent) => dirent.isDirectory())
|
|
||||||
.map((dirent) => {
|
|
||||||
const folderName = dirent.name;
|
|
||||||
const parts = folderName.split("-");
|
|
||||||
if (parts.length >= 6) {
|
|
||||||
const metadata = extractMetadata(folderName);
|
|
||||||
const datetime = new Date(`${metadata.date} ${metadata.time}`);
|
|
||||||
const link = path.join(env, folderName, "index.html");
|
|
||||||
return {
|
|
||||||
folderName,
|
|
||||||
date: metadata.date,
|
|
||||||
time: metadata.time,
|
|
||||||
datetime,
|
|
||||||
buildId: metadata.buildId,
|
|
||||||
link,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
})
|
|
||||||
|
|
||||||
.filter(Boolean)
|
// CREATE - Add a new item
|
||||||
.sort((a, b) => b.datetime - a.datetime); // Sort in descending order of datetime
|
app.post("/items", (req, res) => {
|
||||||
|
const { name, description } = req.body;
|
||||||
|
|
||||||
return dirents;
|
if (!name) {
|
||||||
}
|
return res.status(400).json({ error: "Name is required" });
|
||||||
|
|
||||||
|
|
||||||
// Utility to extract metadata from folder names
|
|
||||||
function extractMetadata(str) {
|
|
||||||
const regex =
|
|
||||||
/^([a-z]+)-([a-z]+-[a-z0-9]+)-(\d+)-(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2})$/;
|
|
||||||
const match = str.match(regex);
|
|
||||||
|
|
||||||
if (!match) {
|
|
||||||
return "Invalid string format";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const [_, env, region, buildId, year, month, day, hours, minutes, seconds] =
|
const newItem = { id: currentId++, name, description };
|
||||||
match;
|
items.push(newItem);
|
||||||
|
res.status(201).json(newItem);
|
||||||
// Create a date object in UTC
|
|
||||||
const utcDate = new Date(
|
|
||||||
Date.UTC(year, month - 1, day, hours, minutes, seconds)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Convert to IST using toLocaleString with the appropriate timezone
|
|
||||||
const istDate = utcDate.toLocaleString("en-IN", { timeZone: "Asia/Kolkata" });
|
|
||||||
|
|
||||||
// Separate the date and time from the IST conversion
|
|
||||||
const [istDateOnly, istTimeOnly] = istDate.split(", ");
|
|
||||||
|
|
||||||
return {
|
|
||||||
env,
|
|
||||||
region,
|
|
||||||
buildId: parseInt(buildId),
|
|
||||||
date: istDateOnly,
|
|
||||||
time: istTimeOnly,
|
|
||||||
datetime: utcDate,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Route to serve the main index.html
|
|
||||||
app.get("/", (req, res) => {
|
|
||||||
res.sendFile(path.join(__dirname, "public", "index.html"), (err) => {
|
|
||||||
if (err) {
|
|
||||||
res.status(err.status).end();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dynamic route to serve specific folder's index.html for PROD-ASIA-SOUTH1
|
// READ - Get all items
|
||||||
app.get("/uat-asia-south1/:folderId/index.html", async (req, res) => {
|
app.get("/items", (req, res) => {
|
||||||
const folderId = req.params.folderId;
|
res.json(items);
|
||||||
const reportDir = path.join(
|
|
||||||
__dirname,
|
|
||||||
"public",
|
|
||||||
"uat-asia-south1",
|
|
||||||
folderId,
|
|
||||||
"index.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Serve the index.html from the specific folder
|
|
||||||
fs.readFile(reportDir, "utf8", (err, data) => {
|
|
||||||
if (err) {
|
|
||||||
return res
|
|
||||||
.status(404)
|
|
||||||
.send("Index file not found for the requested folder.");
|
|
||||||
}
|
|
||||||
res.send(data);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dynamic route to serve specific folder's index.html for PROD-US-CENTRAL1
|
// READ - Get item by ID
|
||||||
app.get("/uat-us-central1/:folderId/index.html", (req, res) => {
|
app.get("/items/:id", (req, res) => {
|
||||||
const folderId = req.params.folderId;
|
const { id } = req.params;
|
||||||
const reportDir = path.join(
|
const item = items.find((i) => i.id === parseInt(id));
|
||||||
__dirname,
|
|
||||||
"public",
|
|
||||||
"uat-us-central1",
|
|
||||||
folderId,
|
|
||||||
"index.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Serve the index.html from the specific folder
|
if (!item) {
|
||||||
fs.readFile(reportDir, "utf8", (err, data) => {
|
return res.status(404).json({ error: "Item not found" });
|
||||||
if (err) {
|
}
|
||||||
return res
|
|
||||||
.status(404)
|
|
||||||
.send("Index file not found for the requested folder.");
|
|
||||||
}
|
|
||||||
res.send(data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// Dynamic route to serve specific folder's index.html for PROD-ASIA-SOUTH1
|
|
||||||
app.get("/prod-asia-south1/:folderId/index.html", async (req, res) => {
|
|
||||||
const folderId = req.params.folderId;
|
|
||||||
const reportDir = path.join(
|
|
||||||
__dirname,
|
|
||||||
"public",
|
|
||||||
"prod-asia-south1",
|
|
||||||
folderId,
|
|
||||||
"index.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Serve the index.html from the specific folder
|
res.json(item);
|
||||||
fs.readFile(reportDir, "utf8", (err, data) => {
|
|
||||||
if (err) {
|
|
||||||
return res
|
|
||||||
.status(404)
|
|
||||||
.send("Index file not found for the requested folder.");
|
|
||||||
}
|
|
||||||
res.send(data);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dynamic route to serve specific folder's index.html for PROD-US-CENTRAL1
|
// UPDATE - Update item by ID
|
||||||
app.get("/prod-us-central1/:folderId/index.html", (req, res) => {
|
app.put("/items/:id", (req, res) => {
|
||||||
const folderId = req.params.folderId;
|
const { id } = req.params;
|
||||||
const reportDir = path.join(
|
const { name, description } = req.body;
|
||||||
__dirname,
|
|
||||||
"public",
|
|
||||||
"prod-us-central1",
|
|
||||||
folderId,
|
|
||||||
"index.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Serve the index.html from the specific folder
|
const item = items.find((i) => i.id === parseInt(id));
|
||||||
fs.readFile(reportDir, "utf8", (err, data) => {
|
if (!item) {
|
||||||
if (err) {
|
return res.status(404).json({ error: "Item not found" });
|
||||||
return res
|
}
|
||||||
.status(404)
|
|
||||||
.send("Index file not found for the requested folder.");
|
if (name) item.name = name;
|
||||||
}
|
if (description) item.description = description;
|
||||||
res.send(data);
|
|
||||||
});
|
res.json(item);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dynamic route to serve specific folder's index.html for DEV-ASIA-SOUTH1
|
// DELETE - Remove item by ID
|
||||||
app.get("/dev-asia-south1/:folderId/index.html", (req, res) => {
|
app.delete("/items/:id", (req, res) => {
|
||||||
const folderId = req.params.folderId;
|
const { id } = req.params;
|
||||||
const reportDir = path.join(
|
const itemIndex = items.findIndex((i) => i.id === parseInt(id));
|
||||||
__dirname,
|
|
||||||
"public",
|
|
||||||
"dev-asia-south1",
|
|
||||||
folderId,
|
|
||||||
"index.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Serve the index.html from the specific folder
|
if (itemIndex === -1) {
|
||||||
fs.readFile(reportDir, "utf8", (err, data) => {
|
return res.status(404).json({ error: "Item not found" });
|
||||||
if (err) {
|
}
|
||||||
return res
|
|
||||||
.status(404)
|
items.splice(itemIndex, 1);
|
||||||
.send("Index file not found for the requested folder.");
|
res.status(204).send();
|
||||||
}
|
|
||||||
res.send(data);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dynamic route to serve specific folder's index.html for DEV-US-CENTRAL1
|
// Start server
|
||||||
app.get("/dev-us-central1/:folderId/index.html", (req, res) => {
|
|
||||||
const folderId = req.params.folderId;
|
|
||||||
const reportDir = path.join(
|
|
||||||
__dirname,
|
|
||||||
"public",
|
|
||||||
"dev-us-central1",
|
|
||||||
folderId,
|
|
||||||
"index.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Serve the index.html from the specific folder
|
|
||||||
fs.readFile(reportDir, "utf8", (err, data) => {
|
|
||||||
if (err) {
|
|
||||||
return res
|
|
||||||
.status(404)
|
|
||||||
.send("Index file not found for the requested folder.");
|
|
||||||
}
|
|
||||||
res.send(data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dynamic route for UAT-ASIA-SOUTH1
|
|
||||||
app.get("/uat-asia", (req, res) => {
|
|
||||||
console.log("came here");
|
|
||||||
|
|
||||||
const reportDir = path.join(__dirname, "public", "uat-asia-south1");
|
|
||||||
const reportDirs = getSortedReportDirectories(reportDir, "uat-asia-south1");
|
|
||||||
res.render("reportPage", { reportDirs });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dynamic route for PROD-US-CENTRAL1 (for all subfolders)
|
|
||||||
app.get("/uat-us", (req, res) => {
|
|
||||||
const reportDir = path.join(__dirname, "public", "uat-us-central1");
|
|
||||||
const reportDirs = getSortedReportDirectories(reportDir, "uat-us-central1");
|
|
||||||
res.render("reportPage", { reportDirs });
|
|
||||||
});
|
|
||||||
// Dynamic route for PROD-ASIA-SOUTH1
|
|
||||||
app.get("/prod-asia", (req, res) => {
|
|
||||||
console.log("came here");
|
|
||||||
|
|
||||||
const reportDir = path.join(__dirname, "public", "prod-asia-south1");
|
|
||||||
const reportDirs = getSortedReportDirectories(reportDir, "prod-asia-south1");
|
|
||||||
res.render("reportPage", { reportDirs });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dynamic route for PROD-US-CENTRAL1 (for all subfolders)
|
|
||||||
app.get("/prod-us", (req, res) => {
|
|
||||||
const reportDir = path.join(__dirname, "public", "prod-us-central1");
|
|
||||||
const reportDirs = getSortedReportDirectories(reportDir, "prod-us-central1");
|
|
||||||
res.render("reportPage", { reportDirs });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dynamic route for DEV-ASIA-SOUTH1
|
|
||||||
app.get("/dev-asia", (req, res) => {
|
|
||||||
const reportDir = path.join(__dirname, "public", "dev-asia-south1");
|
|
||||||
const reportDirs = getSortedReportDirectories(reportDir, "dev-asia-south1");
|
|
||||||
res.render("reportPage", { reportDirs });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dynamic route for DEV-US-CENTRAL1
|
|
||||||
app.get("/dev-us", (req, res) => {
|
|
||||||
const reportDir = path.join(__dirname, "public", "dev-us-central1");
|
|
||||||
const reportDirs = getSortedReportDirectories(reportDir, "dev-us-central1");
|
|
||||||
res.render("reportPage", { reportDirs });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Handle 404 errors
|
|
||||||
app.use((req, res) => {
|
|
||||||
res.status(404).send("404 Not Found");
|
|
||||||
});
|
|
||||||
|
|
||||||
const PORT = process.env.PORT || 8080;
|
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, () => {
|
||||||
console.log(`Server is running on http://localhost:${PORT}`);
|
console.log(`Server is running on http://localhost:${PORT}`);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>DEV-ASIA-SOUTH1 Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-list {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item {
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 300px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports - DEV-ASIA-SOUTH1</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="report-list" id="reportList">
|
|
||||||
<!-- Report links will be populated by JavaScript -->
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Link to the external JavaScript file -->
|
|
||||||
<script src="script.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>DEV-US-CENTRAL1 Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-list {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item {
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 300px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports - DEV-US-CENTRAL1</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="report-list" id="reportList">
|
|
||||||
<!-- Report links will be populated by JavaScript -->
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Link to the external JavaScript file -->
|
|
||||||
<script src="script.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,142 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Boltic Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
/* Body and header background color */
|
|
||||||
color: white;
|
|
||||||
/* Text color */
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
min-height: 100vh;
|
|
||||||
/* Full viewport height */
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
position: fixed;
|
|
||||||
/* Stick header to top */
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
background-color: #201715;
|
|
||||||
/* Same background color as body */
|
|
||||||
color: white;
|
|
||||||
padding: 10px 20px;
|
|
||||||
/* Reduced padding for smaller height */
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
/* Vertically align items */
|
|
||||||
z-index: 1000;
|
|
||||||
/* Above all content */
|
|
||||||
font-size: 16px;
|
|
||||||
/* Smaller header font size */
|
|
||||||
border-bottom: 1px solid #ff592f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo-container {
|
|
||||||
width: 150px;
|
|
||||||
/* Smaller logo container */
|
|
||||||
}
|
|
||||||
|
|
||||||
header img {
|
|
||||||
max-width: 100%;
|
|
||||||
/* Ensure logo fits container */
|
|
||||||
height: auto;
|
|
||||||
margin-right: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin: 0 0 0 10px;
|
|
||||||
/* Reduced margin for spacing */
|
|
||||||
font-size: 18px;
|
|
||||||
/* Smaller font size */
|
|
||||||
font-weight: 300;
|
|
||||||
/* Reduced font weight */
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
|
||||||
flex-grow: 1;
|
|
||||||
margin-top: 70px;
|
|
||||||
/* Adjusted margin for reduced header */
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-container {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
display: block;
|
|
||||||
width: 250px;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
||||||
transition: background-color 0.3s, transform 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
transform: translateY(-2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
position: fixed;
|
|
||||||
/* Stick footer to bottom */
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
padding: 10px;
|
|
||||||
/* Reduced padding for smaller height */
|
|
||||||
background-color: #e9ecef;
|
|
||||||
color: #201715;
|
|
||||||
font-size: 12px;
|
|
||||||
/* Smaller footer font size */
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div class="logo-container">
|
|
||||||
<img src="https://cdn.pixelbin.io/v2/fyndcloud/fyndst/original/images/svgs/ic_boltic_logo_light.svg"
|
|
||||||
alt="Boltic Logo">
|
|
||||||
</div>
|
|
||||||
<h1>Automation Reports</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="button-container">
|
|
||||||
<!-- <li><a href="b260fc2c-ab14-4d0b-9542-4c9609fe9d2c-http/dev-asia" class="btn">DEV-ASIA-SOUTH1</a></li> -->
|
|
||||||
<li><a href="b260fc2c-ab14-4d0b-9542-4c9609fe9d2c-http/prod-asia" class="btn">PROD-ASIA-SOUTH1</a></li>
|
|
||||||
<!-- <li><a href="b260fc2c-ab14-4d0b-9542-4c9609fe9d2c-http/dev-us" class="btn">DEV-US-CENTRAL1</a></li> -->
|
|
||||||
<li><a href="b260fc2c-ab14-4d0b-9542-4c9609fe9d2c-http/prod-us" class="btn">PROD-US-CENTRAL1</a></li>
|
|
||||||
<li><a href="b260fc2c-ab14-4d0b-9542-4c9609fe9d2c-http/uat-asia" class="btn">UAT-ASIA-SOUTH1</a></li>
|
|
||||||
<li><a href="b260fc2c-ab14-4d0b-9542-4c9609fe9d2c-http/uat-us" class="btn">UAT-US-CENTRAL1</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>PROD-ASIA-SOUTH1 Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-list {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item {
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 300px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports - PROD-ASIA-SOUTH1</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="report-list" id="reportList">
|
|
||||||
<!-- Report links will be populated by JavaScript -->
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Link to the external JavaScript file -->
|
|
||||||
<script src="script.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>PROD-US-CENTRAL1 Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-list {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item {
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 300px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports - PROD-US-CENTRAL1</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="report-list" id="reportList">
|
|
||||||
<!-- Report links will be populated by JavaScript -->
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Link to the external JavaScript file -->
|
|
||||||
<script src="script.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>UAT-ASIA-SOUTH1 Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-list {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item {
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 300px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports - UAT-ASIA-SOUTH1</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="report-list" id="reportList">
|
|
||||||
<!-- Report links will be populated by JavaScript -->
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Link to the external JavaScript file -->
|
|
||||||
<script src="script.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>UAT-ASIA-SOUTH1 Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-list {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item {
|
|
||||||
background-color: #ff592f;
|
|
||||||
color: white;
|
|
||||||
padding: 12px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 300px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-item:hover {
|
|
||||||
background-color: #cc4826;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports - UAT-ASIA-SOUTH1</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<ul class="report-list" id="reportList">
|
|
||||||
<!-- Report links will be populated by JavaScript -->
|
|
||||||
</ul>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<!-- Link to the external JavaScript file -->
|
|
||||||
<script src="script.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Automation Reports</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #201715;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 28px;
|
|
||||||
color: #FFD700; /* Gold color for title */
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
width: 80%;
|
|
||||||
margin: 20px auto;
|
|
||||||
border-collapse: collapse;
|
|
||||||
table-layout: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
th, td {
|
|
||||||
padding: 15px;
|
|
||||||
border: 1px solid #2E2E2E;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 18px; /* Adjusted font size */
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
background-color: #FFD700;
|
|
||||||
color: #201715;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
background-color: #3A2A2A; /* Slightly darker background for rows */
|
|
||||||
}
|
|
||||||
|
|
||||||
td a {
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
td a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
margin-top: 20px;
|
|
||||||
padding: 10px;
|
|
||||||
background-color: #2E2E2E;
|
|
||||||
color: white;
|
|
||||||
bottom: 0;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer p {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<h1>Automation Reports</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Folder Name</th>
|
|
||||||
<th>Build ID</th>
|
|
||||||
<th>Date</th>
|
|
||||||
<th>Time</th>
|
|
||||||
<th>Link</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<% reportDirs.forEach(function(report) { %>
|
|
||||||
<tr>
|
|
||||||
<td><%= report.folderName %></td>
|
|
||||||
<td><%= report.buildId %></td>
|
|
||||||
<td><%= report.date %></td>
|
|
||||||
<td><%= report.time %></td>
|
|
||||||
<td><a href="<%= report.link %>">View Report</a></td>
|
|
||||||
</tr>
|
|
||||||
<% }) %>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<p>© 2024 Boltic Automation. All rights reserved.</p>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
Loading…
Reference in New Issue
Block a user