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 import "datatables.net-buttons/js/buttons.colVis"
19 DataTable.use(DataTablesLib)
24 let hidden_ids, included_ids
25 ;[hidden_ids, included_ids] = _dt_visibility(
29 let buttons = _dt_buttons({
31 table_settings: this.table_settings,
35 tableColumns: this.columns,
41 pagingType: "full_numbers",
45 url: typeof this.url === "function" ? this.url() : this.url,
47 options: this.options,
48 default_filters: this.default_filters,
52 search: { search: this.$route.query.q },
56 render: function (data, type, row, meta) {
57 if (type == "display") {
58 return escape_str(data)
71 return { dataTablesDefaults }
74 redraw: function (url) {
75 this.$refs.table.dt().ajax.url(url).draw()
79 if (this.actions.hasOwnProperty("-1")) {
84 title: this.$__("Actions"),
86 render: (data, type, row) => {
88 this.actions["-1"].forEach(a => {
91 '<a class="edit btn btn-default btn-xs" role="button"><i class="fa fa-pencil"></i>' +
95 } else if (a == "delete") {
97 '<a class="delete btn btn-default btn-xs" role="button"><i class="fa fa-trash"></i>' +
103 return content.join(" ")
110 ".dt_button_clear_filter, .columns_controls, .export_controls, .dt_button_configure_table"
113 if (this.add_filters) {
114 this.options.orderCellsTop = true
117 if (this.table_settings) {
119 this.table_settings.hasOwnProperty("default_display_length") &&
120 this.table_settings.default_display_length != null
122 this.options.pageLength =
123 this.table_settings.default_display_length
126 this.table_settings.hasOwnProperty("default_sort_order") &&
127 this.table_settings.default_sort_order != null
129 this.options.order = [
130 [this.table_settings.default_sort_order, "asc"],
136 let dt = this.$refs.table.dt()
137 let table_node = dt.table().node()
138 let add_filters = this.add_filters
140 _dt_add_filters(table_node, dt, this.filters_options)
143 dt.on("column-visibility.dt", function () {
144 _dt_on_visibility(add_filters, table_node, dt)
146 .columns(this.hidden_ids)
149 if (Object.keys(this.actions).length) {
151 dt.on("draw", () => {
152 const dataSet = dt.rows().data()
153 Object.entries(this.actions).forEach(([col_id, actions]) => {
157 .each(function (idx) {
158 const data = dataSet[idx]
159 actions.forEach(action => {
160 $("." + action, this).on("click", e => {
161 self.$emit(action, data, dt, e)
170 const dt = this.$refs.table.dt()
178 type: [String, Function],