- previewNewProblem: function() {
- if (!V.IsGoodFen(this.newProblem.fen))
- return alert(translations["Bad FEN string"]);
- if (this.newProblem.instructions.trim().length == 0)
+ fetchProblems: function(type, direction) {
+ let problems = (type == "others" ? this.problems : this.myProblems);
+ // "last datetime" set at a value OK for an empty initial array
+ let last_dt = (direction=="forward" ? 0 : Number.MAX_SAFE_INTEGER);
+ if (problems.length > 0)
+ {
+ // Search for newest date (or oldest)
+ last_dt = problems[0].added;
+ for (let i=1; i<problems.length; i++)
+ {
+ if ((direction == "forward" && problems[i].added > last_dt) ||
+ (direction == "backward" && problems[i].added < last_dt))
+ {
+ last_dt = problems[i].added;
+ }
+ }
+ }
+ ajax(
+ "/problems/" + variant.id,
+ "GET",
+ {
+ type: type,
+ direction: direction,
+ last_dt: last_dt,
+ },
+ response => {
+ if (response.problems.length > 0)
+ {
+ Array.prototype.push.apply(problems,
+ response.problems.sort((p1,p2) => { return p2.added - p1.added; }));
+ // If one list is empty but not the other, show the non-empty
+ const otherArray = (type == "mine" ? this.problems : this.myProblems);
+ if (problems.length > 0 && otherArray.length == 0)
+ this.display = type;
+ }
+ }
+ );
+ },
+ previewProblem: function() {
+ if (!V.IsGoodFen(this.modalProb.fen))
+ return alert(translations["Bad FEN description"]);
+ if (this.modalProb.instructions.trim().length == 0)