add a matrix dump endpoint, and a page to display all the matrices
This commit is contained in:
		
							parent
							
								
									2d4ce38a20
								
							
						
					
					
						commit
						ae251bf830
					
				
							
								
								
									
										24
									
								
								app/app.py
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								app/app.py
									
									
									
									
									
								
							@ -4,14 +4,18 @@ from flask import Flask
 | 
				
			|||||||
from flask_cors import CORS
 | 
					from flask_cors import CORS
 | 
				
			||||||
from flask_restx import Api, Resource
 | 
					from flask_restx import Api, Resource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from app.functions.role_physical_attack import roll_physical_attack
 | 
					from .functions.roll_dices import roll_dices
 | 
				
			||||||
 | 
					from .functions.role_physical_attack import roll_physical_attack
 | 
				
			||||||
 | 
					from .functions.roll_mental_attack import roll_mental_attack
 | 
				
			||||||
from .functions.build_character_sheet import build_character_sheet
 | 
					from .functions.build_character_sheet import build_character_sheet
 | 
				
			||||||
from .functions.roll_ability_scores import roll_ability_scores
 | 
					from .functions.roll_ability_scores import roll_ability_scores
 | 
				
			||||||
from .functions.roll_ability_check import roll_ability_check
 | 
					from .functions.roll_ability_check import roll_ability_check
 | 
				
			||||||
from .functions.roll_dices import roll_dices
 | 
					 | 
				
			||||||
from .functions.roll_encounter import roll_encounter
 | 
					from .functions.roll_encounter import roll_encounter
 | 
				
			||||||
from .functions.roll_mental_attack import roll_mental_attack
 | 
					 | 
				
			||||||
from .functions.roll_mutations import roll_mutations
 | 
					from .functions.roll_mutations import roll_mutations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .tables.physattack import AttackerWeaponClassMatrix, AttackerHitDiceMatrix
 | 
				
			||||||
 | 
					from .tables.mentattack import MentalAttackMatrix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models.models import dice_model, ability_model, hp_model, character_model, encounter_model, ma_model, \
 | 
					from .models.models import dice_model, ability_model, hp_model, character_model, encounter_model, ma_model, \
 | 
				
			||||||
    mutation_model, check_model, pa_model
 | 
					    mutation_model, check_model, pa_model
 | 
				
			||||||
from .schemas.schemas import DiceSchema, CharacterSchema, EncounterSchema, MentalAttackSchema, AbilitySchema, \
 | 
					from .schemas.schemas import DiceSchema, CharacterSchema, EncounterSchema, MentalAttackSchema, AbilitySchema, \
 | 
				
			||||||
@ -215,5 +219,19 @@ class GenerateCharacter(Resource):
 | 
				
			|||||||
        return build_character_sheet(chartype), 200
 | 
					        return build_character_sheet(chartype), 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@api.route('/matrices/dump', methods=['GET'])
 | 
				
			||||||
 | 
					class DumpMatrices(Resource):
 | 
				
			||||||
 | 
					    def get(self):
 | 
				
			||||||
 | 
					        awc_table = AttackerWeaponClassMatrix().get_matrix().to_json(orient='index')
 | 
				
			||||||
 | 
					        ahd_table = AttackerHitDiceMatrix().get_matrix().to_json(orient='index')
 | 
				
			||||||
 | 
					        mat_table = MentalAttackMatrix().get_matrix().to_json(orient='index')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            "Weapon Attack Table": awc_table,
 | 
				
			||||||
 | 
					            "Non-Weapon Attack Table": ahd_table,
 | 
				
			||||||
 | 
					            "Mental Attack Table": mat_table
 | 
				
			||||||
 | 
					        }, 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    app.run()
 | 
					    app.run()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										98
									
								
								web/display_tables.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								web/display_tables.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,98 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <title>Table View</title>
 | 
				
			||||||
 | 
					    <style>
 | 
				
			||||||
 | 
					        table {
 | 
				
			||||||
 | 
					            border-collapse: collapse;
 | 
				
			||||||
 | 
					            width: 100%;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        th, td {
 | 
				
			||||||
 | 
					            text-align: left;
 | 
				
			||||||
 | 
					            padding: 8px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        tr:nth-child(even){background-color: #f2f2f2}
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					    <table id="yield-table">
 | 
				
			||||||
 | 
					        <thead></thead>
 | 
				
			||||||
 | 
					        <tbody></tbody>
 | 
				
			||||||
 | 
					    </table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function createTable(data) {
 | 
				
			||||||
 | 
					            const table = document.createElement('table');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Get all row and column indexes
 | 
				
			||||||
 | 
					            const colIndexes = Object.keys(data[Object.keys(data)[0]]);
 | 
				
			||||||
 | 
					            const rowIndexes = Object.keys(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const thead = document.createElement('thead');
 | 
				
			||||||
 | 
					            const hRow = document.createElement('tr');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Empty cell in the top-left corner
 | 
				
			||||||
 | 
					            hRow.appendChild(document.createElement('th'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            colIndexes.forEach(colIndex => {
 | 
				
			||||||
 | 
					                const cell = document.createElement('th');
 | 
				
			||||||
 | 
					                cell.textContent = colIndex;
 | 
				
			||||||
 | 
					                hRow.appendChild(cell);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            thead.appendChild(hRow);
 | 
				
			||||||
 | 
					            table.appendChild(thead);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const tbody = document.createElement('tbody');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            rowIndexes.forEach(rowIndex => {
 | 
				
			||||||
 | 
					                const tRow = document.createElement('tr');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const rowHeader = document.createElement('th');
 | 
				
			||||||
 | 
					                rowHeader.textContent = rowIndex;
 | 
				
			||||||
 | 
					                tRow.appendChild(rowHeader);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                colIndexes.forEach(colIndex => {
 | 
				
			||||||
 | 
					                    const cell = document.createElement('td');
 | 
				
			||||||
 | 
					                    cell.textContent = data[rowIndex][colIndex];
 | 
				
			||||||
 | 
					                    tRow.appendChild(cell);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                tbody.appendChild(tRow);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            table.appendChild(tbody);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return table;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function parseAndRenderData(data) {
 | 
				
			||||||
 | 
					            for (const [tableName, tableData] of Object.entries(data)) {
 | 
				
			||||||
 | 
					                // Parse JSON into object
 | 
				
			||||||
 | 
					                const parsedData = JSON.parse(tableData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const tableTitle = document.createElement('H2');
 | 
				
			||||||
 | 
					                tableTitle.innerHTML = tableName;
 | 
				
			||||||
 | 
					                document.body.appendChild(tableTitle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Create table and header
 | 
				
			||||||
 | 
					                const table = createTable(parsedData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Append table to the body of the HTML
 | 
				
			||||||
 | 
					                document.body.appendChild(table);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        document.addEventListener('DOMContentLoaded', function () {
 | 
				
			||||||
 | 
					            fetch('https://gammaworld.gmgauthier.com/matrices/dump')
 | 
				
			||||||
 | 
					                .then(response => response.json())
 | 
				
			||||||
 | 
					                .then(data => {
 | 
				
			||||||
 | 
					                    parseAndRenderData(data)
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    </script>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
@ -21,6 +21,7 @@
 | 
				
			|||||||
    <button id="physicalattack">Physical Attack!</button>
 | 
					    <button id="physicalattack">Physical Attack!</button>
 | 
				
			||||||
    <button id="mentalattack">Mental Attack!</button>
 | 
					    <button id="mentalattack">Mental Attack!</button>
 | 
				
			||||||
    <button id="chargen">Characters</button>
 | 
					    <button id="chargen">Characters</button>
 | 
				
			||||||
 | 
					    <button id="tables">Show Tables</button>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<hr/>
 | 
					<hr/>
 | 
				
			||||||
@ -30,6 +31,10 @@
 | 
				
			|||||||
    document.addEventListener('DOMContentLoaded', function () {
 | 
					    document.addEventListener('DOMContentLoaded', function () {
 | 
				
			||||||
        loadContent("intro.html");
 | 
					        loadContent("intro.html");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        document.getElementById("tables").addEventListener("click", function () {
 | 
				
			||||||
 | 
					            loadContent("display_tables.html?t=" + new Date().getTime());
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        document.getElementById("dieroller").addEventListener("click", function () {
 | 
					        document.getElementById("dieroller").addEventListener("click", function () {
 | 
				
			||||||
            loadContent("rolldice.html?t=" + new Date().getTime());
 | 
					            loadContent("rolldice.html?t=" + new Date().getTime());
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user