61c726eb51b5545763e2ffb6bd23ded707e40143
1 // Assuming V(ariantRules) class is loaded.
2 // args: object with position (mandatory), orientation, marks (optional)
3 function getDiagram(args
)
5 const [sizeX
,sizeY
] = [V
.size
.x
,V
.size
.y
];
6 // Obtain array of pieces images names
7 const board
= VariantRules
.GetBoard(args
.position
);
8 const orientation
= args
.orientation
|| "w";
12 // Turn (human) marks into coordinates
13 markArray
= doubleArray(sizeX
, sizeY
, false);
14 let squares
= args
.marks
.split(",");
15 for (let i
=0; i
<squares
.length
; i
++)
17 const res
= /^([a-z]+)([0-9]+)$/i.exec(squares
[i
]);
18 const coords
= V
.SquareToCoords(res
);
19 markArray
[coords
.x
][coords
.y
] = true;
23 const [startX
,startY
,inc
] = orientation
== 'w'
25 : [sizeX
-1, sizeY
-1, -1];
26 for (let i
=startX
; i
>=0 && i
<sizeX
; i
+=inc
)
28 boardDiv
+= "<div class='row'>";
29 for (let j
=startY
; j
>=0 && j
<sizeY
; j
+=inc
)
31 boardDiv
+= "<div class='board board" + sizeY
+ " " +
32 ((i
+j
)%2==0 ? "light-square-diag" : "dark-square-diag") + "'>";
33 if (board
[i
][j
] != V
.EMPTY
)
35 boardDiv
+= "<img src='/images/pieces/" +
36 V
.getPpath(board
[i
][j
]) + ".svg' class='piece'/>";
38 if (!!args
.marks
&& markArray
[i
][j
])
39 boardDiv
+= "<img src='/images/mark.svg' class='mark-square'/>";