[IMP] project, project_issue, project_timesheet, rating_project : refactoring of the kanban project. Now using bootstrap, and better disposition of module elements.
This commit is contained in:
@@ -272,35 +272,49 @@
|
||||
</div>
|
||||
<div class="oe_project_kanban_content">
|
||||
<div class="row">
|
||||
<h4 class="text-center"><strong><field name="name"/></strong></h4>
|
||||
<div class="text-center oe_kanban_alias" t-if="record.alias_name.value and record.alias_domain.value">
|
||||
<small><i class="fa fa-envelope-o"></i> <field name="alias_id"/></small>
|
||||
<h4 class="text-center">
|
||||
<field name="name"/>
|
||||
</h4>
|
||||
<div t-if="record.alias_name.value and record.alias_domain.value" class="text-center text-muted">
|
||||
<small>
|
||||
<i class="fa fa-envelope-o"></i> <field name="alias_id"/>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row oe_margin_top_8 oe_kanban_project_list">
|
||||
<a t-if="record.use_tasks.raw_value" class="oe_sparkline_bar_link" name="%(act_project_project_2_project_task_all)d" type="action" style="margin-right: -5px">
|
||||
<t t-raw="record.task_ids.raw_value.length" /> <field name="label_tasks"/>
|
||||
<field name="monthly_tasks" widget="sparkline_bar" options="{'delayIn': '1000'}">
|
||||
Created Tasks
|
||||
</field>
|
||||
</a>
|
||||
<div t-if="record.use_tasks.raw_value and record.task_count.raw_value lt 1" style="margin-top: 6px;margin-left:20px;">
|
||||
<div class="col-md-6">
|
||||
<a t-if="record.use_tasks.raw_value" class="oe_sparkline_bar_link" name="%(act_project_project_2_project_task_all)d" type="action">
|
||||
<t t-raw="record.task_ids.raw_value.length" />
|
||||
<field name="label_tasks"/>
|
||||
<field name="monthly_tasks" widget="sparkline_bar" options="{'delayIn': '1000'}">
|
||||
Created Tasks
|
||||
</field>
|
||||
</a>
|
||||
</div>
|
||||
<div t-if="record.use_tasks.raw_value and record.task_count.raw_value lt 1" class="col-md-12">
|
||||
<img src="/project/static/src/img/top_left_arrow.png" style="margin-top: -8px; width: 22px;" />
|
||||
<span>No activity yet, click to enter in the project.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row oe_margin_top_8 oe_kanban_project_list">
|
||||
<a t-if="record.doc_count.raw_value" name="attachment_tree_view" type="object" style="margin-right: 10px"> <field name="doc_count"/> Documents</a>
|
||||
<div class="row oe_margin_top_8 oe_kanban_project_infos">
|
||||
<div class="col-md-6">
|
||||
<a t-if="record.doc_count.raw_value" name="attachment_tree_view" type="object">
|
||||
<field name="doc_count"/> Documents
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<span groups="project.group_time_work_estimation_tasks">
|
||||
<i class="fa fa-clock-o"/>
|
||||
<t t-esc="Math.round(record.effective_hours.raw_value)"/>/<t t-esc="Math.round(record.planned_hours.raw_value)"/>
|
||||
<field name="company_uom_id"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row oe_margin_top_8 oe_kanban_footer_left">
|
||||
<span groups="project.group_time_work_estimation_tasks">
|
||||
<i class="fa fa-clock-o"/>
|
||||
<t t-esc="Math.round(record.effective_hours.raw_value)"/>/<t t-esc="Math.round(record.planned_hours.raw_value)"/> <field name="company_uom_id"/>
|
||||
</span>
|
||||
<span t-if="record.date.raw_value">
|
||||
<div class="row oe_margin_top_8 oe_kanban_project_tags">
|
||||
<h5 t-if="record.date.raw_value" class="label label-default">
|
||||
<i class="fa fa-calendar"/>
|
||||
<field name="date"/>
|
||||
</span>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="row oe_margin_top_8 oe_kanban_project_avatars">
|
||||
<t t-foreach="record.members.raw_value.slice(0,11)" t-as="member">
|
||||
@@ -553,7 +567,7 @@
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
||||
<div class="pull-left" groups="base.group_user">
|
||||
<field name="kanban_state" widget="kanban_state_selection"
|
||||
<field name="kanban_state" widget="kanban_state_selection"
|
||||
options='{"states_legend": {"normal": "legend_normal", "blocked": "legend_blocked", "done": "legend_done"}}'/>
|
||||
<field name="priority" widget="priority"/>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
.oe_kanban_project {
|
||||
width: 220px;
|
||||
min-height: 160px;
|
||||
}
|
||||
|
||||
.oe_kanban_project_avatars img {
|
||||
width: 30px;
|
||||
border-radius: 2px;
|
||||
@@ -21,7 +16,7 @@
|
||||
|
||||
.openerp .oe_kanban_view .oe_kanban_project_task_spark {
|
||||
/* Customize width and height of kanban according bootstrap3 */
|
||||
width: 265px;
|
||||
width: 290px;
|
||||
min-height: 120px;
|
||||
/* End of customize */
|
||||
cursor: default;
|
||||
@@ -40,14 +35,15 @@
|
||||
.openerp .oe_margin_top_8 {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.openerp .oe_kanban_project .oe_kanban_project_tags{
|
||||
text-align: right;
|
||||
}
|
||||
.openerp .oe_kanban_project .oe_kanban_project_tags .label{
|
||||
margin: 3px 2px;
|
||||
}
|
||||
|
||||
.openerp label.oe_project_kanban_legend {
|
||||
min-width: inherit !important;
|
||||
margin-top: 6px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.openerp .oe_project_kanban_content .oe_kanban_footer_left .fa {
|
||||
visible: inline-block;
|
||||
}
|
||||
|
||||
@@ -349,17 +349,19 @@
|
||||
<field name="use_issues"/>
|
||||
<field name="issue_ids" invisible="1"/>
|
||||
</field>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]/a" position="after">
|
||||
<a t-if="record.use_issues.raw_value" style="margin-right: 20px" class="pull-right"
|
||||
name="%(act_project_project_2_project_issue_all)d" type="action">
|
||||
<t t-raw="record.issue_ids.raw_value.length"/> <field name="label_issues"/>
|
||||
<field name="monthly_issues" widget="sparkline_bar" options="{'delayIn': '1000'}">
|
||||
Closed Issues
|
||||
</field>
|
||||
</a>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]/div" position="after">
|
||||
<div class="col-md-6">
|
||||
<a t-if="record.use_issues.raw_value" name="%(act_project_project_2_project_issue_all)d" type="action">
|
||||
<t t-raw="record.issue_ids.raw_value.length"/>
|
||||
<field name="label_issues"/>
|
||||
<field name="monthly_issues" widget="sparkline_bar" options="{'delayIn': '1000'}">
|
||||
Closed Issues
|
||||
</field>
|
||||
</a>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]/div" position="replace">
|
||||
<div t-if="!(record.use_tasks.raw_value and record.task_count.raw_value gt 0) and !(record.use_issues.raw_value and record.issue_ids.raw_value.length gt 0)" style="margin-top: 6px;margin-left:20px;">
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]/div[contains(@class, 'col-md-12')]" position="replace">
|
||||
<div t-if="!(record.use_tasks.raw_value and record.task_count.raw_value gt 0) and !(record.use_issues.raw_value and record.issue_ids.raw_value.length gt 0)" class="col-md-12">
|
||||
<img src="/project/static/src/img/top_left_arrow.png" style="margin-top: -8px; width: 22px;" />
|
||||
<span>No activity yet, click to enter in the project.</span>
|
||||
</div>
|
||||
|
||||
@@ -13,9 +13,11 @@
|
||||
<field name="currency_id"/>
|
||||
<field name="partner_id"/>
|
||||
</field>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]/a" position="after">
|
||||
<a t-if="record.invoice_on_timesheets.raw_value" style="margin-right: 10px"
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_infos')]/div" position="after">
|
||||
<div class="col-md-6">
|
||||
<a t-if="record.invoice_on_timesheets.raw_value" style="margin-right: 10px"
|
||||
name="open_timesheets" type="object"><field name="hours_quantity"/> Hours</a>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -42,18 +42,12 @@
|
||||
<field name="percentage_satisfaction_project" invisible="1"/>
|
||||
<field name="is_visible_happy_customer" invisible="1"/>
|
||||
</field>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]" position="after">
|
||||
<div class="row oe_margin_top_8 oe_kanban_project_list">
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_tags')]" position="inside">
|
||||
<a t-if="record.is_visible_happy_customer.raw_value and record.percentage_satisfaction_project.raw_value > -1" name="action_view_all_rating" type="object" title="Percentage of happy people about this project">
|
||||
<img t-if="record.percentage_satisfaction_project.raw_value >= 0 and record.percentage_satisfaction_project.raw_value <= 30" class="rating" src="rating/static/src/img/rating_0.png" style="width:10%;height:10%"></img>
|
||||
<img t-if="record.percentage_satisfaction_project.raw_value > 30 and record.percentage_satisfaction_project.raw_value <= 69" class="rating" src="rating/static/src/img/rating_5.png" style="width:10%;height:10%"></img>
|
||||
<img t-if="record.percentage_satisfaction_project.raw_value >= 70" class="rating" src="rating/static/src/img/rating_10.png" style="width:10%;height:10%"></img>
|
||||
<img t-if="record.percentage_satisfaction_project.raw_value < 0" class="rating" src="rating/static/src/img/rating_-1.png" style="width:10%;height:10%"></img>
|
||||
<t t-if="record.percentage_satisfaction_project.raw_value >= 0">
|
||||
<t t-raw="record.percentage_satisfaction_project.raw_value"/> %
|
||||
</t>
|
||||
<h5 t-attf-class="label #{record.percentage_satisfaction_project.raw_value >= 50 ? 'label-success' : 'label-warning'}">
|
||||
<i t-attf-class="fa #{record.percentage_satisfaction_project.raw_value >= 50 ? 'fa-smile-o' : 'fa-frown-o'}"/> <t t-raw="record.percentage_satisfaction_project.raw_value"/> %
|
||||
</h5>
|
||||
</a>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user