3 :columns="tableColumns"
4 :options="{ ...dataTablesDefaults, ...allOptions }"
13 import DataTable from "datatables.net-vue3"
14 import DataTablesLib from "datatables.net"
15 import "datatables.net-buttons"
16 import "datatables.net-buttons/js/buttons.html5"
17 import "datatables.net-buttons/js/buttons.print"
18 DataTable.use(DataTablesLib)
25 tableColumns: this.columns,
31 pagingType: "full_numbers",
34 url: typeof this.url === "function" ? this.url() : this.url,
35 ..._dt_default_ajax({ options: this.options }),
37 buttons: _dt_buttons({ table_settings: this.table_settings }),
38 default_search: this.$route.query.q,
43 return { dataTablesDefaults }
46 redraw: function (url) {
47 this.$refs.table.dt().ajax.url(url).draw()
51 if (this.actions.hasOwnProperty("-1")) {
52 let actions = this.actions["-1"]
57 title: this.$__("Actions"),
59 render: (data, type, row) => {
61 this.actions["-1"].forEach(a => {
64 '<a class="edit btn btn-default btn-xs" role="button"><i class="fa fa-pencil"></i>' +
68 } else if (a == "delete") {
70 '<a class="delete btn btn-default btn-xs" role="button"><i class="fa fa-trash"></i>' +
76 return content.join(" ")
83 if (Object.keys(this.actions).length) {
84 const dt = this.$refs.table.dt()
87 const dataSet = dt.rows().data()
88 Object.entries(this.actions).forEach(([col_id, actions]) => {
92 .each(function (idx) {
93 const data = dataSet[idx]
94 actions.forEach(action => {
95 $("." + action, this).on("click", e => {
96 self.$emit(action, data, dt, e)
105 const dt = this.$refs.table.dt()
113 type: [String, Function],