mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00

* WebHost: Fix "Add" button for Progression Balancing causing a weird redirect This "add" button is part of a form, which causes it to submit the form, because the default type for a button is "submit". This PR changes the type of the button to "button", which causes it to not submit the form and just execute its normal effect. (An alternative would be `event.preventDefault()` but that seems less clean to me, but also I'm not a HTML/JS dev) * There's also multiple.
265 lines
11 KiB
HTML
265 lines
11 KiB
HTML
{% macro Toggle(option_name, option) %}
|
|
<table>
|
|
<tbody>
|
|
{{ RangeRow(option_name, option, "No", "false", False, "true" if option.default else "false") }}
|
|
{{ RangeRow(option_name, option, "Yes", "true", False, "true" if option.default else "false") }}
|
|
{{ RandomRow(option_name, option) }}
|
|
</tbody>
|
|
</table>
|
|
{% endmacro %}
|
|
|
|
{% macro DefaultOnToggle(option_name, option) %}
|
|
<!-- Toggle handles defaults properly, so we just reuse that -->
|
|
{{ Toggle(option_name, option) }}
|
|
{% endmacro %}
|
|
|
|
{% macro Choice(option_name, option) %}
|
|
<table>
|
|
<tbody>
|
|
{% for id, name in option.name_lookup.items() %}
|
|
{% if name != 'random' %}
|
|
{% if option.default != 'random' %}
|
|
{{ RangeRow(option_name, option, option.get_option_name(id), name, False, name if option.get_option_name(option.default)|lower == name else None) }}
|
|
{% else %}
|
|
{{ RangeRow(option_name, option, option.get_option_name(id), name) }}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ RandomRow(option_name, option) }}
|
|
</tbody>
|
|
</table>
|
|
{% endmacro %}
|
|
|
|
{% macro Range(option_name, option) %}
|
|
<div class="hint-text js-required">
|
|
This is a range option.
|
|
<br /><br />
|
|
Accepted values:<br />
|
|
Normal range: {{ option.range_start }} - {{ option.range_end }}
|
|
{% if option.special_range_names %}
|
|
<br /><br />
|
|
The following values have special meanings, and may fall outside the normal range.
|
|
<ul>
|
|
{% for name, value in option.special_range_names.items() %}
|
|
<li>{{ value }}: {{ name }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
<div class="add-option-div">
|
|
<input type="number" class="range-option-value" data-option="{{ option_name }}" />
|
|
<button type="button" class="add-range-option-button" data-option="{{ option_name }}">Add</button>
|
|
</div>
|
|
</div>
|
|
<table class="range-rows" data-option="{{ option_name }}">
|
|
<tbody>
|
|
{{ RangeRow(option_name, option, option.range_start, option.range_start, True) }}
|
|
{% if option.range_start < option.default < option.range_end %}
|
|
{{ RangeRow(option_name, option, option.default, option.default, True) }}
|
|
{% endif %}
|
|
{{ RangeRow(option_name, option, option.range_end, option.range_end, True) }}
|
|
{{ RandomRows(option_name, option) }}
|
|
</tbody>
|
|
</table>
|
|
{% endmacro %}
|
|
|
|
{% macro NamedRange(option_name, option) %}
|
|
<!-- Range is able to properly handle NamedDRange options -->
|
|
{{ Range(option_name, option) }}
|
|
{% endmacro %}
|
|
|
|
{% macro FreeText(option_name, option) %}
|
|
<div class="hint-text">
|
|
This option allows custom values only. Please enter your desired values below.
|
|
<div class="custom-value-wrapper">
|
|
<input class="custom-value" data-option="{{ option_name }}" placeholder="Custom Value" />
|
|
<button type="button" data-option="{{ option_name }}">Add</button>
|
|
</div>
|
|
<table>
|
|
<tbody>
|
|
{% if option.default %}
|
|
{{ RangeRow(option_name, option, option.default, option.default) }}
|
|
{% endif %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro TextChoice(option_name, option) %}
|
|
<div class="hint-text">
|
|
Custom values are also allowed for this option. To create one, enter it into the input box below.
|
|
<div class="custom-value-wrapper">
|
|
<input class="custom-value" data-option="{{ option_name }}" placeholder="Custom Value" />
|
|
<button type="button" data-option="{{ option_name }}">Add</button>
|
|
</div>
|
|
</div>
|
|
<table>
|
|
<tbody>
|
|
{% for id, name in option.name_lookup.items() %}
|
|
{% if name != 'random' %}
|
|
{% if option.default != 'random' %}
|
|
{{ RangeRow(option_name, option, option.get_option_name(id), name, False, name if option.get_option_name(option.default)|lower == name else None) }}
|
|
{% else %}
|
|
{{ RangeRow(option_name, option, option.get_option_name(id), name) }}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ RandomRow(option_name, option) }}
|
|
</tbody>
|
|
</table>
|
|
{% endmacro %}
|
|
|
|
{% macro PlandoBosses(option_name, option) %}
|
|
<!-- PlandoBosses is handled by its parent, TextChoice -->
|
|
{{ TextChoice(option_name, option) }}
|
|
{% endmacro %}
|
|
|
|
{% macro ItemDict(option_name, option, world) %}
|
|
<div class="dict-container">
|
|
{% for item_name in (option.valid_keys|sort if (option.valid_keys|length > 0) else world.item_names|sort) %}
|
|
<div class="dict-entry">
|
|
<label for="{{ option_name }}-{{ item_name }}-qty">{{ item_name }}</label>
|
|
<input
|
|
type="number"
|
|
id="{{ option_name }}-{{ item_name }}-qty"
|
|
name="{{ option_name }}||{{ item_name }}"
|
|
value="{{ option.default[item_name] if item_name in option.default else "0" }}"
|
|
/>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro OptionList(option_name, option) %}
|
|
<div class="list-container">
|
|
{% for key in (option.valid_keys if option.valid_keys is ordered else option.valid_keys|sort) %}
|
|
<div class="list-entry">
|
|
<input
|
|
type="checkbox"
|
|
id="{{ option_name }}-{{ key }}"
|
|
name="{{ option_name }}||{{ key }}"
|
|
value="1"
|
|
checked="{{ "checked" if key in option.default else "" }}"
|
|
/>
|
|
<label for="{{ option_name }}-{{ key }}">
|
|
{{ key }}
|
|
</label>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro LocationSet(option_name, option, world) %}
|
|
<div class="set-container">
|
|
{% for group_name in world.location_name_groups.keys()|sort %}
|
|
{% if group_name != "Everywhere" %}
|
|
<div class="set-entry">
|
|
<input type="checkbox" id="{{ option_name }}-{{ group_name }}" name="{{ option_name }}||{{ group_name }}" value="1" {{ "checked" if group_name in option.default }} />
|
|
<label for="{{ option_name }}-{{ group_name }}">{{ group_name }}</label>
|
|
</div>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% if world.location_name_groups.keys()|length > 1 %}
|
|
<div class="divider"> </div>
|
|
{% endif %}
|
|
{% for location_name in (option.valid_keys|sort if (option.valid_keys|length > 0) else world.location_names|sort) %}
|
|
<div class="set-entry">
|
|
<input type="checkbox" id="{{ option_name }}-{{ location_name }}" name="{{ option_name }}||{{ location_name }}" value="1" {{ "checked" if location_name in option.default }} />
|
|
<label for="{{ option_name }}-{{ location_name }}">{{ location_name }}</label>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro ItemSet(option_name, option, world) %}
|
|
<div class="set-container">
|
|
{% for group_name in world.item_name_groups.keys()|sort %}
|
|
{% if group_name != "Everything" %}
|
|
<div class="set-entry">
|
|
<input type="checkbox" id="{{ option_name }}-{{ group_name }}" name="{{ option_name }}||{{ group_name }}" value="1" {{ "checked" if group_name in option.default }} />
|
|
<label for="{{ option_name }}-{{ group_name }}">{{ group_name }}</label>
|
|
</div>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% if world.item_name_groups.keys()|length > 1 %}
|
|
<div class="set-divider"> </div>
|
|
{% endif %}
|
|
{% for item_name in (option.valid_keys|sort if (option.valid_keys|length > 0) else world.item_names|sort) %}
|
|
<div class="set-entry">
|
|
<input type="checkbox" id="{{ option_name }}-{{ item_name }}" name="{{ option_name }}||{{ item_name }}" value="1" {{ "checked" if item_name in option.default }} />
|
|
<label for="{{ option_name }}-{{ item_name }}">{{ item_name }}</label>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro OptionSet(option_name, option) %}
|
|
<div class="set-container">
|
|
{% for key in (option.valid_keys if option.valid_keys is ordered else option.valid_keys|sort) %}
|
|
<div class="set-entry">
|
|
<input type="checkbox" id="{{ option_name }}-{{ key }}" name="{{ option_name }}||{{ key }}" value="1" {{ "checked" if key in option.default }} />
|
|
<label for="{{ option_name }}-{{ key }}">{{ key }}</label>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro OptionTitleTd(option_name, value) %}
|
|
<td class="td-left">
|
|
<label for="{{ option_name }}||{{ value }}">
|
|
{{ option.display_name|default(option_name) }}
|
|
</label>
|
|
</td>
|
|
{% endmacro %}
|
|
|
|
{% macro RandomRow(option_name, option, extra_column=False) %}
|
|
{{ RangeRow(option_name, option, "Random", "random") }}
|
|
{% endmacro %}
|
|
|
|
{% macro RandomRows(option_name, option, extra_column=False) %}
|
|
{% for key, value in {"Random": "random", "Random (Low)": "random-low", "Random (Middle)": "random-middle", "Random (High)": "random-high"}.items() %}
|
|
{{ RangeRow(option_name, option, key, value) }}
|
|
{% endfor %}
|
|
{% endmacro %}
|
|
|
|
{% macro RangeRow(option_name, option, display_value, value, can_delete=False, default_override=None) %}
|
|
<tr data-row="{{ option_name }}-{{ value }}-row" data-option-name="{{ option_name }}" data-value="{{ value }}">
|
|
<td class="td-left">
|
|
<label for="{{ option_name }}||{{ value }}">
|
|
{{ display_value }}
|
|
</label>
|
|
</td>
|
|
<td class="td-middle">
|
|
<input
|
|
type="range"
|
|
id="{{ option_name }}||{{ value }}"
|
|
name="{{ option_name }}||{{ value }}"
|
|
min="0"
|
|
max="50"
|
|
{% if option.default == value or default_override == value %}
|
|
value="25"
|
|
{% else %}
|
|
value="0"
|
|
{% endif %}
|
|
/>
|
|
</td>
|
|
<td class="td-right">
|
|
<span id="{{ option_name }}||{{ value }}-value">
|
|
{% if option.default == value or default_override == value %}
|
|
25
|
|
{% else %}
|
|
0
|
|
{% endif %}
|
|
</span>
|
|
</td>
|
|
{% if can_delete %}
|
|
<td>
|
|
<span class="range-option-delete js-required" data-target="{{ option_name }}-{{ value }}-row">
|
|
❌
|
|
</span>
|
|
</td>
|
|
{% else %}
|
|
<td><!-- This td empty on purpose --></td>
|
|
{% endif %}
|
|
</tr>
|
|
{% endmacro %}
|