66// @version 1.6
77// @grant none
88// ==/UserScript==
9- void ( function ( ) {
10- var jSQLMyAdminVersion = 1.6 ;
11-
9+ void ( function ( ) {
10+ const jSQLMyAdminVersion = 1.6 ;
11+
1212 /**
1313 * Turn this userscript into a browser button..
1414 * - Change the isBtn variable below to true
@@ -18,17 +18,16 @@ void(function () {
1818 * <a href="javascript:(minified, urlencoded userscript here)">jSQLMyAdmin</a>
1919 * - Open HTML page in browser, drag link to bookmarks toolbar
2020 */
21- var isBtn = false ;
22-
23- var cm ;
24- var drawnTables = [ ] ;
25- var resources = [ ] ;
26- var minJSQLVersion = 2.7 ;
27-
21+ let isBtn = false ;
22+
23+ let cm ;
24+ let drawnTables = [ ] ;
25+ let resources = [ ] ;
26+ const minJSQLVersion = 2.7 ;
27+
2828 if ( typeof window . jSQL === 'undefined' ) {
2929 resources . push ( {
30- // jSQL edge
31- js : [ 'https://gitcdn.xyz/repo/Pamblam/jSQL/master/jSQL.min.js' ] ,
30+ js : [ 'https://pamblam.github.io/jSQL/scripts/jSQL.min.js' ] ,
3231 css : [ ]
3332 } ) ;
3433 }
@@ -53,24 +52,24 @@ void(function () {
5352 css : [ 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.22.0/codemirror.css' ,
5453 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.22.0/addon/hint/show-hint.css' ] ,
5554 } ) ;
56-
55+
5756 showjSQLLoader ( ) ;
58- loadresources ( resources ) . then ( function ( ) {
57+ loadresources ( resources ) . then ( ( ) => {
5958 if ( "undefined" === typeof jSQL . version || jSQL . version < minJSQLVersion ) {
60- var current_version = "undefined" === typeof jSQL . version ? "<1" : jSQL . version ;
59+ let current_version = "undefined" === typeof jSQL . version ? "<1" : jSQL . version ;
6160 if ( ! confirm ( "jSQLMyAdmin requires jSQL version >= " + minJSQLVersion + ". This page includes jSQL version " + current_version + ". Some features will not work. Do you want to open jSQLMyAdmin anyway?" ) )
6261 return ;
6362 }
6463 closejSQL ( ) ;
6564 if ( isBtn ) openjSQL ( ) ;
6665 } ) ;
67-
66+
6867 function showjSQLLoader ( ) {
6968 document . getElementsByTagName ( 'body' ) [ 0 ]
7069 . insertAdjacentHTML ( 'beforeend' , '<span id=\'jSQLLoadingFlag\' style=\'position:fixed; top:5px; right:5px; z-index:2147483647; opacity:0.7;\'>Loading jSQLMyAdmin...</span>' ) ;
7170 }
7271 function drawjSQLMyAdmin ( ) {
73- jSQL . load ( function ( ) {
72+ jSQL . load ( ( ) => {
7473 // does the saved queries table exist?
7574 if ( undefined === jSQL . tables [ 'Saved Queries' ] ) {
7675 jSQL . query ( "CREATE TABLE `Saved Queries` (`Name` VARCHAR(20), `Query` LONGTEXT)" ) . execute ( ) ;
@@ -80,36 +79,90 @@ void(function () {
8079 jSQL . insertInto ( "Saved Queries" ) . values ( { Name :"Insert" , Query : "-- An Insert Query Template\nINSERT INTO `myTable`\n\t(`String`, `Number`)\nVALUES\n\t('Some Number', 7)" } ) . execute ( ) ;
8180 jSQL . insertInto ( "Saved Queries" ) . values ( { Name :"Drop" , Query : "-- A Drop Query Template\nDROP TABLE `myTable`" } ) . execute ( ) ;
8281 }
83- var queries = jSQL . query ( "SELECT * FROM `Saved Queries`" ) . execute ( ) . fetchAll ( "ASSOC" ) ;
84- var selectMenu = "<select id='queryTypeSelect'><option>Choose...</option>" ;
85- for ( var i = queries . length ; i -- ; ) selectMenu += "<option value='" + queries [ i ] . Name + "'>" + queries [ i ] . Name + "</option>" ;
82+ let queries = jSQL . query ( "SELECT * FROM `Saved Queries`" ) . execute ( ) . fetchAll ( "ASSOC" ) ;
83+ let selectMenu = "<select id='queryTypeSelect'><option>Choose...</option>" ;
84+ for ( let i = queries . length ; i -- ; ) selectMenu += "<option value='" + queries [ i ] . Name + "'>" + queries [ i ] . Name + "</option>" ;
8685 selectMenu += "</select>" ;
87- var $overlay = $ ( '#jsOverlayContainer' ) . empty ( ) ;
86+ let $overlay = $ ( '#jsOverlayContainer' ) . empty ( ) ;
8887 $overlay . html ( '<h5>jSQL Version: ' + jSQL . version + ' | jSQLMyAdmin Version: ' + jSQLMyAdminVersion + '</h5>' ) ;
89- $overlay . append ( '<div id="jSQLTableTabs"><ul><li><a href="#jSQLResultsTab">Query</a></li></ul><div id="jSQLResultsTab"><div><div style="float:right;"><small><b>autocomplete</b>: <i>ctrl+space</i></small></div><div style="float:left"><b>Template: </b>' + selectMenu + '</div><div style="clear:both;"></div></div><textarea id="jSQLMyAdminQueryBox"></textarea><div style="text-align:right;"><button id="jSQLExecuteQueryButton">Run Query</button><button id="jSQLMinifyQueryButton">Minify</button><button id="jSQLSaveQueryButton">Save</button><button id="jSQLResetButton">Reset</button><button id="jSQLCommitButton">Commit</button></div><div id="jSQLMAQueryResults"><center><b>No results to show</b><br>Enter a query</center></div></div></div>' ) ;
88+ $overlay . append ( `<div id="jSQLTableTabs">
89+ <ul>
90+ <li><a href="#jSQLNewTableTab">New Table</a></li>
91+ <li><a href="#jSQLResultsTab">Query</a></li>
92+ </ul>
93+ <div id="jSQLNewTableTab">
94+ <input type='text' id='tableName' placeholder='Table Name' />
95+ <table>
96+ <thead>
97+ <tr>
98+ <th>-Name-</th>
99+ <th>-Type-</th>
100+ <th>-AI-</th>
101+ <th>-PK-</th>
102+ <th>-UN-</th>
103+ </tr>
104+ </thead>
105+ <tbody>
106+ <tr>
107+ <td><input type=text class=colname-jma placeholder="Column Name" /></td>
108+ <td>
109+ <select>
110+ <option>NUMERIC</option>
111+ <option>TINYINT</option>
112+ <option>SMALLINT</option>
113+ <option>MEDIUMINT</option>
114+ <option>INT</option>
115+ <option>BIGINT</option>
116+ </select>
117+ </td>
118+ <td><input type=checkbox class=col-ai-jma /></td>
119+ <td><input type=checkbox class=col-pk-jma /></td>
120+ <td><input type=checkbox class=col-un-jma /></td>
121+ </tr>
122+ </tbody>
123+ </table>
124+ </div>
125+ <div id="jSQLResultsTab">
126+ <div>
127+ <div style="float:right;"><small><b>autocomplete</b>: <i>ctrl+space</i></small></div>
128+ <div style="float:left"><b>Template: </b>${ selectMenu } </div>
129+ <div style="clear:both;"></div>
130+ </div>
131+ <textarea id="jSQLMyAdminQueryBox"></textarea>
132+ <div style="text-align:right;">
133+ <button id="jSQLExecuteQueryButton">Run Query</button>
134+ <button id="jSQLMinifyQueryButton">Minify</button>
135+ <button id="jSQLSaveQueryButton">Save</button>
136+ <button id="jSQLResetButton">Reset</button>
137+ <button id="jSQLCommitButton">Commit</button>
138+ </div>
139+ <div id="jSQLMAQueryResults"><center><b>No results to show</b><br>Enter a query</center></div>
140+ </div>
141+ </div>` ) ;
90142 $ ( "#queryTypeSelect" ) . change ( function ( ) {
91- var Name = $ ( this ) . val ( ) ;
143+ let Name = $ ( this ) . val ( ) ;
92144 if ( undefined === Name || Name === "" || Name === null || Name === false ) return ;
93- var query = jSQL . query ( "SELECT `Query` FROM `Saved Queries` WHERE `Name` = ?" )
145+ let query = jSQL . query ( "SELECT `Query` FROM `Saved Queries` WHERE `Name` = ?" )
94146 . execute ( [ Name ] ) . fetch ( "ASSOC" ) . Query ;
95147 cm . getDoc ( ) . setValue ( query ) ;
96148 $ ( this ) . val ( $ ( this ) . find ( "option:first" ) . val ( ) ) ;
97149 } ) ;
98150 $ ( '#jSQLTableTabs' ) . tabs ( {
99- beforeActivate : function ( event , ui ) {
100- var tableName = $ ( ui . newPanel ) . data ( "tn" ) ;
151+ active : 1 ,
152+ beforeActivate : ( event , ui ) => {
153+ let tableName = $ ( ui . newPanel ) . data ( "tn" ) ;
101154 if ( tableName === undefined ) return ;
102155 $ ( ui . newPanel ) . html ( "Loading..." ) ;
103- } ,
104- activate : function ( event , ui ) {
105- setTimeout ( function ( ) {
106- var tableName = $ ( ui . newPanel ) . data ( "tn" ) ;
156+ } ,
157+ activate : ( event , ui ) => {
158+ setTimeout ( ( ) => {
159+ let tableName = $ ( ui . newPanel ) . data ( "tn" ) ;
107160 if ( tableName === undefined ) return ;
108- var data = jSQL . select ( '*' ) . from ( tableName ) . execute ( ) . fetchAll ( 'array' ) ;
109- var tableHTML = '<div style="overflow-x:auto; width:100%; margin:0; padding:0;"><table></table></div>' ;
161+ let data = jSQL . select ( '*' ) . from ( tableName ) . execute ( ) . fetchAll ( 'array' ) ;
162+ let tableHTML = '<div style="overflow-x:auto; width:100%; margin:0; padding:0;"><table></table></div>' ;
110163 $ ( ui . newPanel ) . html ( tableHTML ) ;
111- var cols = [ ] ;
112- for ( var i = 0 ; i < jSQL . tables [ tableName ] . columns . length ; i ++ )
164+ let cols = [ ] ;
165+ for ( let i = 0 ; i < jSQL . tables [ tableName ] . columns . length ; i ++ )
113166 cols . push ( { title : jSQL . tables [ tableName ] . columns [ i ] } ) ;
114167 $ ( ui . newPanel ) . find ( 'table' ) . DataTable ( {
115168 data : data ,
@@ -127,7 +180,7 @@ void(function () {
127180 $ ( "#jSQLMinifyQueryButton" ) . click ( minifyjSQLQuery ) ;
128181 $ ( "#jSQLResetButton" ) . button ( { icons : { primary : "ui-icon-refresh" } } ) ;
129182 $ ( '#jSQLResetButton' ) . css ( { "line-height" : "0.9" } ) ;
130- $ ( "#jSQLResetButton" ) . click ( function ( ) {
183+ $ ( "#jSQLResetButton" ) . click ( ( ) => {
131184 if ( ! confirm ( "Do you want to delete all tables?" ) ) return ;
132185 jSQL . reset ( ) ;
133186 jSQL . query ( "CREATE TABLE `Saved Queries` (`Name` VARCHAR(20), `Query` LONGTEXT)" ) . execute ( ) ;
@@ -141,27 +194,27 @@ void(function () {
141194 } ) ;
142195 $ ( "#jSQLSaveQueryButton" ) . button ( { icons : { primary : "ui-icon-star" } } ) ;
143196 $ ( '#jSQLSaveQueryButton' ) . css ( { "line-height" : "0.9" } ) ;
144- $ ( "#jSQLSaveQueryButton" ) . click ( function ( ) {
145- var name = prompt ( "Enter a name for this Template:" ) ;
197+ $ ( "#jSQLSaveQueryButton" ) . click ( ( ) => {
198+ let name = prompt ( "Enter a name for this Template:" ) ;
146199 if ( ! name ) return ;
147- var query = cm . getValue ( ) ;
200+ let query = cm . getValue ( ) ;
148201 jSQL . query ( "INSERT INTO `Saved Queries` (`Name`, `Query`) VALUES (?, ?)" )
149202 . execute ( [ name , query ] ) ;
150203 $ ( "#queryTypeSelect" ) . append ( "<option value='" + name + "'>" + name + "</option>" ) ;
151204 } ) ;
152205 $ ( "#jSQLCommitButton" ) . button ( { icons : { primary : "ui-icon-check" } } ) ;
153206 $ ( '#jSQLCommitButton' ) . css ( { "line-height" : "0.9" } ) ;
154- $ ( "#jSQLCommitButton" ) . click ( function ( ) {
207+ $ ( "#jSQLCommitButton" ) . click ( ( ) => {
155208 jSQL . commit ( ) ;
156209 $ ( "#jSQLCommitButton" ) . button ( "option" , "label" , "Committed!" ) ;
157- setTimeout ( function ( ) {
210+ setTimeout ( ( ) => {
158211 $ ( "#jSQLCommitButton" ) . button ( "option" , "label" , "Commit" ) ;
159212 } , 2000 ) ;
160213 } ) ;
161214 addAllTables ( ) ;
162215 $ ( "head" ) . append ( "<style>.CodeMirror-hints, .CodeMirror-hint, .CodeMirror-hint-active { z-index:2147483647 !important;}</style>" ) ;
163- var tbls = { } ;
164- for ( var table in jSQL . tables ) tbls [ table ] = jSQL . tables [ table ] . columns ;
216+ let tbls = { } ;
217+ for ( let table in jSQL . tables ) tbls [ table ] = jSQL . tables [ table ] . columns ;
165218 cm = CodeMirror . fromTextArea ( $ ( "#jSQLMyAdminQueryBox" ) [ 0 ] , {
166219 lineNumbers : true ,
167220 mode : "text/x-mysql" ,
@@ -180,14 +233,14 @@ void(function () {
180233 } ) ;
181234 }
182235 function minifyjSQLQuery ( ) {
183- var sql = cm . getValue ( ) ;
236+ let sql = cm . getValue ( ) ;
184237 cm . getDoc ( ) . setValue ( jSQL . minify ( sql ) ) ;
185238 }
186239 function runjSQLQuery ( ) {
187- var sql = cm . getValue ( ) ;
240+ let sql = cm . getValue ( ) ;
188241 try {
189- var query = jSQL . query ( sql ) . execute ( ) ;
190- var data = [ ] ;
242+ let query = jSQL . query ( sql ) . execute ( ) ;
243+ let data = [ ] ;
191244 if ( query !== undefined ) {
192245 data = query . fetchAll ( "assoc" ) ;
193246 if ( query . type === "DROP" ) {
@@ -196,45 +249,45 @@ void(function () {
196249 cm . getDoc ( ) . setValue ( sql ) ;
197250 }
198251 }
199- var tableHTML = data . length ? '<br><div><small><b>Results</b></small></div><div style="overflow-x:auto; width:100%; margin:0; padding:0;">' + makeTableHTML ( data ) + '</div>' : '<center><b>No results to show</b><br>Enter a query</center>' ;
252+ let tableHTML = data . length ? '<br><div><small><b>Results</b></small></div><div style="overflow-x:auto; width:100%; margin:0; padding:0;">' + makeTableHTML ( data ) + '</div>' : '<center><b>No results to show</b><br>Enter a query</center>' ;
200253 addAllTables ( ) ;
201254 $ ( "#jSQLMAQueryResults" ) . html ( tableHTML ) ;
202255 $ ( '#jSQLMAQueryResults' ) . find ( 'table' ) . DataTable ( { "order" : [ ] , "scrollX" : true } ) ;
203256 } catch ( e ) {
204- var msg = e . message ? e . message + "" : e + "" ;
257+ let msg = e . message ? e . message + "" : e + "" ;
205258 alert ( msg ) ;
206259 throw e ;
207260 }
208261 }
209262 function addTableTab ( tableName ) {
210263 if ( drawnTables . indexOf ( tableName ) > - 1 ) return ;
211- var $ul = $ ( '#jSQLTableTabs' ) . find ( 'ul' ) . eq ( 0 ) ;
212- var id = 'jSQLResultsTab-' + $ul . find ( 'li' ) . length ;
264+ let $ul = $ ( '#jSQLTableTabs' ) . find ( 'ul' ) . eq ( 0 ) ;
265+ let id = 'jSQLResultsTab-' + $ul . find ( 'li' ) . length ;
213266 $ul . append ( '<li><a href="#' + id + '">' + tableName + '</a></li>' ) ;
214267 $ul . after ( '<div id="' + id + '">Loading...</div>' ) ;
215268 $ ( "#" + id ) . data ( "tn" , tableName ) ;
216269 $ ( '#jSQLTableTabs' ) . tabs ( "refresh" ) ;
217270 drawnTables . push ( tableName ) ;
218271 }
219272 function addAllTables ( ) {
220- for ( var table in jSQL . tables ) {
273+ for ( let table in jSQL . tables ) {
221274 if ( "Saved Queries" === table ) continue ;
222275 addTableTab ( table ) ;
223276 }
224277 }
225278 function makeTableHTML ( data , drawData ) {
226279 if ( undefined === drawData ) drawData = true ;
227- var html = [ ] ;
280+ let html = [ ] ;
228281 html . push ( '<table><thead><tr>' ) ;
229- for ( var name in data [ 0 ] )
282+ for ( let name in data [ 0 ] )
230283 html . push ( '<th>' + name + '</th>' ) ;
231284 html . push ( '</tr></thead><tbody>' ) ;
232- for ( var i = 0 ; i < data . length ; i ++ ) {
285+ for ( let i = 0 ; i < data . length ; i ++ ) {
233286 if ( ! drawData ) break ;
234287 html . push ( '<tr>' ) ;
235- for ( var name in data [ i ] ) {
236- var type = typeof data [ i ] [ name ] ;
237- var val = type !== "string" && type !== "number" ? "[" + type + "]" : data [ i ] [ name ] ;
288+ for ( let name in data [ i ] ) {
289+ let type = typeof data [ i ] [ name ] ;
290+ let val = type !== "string" && type !== "number" ? "[" + type + "]" : data [ i ] [ name ] ;
238291 if ( val . length > 50 )
239292 val = val . substring ( 0 , 47 ) + "..." ;
240293 html . push ( '<td>' + val + '</td>' ) ;
@@ -248,7 +301,7 @@ void(function () {
248301 return $ ( "#jSQLMyAdminOverlay" ) . length > 0 ? closejSQL ( ) : openjSQL ( ) ;
249302 }
250303 function openjSQL ( ) {
251- $ ( 'body' ) . append ( '<div id=\'jSQLMyAdminOverlay\' style=\'position:fixed; top:0; left:0; height:100%; width:100%; overflow-y:auto; z-index: 2147483646; background: rgba(255,255,255,0.99)\'><div id="jsOverlayContainer" style="padding:5px; margin:0;"><br><br><center><h3>Loading jSQLMyAdmin...</h3></center></div></div>' ) ;
304+ $ ( 'body' ) . append ( '<div id=\'jSQLMyAdminOverlay\' style=\'text-align: left; position:fixed; top:0; left:0; height:100%; width:100%; overflow-y:auto; z-index: 2147483646; background: rgba(255,255,255,0.99)\'><div id="jsOverlayContainer" style="padding:5px; margin:0;"><br><br><center><h3>Loading jSQLMyAdmin...</h3></center></div></div>' ) ;
252305 $ ( '#openjSQLMyAdmin' ) . remove ( ) ;
253306 $ ( 'body' ) . append ( '<button id=\'closejSQLMyAdmin\' style=\'position:fixed; top:5px; right:5px; z-index:2147483647; opacity:0.7;\'>Close jSQLMyAdmin</button>' ) ;
254307 $ ( '#closejSQLMyAdmin' ) . button ( { icons : { primary : "ui-icon-closethick" } } ) ;
@@ -268,32 +321,32 @@ void(function () {
268321 $ ( '#openjSQLMyAdmin' ) . click ( togglejSQLMyAdmin ) ;
269322 }
270323 function loadresources ( resources ) {
271- return new Promise ( function ( callback ) {
324+ return new Promise ( ( callback ) => {
272325 ( function recurse ( ) {
273326 if ( ! resources . length ) {
274327 callback ( ) ;
275328 return ;
276329 }
277- var resource = resources . shift ( ) ;
278- for ( var i = resource . css . length ; i -- ; )
330+ let resource = resources . shift ( ) ;
331+ for ( let i = resource . css . length ; i -- ; )
279332 document . getElementsByTagName ( 'head' ) [ 0 ] . insertAdjacentHTML ( 'beforeend' , '<link rel=\'stylesheet\' href=\'' + resource . css [ i ] + '\'>' ) ;
280333 ( function innerRecurse ( ) {
281334 if ( ! resource . js . length ) {
282335 recurse ( ) ;
283336 return ;
284337 }
285- var src = resource . js . shift ( ) ;
286- var script = document . createElement ( 'script' ) ;
338+ let src = resource . js . shift ( ) ;
339+ let script = document . createElement ( 'script' ) ;
287340 script . type = 'text/javascript' ;
288341 if ( script . readyState ) { //IE
289- script . onreadystatechange = function ( ) {
342+ script . onreadystatechange = ( ) => {
290343 if ( script . readyState == 'loaded' || script . readyState == 'complete' ) {
291344 script . onreadystatechange = null ;
292345 setTimeout ( innerRecurse , 1000 ) ;
293346 }
294347 } ;
295348 } else { //Others
296- script . onload = function ( ) {
349+ script . onload = ( ) => {
297350 setTimeout ( innerRecurse , 1000 ) ;
298351 } ;
299352 }
0 commit comments