🎉 Initialize module repository
This commit is contained in:
499
views/mvd_tcg_deck_views.xml
Normal file
499
views/mvd_tcg_deck_views.xml
Normal file
@@ -0,0 +1,499 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="mvd_tcg_deck_view_search" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.view.search</field>
|
||||
<field name="model">mvd.tcg.deck</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Decks">
|
||||
<field name="name"/>
|
||||
<field name="game_id"/>
|
||||
<field name="user_id"/>
|
||||
<separator/>
|
||||
<filter name="filter_my_decks" string="My Decks" domain="[('user_id', '=', uid)]"/>
|
||||
<filter name="filter_archived" string="Archived" domain="[('active', '=', False)]"/>
|
||||
<group>
|
||||
<filter name="group_by_game" string="Game" context="{'group_by': 'game_id'}"/>
|
||||
<filter name="group_by_owner" string="Owner" context="{'group_by': 'user_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_line_view_search" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.line.view.search</field>
|
||||
<field name="model">mvd.tcg.deck.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Deck Lines">
|
||||
<field name="card_id"/>
|
||||
<field name="deck_id"/>
|
||||
<field name="board_id"/>
|
||||
<field name="role_ids"/>
|
||||
<separator/>
|
||||
<filter name="filter_with_roles" string="With Roles" domain="[('role_ids', '!=', False)]"/>
|
||||
<group>
|
||||
<filter name="group_by_deck" string="Deck" context="{'group_by': 'deck_id'}"/>
|
||||
<filter name="group_by_board" string="Board" context="{'group_by': 'board_id'}"/>
|
||||
<filter name="group_by_primary_role" string="Primary Role" context="{'group_by': 'primary_role_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_view_kanban" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.view.kanban</field>
|
||||
<field name="model">mvd.tcg.deck</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban sample="1">
|
||||
<field name="name"/>
|
||||
<field name="cover_image"/>
|
||||
<field name="game_id"/>
|
||||
<field name="total_card_count"/>
|
||||
<field name="distinct_card_count"/>
|
||||
<field name="board_count"/>
|
||||
<field name="user_id"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div class="oe_kanban_global_click rounded overflow-hidden border">
|
||||
<div class="row g-0">
|
||||
<div class="col-4 bg-light">
|
||||
<t t-if="record.cover_image.raw_value">
|
||||
<field name="cover_image" widget="image" class="w-100 h-100"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="d-flex align-items-center justify-content-center h-100 text-muted p-3">
|
||||
<span>No cover</span>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
<div class="col-8 p-3">
|
||||
<div class="fw-bold mb-1">
|
||||
<field name="name"/>
|
||||
</div>
|
||||
<div class="text-muted mb-2">
|
||||
<field name="game_id"/> · <field name="user_id"/>
|
||||
</div>
|
||||
<div class="d-flex flex-wrap gap-1 small">
|
||||
<span class="badge rounded-pill text-bg-light">
|
||||
<field name="total_card_count"/> cards
|
||||
</span>
|
||||
<span class="badge rounded-pill text-bg-light">
|
||||
<field name="distinct_card_count"/> distinct
|
||||
</span>
|
||||
<span class="badge rounded-pill text-bg-light">
|
||||
<field name="board_count"/> boards
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_view_list" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.view.list</field>
|
||||
<field name="model">mvd.tcg.deck</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Decks">
|
||||
<field name="name"/>
|
||||
<field name="game_id"/>
|
||||
<field name="user_id" optional="show"/>
|
||||
<field name="board_count" optional="show"/>
|
||||
<field name="total_card_count"/>
|
||||
<field name="distinct_card_count" optional="show"/>
|
||||
<field name="write_date" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_board_view_list" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.board.view.list</field>
|
||||
<field name="model">mvd.tcg.deck.board</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="include_in_total"/>
|
||||
<field name="total_card_count" string="Cards"/>
|
||||
<field name="distinct_card_count" string="Distinct" optional="show"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_board_view_form" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.board.view.form</field>
|
||||
<field name="model">mvd.tcg.deck.board</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Deck Board">
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button
|
||||
name="action_open_line_manager"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-list"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Manage Lines</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Board"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="deck_id"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="include_in_total"/>
|
||||
<field name="total_card_count" readonly="1"/>
|
||||
<field name="distinct_card_count" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Cards" name="cards">
|
||||
<field name="line_ids" nolabel="1" mode="list,form">
|
||||
<list editable="bottom" default_order="sequence, id">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field
|
||||
name="card_image_128"
|
||||
widget="mvd_deck_zoom_image"
|
||||
optional="show"
|
||||
options="{'preview_image': 'card_image_1920', 'zoom': true, 'zoom_delay': 0, 'size': [0, 96]}"
|
||||
/>
|
||||
<field name="quantity"/>
|
||||
<field name="card_id"/>
|
||||
<field name="role_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show"/>
|
||||
<field name="note" optional="show"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes" name="notes">
|
||||
<field name="note" nolabel="1"/>
|
||||
</page>
|
||||
<page
|
||||
string="Technical"
|
||||
name="technical"
|
||||
groups="mvd_tcg_base.mvd_tcg_base_group_administrator,base.group_system"
|
||||
>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_line_view_list" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.line.view.list</field>
|
||||
<field name="model">mvd.tcg.deck.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom" default_order="primary_role_sequence, board_sequence, sequence, id">
|
||||
<field name="board_sequence" column_invisible="True"/>
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="board_id"/>
|
||||
<field
|
||||
name="card_image_128"
|
||||
widget="mvd_deck_zoom_image"
|
||||
optional="show"
|
||||
options="{'preview_image': 'card_image_1920', 'zoom': true, 'zoom_delay': 0, 'size': [0, 96]}"
|
||||
/>
|
||||
<field name="quantity"/>
|
||||
<field name="card_id"/>
|
||||
<field name="primary_role_id" optional="show"/>
|
||||
<field name="role_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show"/>
|
||||
<field name="note" optional="show"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_line_view_form" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.line.view.form</field>
|
||||
<field name="model">mvd.tcg.deck.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Deck Entry">
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button
|
||||
name="action_open_line"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-external-link"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Open</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="d-flex gap-3 align-items-start">
|
||||
<field
|
||||
name="card_image_512"
|
||||
widget="mvd_deck_zoom_image"
|
||||
class="oe_avatar"
|
||||
nolabel="1"
|
||||
options="{'preview_image': 'card_image_1920', 'zoom': true, 'zoom_delay': 0, 'size': [220, 306], 'img_class': 'rounded border'}"
|
||||
readonly="1"
|
||||
/>
|
||||
<div class="oe_title flex-grow-1">
|
||||
<label for="card_id" string="Card"/>
|
||||
<h1>
|
||||
<field name="card_id"/>
|
||||
</h1>
|
||||
<div class="d-flex gap-2 flex-wrap">
|
||||
<field name="board_id" widget="badge"/>
|
||||
<field name="quantity" widget="badge"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="board_id"/>
|
||||
<field name="quantity"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="primary_role_id" readonly="1"/>
|
||||
<field name="role_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="1">
|
||||
<field name="note" placeholder="Add an internal note for this deck entry."/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_role_view_list" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.role.view.list</field>
|
||||
<field name="model">mvd.tcg.deck.role</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="Deck Roles">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="color" widget="color_picker" optional="show"/>
|
||||
<field name="active" optional="show"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_role_view_form" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.role.view.form</field>
|
||||
<field name="model">mvd.tcg.deck.role</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Deck Role">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name" string="Role"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="sequence"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="color" widget="color_picker"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="1">
|
||||
<field name="note" nolabel="1" placeholder="Describe what this role should represent in deck construction."/>
|
||||
</group>
|
||||
<group
|
||||
string="Technical"
|
||||
groups="mvd_tcg_base.mvd_tcg_base_group_administrator,base.group_system"
|
||||
>
|
||||
<field name="technical_key"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_view_form" model="ir.ui.view">
|
||||
<field name="name">mvd.tcg.deck.view.form</field>
|
||||
<field name="model">mvd.tcg.deck</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Deck">
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button
|
||||
name="action_open_cards"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-clone"
|
||||
>
|
||||
<field name="distinct_card_count" string="Cards" widget="statinfo"/>
|
||||
</button>
|
||||
<button
|
||||
name="action_open_add_to_deck_wizard"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-plus-square"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Add Card</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
name="action_open_line_manager"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-list"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Manage Lines</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
name="action_open_deck_import_wizard"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-sign-in"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Import List</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
name="action_open_deck_export_wizard"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-sign-out"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Export List</span>
|
||||
</div>
|
||||
</button>
|
||||
<button
|
||||
name="action_seed_default_boards"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-columns"
|
||||
invisible="board_count != 0"
|
||||
>
|
||||
<div class="o_stat_info">
|
||||
<span class="o_stat_text">Create Default Boards</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="d-flex gap-3 align-items-start mb-3">
|
||||
<field
|
||||
name="cover_image"
|
||||
widget="image"
|
||||
class="oe_avatar"
|
||||
nolabel="1"
|
||||
options="{'size': [220, 306], 'img_class': 'rounded border'}"
|
||||
/>
|
||||
<div class="oe_title flex-grow-1">
|
||||
<h1 class="mb-1">
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
<div class="d-flex gap-2 flex-wrap align-items-center">
|
||||
<field name="game_id" widget="badge"/>
|
||||
<field name="user_id" widget="badge"/>
|
||||
</div>
|
||||
<div class="mt-3 d-flex flex-wrap gap-2">
|
||||
<span class="badge rounded-pill text-bg-light">
|
||||
<strong class="me-1">Boards</strong>
|
||||
<field name="board_count"/>
|
||||
</span>
|
||||
<span class="badge rounded-pill text-bg-light">
|
||||
<strong class="me-1">Cards</strong>
|
||||
<field name="total_card_count"/>
|
||||
</span>
|
||||
<span class="badge rounded-pill text-bg-light">
|
||||
<strong class="me-1">Distinct</strong>
|
||||
<field name="distinct_card_count"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<notebook>
|
||||
<page string="Overview" name="overview">
|
||||
<group>
|
||||
<group>
|
||||
<field name="game_id"/>
|
||||
<field name="user_id" readonly="1"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="board_count" readonly="1"/>
|
||||
<field name="total_card_count" readonly="1"/>
|
||||
<field name="distinct_card_count" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="1">
|
||||
<field
|
||||
name="description"
|
||||
widget="html"
|
||||
nolabel="1"
|
||||
placeholder="Describe the deck plan, power level, win conditions or upgrade path."
|
||||
/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Boards" name="boards">
|
||||
<field name="board_ids" nolabel="1" mode="list,form"/>
|
||||
</page>
|
||||
<page string="All Cards" name="cards">
|
||||
<field name="line_ids" nolabel="1" mode="list"/>
|
||||
</page>
|
||||
<page string="Notes" name="notes">
|
||||
<field name="note" placeholder="Add internal deck notes."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_line_action" model="ir.actions.act_window">
|
||||
<field name="name">Deck Lines</field>
|
||||
<field name="res_model">mvd.tcg.deck.line</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="mvd_tcg_deck.mvd_tcg_deck_line_view_search"/>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_role_action" model="ir.actions.act_window">
|
||||
<field name="name">Deck Roles</field>
|
||||
<field name="res_model">mvd.tcg.deck.role</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="mvd_tcg_deck_action" model="ir.actions.act_window">
|
||||
<field name="name">Decks</field>
|
||||
<field name="res_model">mvd.tcg.deck</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="view_id" ref="mvd_tcg_deck.mvd_tcg_deck_view_kanban"/>
|
||||
<field name="search_view_id" ref="mvd_tcg_deck.mvd_tcg_deck_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a new deck
|
||||
</p>
|
||||
<p>
|
||||
Decks stay game-neutral. Boards organize the cards inside one deck,
|
||||
while game adapters can later add format- and rules-specific behavior.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="mvd_tcg_deck_roles_menu"
|
||||
name="Deck Roles"
|
||||
parent="mvd_tcg_base.mvd_tcg_operations_menu"
|
||||
sequence="20"
|
||||
action="mvd_tcg_deck.mvd_tcg_deck_role_action"
|
||||
groups="mvd_tcg_base.mvd_tcg_base_group_manager,base.group_system"
|
||||
/>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user