X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Frules.js;h=829bf3b11754fe9c045d1e95dcd8dca3ee3ad5da;hb=7931e479adf93c87771ded1892a0873af72ae46d;hp=e7af056aeacdb3d9ce94637e851a68e662512260;hpb=1d184b4c016a645228251ce984d4c980e60420b0;p=vchess.git diff --git a/public/javascripts/components/rules.js b/public/javascripts/components/rules.js index e7af056a..829bf3b1 100644 --- a/public/javascripts/components/rules.js +++ b/public/javascripts/components/rules.js @@ -1,3 +1,4 @@ +// Load rules on variant page Vue.component('my-rules', { data: function() { return { content: "" }; @@ -5,67 +6,22 @@ Vue.component('my-rules', { template: `
`, mounted: function() { // AJAX request to get rules content (plain text, HTML) - let xhr = new XMLHttpRequest(); - let self = this; - xhr.onreadystatechange = function() { - if (this.readyState == 4 && this.status == 200) - { - let replaceByDiag = (match, p1, p2) => { return self.drawDiag(p2); }; - self.content = xhr.responseText.replace(/(fen:)([^:]*):/g, replaceByDiag); - } - }; - xhr.open("GET", "/rules/" + variant, true); - xhr.setRequestHeader('X-Requested-With', "XMLHttpRequest"); - xhr.send(null); //TODO: or just xhr.send() ? + ajax("/rules/" + variant, "GET", response => { + let replaceByDiag = (match, p1, p2) => { + const args = this.parseFen(p2); + return getDiagram(args); + }; + this.content = response.replace(/(fen:)([^:]*):/g, replaceByDiag); + }); }, methods: { - drawDiag: function(fen) { - let [sizeX,sizeY] = VariantRules.size; - let fenParts = fen.split(" "); - // Obtain array of pieces images names - let board = VariantRules.GetBoard(fenParts[0]); - let orientation = "w"; - if (fenParts.length >= 2) - orientation = fenParts[1]; - let markArray = []; - if (fenParts.length >= 3) - { - let marks_str = fenParts[2]; - // Turn (human) marks into coordinates - markArray = doubleArray(sizeX, sizeY, false); - let marks = marks_str.split(","); - for (let i=0; i=0 && i=0 && j"; - if (markArray.length>0 && markArray[i][j]) - boardDiv += ""; - if (board[i][j] != VariantRules.EMPTY) - { - boardDiv += ""; - } - boardDiv += ""; - } - boardDiv += ""; - } - return boardDiv; + parseFen(fen) { + const fenParts = fen.split(" "); + return { + position: fenParts[0], + marks: fenParts[1], + orientation: fenParts[2], + }; }, }, })