improved project kanban vignette
[odoo/odoo.git] / addons / project / project_view.xml
index 0e19667..dbc4007 100644 (file)
                     <h1>
                         <field name="name" string="Project Name"/>
                     </h1>
-                    <label for="parent_id" class="oe_edit_only" string="Parent Project"/>
-                    <h2>
-                        <field name="parent_id" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
-                    </h2>
                     <group>
                         <group>
-                            <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
                             <field name="user_id" string="Project Manager" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
-                            <field name="analytic_account_id" invisible="1" required="0"/>
-                            <field name="parent_id" invisible="1" string="Parent" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
+                            <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
                             <field name="privacy_visibility"/>
+                            <field name="analytic_account_id" invisible="1" required="0"/>
                         </group>
                         <group>
                             <table>
                                     <field name="priority"/>
                                     <field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
                                     <field name="currency_id" groups="base.group_multi_company" required="1"/>
+                                    <field name="parent_id" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
                                 </group>
                             </group>
                         </page>
                         </page>
                     </notebook>
                 </sheet>
-                <footer>
+                <div class="oe_chatter">
                     <field name="message_ids" widget="mail_thread"/>
-                </footer>
+                </div>
                 </form>
             </field>
         </record>
                         <t t-name="kanban-box">
                             <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_auto_height oe_kanban_global_click">
                                 <div class="oe_dropdown_toggle oe_dropdown_kanban">
-                                    <span class="oe_e">i</span>
+                                    <span class="oe_e">í</span>
                                     <ul class="oe_dropdown_menu">
                                         <li><a type="edit">Edit...</a></li>
                                         <li><a type="delete">Delete</a></li>
                                     states="cancel,done"/>
                             -->
                             <button name="%(action_project_task_reevaluate)d" string="Reactivate" type="action"
-                                    states="done" context="{'button_reactivate':True}" class="oe_highlight"/>
-                             <button name="%(action_project_task_reevaluate)d" string="Reactivate" type="action"
-                                    states="cancelled" context="{'button_reactivate':True}"/>
+                                    states="cancelled,done" context="{'button_reactivate':True}"/>
                             <button name="action_close" string="Done" type="object"
-                                    states="draft,open,pending"/>
+                                    states="draft,open,pending" class="oe_highlight"/>
                             <button name="do_pending" string="Pending" type="object"
                                     states="open"/>
                             <button name="%(action_project_task_delegate)d" string="Delegate" type="action"
                                     states="draft,open,pending"/>
                             <button name="stage_previous" string="Previous Stage" type="object"
                                     states="open,pending" icon="gtk-go-back" attrs="{'invisible': [('stage_id','=', False)]}"/>
-                            <button name="stage_next" string="Next Stage" type="object"
+                            <button name="stage_next" string="Next Stage" type="object" class="oe_highlight"
                                     states="open,pending" icon="gtk-go-forward" attrs="{'invisible': [('stage_id','=', False)]}"/>
                         </span>
                         <field name="stage_id" widget="statusbar"/>
                     <h1>
                         <field name="name"/>
                     </h1>
-                    <label for="project_id" class="oe_edit_only"/>
-                    <h2>
-                        <field name="project_id"  on_change="onchange_project(project_id)"/>
-                    </h2>
                     <group>
                         <group>
+                            <field name="project_id"  on_change="onchange_project(project_id)"/>
                             <field name="user_id" attrs="{'readonly':[('state','in',['done', 'cancelled'])]}"/>
-                            <field name="date_deadline" attrs="{'readonly':[('state','in',['done', 'cancelled'])]}"/>
                             <field name="company_id" groups="base.group_multi_company" widget="selection"/>
                         </group>
                         <group>
-                            <field name="planned_hours" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}"
-                                groups="project.group_time_work_estimation_tasks"
-                                on_change="onchange_planned(planned_hours, effective_hours)"/>
+                            <field name="date_deadline" attrs="{'readonly':[('state','in',['done', 'cancelled'])]}"/>
                             <field name="progress" widget="progressbar"
-                                groups="project.group_time_work_estimation_tasks"
-                                invisible="1"/>
+                                groups="project.group_time_work_estimation_tasks"/>
                         </group>
                     </group>
                     <notebook>
                                 </tree>
                             </field>
                             <group>
-                             <button name="%(action_project_task_reevaluate)d" string="Reevaluate" type="action" target="new" states="open,pending" icon="gtk-edit"/>
                              <group class="oe_subtotal_footer oe_right" name="project_hours" groups="project.group_time_work_estimation_tasks">
                                 <field name="effective_hours" widget="float_time"/>
                                 <label for="remaining_hours" string="Remaining" groups="project.group_time_work_estimation_tasks"/>
                                 <div>
-                                    <field name="remaining_hours" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" groups="project.group_time_work_estimation_tasks"/>
+                                    <field name="remaining_hours" widget="float_time" attrs="{'readonly':[('state','in',('done','cancelled'))]}" groups="project.group_time_work_estimation_tasks"/>
                                 </div>
                                 <field name="total_hours" widget="float_time" class="oe_subtotal_footer_separator"/>
                              </group>
                                 <field name="priority" groups="base.group_user"/>
                                 <field name="sequence"/>
                                 <field name="partner_id"/>
+                                <field name="planned_hours" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}"
+                                    groups="project.group_time_work_estimation_tasks"
+                                    on_change="onchange_planned(planned_hours, effective_hours)"/>
                                 <field name="state" groups="base.group_no_one"/>
                             </group>
                         </page>
                     </notebook>
                     </sheet>
-                    <footer>
+                    <div class="oe_chatter">
                         <field name="message_ids" widget="mail_thread"/>
-                    </footer>
+                    </div>
                 </form>
             </field>
         </record>
                     <t t-name="kanban-box">
                         <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
                             <div class="oe_dropdown_toggle oe_dropdown_kanban">
-                                <span class="oe_e">i</span>
+                                <span class="oe_e">í</span>
                                 <ul class="oe_dropdown_menu">
                                     <li><a type="edit" >Edit...</a></li>
                                     <li><a type="delete">Delete</a></li>
+                                    <li>
+                                      <ul class="oe_kanban_project_times">
+                                        <li><a name="set_remaining_time_1" type="object" class="oe_kanban_button">1</a></li>
+                                        <li><a name="set_remaining_time_2" type="object" class="oe_kanban_button">2</a></li>
+                                        <li><a name="set_remaining_time_5" type="object" class="oe_kanban_button">5</a></li>
+                                        <li><a name="set_remaining_time_10" type="object" class="oe_kanban_button">10</a></li>
+                                        <li><a name="do_open" states="draft" string="Validate planned time" type="object" class="oe_kanban_button oe_kanban_button_active">!</a></li>
+                                      </ul>
+                                    </li>
                                     <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
                                 </ul>
                             </div>
+
                             <div class="oe_kanban_content">
-                                <div>
-                                    <a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
-                                    <a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.6; filter:alpha(opacity=60);"/>
-                                    <b><field name="name"/></b>
-                                </div>
-                                <div>
-                                    <field name="partner_id"/>
-                                </div>
+                                <div><b><field name="name"/></b></div>
                                 <div>
                                     <field name="project_id"/>
                                     <t t-esc="kanban_text_ellipsis(record.description.value, 160)"/><br/>
                                     <i><field name="date_deadline"/></i>
-                                    <span class="oe_kanban_project_times" style="white-space: nowrap; padding-left: 5px;">
-                                                <t t-set="hours" t-value="record.remaining_hours.raw_value"/>
-                                                <t t-set="times" t-value="[
-                                                     [1, (hours gte 1 and hours lt 2)]
-                                                    ,[2, (hours gte 2 and hours lt 5)]
-                                                    ,[5, (hours gte 5 and hours lt 10)]
-                                                    ,[10, (hours gte 10)]
-                                                ]"/>
-                                                <t t-foreach="times" t-as="time"><a 
-                                                    t-if="!time[1]" t-attf-data-name="set_remaining_time_#{time[0]}" type="object" class="oe_kanban_button"><t t-esc="time[0]"/></a><b
-                                                    t-if="time[1]" class="oe_kanban_button oe_kanban_button_active"><t t-esc="Math.round(hours)"/></b></t>
-                                                <a name="do_open" states="draft" string="Validate planned time" type="object" class="oe_kanban_button oe_kanban_button_active">!</a>
-                                    </span>
                                 </div>
-                                <div class="oe_kanban_footer_left" style="margin-top:5px;">
-                                    <div class="oe_right">
-                                        <a t-if="record.kanban_state.raw_value === 'normal'" type="object" string="" name="set_kanban_state_done" class="oe_kanban_status"> </a>
-                                        <a t-if="record.kanban_state.raw_value === 'done'" type="object" string="Ready" name="set_kanban_state_blocked" class="oe_kanban_status oe_kanban_status_green"> </a>
-                                        <a t-if="record.kanban_state.raw_value === 'blocked'" type="object" string="Blocked" name="set_kanban_state_normal" class="oe_kanban_status oe_kanban_status_red"> </a>
-                                        <img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
-                                    </div>
+
+                                <div class="oe_kanban_bottom_right">
+                                    <a t-if="record.kanban_state.raw_value === 'normal'" type="object" string="" name="set_kanban_state_done" class="oe_kanban_status"> </a>
+                                    <a t-if="record.kanban_state.raw_value === 'done'" type="object" string="Ready" name="set_kanban_state_blocked" class="oe_kanban_status oe_kanban_status_green"> </a>
+                                    <a t-if="record.kanban_state.raw_value === 'blocked'" type="object" string="Blocked" name="set_kanban_state_normal" class="oe_kanban_status oe_kanban_status_red"> </a>
+                                    <a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
+                                    <a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
+                                    <img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
+                                </div>
+                                <div class="oe_kanban_footer_left">
+                                    <span>
+                                        <span class="oe_e">N</span>
+                                        <t t-esc="Math.round(record.remaining_hours.raw_value)"/>
+                                    </span>
                                 </div>
                             </div>
                             <div class="oe_clear"></div>