From b2b06180e6479ce486d42631d98f5ae46dd6c4f7 Mon Sep 17 00:00:00 2001 From: Franzz Date: Sat, 25 Apr 2026 15:49:58 +0200 Subject: [PATCH] Remove some spot.js dependencies --- src/Spot.vue | 2 +- src/components/project.vue | 8 ++++---- src/components/projectPost.vue | 11 +++++------ src/scripts/spot.js | 28 +++++++++++++++++++--------- 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/Spot.vue b/src/Spot.vue index 809084a..a69ba0c 100644 --- a/src/Spot.vue +++ b/src/Spot.vue @@ -78,7 +78,7 @@ export default { return {page: sPage, items: asHash}; }, setHash(sPage = '', asItems = []) { - if(typeof asItems == 'string') asItems = [asItems]; + if(typeof asItems == 'string' && asItems != '') asItems = [asItems]; const sItems = (asItems.length > 0)?(this.spot.consts.hash_sep + asItems.join(this.spot.consts.hash_sep)):''; window.location.hash = '#' + sPage + sItems; } diff --git a/src/components/project.vue b/src/components/project.vue index 997fd94..f376251 100644 --- a/src/components/project.vue +++ b/src/components/project.vue @@ -162,15 +162,15 @@ export default { resizeDuration: 400, hasVideo: true, onMediaChange: (oMedia) => { - this.spot.updateHash('media', oMedia.id); + this.$parent.hash.items = [this.currProject.codename, 'media', oMedia.id]; if(oMedia.set == 'post-medias') this.goToPost({type: 'media', id: oMedia.id}); }, - onClosing: () => {this.spot.flushHash();} + onClosing: () => {this.$parent.hash.items = [this.$parent.hash.items[0]];} }); }, async initFeed() { //Simplebar event - this.$refs.feedSimpleBar.scrollElement.addEventListener('scroll', this.onFeedScroll); + this.$refs.feedSimpleBar?.scrollElement.addEventListener('scroll', this.onFeedScroll); //Mobile Touchscreen Events //TODO @@ -622,7 +622,7 @@ export default { - parseFloat(getComputedStyle(this.$refs.feedSimpleBar.$el).paddingTop) ); - //this.spot.flushHash(['post', 'message']); + //this.$parent.hash.items = [this.$parent.hash.items[0]]; return oRef; } diff --git a/src/components/projectPost.vue b/src/components/projectPost.vue index a4de4a1..e3385d9 100644 --- a/src/components/projectPost.vue +++ b/src/components/projectPost.vue @@ -50,9 +50,8 @@ displayedId() { return this.options.displayed_id?(this.spot.lang('counter', this.options.displayed_id)):''; }, - hash() { - let asHash = this.spot.getHash(); - return '#'+[asHash.page, asHash.items[0], this.options.type, this.options.id].join(this.spot.consts.hash_sep); + anchorLink() { + return '#'+[this.hash.page, this.hash.items[0], this.options.type, this.options.id].join(this.spot.consts.hash_sep); }, modeHisto() { return (this.project.currProject.mode == this.spot.consts.modes.histo); @@ -69,10 +68,10 @@ } }, - inject: ['spot', 'project', 'user', 'map'], + inject: ['spot', 'project', 'user', 'map', 'hash'], methods: { copyAnchor() { - copyTextToClipboard(this.spot.consts.server+this.spot.hash()); + copyTextToClipboard(this.spot.consts.server+this.anchorLink); this.anchorTitle = this.spot.lang('link_copied'); this.anchorIcon = 'copied'; setTimeout(()=>{ //TODO animation @@ -141,7 +140,7 @@
diff --git a/src/scripts/spot.js b/src/scripts/spot.js index b3c9781..3922ce8 100755 --- a/src/scripts/spot.js +++ b/src/scripts/spot.js @@ -5,14 +5,14 @@ export default class Spot { this.consts.hash_sep = '-'; this.consts.title = 'Spotty'; this.consts.default_page = 'project'; - this.consts.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || this.consts.default_timezone; + //this.consts.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || this.consts.default_timezone; this.pages = {}; //Variables & constants from php this.vars('tmp', 'object'); this.vars('page', 'string'); - $.each(asGlobals.vars, (sKey, oValue) => {this.vars(sKey, oValue)}); + Object.entries(asGlobals.vars).forEach(([sKey, oValue]) => {this.vars(sKey, oValue);}); //page elem this.elem = {}; @@ -20,6 +20,7 @@ export default class Spot { /* Initialization */ + /* init() { this.elem.container = $('#container'); this.elem.main = $('#main'); @@ -35,6 +36,7 @@ export default class Spot { .on('hashchange', () => {this.onHashChange();}) .trigger('hashchange'); } + */ /* Variable Management */ @@ -56,6 +58,7 @@ export default class Spot { /* Interface with server */ + /* get(sAction, fOnSuccess, oVars, fOnError, fonProgress) { oVars = oVars || {}; fOnError = fOnError || function(sError) {console.log(sError);}; @@ -82,6 +85,7 @@ export default class Spot { fOnError(textStatus+' '+errorThrown); }); } + */ async get2(sAction, oVars, bLoading) { oVars = oVars || {}; @@ -89,11 +93,8 @@ export default class Spot { oVars['t'] = this.consts.timezone; bLoading = true; - let oUrl = new URL(this.consts.server+this.consts.process_page); - oUrl.search = new URLSearchParams(oVars).toString(); - try { - let oUrl = new URL(this.consts.server+this.consts.process_page); + let oUrl = new URL(this.consts.process_page, this.consts.server); oUrl.search = new URLSearchParams(oVars).toString(); const oRequest = await fetch(oUrl, {method: 'GET', /*body: JSON.stringify(oVars),*/ headers: {"Content-Type": "application/json"}}); if(!oRequest.ok) { @@ -103,10 +104,12 @@ export default class Spot { else { let oResponse = await oRequest.json(); bLoading = false; - if(oResponse.desc.substr(0, this.consts.lang_prefix.length)==this.consts.lang_prefix) oResponse.desc = this.lang(oData.desc.substr(this.consts.lang_prefix.length)); + if(oResponse.desc.substr(0, this.consts.lang_prefix.length)==this.consts.lang_prefix) { + oResponse.desc = this.lang(oResponse.desc.substr(this.consts.lang_prefix.length)); + } if(oResponse.result == this.consts.error) return Promise.reject(oResponse.desc); - else return Promise.resolve(oResponse.data, oResponse.desc); + else return oResponse.data; } } catch(oError) { @@ -135,11 +138,13 @@ export default class Spot { } isMobile() { - return $('#mobile').is(':visible'); + const mobileElem = document.getElementById('mobile'); + return !!mobileElem && getComputedStyle(mobileElem).display !== 'none'; } /* Page Switch - Trigger & Event catching */ + /* onHashChange() { var asHash = this.getHash(); if(asHash.hash !='' && asHash.page != '') this.switchPage(asHash); //page switching @@ -186,6 +191,7 @@ export default class Spot { var asHash = this.getHash(); if(asHash.items.length > 1 && (asTypes.length == 0 || asTypes.indexOf(asHash.items[1]) != -1)) this.setHash(asHash.page, [asHash.items[0]]); } + */ /* Page Events */ @@ -224,6 +230,7 @@ export default class Spot { /* Page Switch - DOM Replacement */ + /* getActionLink(sAction, oVars) { if(!oVars) oVars = {}; let sVars = ''; @@ -232,11 +239,13 @@ export default class Spot { return this.consts.process_page+'?a='+sAction+sVars; } + */ addPage(sPage, oPage) { this.pages[sPage] = oPage; } + /* switchPage(asHash) { var sPageName = asHash.page; var bSamePage = (this.vars('page') == sPageName); @@ -278,6 +287,7 @@ export default class Spot { var $FadeInElem = bFirstPage?this.elem.container:this.elem.main; $FadeInElem.hide().fadeTo('slow', 1); } + */ setPageTitle(sTitle) { document.title = this.consts.title+' - '+sTitle;