@@ -67,20 +67,33 @@ class VueDashboard {
6767 yearRange : 1 ,
6868 defaultDate : new Date ( ) ,
6969 } ) ;
70- document . querySelectorAll ( ".channels_wrapper" ) . forEach ( el => new TagHandler ( {
70+ M . FormSelect . init ( document . querySelectorAll ( "select" ) ) ;
71+ this . initTagHandlers ( ) ;
72+ this . addEventListener ( ) ;
73+ }
74+
75+ initTagHandlers ( ) {
76+ this . timerTagWrappers = [ ...document . querySelectorAll ( "#addTimer .channels_wrapper, #addTimer .users_wrapper" ) ] . map ( el => new TagHandler ( {
7177 elementWrapper : el ,
72- dataset : document . channels ,
78+ dataset : el . classList . contains ( "channels_wrapper" ) ? document . channels : document . users ,
7379 textarea : el . parentElement . querySelector ( "textarea" ) ,
74- type : "channel"
80+ type : el . classList . contains ( "channels_wrapper" ) ? "channel" : "user" ,
81+ extentDataset : el . classList . contains ( "users_wrapper" ) ? document . roles : undefined ,
7582 } ) ) ;
76- document . querySelectorAll ( ". users_wrapper" ) . forEach ( el => new TagHandler ( {
83+ this . cronTagWrappers = [ ... document . querySelectorAll ( "#add_cron .channels_wrapper, #add_cron . users_wrapper" ) ] . map ( el => new TagHandler ( {
7784 elementWrapper : el ,
78- dataset : document . users ,
85+ dataset : el . classList . contains ( "channels_wrapper" ) ? document . channels : document . users ,
7986 textarea : el . parentElement . querySelector ( "textarea" ) ,
80- type : "user"
87+ type : el . classList . contains ( "channels_wrapper" ) ? "channel" : "user" ,
88+ extentDataset : el . classList . contains ( "users_wrapper" ) ? document . roles : undefined ,
89+ } ) ) ;
90+ this . editMessageWrappers = [ ...document . querySelectorAll ( "#editMessage .channels_wrapper, #editMessage .users_wrapper" ) ] . map ( el => new TagHandler ( {
91+ elementWrapper : el ,
92+ dataset : el . classList . contains ( "channels_wrapper" ) ? document . channels : document . users ,
93+ textarea : el . parentElement . querySelector ( "textarea" ) ,
94+ type : el . classList . contains ( "channels_wrapper" ) ? "channel" : "user" ,
95+ extentDataset : el . classList . contains ( "users_wrapper" ) ? document . roles : undefined ,
8196 } ) ) ;
82- M . FormSelect . init ( document . querySelectorAll ( "select" ) ) ;
83- this . addEventListener ( ) ;
8497 }
8598
8699 addEventListener ( ) {
@@ -141,14 +154,11 @@ class VueDashboard {
141154 //Pour chaque element selectionné (on a juste le nom)
142155 this . daySelectWrapper . querySelectorAll ( ".selected" ) . forEach ( ( el ) => {
143156 //Pour chaque element proposé (nom + valeur)
144- console . log ( el ) ;
145157 document . querySelectorAll ( "#daySelect option" ) . forEach ( ( inputEl ) => {
146- console . log ( inputEl ) ;
147158 if ( el . textContent == inputEl . textContent )
148159 selectedDays [ inputEl . value ] = inputEl . textContent ;
149160 } ) ;
150161 } ) ;
151- console . log ( selectedDays ) ;
152162 if ( selectedDays . length > 0 ) {
153163 desc += " on " + Object . values ( selectedDays ) . join ( ", " ) ;
154164 cron [ 4 ] = Object . keys ( selectedDays ) . join ( "," ) ;
@@ -200,16 +210,8 @@ class VueDashboard {
200210 const formData = new FormData ( ) ;
201211 const content = this . form . elements . namedItem ( "content" ) . value ;
202212 let sysContent = content ;
203- document . channels . forEach ( el => {
204- sysContent = sysContent . replace ( "#" + el . name , "<#" + el . id + ">" ) ;
205- } ) ;
206- document . users . forEach ( el => {
207- const name = el . nickname || el . username ;
208- sysContent = sysContent . replace ( "@" + name , "<@" + el . id + ">" ) ;
209- } ) ;
210- document . roles . forEach ( el => {
211- sysContent = sysContent . replace ( "@" + el . username , "<@&" + el . id + ">" ) ;
212- } ) ;
213+ for ( const tagHandler of this . cronTagWrappers )
214+ sysContent = tagHandler . replaceTag ( sysContent ) ;
213215 formData . append ( "frequency" , desc ) ;
214216 formData . append ( "cron" , cron . join ( " " ) ) ;
215217 formData . append ( "content" , content ) ;
@@ -278,16 +280,8 @@ class VueDashboard {
278280 const channel_id = this . formTimer . elements . namedItem ( "channelSelectTimer" ) . value ;
279281
280282 let sysContent = content ;
281- document . channels . forEach ( el => {
282- sysContent = sysContent . replace ( "#" + el . name , "<#" + el . id + ">" ) ;
283- } ) ;
284- document . users . forEach ( el => {
285- const name = el . nickname || el . username ;
286- sysContent = sysContent . replace ( "@" + name , "<@" + el . id + ">" ) ;
287- } ) ;
288- document . roles . forEach ( el => {
289- sysContent = sysContent . replace ( "@" + el . username , "<@&" + el . id + ">" ) ;
290- } ) ;
283+ for ( const tagHandler of this . timerTagWrappers )
284+ sysContent = tagHandler . replaceTag ( sysContent ) ;
291285 formData . append ( "content" , content ) ;
292286 formData . append ( "sys_content" , sysContent ) ;
293287 formData . append ( "timestamp" , timestamp ) ;
@@ -379,21 +373,14 @@ class VueDashboard {
379373 document . querySelector ( ".guild-timezone h5" ) . textContent = "Timezone : " + timezone ;
380374 this . timezoneModal . close ( ) ;
381375 }
376+
382377 async onConfirmUpdateMessage ( ) {
383378 const message = document . querySelector ( "#contentEdit" ) . value ;
384379 const formData = new FormData ( ) ;
385380
386381 let sysContent = message ;
387- document . channels . forEach ( el => {
388- sysContent = sysContent . replace ( "#" + el . name , "<#" + el . id + ">" ) ;
389- } ) ;
390- document . users . forEach ( el => {
391- const name = el . nickname || el . username ;
392- sysContent = sysContent . replace ( "@" + name , "<@" + el . id + ">" ) ;
393- } ) ;
394- document . roles . forEach ( el => {
395- sysContent = sysContent . replace ( "@" + el . username , "<@&" + el . id + ">" ) ;
396- } ) ;
382+ for ( const el of this . editMessageWrappers )
383+ sysContent = el . replaceTag ( sysContent ) ;
397384
398385 formData . append ( "content" , message ) ;
399386 formData . append ( "msg_id" , this . idToRemove ) ;
@@ -413,5 +400,7 @@ class VueDashboard {
413400 document . getElementById ( this . idToRemove ) . querySelector ( ".description" ) . textContent = message ;
414401 }
415402}
416-
417- window . addEventListener ( "DOMContentLoaded" , e => new VueDashboard ( ) ) ;
403+ ( function ( ) {
404+ "use strict" ;
405+ window . addEventListener ( "DOMContentLoaded" , e => new VueDashboard ( ) ) ;
406+ } ) ( ) ;
0 commit comments