Fix problems table height
[vchess.git] / client / src / views / Problems.vue
index 152e455..338eaaf 100644 (file)
@@ -72,7 +72,7 @@ main
   .row(v-else)
     .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
       #controls
-        button#newProblem(onClick="window.doClick('modalNewprob')")
+        button#newProblem(@click="prepareNewProblem()")
           | {{ st.tr["New problem"] }}
         label(for="checkboxMine") {{ st.tr["My problems"] }}
         input#checkboxMine(
@@ -86,7 +86,7 @@ main
             :value="v.id"
           )
             | {{ v.name }}
-      table
+      table#tProblems
         tr
           th {{ st.tr["Variant"] }}
           th {{ st.tr["Instructions"] }}
@@ -159,7 +159,6 @@ export default {
       let names = {};
       this.problems.forEach(p => {
         if (p.uid != this.st.user.id) names[p.uid] = "";
-        //unknwon for now
         else p.uname = this.st.user.name;
       });
       const showOneIfPid = () => {
@@ -171,7 +170,10 @@ export default {
           res2.users.forEach(u => {
             names[u.id] = u.name;
           });
-          this.problems.forEach(p => (p.uname = names[p.uid]));
+          this.problems.forEach(p => {
+            if (!p.uname)
+              p.uname = names[p.uid];
+          });
           showOneIfPid();
         });
       } else showOneIfPid();
@@ -290,6 +292,10 @@ export default {
         this.showOne = true;
       });
     },
+    prepareNewProblem: function() {
+      this.resetCurProb();
+      window.doClick("modalNewprob");
+    },
     sendProblem: function() {
       const error = checkProblem(this.curproblem);
       if (error) {
@@ -306,23 +312,23 @@ export default {
           if (edit) {
             let editedP = this.problems.find(p => p.id == this.curproblem.id);
             this.copyProblem(this.curproblem, editedP);
+            this.showProblem(editedP);
           }
           else {
-            // New problem
             let newProblem = Object.assign({}, this.curproblem);
             newProblem.id = ret.id;
             newProblem.uid = this.st.user.id;
             newProblem.uname = this.st.user.name;
             this.problems = [newProblem].concat(this.problems);
-            this.resetCurProb();
           }
-          this.infoMsg = "";
           document.getElementById("modalNewprob").checked = false;
+          this.infoMsg = "";
         }
       );
     },
     editProblem: function(prob) {
-      if (!prob.diag) this.setDiagram(prob); //V is loaded at this stage
+      // prob.diag might correspond to some other problem or be empty:
+      this.setDiagram(prob); //V is loaded at this stage
       this.copyProblem(prob, this.curproblem);
       window.doClick("modalNewprob");
     },
@@ -353,6 +359,9 @@ textarea
   margin: 0 auto
   max-width: 400px
 
+table#tProblems
+  max-height: 100%
+
 #controls
   margin: 0
   width: 100%