Forráskód Böngészése

adding theme system

NhanPT 3 éve
szülő
commit
bb662d0255
28 módosított fájl, 63 hozzáadás és 47 törlés
  1. 2 0
      src/modules/config.ts
  2. 46 35
      src/modules/server.ts
  3. 0 0
      src/private/themes/flame/css/all.min.css
  4. 0 0
      src/private/themes/flame/css/charts.css.map
  5. 0 0
      src/private/themes/flame/css/charts.min.css
  6. 0 0
      src/private/themes/flame/css/font.css
  7. 2 1
      src/private/themes/flame/css/magma.css
  8. 0 0
      src/private/themes/flame/css/normalize.min.css
  9. 0 0
      src/private/themes/flame/css/skeleton.min.css
  10. 0 0
      src/private/themes/flame/fonts/fa-brands-400.ttf
  11. 0 0
      src/private/themes/flame/fonts/fa-brands-400.woff2
  12. 0 0
      src/private/themes/flame/fonts/fa-regular-400.ttf
  13. 0 0
      src/private/themes/flame/fonts/fa-regular-400.woff2
  14. 0 0
      src/private/themes/flame/fonts/fa-solid-900.ttf
  15. 0 0
      src/private/themes/flame/fonts/fa-solid-900.woff2
  16. 0 0
      src/private/themes/flame/fonts/fa-v4compatibility.ttf
  17. 0 0
      src/private/themes/flame/fonts/fa-v4compatibility.woff2
  18. 0 0
      src/private/themes/flame/fonts/raleway-v26-latin-regular.eot
  19. 0 0
      src/private/themes/flame/fonts/raleway-v26-latin-regular.svg
  20. 0 0
      src/private/themes/flame/fonts/raleway-v26-latin-regular.ttf
  21. 0 0
      src/private/themes/flame/fonts/raleway-v26-latin-regular.woff
  22. 0 0
      src/private/themes/flame/fonts/raleway-v26-latin-regular.woff2
  23. 4 3
      src/private/themes/flame/index.html
  24. 2 2
      src/private/themes/flame/js/magma.js
  25. 0 0
      src/private/themes/flame/js/skycons.min.js
  26. 1 0
      src/public/config.json
  27. 6 0
      src/public/css/core.css
  28. 0 6
      src/public/css/custom.css

+ 2 - 0
src/modules/config.ts

@@ -8,6 +8,8 @@ class WebsiteConfig {
   public description: string = "";
   public language: string = "en";
   public localization: string = "en-US";
+  public useMetric: boolean = true;
+  public theme: string = "flame";
 }
 
 export async function loadConfig(): Promise<Config | null> {

+ 46 - 35
src/modules/server.ts

@@ -44,53 +44,64 @@ export async function startServer(): Promise<void> {
   await Compile();
 
   // Start web server
-  app.listen(7000, () =>
+  app.listen(7001, () =>
     console.log(
-      `Server has started on http://localhost:7000 🚀`,
+      `Server has started on http://localhost:7001 🚀`,
     ));
 }
 
 export async function Compile(): Promise<void> {
   ensureDirSync(tempFolder);
 
-  ["private", "public"].forEach((folder) => {
-    for (
-      const entry of walkSync(`${Deno.cwd()}/${folder}/`, {
-        includeDirs: false,
-      })
-    ) {
-      console.log("Preparing: " + entry.path);
+  [`private/themes/${window.config.website.theme}`, "public"].forEach(
+    (folder) => {
+      for (
+        const entry of walkSync(`${Deno.cwd()}/${folder}/`, {
+          includeDirs: false,
+        })
+      ) {
+        console.log("Preparing: " + entry.path);
 
-      let language = null;
-      if (!entry.path.includes(".min.")) {
-        if (entry.path.includes(".css")) {
-          language = Language.CSS;
-        } else if (entry.path.includes(".json")) {
-          language = Language.JSON;
+        let language = null;
+        if (!entry.path.includes(".min.")) {
+          if (entry.path.includes(".css")) {
+            language = Language.CSS;
+          } else if (entry.path.includes(".json")) {
+            language = Language.JSON;
+          }
+          // minifier module make error when minify js and html file 🥲
+          //else if (entry.path.includes(".js")) {
+          //  language = Language.JS;
+          //}
+          //else if (entry.path.includes(".htm")) {
+          //language = Language.HTML;
+          //}
         }
-        // minifier module make error when minify js and html file 🥲
-        //else if (entry.path.includes(".js")) {
-        //  language = Language.JS;
-        //}
-        //else if (entry.path.includes(".htm")) {
-        //language = Language.HTML;
-        //}
-      }
 
-      const moveToPath = changePath(entry.path, folder, "temp");
-      ensureFileSync(moveToPath);
+        const moveToPath = convertOutputPath(entry.path, folder);
+        ensureFileSync(moveToPath);
 
-      if (language) {
-        let content = Deno.readTextFileSync(entry.path);
-        content = minify(Language.HTML, content);
-        Deno.writeTextFileSync(moveToPath, content);
-      } else {
-        Deno.copyFileSync(entry.path, moveToPath);
+        if (language) {
+          let content = Deno.readTextFileSync(entry.path);
+          content = minify(Language.HTML, content);
+          Deno.writeTextFileSync(moveToPath, content);
+        } else {
+          Deno.copyFileSync(entry.path, moveToPath);
+        }
       }
-    }
-  });
+    },
+  );
+  // Copy language
+  let languagePath =
+    `${Deno.cwd()}/public/languages/${window.config.website.language}.json`;
+  const languageOutput = convertOutputPath(languagePath, "public/languages");
+  if (!existsSync(languagePath)) {
+    languagePath =
+      `${Deno.cwd()}/private/languages/${window.config.website.language}.json`;
+  }
+  Deno.copyFileSync(languagePath, languageOutput);
 }
 
-function changePath(path: string, from: string, to: string) {
-  return Deno.cwd() + path.replace(Deno.cwd(), "").replace(from, to);
+function convertOutputPath(path: string, from: string) {
+  return Deno.cwd() + path.replace(Deno.cwd(), "").replace(from, "temp");
 }

+ 0 - 0
src/private/css/all.min.css → src/private/themes/flame/css/all.min.css


+ 0 - 0
src/private/css/charts.css.map → src/private/themes/flame/css/charts.css.map


+ 0 - 0
src/private/css/charts.min.css → src/private/themes/flame/css/charts.min.css


+ 0 - 0
src/private/css/font.css → src/private/themes/flame/css/font.css


+ 2 - 1
src/private/css/magma.css → src/private/themes/flame/css/magma.css

@@ -8,6 +8,7 @@ body {
   width: 100%;
   height: 100%;
   position: fixed;
+  margin-top: -5%;
   background-image: var(--bgImage);
   transform: scale(1.1);
   filter: blur(0.2rem);
@@ -55,7 +56,7 @@ body {
   display: flex;
   width: 100%;
   color: var(--foreground);
-  text-decoration:none;
+  text-decoration: none;
 }
 
 .group-items h6 {

+ 0 - 0
src/private/css/normalize.min.css → src/private/themes/flame/css/normalize.min.css


+ 0 - 0
src/private/css/skeleton.min.css → src/private/themes/flame/css/skeleton.min.css


+ 0 - 0
src/private/fonts/fa-brands-400.ttf → src/private/themes/flame/fonts/fa-brands-400.ttf


+ 0 - 0
src/private/fonts/fa-brands-400.woff2 → src/private/themes/flame/fonts/fa-brands-400.woff2


+ 0 - 0
src/private/fonts/fa-regular-400.ttf → src/private/themes/flame/fonts/fa-regular-400.ttf


+ 0 - 0
src/private/fonts/fa-regular-400.woff2 → src/private/themes/flame/fonts/fa-regular-400.woff2


+ 0 - 0
src/private/fonts/fa-solid-900.ttf → src/private/themes/flame/fonts/fa-solid-900.ttf


+ 0 - 0
src/private/fonts/fa-solid-900.woff2 → src/private/themes/flame/fonts/fa-solid-900.woff2


+ 0 - 0
src/private/fonts/fa-v4compatibility.ttf → src/private/themes/flame/fonts/fa-v4compatibility.ttf


+ 0 - 0
src/private/fonts/fa-v4compatibility.woff2 → src/private/themes/flame/fonts/fa-v4compatibility.woff2


+ 0 - 0
src/private/fonts/raleway-v26-latin-regular.eot → src/private/themes/flame/fonts/raleway-v26-latin-regular.eot


+ 0 - 0
src/private/fonts/raleway-v26-latin-regular.svg → src/private/themes/flame/fonts/raleway-v26-latin-regular.svg


+ 0 - 0
src/private/fonts/raleway-v26-latin-regular.ttf → src/private/themes/flame/fonts/raleway-v26-latin-regular.ttf


+ 0 - 0
src/private/fonts/raleway-v26-latin-regular.woff → src/private/themes/flame/fonts/raleway-v26-latin-regular.woff


+ 0 - 0
src/private/fonts/raleway-v26-latin-regular.woff2 → src/private/themes/flame/fonts/raleway-v26-latin-regular.woff2


+ 4 - 3
src/private/index.html → src/private/themes/flame/index.html

@@ -8,12 +8,13 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="icon" type="image/png" href="assets/favicon.ico" />
     <link rel="stylesheet" href="css/font.css">
-    <link rel="stylesheet" href="css/all.min.css">
-    <link rel="stylesheet" href="css/custom.css">
     <link rel="stylesheet" href="css/normalize.min.css">
     <link rel="stylesheet" href="css/skeleton.min.css">
-    <link rel="stylesheet" href="css/charts.min.css">
+    <!-- <link rel="stylesheet" href="css/charts.min.css"> -->
+    <link rel="stylesheet" href="css/all.min.css">
+    <link rel="stylesheet" href="css/core.css">
     <link rel="stylesheet" href="css/magma.css">
+    <link rel="stylesheet" href="css/custom.css">
 </head>
 
 <body>

+ 2 - 2
src/private/js/magma.js → src/private/themes/flame/js/magma.js

@@ -10,9 +10,9 @@ async function loadConfig() {
 
 async function loadLanguage() {
     try {
-        window.language = await (await fetch(`./languages/${window.config.website.language}.json`)).json();
+        window.language = await (await fetch(`./${window.config.website.language}.json`)).json();
     } catch {
-        window.language = await (await fetch(`./languages/en.json`)).json();
+        window.language = await (await fetch(`./en.json`)).json();
     }
 }
 

+ 0 - 0
src/private/js/skycons.min.js → src/private/themes/flame/js/skycons.min.js


+ 1 - 0
src/public/config.json

@@ -1,5 +1,6 @@
 {
     "website": {
+        "theme": "flame",
         "title": "Magma Dashboard",
         "description": "",
         "language": "en",

+ 6 - 0
src/public/css/core.css

@@ -0,0 +1,6 @@
+:root {
+  --bgColor: #2d3436;
+  --bgImage: url("https://images.wallpaperscraft.com/image/single/leaf_plant_green_136967_2560x1440.jpg");
+  --accentColor: #ffc107;
+  --foreground: #ffffff;
+}

+ 0 - 6
src/public/css/custom.css

@@ -1,6 +0,0 @@
-:root {
-  --bgColor: #2d3436;
-  --bgImage: url("https://images.wallpaperscraft.com/image/single/leaf_plant_green_136967_2560x1440.jpg");
-  --accentColor: #ffc107;
-  --foreground: #ffffff;
-}