From 5f5fc60d22f5f61178bd3896be0c521f5baaba2a Mon Sep 17 00:00:00 2001 From: "Felix W. Dekker" Date: Sat, 16 May 2020 20:33:11 +0200 Subject: [PATCH] Migrate to npm, use template package --- .gitattributes | 1 + .gitignore | 110 ++++++++++++++- Gruntfile.js | 126 +++++++++++++++++ index.html | 274 ------------------------------------ package-lock.json | Bin 0 -> 322812 bytes package.json | 34 +++++ api.php => src/main/api.php | 0 src/main/index.html | 52 +++++++ src/main/js/index.js | 221 +++++++++++++++++++++++++++++ 9 files changed, 543 insertions(+), 275 deletions(-) create mode 100644 .gitattributes create mode 100644 Gruntfile.js delete mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json rename api.php => src/main/api.php (100%) create mode 100644 src/main/index.html create mode 100644 src/main/js/index.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1a6bd45 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +package-lock.json binary diff --git a/.gitignore b/.gitignore index 9c691df..decda56 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,109 @@ -.fo76-dumps-ids.db +## NPM +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/ + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + + +## Custom +src/main/.fo76-dumps-ids.db diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..436645e --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,126 @@ +const path = require("path"); + +module.exports = grunt => { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + clean: { + default: ["dist/"], + }, + copy: { + db: { + files: [{expand: true, cwd: "src/main/", src: "**/.*.db", dest: "dist/"}] + }, + html: { + files: [{expand: true, cwd: "src/main/", src: "**/*.html", dest: "dist/"}] + }, + php: { + files: [{expand: true, cwd: "src/main/", src: "**/*.php", dest: "dist/"}] + }, + }, + focus: { + dev: { + include: ["html", "js", "link", "php"], + }, + }, + replace: { + dev: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>+" + new Date().toISOString().slice(0, 19).replace(/[-:T]/g, "") + } + ], + overwrite: true + }, + deploy: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>" + } + ], + overwrite: true + }, + }, + watch: { + html: { + files: ["src/main/**/*.html"], + tasks: ["copy:html"], + }, + js: { + files: ["src/main/**/*.js"], + tasks: ["webpack:dev", "replace:dev"], + }, + link: { + files: ["node_modules/@fwdekker/*/dist/**"], + tasks: ["webpack:dev", "replace:dev"], + }, + php: { + files: ["src/main/**/*.php"], + tasks: ["copy:php"], + }, + }, + webpack: { + options: { + entry: "./src/main/js/index.js", + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: [".js"], + }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist/"), + }, + }, + dev: { + mode: "development", + devtool: "inline-source-map", + }, + deploy: { + mode: "production", + }, + }, + }); + + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-contrib-copy"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-focus"); + grunt.loadNpmTasks("grunt-text-replace"); + grunt.loadNpmTasks("grunt-webpack"); + + grunt.registerTask("dev", [ + // Pre + "clean", + // Copy files + "copy:db", + "copy:html", + "copy:php", + // Compile JS + "webpack:dev", + "replace:dev", + ]); + grunt.registerTask("dev:server", ["dev", "focus:dev"]); + grunt.registerTask("deploy", [ + // Pre + "clean", + // Copy files + "copy:db", + "copy:html", + "copy:php", + // Compile JS + "webpack:deploy", + "replace:deploy", + ]); + + grunt.registerTask("default", ["dev"]); +}; diff --git a/index.html b/index.html deleted file mode 100644 index 531f124..0000000 --- a/index.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - - - - Random Fallout 76 record - - - - - -
- -
-
-

Random Fallout 76 record

- -
-

- On this page you can retrieve a random record from the Fallout 76 game files. - Simply select the signatures you want to include below, and then press the "Get random record" - button. -

-
-
-
- - - -
-

Settings

-
- -
Loading... please wait.
- - -
-
- - - -
-

Record

-
-
- - - - -
- - - - - - diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..bf8b285c0d3f0a0a49a883c8af4fed95d25ad88f GIT binary patch literal 322812 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 z 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�X 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 teXiNwB literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..fbeb2ae --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "random-fo76", + "version": "1.0.8", + "description": "Random Fallout 76 record.", + "author": "Felix W. Dekker", + "browser": "dist/bundle.js", + "repository": { + "type": "git", + "url": "git@git.fwdekker.com:FWDekker/random-fo76.git" + }, + "private": true, + "scripts": { + "clean": "grunt clean", + "dev": "grunt dev", + "dev:server": "grunt dev:server", + "deploy": "grunt deploy" + }, + "dependencies": { + "@fwdekker/template": "^0.0.14", + "js-cookie": "^2.2.1" + }, + "devDependencies": { + "grunt": "^1.1.0", + "grunt-cli": "^1.3.2", + "grunt-contrib-clean": "^2.0.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-focus": "^1.0.0", + "grunt-text-replace": "^0.4.0", + "grunt-webpack": "^3.1.3", + "webpack": "^4.42.1", + "webpack-cli": "^3.3.11" + } +} diff --git a/api.php b/src/main/api.php similarity index 100% rename from api.php rename to src/main/api.php diff --git a/src/main/index.html b/src/main/index.html new file mode 100644 index 0000000..15023ff --- /dev/null +++ b/src/main/index.html @@ -0,0 +1,52 @@ + + + + + + + + + + + Random Fallout 76 record + + + + + +
+ +
+ + + + +
+

Settings

+
+ +
Loading... please wait.
+ + +
+
+ + +
+

Record

+
+
+
+ +
+ + + + diff --git a/src/main/js/index.js b/src/main/js/index.js new file mode 100644 index 0000000..a94a953 --- /dev/null +++ b/src/main/js/index.js @@ -0,0 +1,221 @@ +import {$, doAfterLoad, footer, header, nav} from "@fwdekker/template"; +import Cookies from "js-cookie"; + + +const signatureColCount = 8; + + +/** + * Returns an array of the signatures that are currently selected. + */ +const getSelectedSignatures = () => { + const signatures = []; + + const selectedCheckboxes = document.querySelectorAll("#signatures input:checked"); + for (let i = 0; i < selectedCheckboxes.length; i++) { + const selectedCheckbox = selectedCheckboxes[i]; + signatures.push(selectedCheckbox.value); + } + + return signatures; +}; + +/** + * Selects the indicated signatures, and deselects all others. + * + * @param signatures the array of signatures to select + */ +const setSelectedSignatures = signatures => { + const checkboxes = document.querySelectorAll("#signatures input"); + for (let i = 0; i < checkboxes.length; i++) + checkboxes[i].checked = false; + + for (let i = 0; i < signatures.length; i++) + $(`#signature-${signatures[i]}`).checked = true; + + updateSignatureToggle(); +}; + +/** + * Selects all signatures. + */ +const setAllSignatures = checked => { + const checkboxes = document.querySelectorAll("#signatures input"); + for (let i = 0; i < checkboxes.length; i++) + checkboxes[i].checked = checked; + saveSelectedSignaturesToCookie(); + + updateSignatureToggle(); +}; + +/** + * (De)selects signatures based on the selection stored in a cookie. + */ +const loadSelectedSignaturesFromCookie = () => { + const cookie = Cookies.get("selectedSignatures"); + let signatures; + if (cookie === undefined) + signatures = []; + else + signatures = cookie.split(","); + + setSelectedSignatures(signatures); +}; + +/** + * Saves the currently-selected signatures to a cookie. + */ +const saveSelectedSignaturesToCookie = + () => Cookies.set("selectedSignatures", getSelectedSignatures().join(","), { + expires: 5 * 365, + secure: true, + sameSite: "lax" + }); + +/** + * Updates the button used to toggle all signatures on or off. + */ +const updateSignatureToggle = () => { + const signatureToggle = $("#signatureToggle"); + + if (getSelectedSignatures().length === document.querySelectorAll("#signatures input").length) { + signatureToggle.innerHTML = "Deselect all signatures"; + signatureToggle.onclick = () => setAllSignatures(false); + } else { + signatureToggle.innerHTML = "Select all signatures"; + signatureToggle.onclick = () => setAllSignatures(true); + } +}; + + +/** + * Downloads an array of signatures from the API. + * + * @param callback the function to execute with the array of signatures + * @param handle the function to execute if signatures could not be downloaded + */ +const downloadSignatures = (callback, handle) => { + fetch("api.php?action=list-signatures") + .then(response => { + if (!response.ok) { + if (handle) handle(response); + console.error(response); + throw new Error("Failed to fetch list of signatures."); + } + + return response.json(); + }) + .then(signatures => callback(signatures)); +}; + +/** + * Creates buttons for the signatures and adds them to the form. + * + * @param signatures an array of signatures to create buttons for + */ +const createSignatureButtons = signatures => { + const form = $("#signatures"); + form.innerHTML = ""; + + let row; + for (let i = 0; i < signatures.length; i++) { + const signature = signatures[i]; + + if (i % signatureColCount === 0) { + if (row !== undefined) + form.appendChild(row); + + row = document.createElement("div"); + row.className = "row"; + } + + const col = document.createElement("div"); + col.className = "column"; + + const label = document.createElement("label"); + label.htmlFor = `signature-${signature}`; + label.innerHTML = signature; + col.appendChild(label); + + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.id = `signature-${signature}`; + checkbox.name = `signature-${signature}`; + checkbox.value = signature; + checkbox.onclick = () => { + updateSignatureToggle(); + saveSelectedSignaturesToCookie(); + }; + col.appendChild(checkbox); + + row.appendChild(col); + } +}; + +/** + * Downloads a random record from the API. + * + * @param callback the function to execute with the record + * @param handle the function to execute if signatures could not be downloaded + */ +const downloadRandomRecord = (callback, handle) => { + const selectedSignatures = getSelectedSignatures(); + + fetch(`api.php?action=get-random&signatures=${selectedSignatures.join(",")}`) + .then(response => { + if (!response.ok) { + if (handle) handle(response); + console.error(response); + throw new Error("Failed to fetch random record."); + } + + return response.text(); + }) + .then(record => callback(record)); +}; + +/** + * Displays a record on the page. + * + * @param record the record to display + */ +const showRecord = (record) => { + $("#output").innerHTML = record; + + const scrollingElement = (document.scrollingElement || document.body); + scrollingElement.scrollTop = scrollingElement.scrollHeight; +}; + + +doAfterLoad(() => { + $("#nav").appendChild(nav()); + $("#header").appendChild(header({ + title: "Random Fallout 76 record", + description: "Retrieve a random record from the Fallout 76 game files" + })); + $("#footer").appendChild(footer({ + author: "Felix W. Dekker", + authorURL: "https://fwdekker.com/", + license: "MIT License", + licenseURL: "https://git.fwdekker.com/FWDekker/interlanguage-checker/src/branch/master/LICENSE", + vcs: "git", + vcsURL: "https://git.fwdekker.com/FWDekker/interlanguage-checker/", + version: "v%%VERSION_NUMBER%%" + })); + $("main").style.display = null; +}); + +doAfterLoad(() => { + $("#submit").onclick = () => downloadRandomRecord(record => showRecord(record)); + + downloadSignatures( + signatures => { + createSignatureButtons(signatures); + loadSelectedSignaturesFromCookie(); + }, + errorResponse => { + const form = $("#signatureForm"); + form.style.color = "red"; + form.innerHTML = "Error: Failed to download signatures." + }); +});