11
2- /**
3- * MongoDB PHP GUI namespace.
4- *
5- * @type {object }
6- */
7- var MPG = { } ;
8-
9- /**
10- * Name of current database.
11- *
12- * @type {string }
13- */
14- MPG . databaseName = '' ;
15-
16- /**
17- * Name of current collection.
18- *
19- * @type {string }
20- */
21- MPG . collectionName = '' ;
22-
232/**
243 * Field names of current collection.
254 *
@@ -34,85 +13,6 @@ MPG.collectionFields = [];
3413 */
3514MPG . collectionIndexes = [ ] ;
3615
37- /**
38- * Helpers sub-namespace.
39- *
40- * @type {object }
41- */
42- MPG . helpers = { } ;
43-
44- /**
45- * Does an ajax request.
46- *
47- * @param {string } method
48- * @param {string } url
49- * @param {function } successCallback
50- * @param {?string } body
51- *
52- * @returns {void }
53- */
54- MPG . helpers . doAjaxRequest = function ( method , url , successCallback , body ) {
55-
56- var xhr = new XMLHttpRequest ( ) ;
57-
58- xhr . addEventListener ( 'readystatechange' , function ( ) {
59-
60- if ( this . readyState === 4 ) {
61- if ( this . status === 200 ) {
62- successCallback ( this . responseText ) ;
63- } else {
64- window . alert ( 'Error: ' + JSON . parse ( this . responseText ) . error . message ) ;
65- }
66- }
67-
68- } ) ;
69-
70- xhr . open ( method , url ) ;
71- xhr . send ( body ) ;
72-
73- } ;
74-
75- /**
76- * Reloads collections of a specific database.
77- *
78- * @param {string } databaseName
79- *
80- * @returns {void }
81- */
82- MPG . reloadCollections = function ( databaseName ) {
83-
84- var requestBody = { 'databaseName' : databaseName } ;
85-
86- MPG . helpers . doAjaxRequest (
87- 'POST' , MPG_BASE_URL + '/ajaxDatabaseListCollections' , function ( response ) {
88-
89- var collectionsList = document . querySelector ( '#mpg-collections-list' ) ;
90-
91- collectionsList . innerHTML = '' ;
92- MPG . collectionName = '' ;
93-
94- JSON . parse ( response ) . forEach ( function ( collectionName ) {
95-
96- collectionsList . innerHTML +=
97- '<li class="collection-name">'
98- + '<i class="fa fa-file-text" aria-hidden="true"></i> '
99- + '<a class="mpg-collection-link" '
100- + 'data-collection-name="' + collectionName
101- + '" href="#' + MPG . databaseName + '/' + collectionName + '">'
102- + collectionName
103- + '</a>'
104- + '</li>' ;
105-
106- } ) ;
107-
108- MPG . eventListeners . addCollections ( ) ;
109-
110- } ,
111- JSON . stringify ( requestBody )
112- ) ;
113-
114- } ;
115-
11616/**
11717 * Reloads fields of current collection.
11818 *
@@ -224,26 +124,6 @@ MPG.reloadCollectionIndexes = function() {
224124
225125} ;
226126
227- /**
228- * Event listeners sub-namespace.
229- *
230- * @type {object }
231- */
232- MPG . eventListeners = { } ;
233-
234- /**
235- * Adds an event listener on "Menu toggle" button.
236- *
237- * @returns {void }
238- */
239- MPG . eventListeners . addMenuToggle = function ( ) {
240-
241- document . querySelector ( '#menu-toggle-button' ) . addEventListener ( 'click' , function ( _event ) {
242- document . querySelector ( '.navbar' ) . classList . toggle ( 'menu-expanded' ) ;
243- } ) ;
244-
245- } ;
246-
247127/**
248128 * Adds an event listener on each database.
249129 *
@@ -256,6 +136,7 @@ MPG.eventListeners.addDatabases = function() {
256136 databaseLink . addEventListener ( 'click' , function ( _event ) {
257137
258138 MPG . databaseName = databaseLink . dataset . databaseName ;
139+ MPG . helpers . completeNavLinks ( '#' + MPG . databaseName ) ;
259140
260141 document . querySelectorAll ( '.mpg-database-link' ) . forEach ( function ( databaseLink ) {
261142 databaseLink . classList . remove ( 'font-weight-bold' ) ;
@@ -288,6 +169,7 @@ MPG.eventListeners.addCollections = function() {
288169 collectionLink . addEventListener ( 'click' , function ( _event ) {
289170
290171 MPG . collectionName = collectionLink . dataset . collectionName ;
172+ MPG . helpers . completeNavLinks ( '#' + MPG . databaseName + '/' + MPG . collectionName ) ;
291173
292174 document . querySelectorAll ( '.mpg-collection-link' ) . forEach ( function ( collectionLink ) {
293175 collectionLink . classList . remove ( 'font-weight-bold' ) ;
@@ -304,6 +186,24 @@ MPG.eventListeners.addCollections = function() {
304186
305187 } ) ;
306188
189+ if ( MPG . toDoList . reselectCollection !== '' ) {
190+
191+ var collectionSelector = '.mpg-collection-link' + '[data-collection-name="'
192+ + MPG . toDoList . reselectCollection + '"]' ;
193+
194+ var collection = document . querySelector ( collectionSelector ) ;
195+
196+ if ( collection ) {
197+ collection . click ( ) ;
198+ } else {
199+ window . alert ( 'Error: Collection not found. Select another one.' ) ;
200+ window . location . hash = '' ;
201+ }
202+
203+ MPG . toDoList . reselectCollection = '' ;
204+
205+ }
206+
307207} ;
308208
309209/**
@@ -403,27 +303,6 @@ MPG.eventListeners.addDropIndex = function() {
403303
404304} ;
405305
406- /**
407- * Adds an event listener on dismissible alerts.
408- *
409- * @returns {void }
410- */
411- MPG . eventListeners . addDismissibleAlerts = function ( ) {
412-
413- document . querySelectorAll ( '.alert [data-dismiss="alert"]' )
414- . forEach ( function ( alertCloseButton ) {
415-
416- alertCloseButton . addEventListener ( 'click' , function ( event ) {
417-
418- var alert = document . getElementById ( event . currentTarget . dataset . alertId ) ;
419- alert . classList . add ( 'd-none' ) ;
420-
421- } ) ;
422-
423- } ) ;
424-
425- } ;
426-
427306// When document is ready:
428307window . addEventListener ( 'DOMContentLoaded' , function ( _event ) {
429308
@@ -432,4 +311,6 @@ window.addEventListener('DOMContentLoaded', function(_event) {
432311 MPG . eventListeners . addCreateIndex ( ) ;
433312 MPG . eventListeners . addDismissibleAlerts ( ) ;
434313
314+ MPG . helpers . navigateOnSamePage ( ) ;
315+
435316} ) ;
0 commit comments