Milimetric has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/397995 )

Change subject: Fix infinite loop
......................................................................

Fix infinite loop

For the future, the flow of events and data in WikiSelector is too
circular.  The init calls get triggered when they're not necessary,
after state changes.

Also, the way the hidden div is added with an id is not great, that
should at least have a class and in general should be added relative to
the component in case multiple versions of the same component are used
on the page.

Bug: T182700
Change-Id: I1dd5f4bce62caaf14215b4fa158d030f53e8f084
---
M src/components/WikiSelector.vue
1 file changed, 18 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/wikistats2 
refs/changes/95/397995/1

diff --git a/src/components/WikiSelector.vue b/src/components/WikiSelector.vue
index c317788..bf8c50d 100644
--- a/src/components/WikiSelector.vue
+++ b/src/components/WikiSelector.vue
@@ -31,6 +31,8 @@
 </template>
 
 <script>
+import Vue from 'vue';
+
 import sitematrix from '../apis/sitematrix';
 import SearchResults from './widgets/SearchResults';
 import _ from '../lodash-custom-bundle';
@@ -114,26 +116,33 @@
     methods: {
         initWithCurrentProject () {
             const siteProject = this.$store.state.project;
-            if (siteProject === "") return;
+            if (siteProject === '') { return; }
+
             sitematrix.getByProjectFamily().then(byFamily => {
                 this.byFamily = byFamily;
 
                 this.family = byFamily.find((family) => {
                     this.project = family.projects.find((project) => {
-                        return project.code === siteProject
+                        return project.code === siteProject;
                     });
-                    this.close();
                     return this.project;
-                })
-                this.searchDisplay = this.family.title + ' - ' + 
this.project.title;
-                this.mode = modes.project;
-                this.searchData = this.family.projects;
+                });
+                if (this.family && this.project) {
+                    this.searchDisplay = this.family.title + ' - ' + 
this.project.title;
+                    this.mode = modes.project;
+                    this.searchData = this.family.projects;
+                } else {
+                    this.searchDisplay = 'CLOSED: ' + (siteProject);
+                    this.mode = modes.family;
+                    this.searchData = byFamily;
+                }
+                Vue.nextTick(() => this.close());
             });
         },
         initTextWidthMeasurer () {
-            if (!$("#wikiselector-hidden-measurer").length) {
+            if (!$('#wikiselector-hidden-measurer').length) {
                 let div = document.createElement('div');
-                div.setAttribute("id", "wikiselector-hidden-measurer");
+                div.setAttribute('id', 'wikiselector-hidden-measurer');
                 document.body.appendChild(div);
             }
         },

-- 
To view, visit https://gerrit.wikimedia.org/r/397995
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1dd5f4bce62caaf14215b4fa158d030f53e8f084
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikistats2
Gerrit-Branch: master
Gerrit-Owner: Milimetric <dandree...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to