diff --git a/package-lock.json b/package-lock.json index 515cad0..521156d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "spot", "version": "2.0.0", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^7.2.0", + "@fortawesome/free-solid-svg-icons": "^7.2.0", + "@fortawesome/vue-fontawesome": "^3.2.0", "@uppy/core": "^5.2.0", "@uppy/xhr-upload": "^5.2.0", "autosize": "^6.0.1", @@ -1554,6 +1557,49 @@ "node": ">=14.17.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.2.0.tgz", + "integrity": "sha512-IpR0bER9FY25p+e7BmFH25MZKEwFHTfRAfhOyJubgiDnoJNsSvJ7nigLraHtp4VOG/cy8D7uiV0dLkHOne5Fhw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.2.0.tgz", + "integrity": "sha512-6639htZMjEkwskf3J+e6/iar+4cTNM9qhoWuRfj9F3eJD6r7iCzV1SWnQr2Mdv0QT0suuqU8BoJCZUyCtP9R4Q==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.2.0.tgz", + "integrity": "sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.2.0.tgz", + "integrity": "sha512-7BwGjTZn8QDvVEIu8fvkHhsDRRv//tq7jtsldaDhF3dE1fyWLIQcEg3zvIzy33su7kcppWsZZ6XRYP5wp3UCgQ==", + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6 || ~7", + "vue": ">= 3.0.0 < 4" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", diff --git a/package.json b/package.json index fdf066b..dc32ba8 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ "keywords": [], "author": "Franzz", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^7.2.0", + "@fortawesome/free-solid-svg-icons": "^7.2.0", + "@fortawesome/vue-fontawesome": "^3.2.0", "@uppy/core": "^5.2.0", "@uppy/xhr-upload": "^5.2.0", "autosize": "^6.0.1", diff --git a/src/components/admin.vue b/src/components/admin.vue index 1203789..ee4adf1 100644 --- a/src/components/admin.vue +++ b/src/components/admin.vue @@ -9,20 +9,20 @@ export default { SpotButton, AdminInput }, - inject: ['api', 'lang'], - data() { - return { - elems: {}, - feedbacks: [], - saveTimer: null - }; - }, - beforeUnmount() { - if(this.saveTimer) clearTimeout(this.saveTimer); - }, - mounted() { - this.setProjects(); - }, + inject: ['api', 'lang'], + data() { + return { + elems: {}, + feedbacks: [], + saveTimer: null + }; + }, + beforeUnmount() { + if(this.saveTimer) clearTimeout(this.saveTimer); + }, + mounted() { + this.setProjects(); + }, methods: { l(id) { return this.lang.get(id); @@ -39,7 +39,7 @@ export default { this.feedbacks.push({type:sType, msg:sMsg}); }, async setProjects() { - let aoElemTypes = await this.api.get('admin_get'); + let aoElemTypes = await this.api.get('admin_get'); for(const [sType, aoElems] of Object.entries(aoElemTypes)) { this.elems[sType] = {}; @@ -50,7 +50,7 @@ export default { } }, createElem(sType) { - this.api.get('admin_create', {type: sType}) + this.api.get('admin_create', {type: sType}) .then((aoNewElemTypes) => { for(const [sType, aoNewElems] of Object.entries(aoNewElemTypes)) { for(const [iKey, oNewElem] of Object.entries(aoNewElems)) { @@ -68,20 +68,20 @@ export default { id: oElem.id }; - this.api.get('admin_delete', asInputs) - .then((asData) => { - delete this.elems[asInputs.type][asInputs.id]; - this.addFeedback('success', this.lang.get('admin_delete_success'), asInputs); - }) - .catch((sError) => { - this.addFeedback('error', sError, asInputs); - }); - }, - updateElem(oElem, oEvent) { - if(this.saveTimer) clearTimeout(this.saveTimer); - - let sOldVal = this.elems[oElem.type][oElem.id][oEvent.target.name]; - let sNewVal = oEvent.target.value; + this.api.get('admin_delete', asInputs) + .then((asData) => { + delete this.elems[asInputs.type][asInputs.id]; + this.addFeedback('success', this.lang.get('admin_delete_success'), asInputs); + }) + .catch((sError) => { + this.addFeedback('error', sError, asInputs); + }); + }, + updateElem(oElem, oEvent) { + if(this.saveTimer) clearTimeout(this.saveTimer); + + let sOldVal = this.elems[oElem.type][oElem.id][oEvent.target.name]; + let sNewVal = oEvent.target.value; if(sOldVal != sNewVal) { let asInputs = { type: oElem.type, @@ -90,7 +90,7 @@ export default { value: sNewVal }; - this.api.get('admin_set', asInputs) + this.api.get('admin_set', asInputs) .then((asData) => { this.elems[oElem.type][oElem.id][oEvent.target.name] = sNewVal; this.addFeedback('success', this.lang.get('admin_save_success'), asInputs); @@ -100,13 +100,13 @@ export default { this.addFeedback('error', sError, asInputs); }); } - }, - queue(oElem, oEvent) { - if(this.saveTimer) clearTimeout(this.saveTimer); - this.saveTimer = setTimeout(() => {this.updateElem(oElem, oEvent);}, 2000); - }, + }, + queue(oElem, oEvent) { + if(this.saveTimer) clearTimeout(this.saveTimer); + this.saveTimer = setTimeout(() => {this.updateElem(oElem, oEvent);}, 2000); + }, updateProject() { - this.api.get('update_project') + this.api.get('update_project') .then((asData, sMsg) => {this.addFeedback('success', sMsg, {'update':'project'});}) .catch((sMsg) => {this.addFeedback('error', sMsg, {'update':'project'});}); } @@ -138,7 +138,7 @@ export default {