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(action => {
89 if (typeof action === "object") {
90 let action_name = Object.keys(action)[0]
92 `<a class="${action_name} btn btn-default btn-xs" role="button"><i class="${action[action_name].icon}"></i>${action[action_name].text}</a>`
94 } else if (action == "edit") {
96 '<a class="edit btn btn-default btn-xs" role="button"><i class="fa fa-pencil"></i>' +
100 } else if (action == "delete") {
102 '<a class="delete btn btn-default btn-xs" role="button"><i class="fa fa-trash"></i>' +
108 return content.join(" ")
115 ".dt_button_clear_filter, .columns_controls, .export_controls, .dt_button_configure_table"
118 if (this.add_filters) {
119 this.options.orderCellsTop = true
122 if (this.table_settings) {
124 this.table_settings.hasOwnProperty("default_display_length") &&
125 this.table_settings.default_display_length != null
127 this.options.pageLength =
128 this.table_settings.default_display_length
131 this.table_settings.hasOwnProperty("default_sort_order") &&
132 this.table_settings.default_sort_order != null
134 this.options.order = [
135 [this.table_settings.default_sort_order, "asc"],
141 let dt = this.$refs.table.dt()
142 let table_node = dt.table().node()
143 let add_filters = this.add_filters
145 _dt_add_filters(table_node, dt, this.filters_options)
148 dt.on("column-visibility.dt", function () {
149 _dt_on_visibility(add_filters, table_node, dt)
151 .columns(this.hidden_ids)
154 if (Object.keys(this.actions).length) {
156 dt.on("draw", () => {
157 const dataSet = dt.rows().data()
158 Object.entries(this.actions).forEach(([col_id, actions]) => {
162 .each(function (idx) {
163 const data = dataSet[idx]
164 actions.forEach(action => {
166 typeof action === "object"
167 ? Object.keys(action)[0]
169 $("." + action_name, this).on("click", e => {
170 self.$emit(action_name, data, dt, e)
179 const dt = this.$refs.table.dt()
187 type: [String, Function],