X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Frules.js;h=02d3a0ca40ad7123db0e715f344c88a10db7b104;hb=59d58d7da742c937bca80c2102c2e72cc7d6e840;hp=718021d0bec32e305eaea2beeac6e5d694c8e137;hpb=cf1303697774a12ef9bb154014a38797716944cf;p=vchess.git
diff --git a/public/javascripts/components/rules.js b/public/javascripts/components/rules.js
index 718021d0..02d3a0ca 100644
--- a/public/javascripts/components/rules.js
+++ b/public/javascripts/components/rules.js
@@ -1,71 +1,32 @@
+// Load rules on variant page
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(null); //TODO: or just 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";
- for (let j=startY; j>=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],
+ };
},
},
})