X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Frules.js;h=02d3a0ca40ad7123db0e715f344c88a10db7b104;hp=c3107a675a11e9716d2fa30b915185e236784786;hb=8d7e2786f5a67a1b9a77c742d7951e0efbe8747d;hpb=0b7d99ecbb5dedc02cd96c457b5fc2962db9b297 diff --git a/public/javascripts/components/rules.js b/public/javascripts/components/rules.js index c3107a67..02d3a0ca 100644 --- a/public/javascripts/components/rules.js +++ b/public/javascripts/components/rules.js @@ -3,69 +3,30 @@ Vue.component('my-rules', { data: function() { return { content: "" }; }, - template: `
`, + 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(); + ajax("/rules/" + variant.name, "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] = [V.size.x,V.size.y]; - 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 (board[i][j] != VariantRules.EMPTY) - { - boardDiv += ""; - } - if (markArray.length>0 && markArray[i][j]) - boardDiv += ""; - boardDiv += ""; - } - boardDiv += ""; - } - return boardDiv; + parseFen(fen) { + const fenParts = fen.split(" "); + return { + position: fenParts[0], + marks: fenParts[1], + orientation: fenParts[2], + shadow: fenParts[3], + }; }, }, })