示例#1
0
文件: widgets.py 项目: tinyms/Matty
    def render(self, **prop):
        self.dom_id = prop.get("id")  # client dom id
        self.cols = prop.get("cols")  # entity field list
        self.titles = prop.get("titles")  # title list
        self.entity_full_name = prop.get("entity")  # entity name
        autoform = prop.get("autoform")
        checkable = prop.get("checkable")
        search_fields = prop.get("search_fields")  # default search field name,and text type,
        search_tip = prop.get("search_tip")
        point = EmptyClass()
        point.list = prop.get("point_list")
        point.view = prop.get("point_view")
        point.add = prop.get("point_add")
        point.update = prop.get("point_update")
        point.delete = prop.get("point_delete")

        if not self.entity_full_name:
            return "Require entity full name."
        self.datatable_key = Utils.md5(self.entity_full_name)
        DataTableModule.__security_points__[self.datatable_key] = point
        if search_fields:
            DataTableModule.__default_search_fields__[self.datatable_key] = search_fields
        else:
            DataTableModule.__default_search_fields__[self.datatable_key] = []
        sub = dict()
        sub["name"] = self.entity_full_name
        sub["cols"] = self.cols
        DataTableModule.__entity_mapping__[self.datatable_key] = sub

        tag = ""
        if checkable:
            tag += (
                "<th><input type='checkbox' style='width: 13px; height: 13px;' onclick='%s_.CheckAll(this);'/></th>"
                % self.dom_id
            )
        for title in self.titles:
            tag += "<th>" + title + "</th>"
        tag += "<th>#</th>"

        opt = dict()
        opt["point"] = point
        opt["id"] = self.dom_id
        opt["autoform"] = autoform
        opt["checkable"] = checkable
        if not search_tip:
            search_tip = ""
        opt["search_tip"] = search_tip
        opt["thTags"] = tag
        opt["entity_name_md5"] = self.datatable_key
        if autoform:
            opt["cols"] = self.create_editform()
        html_col = list()

        index = 0
        for col in self.cols:
            html_col.append(
                {"mData": col, "sTitle": self.titles[index], "sClass": "datatable_column_" + col, "sDefaultContent": ""}
            )
            index += 1

        opt["col_defs"] = json.dumps(html_col)
        self.create_editform()
        return self.render_string("widgets/datatable_html.html", opt=opt)