美文网首页Odoo 10 Learnodooodoo开发手册
odoo V10开发文档(第二章:高级视图)

odoo V10开发文档(第二章:高级视图)

作者: XiaoHaiYang | 来源:发表于2017-04-08 10:07 被阅读650次

    tree view

    decoration-{ name }
    可以根据值来改变字段的显示,$name可为bf (font-weight: bold), it (font-style: italic)或其他bootstrap样式如danger, info, muted, primary, success,warning

    <tree string="Idea Categories" decoration-info="state=='draft'"
        decoration-danger="state=='trashed'">
        <field name="name"/>
        <field name="state"/>
    </tree>
    

    editable
    取值为top或bottom,不需要跳转到form可以直接编辑字段

    日历视图

    日历视图的属性:color,date_start,date_stop

    #models.py 更改
    from datetime import timedelta
    end_date = fields.Date(string="End Date", store=True,
            compute='_get_end_date', inverse='_set_end_date')
    @api.depends('start_date', 'duration')
    def _get_end_date(self):
        for r in self:
            if not (r.start_date and r.duration):
                r.end_date = r.start_date
                continue
    
            # Add duration to start_date, but: Monday + 5 days = Saturday, so
            # subtract one second to get on Friday instead
            start = fields.Datetime.from_string(r.start_date)
            duration = timedelta(days=r.duration, seconds=-1)
            r.end_date = start + duration
    
    def _set_end_date(self):
        for r in self:
            if not (r.start_date and r.end_date):
                continue
    
            # Compute the difference between dates, but: Friday - Monday = 4 days,
            # so add one day to get 5 days instead
            start_date = fields.Datetime.from_string(r.start_date)
            end_date = fields.Datetime.from_string(r.end_date)
            r.duration = (end_date - start_date).days + 1
        
    #view.xml 更新
     <!-- calendar view -->
    <record model="ir.ui.view" id="session_calendar_view">
        <field name="name">session.calendar</field>
        <field name="model">openacademy.session</field>
        <field name="arch" type="xml">
            <calendar string="Session Calendar" date_start="start_date"
                      date_stop="end_date"
                      color="instructor_id">
                <field name="name"/>
            </calendar>
        </field>
    </record>
    <record model="ir.actions.act_window" id="session_list_action">
        <field name="name">Sessions</field>
        <field name="res_model">openacademy.session</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form,calendar</field>
    </record>
    

    重启更新后session列表多了一个日历视图模式,视图中对session日期包含的日期会自动高亮区分

    搜索视图

    搜索视图的field元素包含一个domain表达式,也可用filter_domain属性来定义,在表达式内self代表用户输入值;
    视图还可定义filter元素设定默认搜索条件,该元素需包含domain和context属性中的一个,domain属性为当前搜索添加限定规则,context可通过group_by来对字段进行分组
    例:添加一个筛选按钮用于选择当前用户负责的课程,一个分组按钮将课程按负责人分组

    #views.xml 修改
    <record model="ir.ui.view" id="course_search_view">
        <field name="name">courses.search</field>
        <field name="model">openacademy.courses</field>
        <field name="arch" type="xml">
            <search>
                <field name="name"/>
                <field name="description"/>
                <filter name="my_courses" string="My Courses"
                        domain="[('responsible_id', '=', uid)]"/>
                <group string="Group By">
                    <filter name="by_responsible" string="Responsible"
                            context="{'group_by': 'responsible_id'}"/>
                </group>
            </search>
        </field>
    </record>
    
    <record model="ir.actions.act_window" id="course_list_action">
        <field name="name">Courses</field>
        <field name="res_model">openacademy.courses</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="context" eval="{'search_default_my_courses': 1}"/>
        <field name="help" type="html">
            <p class="oe_view_nocontent_create">Create the first course
            </p>
        </field>
    </record>
    
    <menuitem id="course_menu" name="课程"
                      parent="openacademy_menu"
                      action="course_list_action"/>
    

    图表视图

    1.图表视图可将数据进行聚合显示,使用graph元素来定义,一共有4种显示模式,Bar- 柱形图、Line -线状图、pie -扇形图
    2.视图的field可以通过type属性来定义数据展现,row指数据总计(默认)、measure指数据估值

    示例:将课程的参与人数用图表展示

    #models.py
    attendees_count = fields.Integer(
            string="Attendees count", compute='_get_attendees_count', store=True)
    @api.depends('attendee_ids')
        def _get_attendees_count(self):
            for r in self:
                r.attendees_count = len(r.attendee_ids)
    
    #views.xml
    <record model="ir.ui.view" id="openacademy_session_graph_view">
        <field name="name">openacademy.session.graph</field>
        <field name="model">openacademy.session</field>
        <field name="arch" type="xml">
            <graph string="Participations by Courses">
                <field name="course_id"/>
                <field name="attendees_count" type="measure"/>
            </graph>
        </field>
    </record>
     <record model="ir.actions.act_window" id="session_list_action">
        <field name="name">Sessions</field>
        <field name="res_model">openacademy.session</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form,calendar,gantt,graph</field>
    </record>
    

    kanban视图

    kanban视图用于显示待力任务,生产工序等,以卡片的形式进行显示,根元素是kanban

    添加一个按课程分组的session kanban

    #models.py添加
    color = fields.Integer()
    
    #views.xml添加
    <record model="ir.ui.view" id="view_openacad_session_kanban">
        <field name="name">openacad.session.kanban</field>
        <field name="model">openacademy.session</field>
        <field name="arch" type="xml">
            <kanban default_group_by="course_id">
                <field name="color"/>
                <templates>
                    <t t-name="kanban-box">
                        <div
                                t-attf-class="oe_kanban_color_{{kanban_getcolor(record.color.raw_value)}}
                                              oe_kanban_global_click_edit oe_semantic_html_override
                                              oe_kanban_card {{record.group_fancy==1 ? 'oe_kanban_card_fancy' : ''}}">
                            <div class="oe_dropdown_kanban">
                                <!-- dropdown menu -->
                                <div class="oe_dropdown_toggle">
                                    <i class="fa fa-bars fa-lg"/>
                                    <ul class="oe_dropdown_menu">
                                        <li>
                                            <a type="delete">Delete</a>
                                        </li>
                                        <li>
                                            <ul class="oe_kanban_colorpicker"
                                                data-field="color"/>
                                        </li>
                                    </ul>
                                </div>
                                <div class="oe_clear"></div>
                            </div>
                            <div t-attf-class="oe_kanban_content">
                                <!-- title -->
                                Session name:
                                <field name="name"/>
                                <br/>
                                Start date:
                                <field name="start_date"/>
                                <br/>
                                duration:
                                <field name="duration"/>
                            </div>
                        </div>
                    </t>
                </templates>
            </kanban>
        </field>
    </record>
    
    <record model="ir.actions.act_window" id="session_list_action">
        <field name="name">Sessions</field>
        <field name="res_model">openacademy.session</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form,calendar,gantt,graph,kanban</field>
    </record>
    

    内容发布自http://www.dingyii.cn,转载请注明出处

    相关文章

      网友评论

        本文标题:odoo V10开发文档(第二章:高级视图)

        本文链接:https://www.haomeiwen.com/subject/qoukattx.html