Fix: Games and Game page save and navigation.

This commit is contained in:
2026-02-10 19:21:22 +00:00
parent 81fdfffbe5
commit 29ddd1ded0
7 changed files with 86 additions and 95 deletions

View File

@@ -92,8 +92,8 @@ def save_game():
form_filters = Filters_MTG_Game.from_json(data.get(Model_View_MTG_Base.FLAG_FORM_FILTERS, {})) form_filters = Filters_MTG_Game.from_json(data.get(Model_View_MTG_Base.FLAG_FORM_FILTERS, {}))
if not form_filters.validate_on_submit(): if not form_filters.validate_on_submit():
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}'
}) })
form_filters = Filters_MTG_Game.get_default() form_filters = Filters_MTG_Game.get_default()
""" """
@@ -106,8 +106,8 @@ def save_game():
games = data.get(Model_View_MTG_Base.FLAG_GAME, []) games = data.get(Model_View_MTG_Base.FLAG_GAME, [])
if len(games) == 0: if len(games) == 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'No games to save.' , Model_View_MTG_Base.FLAG_MESSAGE: 'No games to save.'
}) })
Helper_App.console_log(f"Games to save: {games}") Helper_App.console_log(f"Games to save: {games}")
@@ -118,20 +118,18 @@ def save_game():
if len(errors) > 0: if len(errors) > 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error saving games.\n{Model_View_MTG_Game.convert_list_objects_to_json(errors)}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error saving games.\n{Model_View_MTG_Game.convert_list_objects_to_json(errors)}'
}) })
"""
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS
Model_View_MTG_Base.FLAG_DATA: Model_View_MTG_Base.convert_list_objects_to_json(model_return.games) , Model_View_MTG_Base.ATTR_GAME_ID: game_id
}) })
""" # return redirect(url_for('routes_mtg_game.game_detail', game_id = game_id))
return redirect(url_for('routes_mtg_game.game_detail', game_id = game_id))
except Exception as e: except Exception as e:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'
}) })
@@ -155,13 +153,12 @@ def get_game_players(game_id):
Helper_App.console_log(f'{_m}: game_id={game_id}') Helper_App.console_log(f'{_m}: game_id={game_id}')
try: try:
datastore = DataStore_MTG() datastore = DataStore_MTG()
datastore_user = DataStore_User()
user_session = datastore.get_user_session() user_session = datastore.get_user_session()
if not user_session.get_is_logged_in(): if not user_session.get_is_logged_in():
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'User not logged in' , Model_View_MTG_Base.FLAG_MESSAGE: 'User not logged in'
}), 401 }), 401
# Get players for this game # Get players for this game
@@ -172,21 +169,21 @@ def get_game_players(game_id):
if len(errors) > 0: if len(errors) > 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error fetching players: {errors}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error fetching players: {errors}'
}), 500 }), 500
players_json = [p.to_json() for p in players] players_json = [p.to_json() for p in players]
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS
Model_View_MTG_Base.FLAG_DATA: players_json , Model_View_MTG_Base.FLAG_DATA: players_json
}) })
except Exception as e: except Exception as e:
Helper_App.console_log(f'{_m} Error: {str(e)}') Helper_App.console_log(f'{_m} Error: {str(e)}')
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error: {str(e)}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error: {str(e)}'
}), 500 }), 500
@@ -201,8 +198,8 @@ def get_many_game_round(game_id):
if not user_session.get_is_logged_in(): if not user_session.get_is_logged_in():
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'User not logged in' , Model_View_MTG_Base.FLAG_MESSAGE: 'User not logged in'
}), 401 }), 401
# Get rounds for this game # Get rounds for this game
@@ -213,21 +210,21 @@ def get_many_game_round(game_id):
if len(errors) > 0: if len(errors) > 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error fetching rounds: {errors}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error fetching rounds: {errors}'
}), 500 }), 500
rounds_json = [r.to_json() for r in rounds] rounds_json = [r.to_json() for r in rounds]
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS
Model_View_MTG_Base.FLAG_DATA: rounds_json , Model_View_MTG_Base.FLAG_DATA: rounds_json
}) })
except Exception as e: except Exception as e:
Helper_App.console_log(f'{_m} Error: {str(e)}') Helper_App.console_log(f'{_m} Error: {str(e)}')
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error: {str(e)}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error: {str(e)}'
}), 500 }), 500
@@ -242,8 +239,8 @@ def get_many_game_player_damage(game_id):
if not user_session.get_is_logged_in(): if not user_session.get_is_logged_in():
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'User not logged in' , Model_View_MTG_Base.FLAG_MESSAGE: 'User not logged in'
}), 401 }), 401
parameters_damage = Parameters_MTG_Game_Round_Player_Damage.get_default(user_session.user_id) parameters_damage = Parameters_MTG_Game_Round_Player_Damage.get_default(user_session.user_id)
@@ -253,21 +250,21 @@ def get_many_game_player_damage(game_id):
if len(errors) > 0: if len(errors) > 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error fetching damage records: {errors}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error fetching damage records: {errors}'
}), 500 }), 500
damage_records = [d.to_json() for d in damages] damage_records = [d.to_json() for d in damages]
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS
Model_View_MTG_Base.FLAG_DATA: damage_records , Model_View_MTG_Base.FLAG_DATA: damage_records
}) })
except Exception as e: except Exception as e:
Helper_App.console_log(f'{_m} Error: {str(e)}') Helper_App.console_log(f'{_m} Error: {str(e)}')
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error: {str(e)}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error: {str(e)}'
}), 500 }), 500
@@ -295,8 +292,8 @@ def save_game_player():
players = data.get(Model_View_MTG_Base.FLAG_PLAYER, []) players = data.get(Model_View_MTG_Base.FLAG_PLAYER, [])
if len(players) == 0: if len(players) == 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'No players to save.' , Model_View_MTG_Base.FLAG_MESSAGE: 'No players to save.'
}) })
objs_player = [] objs_player = []
@@ -308,18 +305,18 @@ def save_game_player():
if len(errors) > 0: if len(errors) > 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error saving players.\n{Model_View_MTG_Game.convert_list_objects_to_json(errors)}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error saving players.\n{Model_View_MTG_Game.convert_list_objects_to_json(errors)}'
}) })
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS if success else Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS if success else Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_DATA: None , Model_View_MTG_Base.FLAG_DATA: None
}) })
# return redirect(url_for('routes_mtg_game.game_detail', game_id = game_id)) # return redirect(url_for('routes_mtg_game.game_detail', game_id = game_id))
except Exception as e: except Exception as e:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'
}) })
@routes_mtg_game.route(Model_View_MTG_Base.HASH_SAVE_MTG_GAME_ROUND_PLAYER_DAMAGE, methods=['POST']) @routes_mtg_game.route(Model_View_MTG_Base.HASH_SAVE_MTG_GAME_ROUND_PLAYER_DAMAGE, methods=['POST'])
@@ -336,8 +333,8 @@ def save_game_round_player_damage():
rounds = data.get(Model_View_MTG_Base.FLAG_ROUND, []) rounds = data.get(Model_View_MTG_Base.FLAG_ROUND, [])
if len(rounds) == 0: if len(rounds) == 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'No rounds to save.' , Model_View_MTG_Base.FLAG_MESSAGE: 'No rounds to save.'
}) })
objs_round = [] objs_round = []
@@ -349,8 +346,8 @@ def save_game_round_player_damage():
damages = data.get(Model_View_MTG_Base.FLAG_DAMAGE, []) damages = data.get(Model_View_MTG_Base.FLAG_DAMAGE, [])
if len(damages) == 0: if len(damages) == 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: 'No damages to save.' , Model_View_MTG_Base.FLAG_MESSAGE: 'No damages to save.'
}) })
objs_damage = [] objs_damage = []
@@ -363,16 +360,16 @@ def save_game_round_player_damage():
if len(errors) > 0: if len(errors) > 0:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Error saving round player damages.\n{Model_View_MTG_Game.convert_list_objects_to_json(errors)}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Error saving round player damages.\n{Model_View_MTG_Game.convert_list_objects_to_json(errors)}'
}) })
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS if success else Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_SUCCESS if success else Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_DATA: None , Model_View_MTG_Base.FLAG_DATA: None
}) })
# return redirect(url_for('routes_mtg_game.game_detail', game_id = game_id)) # return redirect(url_for('routes_mtg_game.game_detail', game_id = game_id))
except Exception as e: except Exception as e:
return jsonify({ return jsonify({
Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE, Model_View_MTG_Base.FLAG_STATUS: Model_View_MTG_Base.FLAG_FAILURE
Model_View_MTG_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}' , Model_View_MTG_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'
}) })

View File

@@ -148,7 +148,7 @@ BEGIN
, change_set_id , change_set_id
) )
VALUES ( VALUES (
game_id -- game_id v_game_id -- game_id
, v_notes -- notes , v_notes -- notes
, 1 -- display_order , 1 -- display_order
, TRUE -- active , TRUE -- active
@@ -158,7 +158,6 @@ BEGIN
, v_user_id -- updated_last_by_user_id , v_user_id -- updated_last_by_user_id
, v_change_set_id -- change_set_id , v_change_set_id -- change_set_id
) )
RETURNING game_id INTO v_game_id
; ;
ELSE ELSE
UPDATE tcg.public.TCG_MTG_Game GAME UPDATE tcg.public.TCG_MTG_Game GAME

View File

@@ -1918,7 +1918,7 @@ class PageMtgGame extends TableBasePage {
damageDisplay.classList.remove('lethal'); damageDisplay.classList.remove('lethal');
} }
const latestRoundId = PageMtgGame.getLatestRoundId(); const latestRoundId = PageMtgGame.getLatestRoundId();
const damageIndex = damageRecords.findIndex(damageRecord => damage[attrRoundId] == latestRoundId && damageRecord[attrPlayerId] == playerId && damageRecord[attrReceivedFromCommanderPlayerId] == sourceId); const damageIndex = damageRecords.findIndex(damageRecord => damageRecord[attrRoundId] == latestRoundId && damageRecord[attrPlayerId] == playerId && damageRecord[attrReceivedFromCommanderPlayerId] == sourceId);
damageRecords[damageIndex][flagHealthChange] -= amount; damageRecords[damageIndex][flagHealthChange] -= amount;
this.changeLife(playerId // playerId this.changeLife(playerId // playerId
, -amount // amount , -amount // amount
@@ -2058,18 +2058,18 @@ class PageMtgGame extends TableBasePage {
} }
} }
async saveGame() { async saveGame() {
const gameState = {
[flagPlayer]: players,
[flagRound]: rounds,
[flagDamage]: damageRecords
};
/* /*
const gameState = {
[flagPlayer]: players
, [flagRound]: rounds
, [flagDamage]: damageRecords
};
if (gameState[flagPlayer].length > 0) { if (gameState[flagPlayer].length > 0) {
localStorage.setItem(`mtgGame_${gameId}`, JSON.stringify(gameState)); localStorage.setItem(`mtgGame_${gameId}`, JSON.stringify(gameState));
PageMtgGame.showSaveIndicator(); PageMtgGame.showSaveIndicator();
} }
*/ */
const comment = 'Save players'; const comment = 'Save player damage';
const self = this; const self = this;
API.saveGameRoundPlayerDamages(rounds, damageRecords, null, comment).then(data => { API.saveGameRoundPlayerDamages(rounds, damageRecords, null, comment).then(data => {
if (data[flagStatus] == flagSuccess) { if (data[flagStatus] == flagSuccess) {
@@ -2140,13 +2140,13 @@ class PageMtgGames extends TableBasePage {
this.hookupTcgGames(); this.hookupTcgGames();
} }
hookupTcgGames() { hookupTcgGames() {
PageMtgGames.initGamesPage(); this.initGamesPage();
} }
static initGamesPage() { initGamesPage() {
// Initialize form submission // Initialize form submission
const newGameForm = document.getElementById('newGameForm'); const newGameForm = document.getElementById('newGameForm');
if (newGameForm) { if (newGameForm) {
newGameForm.addEventListener('submit', PageMtgGames.handleNewGameSubmit); newGameForm.addEventListener('submit', this.handleNewGameSubmit.bind(this)); // () => { this.handleNewGameSubmit.bind(this); });
} }
// Initialize filter form // Initialize filter form
@@ -2210,7 +2210,7 @@ class PageMtgGames extends TableBasePage {
} }
} }
} }
static async handleNewGameSubmit(e) { async handleNewGameSubmit(e) {
e.preventDefault(); e.preventDefault();
const form = e.target; const form = e.target;
const formData = new FormData(form); const formData = new FormData(form);
@@ -2233,13 +2233,18 @@ class PageMtgGames extends TableBasePage {
const games = [gameData]; const games = [gameData];
const comment = 'Create new game'; const comment = 'Create new game';
debugger; debugger;
// const self = this;
API.saveGame(games, form, comment).then(data => { API.saveGame(games, form, comment).then(data => {
if (data[flagStatus] == flagSuccess) { if (data[flagStatus] == flagSuccess) {
if (_verbose) { if (_verbose) {
utils_Utils.consoleLogIfNotProductionEnvironment('Records saved!'); utils_Utils.consoleLogIfNotProductionEnvironment('Records saved!');
utils_Utils.consoleLogIfNotProductionEnvironment('Data received:', data); utils_Utils.consoleLogIfNotProductionEnvironment('Data received:', data);
} }
this.callFilterTableContent(gameData.game_id); // this.callFilterTableContent(data[attrGameId]); // gameData.game_id
const gamePageHash = `${hashPageGame}/${data[attrGameId]}`;
let filtersJson = {};
this.leave();
API.goToHash(gamePageHash, filtersJson);
} else { } else {
utils_Utils.consoleLogIfNotProductionEnvironment("error: " + data[flagMessage]); utils_Utils.consoleLogIfNotProductionEnvironment("error: " + data[flagMessage]);
// OverlayError.show(data[flagMessage]); // OverlayError.show(data[flagMessage]);
@@ -2253,13 +2258,6 @@ class PageMtgGames extends TableBasePage {
submitBtn.disabled = false; submitBtn.disabled = false;
}); });
} }
callFilterTableContent(gameId) {
const gamePageHash = `${hashPageGame}/${gameId}`;
let filtersJson = {};
utils_Utils.consoleLogIfNotProductionEnvironment("callFilterTableContent");
this.leave();
API.goToHash(gamePageHash, filtersJson);
}
static handleFilterSubmit(e) { static handleFilterSubmit(e) {
// Let the form submit normally - it will reload with query params // Let the form submit normally - it will reload with query params
// You can add client-side filtering here if needed // You can add client-side filtering here if needed

File diff suppressed because one or more lines are too long

View File

@@ -438,7 +438,7 @@ export default class PageMtgGame extends TableBasePage {
const latestRoundId = PageMtgGame.getLatestRoundId(); const latestRoundId = PageMtgGame.getLatestRoundId();
const damageIndex = damageRecords.findIndex(damageRecord => ( const damageIndex = damageRecords.findIndex(damageRecord => (
damage[attrRoundId] == latestRoundId damageRecord[attrRoundId] == latestRoundId
&& damageRecord[attrPlayerId] == playerId && damageRecord[attrPlayerId] == playerId
&& damageRecord[attrReceivedFromCommanderPlayerId] == sourceId && damageRecord[attrReceivedFromCommanderPlayerId] == sourceId
)); ));
@@ -616,18 +616,18 @@ export default class PageMtgGame extends TableBasePage {
} }
async saveGame() { async saveGame() {
/*
const gameState = { const gameState = {
[flagPlayer]: players [flagPlayer]: players
, [flagRound]: rounds , [flagRound]: rounds
, [flagDamage]: damageRecords , [flagDamage]: damageRecords
}; };
/*
if (gameState[flagPlayer].length > 0) { if (gameState[flagPlayer].length > 0) {
localStorage.setItem(`mtgGame_${gameId}`, JSON.stringify(gameState)); localStorage.setItem(`mtgGame_${gameId}`, JSON.stringify(gameState));
PageMtgGame.showSaveIndicator(); PageMtgGame.showSaveIndicator();
} }
*/ */
const comment = 'Save players'; const comment = 'Save player damage';
const self = this; const self = this;
API.saveGameRoundPlayerDamages(rounds, damageRecords, null, comment) API.saveGameRoundPlayerDamages(rounds, damageRecords, null, comment)
.then(data => { .then(data => {

View File

@@ -17,13 +17,13 @@ export default class PageMtgGames extends TableBasePage {
this.hookupTcgGames(); this.hookupTcgGames();
} }
hookupTcgGames() { hookupTcgGames() {
PageMtgGames.initGamesPage(); this.initGamesPage();
} }
static initGamesPage() { initGamesPage() {
// Initialize form submission // Initialize form submission
const newGameForm = document.getElementById('newGameForm'); const newGameForm = document.getElementById('newGameForm');
if (newGameForm) { if (newGameForm) {
newGameForm.addEventListener('submit', PageMtgGames.handleNewGameSubmit); newGameForm.addEventListener('submit', this.handleNewGameSubmit.bind(this)); // () => { this.handleNewGameSubmit.bind(this); });
} }
// Initialize filter form // Initialize filter form
@@ -92,7 +92,7 @@ export default class PageMtgGames extends TableBasePage {
} }
} }
} }
static async handleNewGameSubmit(e) { async handleNewGameSubmit(e) {
e.preventDefault(); e.preventDefault();
const form = e.target; const form = e.target;
@@ -119,6 +119,7 @@ export default class PageMtgGames extends TableBasePage {
const games = [gameData]; const games = [gameData];
const comment = 'Create new game'; const comment = 'Create new game';
debugger; debugger;
// const self = this;
API.saveGame(games, form, comment) API.saveGame(games, form, comment)
.then(data => { .then(data => {
if (data[flagStatus] == flagSuccess) { if (data[flagStatus] == flagSuccess) {
@@ -126,7 +127,11 @@ export default class PageMtgGames extends TableBasePage {
Utils.consoleLogIfNotProductionEnvironment('Records saved!'); Utils.consoleLogIfNotProductionEnvironment('Records saved!');
Utils.consoleLogIfNotProductionEnvironment('Data received:', data); Utils.consoleLogIfNotProductionEnvironment('Data received:', data);
} }
this.callFilterTableContent(gameData.game_id); // this.callFilterTableContent(data[attrGameId]); // gameData.game_id
const gamePageHash = `${hashPageGame}/${data[attrGameId]}`;
let filtersJson = {};
this.leave();
API.goToHash(gamePageHash, filtersJson);
} }
else { else {
Utils.consoleLogIfNotProductionEnvironment("error: " + data[flagMessage]); Utils.consoleLogIfNotProductionEnvironment("error: " + data[flagMessage]);
@@ -144,13 +149,6 @@ export default class PageMtgGames extends TableBasePage {
}); });
} }
callFilterTableContent(gameId) {
const gamePageHash = `${hashPageGame}/${gameId}`;
let filtersJson = {};
Utils.consoleLogIfNotProductionEnvironment("callFilterTableContent");
this.leave();
API.goToHash(gamePageHash, filtersJson);
}
static handleFilterSubmit(e) { static handleFilterSubmit(e) {
// Let the form submit normally - it will reload with query params // Let the form submit normally - it will reload with query params
// You can add client-side filtering here if needed // You can add client-side filtering here if needed

View File

@@ -39,7 +39,7 @@
</div> </div>
<div class="control-group"> <div class="control-group">
<label class="tcg-label" for="startingLife">Starting Life:</label> <label class="tcg-label" for="startingLife">Starting Life:</label>
<input type="number" id="startingLife" class="tcg-input" min="1" value="40"> <input type="number" id="startingLife" class="tcg-input" min="1" value="{{ model.game.starting_life }}">
</div> </div>
</div> </div>
<div id="playerSetupSection"> <div id="playerSetupSection">
@@ -164,5 +164,4 @@
var user = {{ model.user.to_json() | tojson | safe }}; var user = {{ model.user.to_json() | tojson | safe }};
var users = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.users) | tojson | safe }}; var users = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.users) | tojson | safe }};
</script> </script>
{# <script type="module" src="{{ url_for('static', filename='js/pages/tcg/mtg_game.js') }}"></script> #}
{% endblock %} {% endblock %}