X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Frules.js;h=e9df1ecc0c0a1699d5d00c32beb4b8b8fb5c5a9f;hb=582df3497b0f91dd4b645386a059eac9e98da1bb;hp=fd05d44defd62f80646d22453678544653d93cfd;hpb=9234226104764b91df9d677fb360ad538b98510c;p=vchess.git diff --git a/public/javascripts/components/rules.js b/public/javascripts/components/rules.js index fd05d44d..e9df1ecc 100644 --- a/public/javascripts/components/rules.js +++ b/public/javascripts/components/rules.js @@ -1,71 +1,58 @@ // Load rules on variant page Vue.component('my-rules', { + props: ["settings"], data: function() { - return { content: "" }; + return { + content: "", + display: "rules", + mode: "computer", + mycolor: "w", + allowMovelist: true, + fen: "", + }; }, - template: `
`, + + // TODO: third button "see a sample game" (comp VS comp) + + 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] = 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], + shadow: fenParts[3], + }; + }, + startComputerGame: function() { + this.fen = V.GenRandInitFen(); + this.display = "computer"; }, }, })