diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/src/xml/kanban.xml | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/web/static/src/xml/kanban.xml')
| -rw-r--r-- | addons/web/static/src/xml/kanban.xml | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/addons/web/static/src/xml/kanban.xml b/addons/web/static/src/xml/kanban.xml new file mode 100644 index 00000000..2fd7f8ca --- /dev/null +++ b/addons/web/static/src/xml/kanban.xml @@ -0,0 +1,227 @@ +<template> + +<t t-name="KanbanView.buttons"> + <div> + <button t-if="!noCreate" type="button" t-attf-class="btn #{btnClass} o-kanban-button-new" accesskey="c"> + <t t-esc="create_text || _t('Create')"/> + </button> + </div> +</t> + +<t t-name="KanbanView.Group"> + <div t-attf-class="o_kanban_group#{widget.data_records.length == 0 ? ' o_kanban_no_records' : ''}" t-att-data-id="widget.id or widget.db_id" + role="feed" t-attf-aria-labelledby="kanban_header_#{widget.id or widget.db_id}"> + <div class="o_kanban_header"> + <div class="o_kanban_header_title"> + <span t-attf-id="#kanban_header_#{widget.id or widget.db_id}" class="o_column_title"><t t-esc="widget.title"/></span> + <span class="o_column_unfold"><i class="fa fa-arrows-h" role="img" aria-label="Unfold" title="Unfold"/></span> + <span class="o_kanban_config dropdown"> + <a class="dropdown-toggle o-no-caret" data-toggle="dropdown" href="#"><i class="fa fa-gear" role="img" aria-label="Settings" title="Settings"/></a> + <div class="dropdown-menu" role="menu"> + <a role="menuitem" class="dropdown-item o_kanban_toggle_fold" href="#">Fold</a> + <t t-if="widget.grouped_by_m2o"> + <a t-if="widget.editable and widget.id" role="menuitem" class="dropdown-item o_column_edit" href="#">Edit Stage</a> + <a t-if="widget.deletable and widget.id" role="menuitem" class="dropdown-item o_column_delete" href="#">Delete</a> + </t> + <t t-if="widget.has_active_field and widget.archivable"> + <a role="menuitem" href="#" class="dropdown-item o_column_archive_records">Archive All</a> + <a role="menuitem" href="#" class="dropdown-item o_column_unarchive_records">Unarchive All</a> + </t> + </div> + </span> + <span t-if="widget.quick_create" class="o_kanban_quick_add"><i class="fa fa-plus" role="img" aria-label="Quick add" title="Quick add"/></span> + </div> + </div> + <div t-if="widget.remaining > 0" class="o_kanban_load_more"> + <t t-call="KanbanView.LoadMore"/> + </div> + </div> +</t> + +<t t-name="KanbanView.LoadMore"> + <a href="#">Load more... (<t t-esc="widget.remaining"/> remaining)</a> +</t> + +<t t-name="KanbanView.ColumnQuickCreate"> + <div class="o_column_quick_create"> + <div class="o_quick_create_folded"> + <span class="o_kanban_add_column"><i class="fa fa-plus" role="img" aria-label="Add column" title="Add column"/></span> + <span class="o_kanban_title">Add a Column</span> + </div> + <div class="o_quick_create_unfolded"> + <div class="o_kanban_header"> + <div class="input-group"> + <input type="text" class="form-control o_input" placeholder="Column title"/> + <span class="input-group-append"> + <button class="btn btn-primary o_kanban_add" type="button">Add</button> + </span> + </div> + <span t-if="!widget.isMobile" class="o_discard_msg text-muted float-right">Esc to discard</span> + <t t-if="widget.examples && !widget.isMobile"> + <button type="button" class="btn btn-link o_kanban_examples">See examples</button> + </t> + </div> + <div class="o_kanban_muted_record"/> + <div class="o_kanban_muted_record"/> + <div class="o_kanban_muted_record"/> + </div> + </div> +</t> + +<t t-name="KanbanView.RecordQuickCreate.buttons"> + <div> + <button class="btn btn-primary o_kanban_add">Add</button> + <button class="btn btn-primary o_kanban_edit">Edit</button> + <button class="btn btn-secondary o_kanban_cancel ml8">Discard</button> + </div> +</t> + +<t t-name="KanbanColorPicker"> + <t t-foreach="colors" t-as="color"> + <li> + <a role="menuitem" + href="#" + t-att-data-color="color_index" + t-attf-class="oe_kanban_color_#{color_index}" + t-att-title="color" + t-att-aria-label="color"/> + </li> + </t> +</t> + +<t t-name="GraphCustomTooltip"> + <table> + <tbody> + <tr> + <td class="legend-color-guide"> + <div t-attf-style="background-color: #{color};"></div> + </td> + <td class="key"><t t-esc="key" /></td> + <td class="value"><t t-esc="value" /></td> + </tr> + </tbody> + </table> +</t> + +<t t-name="KanbanView.ColumnProgressBar"> + <div class="o_kanban_counter"> + <div class="o_kanban_counter_progress progress"> + <t t-foreach="widget.colors" t-as="color"> + <t t-set="count" t-value="widget.subgroupCounts and widget.subgroupCounts[color] or 0"/> + <div t-attf-class="progress-bar transition-off bg-#{color_value}-full#{count ? ' o_bar_has_records' : ''}#{widget.activeFilter ? ' progress-bar-animated progress-bar-striped' : ''}" + t-att-data-filter="color" + t-attf-data-original-title="#{count} #{color}" + aria-valuemin="0" aria-valuemax="100" t-att-aria-valuenow="count*100" role="progressbar" + t-attf-style="width: #{count ? (count * 100 / widget.groupCount) : 0}%;"/> + </t> + </div> + <div class="o_kanban_counter_side"><b><t t-esc="widget.totalCounterValue || 0"/></b></div> + </div> +</t> + +<t t-name="KanbanView.SetCoverModal"> + <div t-if="attachmentIds.length" class="ml32 mr0 o_kanban_cover_container"> + <t t-foreach="attachmentIds" t-as="attachment"> + <div t-attf-class="o_kanban_cover_image#{coverId === attachment.id ? ' o_selected' : ''}"> + <img t-attf-src="/web/image/#{attachment.id}?unique=1" t-att-data-id="attachment.id" t-att-data-name="attachment.name" alt="Attachment"/> + </div> + </t> + </div> + <div t-else="">There is no available image to be set as cover.</div> + <span class="d-none"> + <t t-call="HiddenInputFile"> + <t t-set="fileupload_id" t-value="widget.imageUploadID" /> + <t t-set="fileupload_action" t-translation="off">/web/binary/upload_attachment</t> + <input type="hidden" name="model" t-att-value="widget.modelName" /> + <input type="hidden" name="id" t-att-value="widget.id" /> + </t> + </span> +</t> + +<!-- Note: this dialog isn't responsive, but it is not accessible on mobile --> +<div t-name="KanbanView.ExamplesDialog" class="o_kanban_examples_dialog"> + <div class="o_kanban_examples_dialog_nav"> + <ul class="nav nav-pills flex-column"> + <t t-foreach="examples" t-as="example"> + <li class="nav-item"> + <a t-attf-aria-controls="example_#{example_index}" data-toggle="tab" role="tab" t-att-data-example-index="example_index" t-attf-href="#example_#{example_index}" t-attf-class="nav-link#{example_index == 0 and ' active' or ''}"> <t t-esc="example.name"/> </a> + </li> + </t> + </ul> + </div> + <div class="o_kanban_examples_dialog_content"> + <div class="tab-content"> + <t t-foreach="examples" t-as="example"> + <div role="tabpanel" t-attf-id="example_#{example_index}" t-attf-class="tab-pane #{example_index == 0 and 'active in' or ''}"> + <div t-if="example.description" class="o_kanban_examples_description"> + <t t-raw="example.description"/> <!-- description is supposed to be properly escaped --> + </div> + <div class="o_kanban_examples"> + <t t-foreach="example.columns" t-as="column"> + <div class="o_kanban_examples_group"> + <h6><b><t t-esc="column"/></b></h6> + <t t-foreach="_.random(1,4)"> + <t t-call="KanbanView.ExamplesDialog.RecordGhost"/> + </t> + </div> + </t> + </div> + </div> + </t> + </div> + </div> +</div> +<t t-name="KanbanView.ExamplesDialog.RecordGhost"> + <div class="o_kanban_examples_ghost"> + <div class="o_ghost_content"/> + <div class="o_ghost_content o_ghost_tag"/> + <t t-if="example.bullets"> + <t t-if="_.random(0,5) > 3"> + <t t-raw="example.bullets[_.random(0, example.bullets.length-1)]"/> + </t> + </t> + <img class="float-right o_ghost_avatar" src="/base/static/img/avatar.png" alt="Avatar"/> + </div> +</t> + +<!-- Kanban Example Background --> +<t t-name="KanbanView.ExamplesBackground"> + <div class="o_kanban_example_background_container"> + <div class="o_kanban_example_background"> + <div class="o_kanban_examples"> + <t t-foreach="ghostColumns" t-as="column"> + <div class="o_kanban_examples_group"> + <h6><b><t t-esc="column"/></b></h6> + <t t-foreach="_.random(2,6)"> + <t t-call="KanbanView.ExamplesBackground.RecordGhost"/> + </t> + </div> + </t> + </div> + </div> + </div> +</t> +<t t-name="KanbanView.ExamplesBackground.RecordGhost"> + <div class="o_kanban_examples_ghost"> + <div class="o_ghost_content"/> + <div class="o_ghost_content o_ghost_tag"/> + <img class="float-right o_ghost_avatar" src="/base/static/img/avatar.png" alt="Avatar"/> + </div> +</t> + +<!-- Mobile templates --> +<t t-name="KanbanView.MobileTabs"> + <div class="o_kanban_mobile_tabs_container"> + <div class="o_kanban_mobile_tabs"> + <t t-foreach="data" t-as="group"> + <div class="o_kanban_mobile_tab" t-att-data-id="group.res_id or group.id"> + <span class="o_column_title"><t t-esc="group.value"/></span> + </div> + </t> + <div class="o_kanban_mobile_add_column" t-if="quickCreateEnabled"> + <i class="fa fa-plus " role="img" aria-label="Add column" title="Add column"/> + </div> + </div> + </div> +</t> +</template> |
