diff --git a/server/database.js b/server/database.js
index 119289e6..81d77bfa 100644
--- a/server/database.js
+++ b/server/database.js
@@ -223,10 +223,10 @@ class Database {
if (title) {
console.log("Migrating Status Page");
- let statusPageCheck = await R.findOne("status_page", " slug = '' ");
+ let statusPageCheck = await R.findOne("status_page", " slug = 'default' ");
if (statusPageCheck !== null) {
- console.log("Migrating Status Page - Fail, empty slug record is already existing");
+ console.log("Migrating Status Page - Skip, default slug record is already existing");
return;
}
diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js
index 5826277c..8ddc8b75 100644
--- a/server/socket-handlers/status-page-socket-handler.js
+++ b/server/socket-handlers/status-page-socket-handler.js
@@ -71,7 +71,7 @@ module.exports.statusPageSocketHandler = (socket) => {
// Save Status Page
// imgDataUrl Only Accept PNG!
- socket.on("saveStatusPage", async (config, imgDataUrl, publicGroupList, callback) => {
+ socket.on("saveStatusPage", async (slug, config, imgDataUrl, publicGroupList, callback) => {
try {
checkLogin(socket);
@@ -97,7 +97,24 @@ module.exports.statusPageSocketHandler = (socket) => {
}
// Save Config
- await setSettings("statusPage", config);
+ let statusPage = await R.findOne("status_page", " slug = ? ", [
+ slug
+ ]);
+
+ if (!statusPage) {
+ throw new Error("No slug?");
+ }
+
+ statusPage.slug = config.slug;
+ statusPage.title = config.title;
+ statusPage.icon = config.logo;
+ statusPage.theme = config.theme;
+ //statusPage.published = ;
+ //statusPage.search_engine_index = ;
+ statusPage.show_tags = config.showTags;
+ //statusPage.password = null;
+
+ await R.store(statusPage);
// Save Public Group List
const groupIDList = [];
diff --git a/src/assets/app.scss b/src/assets/app.scss
index 08f647b4..c70efa17 100644
--- a/src/assets/app.scss
+++ b/src/assets/app.scss
@@ -163,6 +163,12 @@ textarea.form-control {
border-color: $dark-border-color;
}
+ .input-group-text {
+ background-color: #282f39;
+ border-color: $dark-border-color;
+ color: $dark-font-color;
+ }
+
.form-check-input:checked {
border-color: $primary; // Re-apply bootstrap border
}
diff --git a/src/mixins/socket.js b/src/mixins/socket.js
index 5d80293d..7842fb8c 100644
--- a/src/mixins/socket.js
+++ b/src/mixins/socket.js
@@ -7,9 +7,9 @@ const toast = useToast();
let socket;
const noSocketIOPages = [
- "/status-page",
- "/status",
- "/"
+ /^\/status-page$/, // /status-page
+ /^\/status/, // /status**
+ /^\/$/ // /
];
const favicon = new Favico({
@@ -57,8 +57,12 @@ export default {
}
// No need to connect to the socket.io for status page
- if (! bypass && noSocketIOPages.includes(location.pathname)) {
- return;
+ if (! bypass && location.pathname) {
+ for (let page of noSocketIOPages) {
+ if (location.pathname.match(page)) {
+ return;
+ }
+ }
}
this.socket.initedSocketIO = true;
@@ -110,7 +114,6 @@ export default {
});
socket.on("statusPageList", (data) => {
- console.log(data);
this.statusPageList = data;
});
@@ -443,7 +446,6 @@ export default {
"stats.down"(to, from) {
if (to !== from) {
favicon.badge(to);
- console.log(to);
}
},
@@ -460,9 +462,15 @@ export default {
// Reconnect the socket io, if status-page to dashboard
"$route.fullPath"(newValue, oldValue) {
- if (noSocketIOPages.includes(newValue)) {
- return;
+
+ if (newValue) {
+ for (let page of noSocketIOPages) {
+ if (newValue.match(page)) {
+ return;
+ }
+ }
}
+
this.initSocketIO();
},
diff --git a/src/pages/AddStatusPage.vue b/src/pages/AddStatusPage.vue
new file mode 100644
index 00000000..7754116f
--- /dev/null
+++ b/src/pages/AddStatusPage.vue
@@ -0,0 +1,37 @@
+
+
+ {{ $t("Add New Status Page") }}
+
+
+