").appendTo(this.page.main);
+ $('
\
+
\
+
\
+
\
+
\
+
'+__('Expand All')+' \
+
'+__('Collapse All')+' \
+
\
+
\
+ '+__('For comparative filters, start with')+' ">" or "<" or "!", e.g. >5 or >01-02-2012 or !0\
+ '+__('For ranges')+' ('+__('values and dates')+') use ":", \
+ e.g. "5:10" (' + __("to filter values between 5 & 10") + ')
\
+
').appendTo(this.wrapper);
+ this.wrapper.find(".expand-all").on("click", function() { me.toggle_all(false);});
+ this.wrapper.find(".collapse-all").on("click", function() { me.toggle_all(true);});
+ this.chart_area = this.wrapper.find(".chart-area");
+ this.make_toolbar();
+ },
+ toggle_expand_collapse_buttons: function(show) {
+ this.wrapper.find(".expand-all, .collapse-all").toggleClass('hidden', !!!show);
+ },
+ make_toolbar: function() {
+ var me = this;
+ this.page.set_secondary_action(__('Refresh'), function() { me.refresh(); });
+
+ // Edit
+ this.page.add_menu_item(__('Edit'), function() {
+ if(!frappe.user.is_report_manager()) {
+ frappe.msgprint(__("You are not allowed to create / edit reports"));
+ return false;
+ }
+ frappe.set_route("Form", "Report", me.report_name);
+ }, true);
+
+ this.page.add_menu_item(__("Print"), function() {
+ frappe.ui.get_print_settings(false, function(print_settings) {
+ me.print_settings = print_settings;
+ me.print_report();
+ }, me.report_doc.letter_head);
+ }, true);
+
+ this.page.add_menu_item(__("PDF"), function() {
+ frappe.ui.get_print_settings(true, function(print_settings) {
+ me.print_settings = print_settings;
+ me.pdf_report();
+ }, me.report_doc.letter_head);
+ }, true);
+
+ this.page.add_menu_item(__('Export'), function() {
+ me.make_export();
+ }, true);
+
+ this.page.add_menu_item(__("Setup Auto Email"), function() {
+ frappe.set_route('List', 'Auto Email Report', {'report' : me.report_name});
+ }, true);
+
+ if(frappe.model.can_set_user_permissions("Report")) {
+ this.page.add_menu_item(__("User Permissions"), function() {
+ frappe.route_options = {
+ doctype: "Report",
+ name: me.report_name
+ };
+ frappe.set_route('List', 'User Permission');
+ }, true);
+ }
+
+ // add to desktop
+ this.page.add_menu_item(__("Add to Desktop"), function() {
+ frappe.add_to_desktop(me.report_name, null, me.report_name);
+ }, true);
+ },
+ load: function() {
+ // load from route
+ var route = frappe.get_route();
+ var me = this;
+ if(route[1]) {
+ if((me.report_name!=route[1]) || frappe.route_options) {
+ me.report_name = route[1];
+ this.wrapper.find(".no-report-area").toggle(false);
+ me.page.set_title(__(me.report_name));
+
+ frappe.model.with_doc("Report", me.report_name, function() {
+
+ me.report_doc = frappe.get_doc("Report", me.report_name);
+
+ frappe.model.with_doctype(me.report_doc.ref_doctype, function() {
+ var module = locals.DocType[me.report_doc.ref_doctype].module;
+ frappe.breadcrumbs.add(module)
+
+ if(!frappe.query_reports[me.report_name]) {
+ return frappe.call({
+ method:"frappe.desk.query_report.get_script",
+ args: {
+ report_name: me.report_name
+ },
+ callback: function(r) {
+ frappe.dom.eval(r.message.script || "");
+
+ frappe.after_ajax(function() {
+ var report_settings = frappe.query_reports[me.report_name];
+ me.html_format = r.message.html_format;
+ report_settings["html_format"] = r.message.html_format;
+
+ me.setup_report();
+ });
+ }
+ });
+ } else {
+ me.setup_report();
+ }
+ });
+ });
+ }
+ } else {
+ var msg = __("No Report Loaded. Please use query-report/[Report Name] to run a report.")
+ this.wrapper.find(".no-report-area").html(msg).toggle(true);
+ }
+ },
+ setup_report: function() {
+ var me = this;
+ this.page.set_title(__(this.report_name));
+ this.page.clear_inner_toolbar();
+ this.setup_filters();
+ this.chart_area.toggle(false);
+ this.toggle_expand_collapse_buttons(false);
+ this.is_tree_report = false;
+
+ var report_settings = frappe.query_reports[this.report_name];
+
+ $.when(function() {
+ if (report_settings.onload) {
+ return report_settings.onload(me);
+ }
+
+ }()).then(function() {
+ me.refresh();
+ });
+ },
+ print_report: function() {
+ if(!frappe.model.can_print(this.report_doc.ref_doctype)) {
+ frappe.msgprint(__("You are not allowed to print this report"));
+ return false;
+ }
+ if(this.html_format) {
+ var content = frappe.render(this.html_format, {
+ data: frappe.slickgrid_tools.get_filtered_items(this.dataView),
+ filters: this.get_values(),
+ report: this,
+ data_to_be_printed: this.data_to_be_printed
+ });
+
+ frappe.render_grid({
+ content: content,
+ title: __(this.report_name),
+ print_settings: this.print_settings,
+ columns: this.columns
+ });
+ } else {
+ frappe.render_grid({
+ grid: this.grid,
+ report: this,
+ title: __(this.report_name),
+ print_settings: this.print_settings,
+ });
+ }
+ },
+ pdf_report: function() {
+ var me = this;
+ var base_url = frappe.urllib.get_base_url();
+ var print_css = frappe.boot.print_css;
+
+ if(!frappe.model.can_print(this.report_doc.ref_doctype)) {
+ frappe.msgprint(__("You are not allowed to make PDF for this report"));
+ return false;
+ }
+
+ var orientation = this.print_settings.orientation;
+ var landscape = orientation == "Landscape" ? true: false
+ var columns = this.grid.getColumns();
+ if(this.html_format) {
+ var content = frappe.render(this.html_format, {
+ data: frappe.slickgrid_tools.get_filtered_items(this.dataView),
+ filters:this.get_values(),
+ report:this,
+ data_to_be_printed: this.data_to_be_printed
+ });
+
+ //Render Report in HTML
+ var html = frappe.render_template("print_template", {
+ content:content,
+ title:__(this.report_name),
+ base_url: base_url,
+ print_css: print_css,
+ print_settings: this.print_settings,
+ landscape: landscape,
+ columns: columns
+ });
+ } else {
+ // rows filtered by inline_filter of slickgrid
+ var visible_idx = frappe.slickgrid_tools
+ .get_view_data(this.columns, this.dataView)
+ .map(row => row[0]).filter(idx => idx !== 'Sr No');
+
+ var data = this.grid.getData().getItems();
+ data = data.filter(d => visible_idx.includes(d._id));
+
+ var content = frappe.render_template("print_grid", {
+ columns:columns,
+ data:data,
+ title:__(this.report_name)
+ })
+
+ //Render Report in HTML
+ var html = frappe.render_template("print_template",{
+ content:content,
+ title:__(this.report_name),
+ base_url: base_url,
+ print_css: print_css,
+ print_settings: this.print_settings,
+ landscape: landscape,
+ columns: columns
+ });
+ }
+
+ var orientation = this.print_settings.orientation;
+ this.open_pdf_report(html, orientation)
+ },
+ open_pdf_report: function(html, orientation) {
+ //Create a form to place the HTML content
+ var formData = new FormData();
+
+ //Push the HTML content into an element
+ formData.append("html", html);
+ formData.append("orientation", orientation);
+ var blob = new Blob([], { type: "text/xml"});
+ //formData.append("webmasterfile", blob);
+ formData.append("blob", blob);
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", '/api/method/frappe.utils.print_format.report_to_pdf');
+ xhr.setRequestHeader("X-Frappe-CSRF-Token", frappe.csrf_token);
+ xhr.responseType = "arraybuffer";
+
+ xhr.onload = function(success) {
+ if (this.status === 200) {
+ var blob = new Blob([success.currentTarget.response], {type: "application/pdf"});
+ var objectUrl = URL.createObjectURL(blob);
+
+ //Open report in a new window
+ window.open(objectUrl);
+ }
+ };
+ xhr.send(formData);
+ },
+ setup_filters: function() {
+ if(this.setting_filters) return;
+
+ this.clear_filters();
+ var me = this;
+ $.each(frappe.query_reports[this.report_name].filters || [], function(i, df) {
+ if(df.fieldtype==="Break") {
+ me.page.add_break();
+ } else {
+ var f = me.page.add_field(df);
+ $(f.wrapper).addClass("filters pull-left");
+ me.filters.push(f);
+
+ if(df["default"]) {
+ f.set_input(df["default"]);
+ }
+ if(df.fieldtype=="Check") {
+ $(f.wrapper).find("input[type='checkbox']");
+ }
+
+ if(df.get_query) f.get_query = df.get_query;
+ if(df.on_change) f.on_change = df.on_change;
+ df.onchange = () => {
+ if(!me.flags.filters_set) {
+ // don't trigger change while setting filters
+ return;
+ }
+ if (f.on_change) {
+ f.on_change(me);
+ } else {
+ me.trigger_refresh();
+ }
+ }
+ }
+ });
+
+ // hide page form if no filters
+ var $filters = $(this.parent).find('.page-form .filters');
+ $(this.parent).find('.page-form').toggle($filters.length ? true : false);
+
+ // set the field 'query_report_filters_by_name' first as they can be used in
+ // setting/triggering the filters
+ this.set_filters_by_name();
+
+ this.setting_filters = true;
+ this.set_route_filters();
+ this.setting_filters = false;
+
+ this.flags.filters_set = true;
+ },
+ clear_filters: function() {
+ this.filters = [];
+ $(this.parent).find('.page-form .filters').remove();
+ },
+ set_filters_by_name: function() {
+ frappe.query_report_filters_by_name = {};
+ for(var i in this.filters) {
+ frappe.query_report_filters_by_name[this.filters[i].df.fieldname] = this.filters[i];
+ }
+ },
+ set_route_filters: function() {
+ var me = this;
+ if(frappe.route_options) {
+ const fields = Object.keys(frappe.route_options);
+ const filters_to_set = this.filters.filter(f => fields.includes(f.df.fieldname));
+
+ const promises = filters_to_set.map(f => {
+ return () => {
+ const value = frappe.route_options[f.df.fieldname];
+ return f.set_value(value);
+ }
+ });
+ promises.push(() => {
+ frappe.route_options = null;
+ });
+
+ return frappe.run_serially(promises);
+ }
+
+ },
+ refresh: function() {
+ // throttle
+ // stop refresh from being called multiple times (from triggers ?)
+ if (!this.request_refresh) {
+ this.request_refresh = setTimeout(() => {
+ this._refresh();
+ this.request_refresh = null;
+ }, 300);
+ }
+ },
+ _refresh: function() {
+ // Run
+ var me = this;
+
+ this.wrapper.find(".results").toggle(false);
+ try {
+ var filters = this.get_values(true);
+ } catch(e) {
+ // don't run report
+ return;
+ }
+
+ this.waiting = frappe.messages.waiting(this.wrapper.find(".waiting-area").empty().toggle(true),
+ __("Loading Report") + "...");
+ this.wrapper.find(".no-report-area").toggle(false);
+
+ if (this.report_ajax) {
+ // abort previous request
+ this.report_ajax.abort();
+ }
+
+ this.chart_area.toggle(false);
+
+ this.report_ajax = frappe.call({
+ method: "frappe.desk.query_report.run",
+ type: "GET",
+ args: {
+ "report_name": me.report_name,
+ filters: filters
+ },
+ callback: function(r) {
+ me.report_ajax = undefined;
+ me.make_results(r.message);
+ }
+ });
+
+ return this.report_ajax;
+ },
+ trigger_refresh: function() {
+ var me = this;
+ var filters = me.get_values();
+
+ // check if required filters are not missing
+ var missing = false;
+ $.each(me.filters, function(k, _f) {
+ if (_f.df.reqd && !filters[_f.df.fieldname]) {
+ missing = true;
+ return;
+ }
+ });
+
+ if (!missing) {
+ me.refresh();
+ }
+ },
+ get_values: function(raise) {
+ var filters = {};
+ var mandatory_fields = [];
+ $.each(this.filters || [], function(i, f) {
+ var v = f.get_value();
+ // TODO: hidden fields dont have $input
+ if(f.df.hidden) v = f.value;
+ if(v === '%') v = null;
+ if(f.df.reqd && !v) mandatory_fields.push(f.df.label);
+ if(v) filters[f.df.fieldname] = v;
+ })
+ if(raise && mandatory_fields.length) {
+ this.chart_area.hide();
+ this.wrapper.find(".waiting-area").empty().toggle(false);
+ this.wrapper.find(".no-report-area").html(__("Please set filters")).toggle(true);
+ if(raise) {
+ console.log('filter missing: ' + mandatory_fields);
+ throw "Filters required";
+ }
+ }
+
+ return filters;
+ },
+ make_results: function(res) {
+ this.wrapper.find(".waiting-area, .no-report-area").empty().toggle(false);
+ this.wrapper.find(".results").toggle(true);
+ this.make_columns(res.columns);
+ this.make_data(res.result, res.columns);
+ this.filter_hidden_columns();
+ this.render(res);
+ },
+ render: function(res) {
+ this.columnFilters = {};
+ this.make_dataview();
+ this.id = frappe.dom.set_unique_id(this.wrapper.find(".result-area").addClass("slick-wrapper").get(0));
+
+ this.grid = new Slick.Grid("#"+this.id, this.dataView, this.columns,
+ this.slickgrid_options);
+
+ if (!frappe.dom.is_touchscreen()) {
+ this.grid.setSelectionModel(new Slick.CellSelectionModel());
+ this.grid.registerPlugin(new Slick.CellExternalCopyManager({
+ dataItemColumnValueExtractor: function(item, columnDef, value) {
+ return item[columnDef.field];
+ }
+ }));
+ }
+
+ this.setup_header_row();
+ this.grid.init();
+ this.setup_sort();
+
+ // further setup of grid like click subscription for tree
+ if (this.get_query_report_opts().tree) {
+ this.setup_tree();
+ }
+
+ this.set_message(res.message);
+ this.setup_chart(res);
+ this.set_print_data(res.data_to_be_printed);
+
+ this.toggle_expand_collapse_buttons(this.is_tree_report);
+ },
+
+ make_columns: function(columns) {
+ var me = this;
+ var formatter = this.get_formatter();
+
+ this.columns = [{id: "_id", field: "_id", name: __("Sr No"), width: 60}]
+ .concat($.map(columns, function(c, i) {
+ if ($.isPlainObject(c)) {
+ var df = c;
+ } else if (c.indexOf(":")!==-1) {
+ var opts = c.split(":");
+ var df = {
+ label: opts.length<=2 ? opts[0] : opts.slice(0, opts.length - 2).join(":"),
+ fieldtype: opts.length<=2 ? opts[1] : opts[opts.length - 2],
+ width: opts.length<=2 ? opts[2] : opts[opts.length - 1]
+ };
+ if (df.fieldtype.indexOf("/")!==-1) {
+ var tmp = df.fieldtype.split("/");
+ df.fieldtype = tmp[0];
+ df.options = tmp[1];
+ }
+ df.width = cint(df.width);
+ } else {
+ var df = {
+ label: c,
+ fieldtype: "Data"
+ };
+ }
+
+ if (!df.fieldtype) df.fieldtype = "Data";
+ if (!cint(df.width)) df.width = 80;
+
+ var col = $.extend({}, df, {
+ label: df.label || (df.fieldname && __(toTitle(df.fieldname.replace(/_/g, " ")))) || "",
+ sortable: true,
+ df: df,
+ formatter: formatter
+ });
+
+ col.field = df.fieldname || df.label;
+ df.label = __(df.label);
+ col.name = col.id = col.label = df.label;
+
+ if(df.width < 0) {
+ col.hidden = true;
+ }
+
+ return col
+ }));
+ },
+ filter_hidden_columns: function() {
+ this.columns = $.map(this.columns, function(c, i) {
+ return (c.hidden==1 ? null : c);
+ });
+ },
+ get_query_report_opts: function() {
+ return frappe.query_reports[this.report_name] || {};
+ },
+ get_formatter: function() {
+ var formatter = function(row, cell, value, columnDef, dataContext, for_print) {
+ var value = frappe.format(value, columnDef.df, {for_print: for_print, always_show_decimals: true}, dataContext);
+
+ if (columnDef.df.is_tree) {
+ value = frappe.query_report.tree_formatter(row, cell, value, columnDef, dataContext);
+ }
+
+ return value;
+ };
+
+ var query_report_opts = this.get_query_report_opts();
+ if (query_report_opts.formatter) {
+ var default_formatter = formatter;
+
+ // custom formatter
+ formatter = function(row, cell, value, columnDef, dataContext) {
+ return query_report_opts.formatter(row, cell, value, columnDef, dataContext, default_formatter);
+ }
+ }
+
+ return formatter;
+ },
+ make_data: function(result, columns) {
+ var me = this;
+ this.data = [];
+ for(var row_idx=0, l=result.length; row_idx < l; row_idx++) {
+ var row = result[row_idx];
+ if ($.isPlainObject(row)) {
+ var newrow = row;
+ } else {
+ var newrow = {};
+ for(var i=1, j=this.columns.length; i
number_fields.includes(col.fieldtype))
+ .map(col => col.field);
+
+ // reset numeric fields
+ let updated_totals = Object.assign({}, this.dataView.getItemById(this.total_row_id));
+ fields.map(field => {
+ updated_totals[field] = 0.0;
+ });
+
+ const data_length = this.dataView.getLength();
+ // loop all the rows except the last Total row
+ for (let i = 0; i < data_length - 1; i++) {
+ const item = this.dataView.getItem(i);
+ fields.map(field => {
+ updated_totals[field] += item[field];
+ });
+ }
+ this.dataView.updateItem(updated_totals.id, updated_totals);
+ },
+ inline_filter: function (item) {
+ var me = frappe.container.page.query_report;
+ if(me.report_doc.add_total_row) {
+ // always show totals row
+ if(item.id === me.total_row_id) return true;
+ }
+ for (var columnId in me.columnFilters) {
+ if (columnId !== undefined && me.columnFilters[columnId] !== "") {
+ var c = me.grid.getColumns()[me.grid.getColumnIndex(columnId)];
+ if (!me.compare_values(item[c.field], me.columnFilters[columnId],
+ me.columns[me.grid.getColumnIndex(columnId)])) {
+ return false;
+ }
+ }
+ }
+ return true;
+ },
+ setup_item_by_name: function() {
+ this.item_by_name = {};
+ this.name_field = this.get_query_report_opts().name_field;
+ this.parent_field = this.get_query_report_opts().parent_field;
+ var initial_depth = this.get_query_report_opts().initial_depth;
+ for (var i=0, l=this.data.length; i=(initial_depth - 1)) {
+ item._collapsed = true;
+ }
+ }
+
+ },
+ toggle_all: function(collapse) {
+ var me = this;
+ for(var i=0, l=this.data.length; i")
+ .css("padding-left", (cint(dataContext.indent) * 21) + "px")
+ .html(value);
+
+ var idx = me.dataView.getIdxById(dataContext.id);
+ var show_toggle = me.data[idx + 1] && (me.data[idx + 1].indent > me.data[idx].indent)
+
+ if (dataContext[me.name_field] && show_toggle) {
+ $(' ')
+ .addClass(dataContext._collapsed ? "expand" : "collapse")
+ .css("margin-right", "7px")
+ .prependTo($span);
+ }
+
+ return $span.wrap("
").parent().html();
+ },
+ compare_values: function(value, filter, columnDef) {
+ var invert = false;
+
+ // check if invert
+ if(filter[0]=="!") {
+ invert = true;
+ filter = filter.substr(1);
+ }
+
+ var out = false;
+ var cond = "=="
+
+ // parse condition
+ if(filter[0]==">") {
+ filter = filter.substr(1);
+ cond = ">"
+ } else if(filter[0]=="<") {
+ filter = filter.substr(1);
+ cond = "<"
+ }
+
+ if(in_list(['Float', 'Currency', 'Int', 'Date'], columnDef.df.fieldtype)) {
+ // non strings
+ if(filter.indexOf(":")==-1) {
+ if(columnDef.df.fieldtype=="Date") {
+ filter = frappe.datetime.user_to_str(filter);
+ }
+
+ if(in_list(["Float", "Currency", "Int"], columnDef.df.fieldtype)) {
+ value = flt(value);
+ filter = flt(filter);
+ }
+
+ out = eval("value" + cond + "filter");
+ } else {
+ // range
+ filter = filter.split(":");
+ if(columnDef.df.fieldtype=="Date") {
+ filter[0] = frappe.datetime.user_to_str(filter[0]);
+ filter[1] = frappe.datetime.user_to_str(filter[1]);
+ }
+
+ if(in_list(["Float", "Currency", "Int"], columnDef.df.fieldtype)) {
+ value = flt(value);
+ filter[0] = flt(filter[0]);
+ filter[1] = flt(filter[1]);
+ }
+
+ out = value >= filter[0] && value <= filter[1];
+ }
+ } else {
+ // string
+ value = value + "";
+ value = value.toLowerCase();
+ filter = filter.toLowerCase();
+ out = value.indexOf(filter) != -1;
+ }
+
+ if(invert)
+ return !out;
+ else
+ return out;
+ },
+ setup_header_row: function() {
+ var me = this;
+
+ $(this.grid.getHeaderRow()).delegate(":input", "change keyup", function (e) {
+ var columnId = $(this).data("columnId");
+ if (columnId != null) {
+ me.columnFilters[columnId] = $.trim($(this).val());
+ me.dataView.refresh();
+ }
+ });
+
+ this.grid.onHeaderRowCellRendered.subscribe(function(e, args) {
+ $(args.node).empty();
+ $(" ")
+ .data("columnId", args.column.id)
+ .val(me.columnFilters[args.column.id])
+ .appendTo(args.node);
+ });
+ },
+ setup_sort: function() {
+ var me = this;
+ this.grid.onSort.subscribe(function (e, args) {
+ var cols = args.sortCols;
+
+ me.data.sort(function (dataRow1, dataRow2) {
+ // Totals row should always be last
+ if(me.report_doc.add_total_row) {
+ if(dataRow1.id === me.total_row_id) {
+ return 1;
+ }
+ if(dataRow2.id === me.total_row_id) {
+ return -1;
+ }
+ }
+
+ for (var i = 0, l = cols.length; i < l; i++) {
+ var field = cols[i].sortCol.field;
+ var sign = cols[i].sortAsc ? 1 : -1;
+ var value1 = dataRow1[field], value2 = dataRow2[field];
+ var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign;
+ if (result != 0) {
+ return result;
+ }
+ }
+ return 0;
+ });
+ me.dataView.beginUpdate();
+ me.dataView.setItems(me.data);
+ me.dataView.endUpdate();
+ me.dataView.refresh();
+ });
+ },
+ setup_tree: function() {
+ // set these in frappe.query_reports[report_name]
+ // "tree": true,
+ // "name_field": "account",
+ // "parent_field": "parent_account",
+ // "initial_depth": 3
+
+ // also set "is_tree" true for ColumnDef
+
+ var me = this;
+ this.grid.onClick.subscribe(function (e, args) {
+ if ($(e.target).hasClass("toggle")) {
+ var item = me.dataView.getItem(args.row);
+ if (item) {
+ if (!item._collapsed) {
+ item._collapsed = true;
+ } else {
+ item._collapsed = false;
+ }
+
+ me.dataView.updateItem(item.id, item);
+ }
+ e.stopImmediatePropagation();
+ }
+ });
+ },
+
+ make_export: function() {
+
+ var me = this;
+ this.title = this.report_name;
+
+ if(!frappe.model.can_export(this.report_doc.ref_doctype)) {
+ frappe.msgprint(__("You are not allowed to export this report"));
+ return false;
+ }
+
+ frappe.prompt({fieldtype:"Select", label: __("Select File Type"), fieldname:"file_format_type",
+ options:"Excel\nCSV", default:"Excel", reqd: 1},
+ function(data) {
+ var view_data = frappe.slickgrid_tools.get_view_data(me.columns, me.dataView);
+ var result = view_data.map(row => row.splice(1));
+
+ // to download only visible rows
+ var visible_idx = view_data.map(row => row[0]).filter(sr_no => sr_no !== 'Sr No');
+
+ if (data.file_format_type == "CSV") {
+ frappe.tools.downloadify(result, null, me.title);
+ }
+
+ else if (data.file_format_type == "Excel") {
+ try {
+ var filters = me.get_values(true);
+ } catch(e) {
+ return;
+ }
+ var args = {
+ cmd: 'frappe.desk.query_report.export_query',
+ report_name: me.report_name,
+ file_format_type: data.file_format_type,
+ filters: filters,
+ visible_idx: visible_idx,
+ }
+
+ open_url_post(frappe.request.url, args);
+ }
+ }, __("Export Report: "+ me.title), __("Download"));
+
+ return false;
+ },
+
+ set_message: function(msg) {
+ if(msg) {
+ this.wrapper.find(".help-msg").html(msg).toggle(true);
+ } else {
+ this.wrapper.find(".help-msg").empty().toggle(false);
+ }
+ },
+
+ setup_chart: function(res) {
+ this.chart_area.toggle(false);
+
+ if (this.get_query_report_opts().get_chart_data) {
+ var opts = this.get_query_report_opts().get_chart_data(res.columns, res.result);
+ } else if (res.chart) {
+ var opts = res.chart;
+ } else {
+ return;
+ }
+
+ $.extend(opts, {
+ parent: ".chart-area",
+ height: 200
+ });
+
+ console.log(opts)
+
+ if(opts.data && opts.data.labels && opts.data.labels.length) {
+ this.chart_area.toggle(true);
+ this.chart = new Chart(opts);
+ }
+ },
+
+ set_print_data: function(data_to_be_printed) {
+ this.data_to_be_printed = data_to_be_printed;
+ }
+})
diff --git a/frappe/public/js/lib/frappe-datatable.js b/frappe/public/js/lib/frappe-datatable.js
index cba08e87cb..289879ef17 100644
--- a/frappe/public/js/lib/frappe-datatable.js
+++ b/frappe/public/js/lib/frappe-datatable.js
@@ -1 +1,3981 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("sortablejs"),require("clusterize.js")):"function"==typeof define&&define.amd?define("DataTable",[,],t):"object"==typeof exports?exports.DataTable=t(require("sortablejs"),require("clusterize.js")):e.DataTable=t(e.Sortable,e.Clusterize)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var a=n[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=6)}([function(e,t,n){"use strict";function o(e,t){return"string"==typeof e?(t||document).querySelector(e):e||null}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=o,o.each=function(e,t){return"string"==typeof e?Array.from((t||document).querySelectorAll(e)):e||null},o.create=function(e,t){var n=document.createElement(e);for(var r in t)!function(e){var r=t[e];if("inside"===e)o(r).appendChild(n);else if("around"===e){var i=o(r);i.parentNode.insertBefore(n,i),n.appendChild(i)}else"styles"===e?"object"===(void 0===r?"undefined":a(r))&&Object.keys(r).map(function(e){n.style[e]=r[e]}):e in n?n[e]=r:n.setAttribute(e,r)}(r);return n},o.on=function(e,t,n,a){a?o.delegate(e,t,n,a):(a=n,o.bind(e,t,a))},o.off=function(e,t,n){e.removeEventListener(t,n)},o.bind=function(e,t,n){t.split(/\s+/).forEach(function(t){e.addEventListener(t,n)})},o.delegate=function(e,t,n,o){e.addEventListener(t,function(e){var t=e.target.closest(n);t&&(e.delegatedTarget=t,o.call(this,e,t))})},o.unbind=function(e,t){if(e){for(var n in t)!function(n){var o=t[n];n.split(/\s+/).forEach(function(t){e.removeEventListener(t,o)})}(n)}},o.fire=function(e,t,n){var o=document.createEvent("HTMLEvents");o.initEvent(t,!0,!0);for(var a in n)o[a]=n[a];return e.dispatchEvent(o)},o.data=function(e,t){if(!t)return e.dataset;for(var n in t)e.dataset[n]=t[n]},o.style=function(e,t){if("string"==typeof t)return o.getStyle(e,t);Array.isArray(e)||(e=[e]),e.map(function(e){for(var n in t)e.style[n]=t[n]})},o.removeStyle=function(e,t){Array.isArray(e)||(e=[e]),Array.isArray(t)||(t=[t]),e.map(function(e){var n=!0,o=!1,a=void 0;try{for(var r,i=t[Symbol.iterator]();!(n=(r=i.next()).done);n=!0){var l=r.value;e.style[l]=""}}catch(e){o=!0,a=e}finally{try{!n&&i.return&&i.return()}finally{if(o)throw a}}})},o.getStyle=function(e,t){var n=getComputedStyle(e)[t];return["width","height"].includes(t)&&(n=parseFloat(n)),n},o.closest=function(e,t){return t?t.matches(e)?t:o.closest(e,t.parentNode):null},o.inViewport=function(e,t){var n=e.getBoundingClientRect(),o=n.top,a=n.left,r=n.bottom,i=n.right,l=t.getBoundingClientRect(),s=l.top,u=l.left,c=l.bottom,d=l.right;return o>=s&&a>=u&&r<=c&&i<=d},o.scrollTop=function(e,t){requestAnimationFrame(function(){e.scrollTop=t})},o.sortable=function(){},e.exports=t.default},function(e,t,n){"use strict";function o(e){return e.replace(/([A-Z])/g,function(e){return"-"+e[0].toLowerCase()})}function a(e){return Object.keys(e).map(function(t){var n=o(t),a=e[t];return void 0===a?"":"data-"+n+'="'+a+'" '}).join("").trim()}function r(e,t){return void 0!==e?e:t}function i(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function l(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+": "+e[n]+"; ");return t.trim()}function s(e,t){return e+" { "+l(t)+" }"}function u(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=i(e)+" {([^}]*)}",a=new RegExp(o,"g");if(n&&n.match(a)){for(var r in t)!function(o){var r=t[o],l=new RegExp(i(o)+":([^;]*);");n=n.replace(a,function(t,n){return n.match(l)&&(n=n.replace(l,function(e,t){return o+": "+r+";"})),n=n.trim(),e+" { "+n+" }"})}(r);return n}return""+n+s(e,t)}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=i(e)+" {([^}]*)}",o=new RegExp(n,"g"),a=t;return t&&t.match(o)&&(a=t.replace(o,"")),a.trim()}function d(e){var t=document.createElement("textarea");t.style.position="fixed",t.style.top=0,t.style.left=0,t.style.width="2em",t.style.height="2em",t.style.padding=0,t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy")}catch(e){console.log("Oops, unable to copy")}document.body.removeChild(t)}function f(e){return!isNaN(e)}function h(e,t,n){var o,a,r,i=null,l=0;n||(n={});var s=function(){l=!1===n.leading?0:Date.now(),i=null,r=e.apply(o,a),i||(o=a=null)};return function(){var u=Date.now();l||!1!==n.leading||(l=u);var c=t-(u-l);return o=this,a=arguments,c<=0||c>t?(i&&(clearTimeout(i),i=null),l=u,r=e.apply(o,a),i||(o=a=null)):i||!1===n.trailing||(i=setTimeout(s,c)),r}}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(){for(var n=arguments.length,o=Array(n),a=0;a\n "+e.map(u.getCellHTML).join("")+"\n \n "}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],n=this.getRow$(e);if(n){if(!t&&this.bodyScrollable.classList.contains("row-highlight-all"))return void n.classList.add("row-unhighlight");t&&n.classList.contains("row-unhighlight")&&n.classList.remove("row-unhighlight"),this._highlightedRows=this._highlightedRows||{},t?(n.classList.add("row-highlight"),this._highlightedRows[e]=n):(n.classList.remove("row-highlight"),delete this._highlightedRows[e])}}},{key:"highlightAll",value:function(){if(arguments.length>0&&void 0!==arguments[0]&&!arguments[0]){this.bodyScrollable.classList.remove("row-highlight-all");for(var e in this._highlightedRows)this._highlightedRows[e].classList.remove("row-highlight");this._highlightedRows={}}else this.bodyScrollable.classList.add("row-highlight-all")}},{key:"getRow$",value:function(e){return(0,l.default)('.data-table-row[data-row-index="'+e+'"]',this.bodyScrollable)}},{key:"getTotalRows",value:function(){return this.datamanager.getRowCount()}},{key:"getFirstRowIndex",value:function(){return 0}},{key:"getLastRowIndex",value:function(){return this.datamanager.getRowCount()-1}},{key:"scrollToRow",value:function(e){e=+e,this._lastScrollTo=this._lastScrollTo||0;var t=this.getRow$(e);if(!l.default.inViewport(t,this.bodyScrollable)){var n=t.getBoundingClientRect(),o=n.height,a=this.bodyScrollable.getBoundingClientRect(),r=a.top,i=a.bottom,s=Math.floor((i-r)/o),u=0;u=e>this._lastScrollTo?o*(e+1-s):o*(e+1-1),this._lastScrollTo=e,l.default.scrollTop(this.bodyScrollable,u)}}},{key:"datamanager",get:function(){return this.instance.datamanager}},{key:"cellmanager",get:function(){return this.instance.cellmanager}}]),e}();t.default=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t\n '+l(e)+"\n \n "}function l(e){var t=e.isHeader,n=!t&&!1!==e.editable,o=n?'\n
\n ':"",a=t&&!1!==e.sortable,r=a?' ':"",i=t&&!1!==e.resizable,l=i?' ':"",s=t&&!1!==e.dropdown,u=s?''+(0,m.getDropdownHTML)()+"
":"";return'\n \n '+(e.format?e.format(e.content):e.content)+"\n "+r+"\n "+l+"\n "+u+"\n
\n "+o+"\n "}function s(){return'\n
\n '}function u(e,t){return'.data-table-col[data-col-index="'+e+'"][data-row-index="'+t+'"]'}Object.defineProperty(t,"__esModule",{value:!0});var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d=function(){function e(e,t){var n=[],o=!0,a=!1,r=void 0;try{for(var i,l=e[Symbol.iterator]();!(o=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){a=!0,r=e}finally{try{!o&&l.return&&l.return()}finally{if(a)throw r}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),f=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.skipClearSelection,o=void 0===n?0:n;if("number"==typeof e){var a=Array.from(arguments),r=d(a,2),i=r[0],l=r[1];e=this.getCell$(i,l)}if(e&&e!==this.$editingCell){var s=b.default.data(e),u=s.colIndex;if(!s.isHeader){!1!==this.columnmanager.getColumn(u).focusable&&(this.deactivateEditing(),o||this.clearSelection(),this.$focusedCell&&this.$focusedCell.classList.remove("selected"),this.$focusedCell=e,e.classList.add("selected"),this.highlightRowColumnHeader(e),this.scrollToCell(e))}}}},{key:"highlightRowColumnHeader",value:function(e){var t=b.default.data(e),n=t.colIndex,o=t.rowIndex,a=this.columnmanager.getSerialColumnIndex(),r='.data-table-header .data-table-col[data-col-index="'+n+'"]',i='.data-table-col[data-row-index="'+o+'"][data-col-index="'+a+'"]';this.lastHeaders&&b.default.removeStyle(this.lastHeaders,"backgroundColor");var l=(0,b.default)(r,this.wrapper),s=(0,b.default)(i,this.wrapper);b.default.style([l,s],{backgroundColor:"#f5f7fa"}),this.lastHeaders=[l,s]}},{key:"selectAreaOnClusterChanged",value:function(){if(this.$focusedCell&&this.$selectionCursor){var e=b.default.data(this.$selectionCursor),t=e.colIndex,n=e.rowIndex,o=this.getCell$(t,n);if(o&&o!==this.$selectionCursor){var a=b.default.data(this.$focusedCell);this.$focusedCell=this.getCell$(a.colIndex,a.rowIndex),this.selectArea(o)}}}},{key:"focusCellOnClusterChanged",value:function(){if(this.$focusedCell){var e=b.default.data(this.$focusedCell),t=e.colIndex,n=e.rowIndex,o=this.getCell$(t,n);o&&this.focusCell(o,{skipClearSelection:1})}}},{key:"selectArea",value:function(e){this.$focusedCell&&this._selectArea(this.$focusedCell,e)&&(this.$selectionCursor=e)}},{key:"_selectArea",value:function(e,t){var n=this;if(e===t)return!1;var o=this.getCellsInRange(e,t);return!!o&&(this.clearSelection(),o.map(function(e){return n.getCell$.apply(n,a(e))}).map(function(e){return e.classList.add("highlight")}),!0)}},{key:"getCellsInRange",value:function(e,t){var n=void 0,o=void 0,a=void 0,r=void 0;if("number"==typeof e){var i=Array.prototype.slice.call(arguments);n=i[0],o=i[1],a=i[2],r=i[3]}else if("object"===(void 0===e?"undefined":c(e))){if(!e||!t)return!1;var l=b.default.data(e),s=b.default.data(t);n=l.colIndex,o=l.rowIndex,a=s.colIndex,r=s.rowIndex}if(o>r){var u=[r,o];o=u[0],r=u[1]}if(n>a){var d=[a,n];n=d[0],a=d[1]}if(this.isStandardCell(n)||this.isStandardCell(a))return!1;for(var f=[],h=n,p=o,v=[];p<=r;)v.push(p),p++;return v.map(function(e){for(;h<=a;)f.push([h,e]),h++;h=n}),f}},{key:"clearSelection",value:function(){b.default.each(".data-table-col.highlight",this.bodyScrollable).map(function(e){return e.classList.remove("highlight")}),this.$selectionCursor=null}},{key:"getSelectionCursor",value:function(){return this.$selectionCursor||this.$focusedCell}},{key:"activateEditing",value:function(e){var t=b.default.data(e),n=t.rowIndex,o=t.colIndex,a=this.columnmanager.getColumn(o);if(!a||!1!==a.editable&&!1!==a.focusable){var r=this.getCell(o,n);if(!r||!1!==r.editable){if(this.$editingCell){var i=b.default.data(this.$editingCell),l=i._rowIndex,s=i._colIndex;if(n===l&&o===s)return}this.$editingCell=e,e.classList.add("editing");var u=(0,b.default)(".edit-cell",e);u.innerHTML="";var c=this.getEditingObject(o,n,r.content,u);c&&(this.currentCellEditing=c,c.initValue(r.content))}}}},{key:"deactivateEditing",value:function(){this.$editingCell&&(this.$editingCell.classList.remove("editing"),this.$editingCell=null)}},{key:"getEditingObject",value:function(e,t,n,o){var a=this.options.editing(e,t,n,o);if(a&&a.setValue)return a;var r=b.default.create("input",{type:"text",inside:o});return{initValue:function(e){r.focus(),r.value=e},getValue:function(){return r.value},setValue:function(e){r.value=e}}}},{key:"submitEditing",value:function(){var e=this;if(this.$editingCell){var t=this.$editingCell,n=b.default.data(t),o=n.rowIndex,a=n.colIndex;if(t){var r=this.currentCellEditing;if(r){var i=r.getValue(),l=r.setValue(i),s=this.getCell(a,o).content;this.updateCell(a,o,i),t.focus(),l&&l.then&&l.catch(function(t){console.log(t),e.updateCell(a,o,s)})}}this.currentCellEditing=null}}},{key:"copyCellContents",value:function(e,t){var n=this;if(!t&&e){var o=b.default.data(e),r=o.colIndex,i=o.rowIndex,l=this.getCell(r,i);return void(0,h.copyTextToClipboard)(l.content)}var s=this.getCellsInRange(e,t);if(s){var u=s.map(function(e){return n.getCell.apply(n,a(e))}).reduce(function(e,t){var n=t.rowIndex;return e[n]=e[n]||[],e[n].push(t.content),e},[]).map(function(e){return e.join("\t")}).join("\n");(0,h.copyTextToClipboard)(u)}}},{key:"updateCell",value:function(e,t,n){var o=this.datamanager.updateCell(e,t,{content:n});this.refreshCell(o)}},{key:"refreshCell",value:function(e){(0,b.default)(u(e.colIndex,e.rowIndex),this.bodyScrollable).innerHTML=l(e)}},{key:"isStandardCell",value:function(e){return e0&&n.map(function(t){var n=t();void 0!==n&&!0!==n||e.preventDefault()})}Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=function(e){return e&&e.__esModule?e:{default:e}}(r),l={13:"enter",91:"meta",16:"shift",17:"ctrl",18:"alt",37:"left",38:"up",39:"right",40:"down",9:"tab",27:"esc",67:"c"},s=!1,u={};t.default={init:function(e){o(e)},on:function(e,t){e.split(",").map(function(e){return e.trim()}).map(function(e){u[e]=u[e]||[],u[e].push(t)})}},e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.getDropdownHTML=void 0;var r=function(){function e(e,t){for(var n=0;n",this.refreshHeader()}},{key:"refreshHeader",value:function(){var e=this,t=this.datamanager.getColumns();if((0,l.default)(".data-table-col",this.header)){var n=l.default.each(".data-table-col",this.header);if(t.length div",function(e,n){var a=l.default.closest(".data-table-col",n),r=l.default.data(n),i=r.index,s=l.default.data(a),u=s.colIndex,c=o[i].action;c&&c.call(t.instance,t.getColumn(u))})}},{key:"bindResizeColumn",value:function(){var e=this,t=!1,n=void 0,o=void 0,a=void 0;l.default.on(this.header,"mousedown",".data-table-col .column-resizer",function(r,i){document.body.classList.add("data-table-resize");var s=i.parentNode.parentNode;n=s;var u=l.default.data(n),c=u.colIndex,d=e.getColumn(c);d&&!1===d.resizable||(t=!0,o=l.default.style((0,l.default)(".content",n),"width"),a=r.pageX)}),l.default.on(document.body,"mouseup",function(o){if(document.body.classList.remove("data-table-resize"),n){t=!1;var a=l.default.data(n),r=a.colIndex;e.setColumnWidth(r),e.instance.setBodyWidth(),n=null}}),l.default.on(document.body,"mousemove",function(r){if(t){var i=o+(r.pageX-a),s=l.default.data(n),u=s.colIndex;e.getColumnMinWidth(u)>i||(e.datamanager.updateColumn(u,{width:i}),e.setColumnHeaderWidth(u))}})}},{key:"bindMoveColumn",value:function(){var e=this,t=function(){if((0,l.default)(".data-table-col",e.header)){var t=(0,l.default)(".data-table-row",e.header);e.sortable=u.default.create(t,{onEnd:function(t){var n=t.oldIndex,o=t.newIndex,a=t.item;+l.default.data(a).colIndex!==o&&e.switchColumn(n,o)},preventOnFilter:!1,filter:".column-resizer, .data-table-dropdown",animation:150})}};l.default.on(document.body,"mousemove",t)}},{key:"bindSortColumn",value:function(){var e=this;l.default.on(this.header,"click",".data-table-col .column-title",function(t,n){var o=n.closest(".data-table-col"),a=l.default.data(o),r=a.colIndex,i=a.sortOrder;i=(0,d.getDefault)(i,"none");var s=e.getColumn(r);if(!s||!1!==s.sortable){(0,l.default)(".sort-indicator",e.header).textContent="",l.default.each(".data-table-col",e.header).map(function(e){l.default.data(e,{sortOrder:"none"})});var u=void 0,c=void 0;"none"===i?(u="asc",c="▲"):"asc"===i?(u="desc",c="▼"):"desc"===i&&(u="none",c=""),l.default.data(o,{sortOrder:u}),(0,l.default)(".sort-indicator",o).textContent=c,e.sortColumn(r,u)}})}},{key:"sortColumn",value:function(e,t){var n=this;this.instance.freeze(),this.sortRows(e,t).then(function(){return n.refreshHeader(),n.rowmanager.refreshRows()}).then(function(){return n.instance.unfreeze()}).then(function(){n.fireEvent("onSortColumn",n.getColumn(e))})}},{key:"removeColumn",value:function(e){var t=this,n=this.getColumn(e);this.instance.freeze(),this.datamanager.removeColumn(e).then(function(){return t.refreshHeader(),t.rowmanager.refreshRows()}).then(function(){return t.instance.unfreeze()}).then(function(){t.fireEvent("onRemoveColumn",n)})}},{key:"switchColumn",value:function(e,t){var n=this;this.instance.freeze(),this.datamanager.switchColumn(e,t).then(function(){return n.refreshHeader(),n.rowmanager.refreshRows()}).then(function(){n.setColumnWidth(e),n.setColumnWidth(t),n.instance.unfreeze()}).then(function(){n.fireEvent("onSwitchColumn",n.getColumn(e),n.getColumn(t))})}},{key:"setDimensions",value:function(){this.setHeaderStyle(),this.setupMinWidth(),this.setupNaturalColumnWidth(),this.distributeRemainingWidth(),this.setColumnStyle()}},{key:"setHeaderStyle",value:function(){this.options.takeAvailableSpace||l.default.style(this.header,{width:0}),l.default.style(this.header,{margin:0});var e=this.datamanager.getColumns().filter(function(e){return!1===e.resizable}).map(function(e){return e.colIndex}).map(function(e){return'.data-table-header [data-col-index="'+e+'"]'}).join();this.style.setStyle(e,{cursor:"pointer"})}},{key:"setupMinWidth",value:function(){var e=this;l.default.each(".data-table-col",this.header).map(function(t){var n=l.default.style((0,l.default)(".content",t),"width"),o=l.default.data(t),a=o.colIndex;e.getColumn(a).minWidth||e.datamanager.updateColumn(a,{minWidth:n})})}},{key:"setupNaturalColumnWidth",value:function(){var e=this;l.default.each('.data-table-row[data-row-index="0"] .data-table-col',this.bodyScrollable).map(function(t){var n=l.default.data(t),o=n.colIndex;if(!(e.getColumn(o).width>0)){var a=l.default.style((0,l.default)(".content",t),"width"),r=e.getColumnMinWidth(o);a=t)){var o=this.datamanager.getColumns().filter(function(e){return void 0===e.resizable||e.resizable}),a=(t-n)/o.length;o.map(function(t){var n=l.default.style(e.getColumnHeaderElement(t.colIndex),"width"),o=Math.min(n+a)-2;e.datamanager.updateColumn(t.colIndex,{width:o})})}}}},{key:"setDefaultCellHeight",value:function(e){this.style.setStyle(".data-table-col .content",{height:e+"px"})}},{key:"setColumnStyle",value:function(){var e=this;this.getColumns().map(function(t){["left","center","right"].includes(t.align)&&e.style.setStyle('[data-col-index="'+t.colIndex+'"]',{"text-align":t.align}),e.setColumnHeaderWidth(t.colIndex),e.setColumnWidth(t.colIndex)}),this.instance.setBodyWidth()}},{key:"sortRows",value:function(e,t){return this.datamanager.sortRows(e,t)}},{key:"getColumn",value:function(e){return this.datamanager.getColumn(e)}},{key:"getColumns",value:function(){return this.datamanager.getColumns()}},{key:"setColumnWidth",value:function(e){e=+e,this._columnWidthMap=this._columnWidthMap||[];var t=this.getColumn(e),n=t.width,o=this._columnWidthMap[e],a='[data-col-index="'+e+'"] .content, [data-col-index="'+e+'"] .edit-cell',r={width:n+"px"};o=this.style.setStyle(a,r,o),this._columnWidthMap[e]=o}},{key:"setColumnHeaderWidth",value:function(e){e=+e,this.$columnMap=this.$columnMap||[];var t='[data-col-index="'+e+'"][data-is-header] .content',n=this.getColumn(e),o=n.width,a=this.$columnMap[e];a||(a=this.header.querySelector(t),this.$columnMap[e]=a),a.style.width=o+"px"}},{key:"getColumnMinWidth",value:function(e){return e=+e,this.getColumn(e).minWidth||24}},{key:"getFirstColumnIndex",value:function(){return this.options.addCheckboxColumn&&this.options.addSerialNoColumn?2:this.options.addCheckboxColumn||this.options.addSerialNoColumn?1:0}},{key:"getHeaderCell$",value:function(e){return(0,l.default)('.data-table-col[data-col-index="'+e+'"]',this.header)}},{key:"getLastColumnIndex",value:function(){return this.datamanager.getColumnCount()-1}},{key:"getColumnHeaderElement",value:function(e){return e=+e,e<0?null:(0,l.default)('.data-table-col[data-is-header][data-col-index="'+e+'"]',this.wrapper)}},{key:"getSerialColumnIndex",value:function(){return this.datamanager.getColumns().findIndex(function(e){return e.content.includes("Sr. No")})}}]),e}();t.default=f;var h=function(){return''+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"v")+'
\n \n '+this.options.headerDropdown.map(function(e,t){return'
'+e.label+"
"}).join("")+"\n
\n "};t.getDropdownHTML=h},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var a=n(7),r=o(a),i=n(19),l=o(i);r.default.__version__=l.default.version,t.default=r.default,e.exports=t.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n\n \n \n
\n \n '+this.options.freezeMessage+' \n
\n \n \n ',this.datatableWrapper=(0,l.default)(".data-table",this.wrapper),this.header=(0,l.default)(".data-table-header",this.wrapper),this.bodyScrollable=(0,l.default)(".body-scrollable",this.wrapper),this.freezeContainer=(0,l.default)(".freeze-container",this.wrapper)}},{key:"refresh",value:function(e){this.datamanager.init(e),this.render()}},{key:"destroy",value:function(){this.wrapper.innerHTML="",this.style.destroy()}},{key:"appendRows",value:function(e){this.datamanager.appendRows(e),this.rowmanager.refreshRows()}},{key:"refreshRow",value:function(e,t){this.rowmanager.refreshRow(e,t)}},{key:"render",value:function(){this.renderHeader(),this.renderBody()}},{key:"renderHeader",value:function(){this.columnmanager.renderHeader()}},{key:"renderBody",value:function(){this.bodyRenderer.render()}},{key:"setDimensions",value:function(){this.columnmanager.setDimensions(),this.setBodyWidth(),l.default.style(this.bodyScrollable,{marginTop:l.default.style(this.header,"height")+"px"}),l.default.style((0,l.default)("table",this.bodyScrollable),{margin:0})}},{key:"setBodyWidth",value:function(){var e=l.default.style(this.header,"width");l.default.style(this.bodyScrollable,{width:e+"px"})}},{key:"getColumn",value:function(e){return this.datamanager.getColumn(e)}},{key:"getCell",value:function(e,t){return this.datamanager.getCell(e,t)}},{key:"getColumnHeaderElement",value:function(e){return this.columnmanager.getColumnHeaderElement(e)}},{key:"getViewportHeight",value:function(){return this.viewportHeight||(this.viewportHeight=l.default.style(this.bodyScrollable,"height")),this.viewportHeight}},{key:"sortColumn",value:function(e,t){this.columnmanager.sortColumn(e,t)}},{key:"removeColumn",value:function(e){this.columnmanager.removeColumn(e)}},{key:"scrollToLastColumn",value:function(){this.datatableWrapper.scrollLeft=9999}},{key:"freeze",value:function(){l.default.style(this.freezeContainer,{display:""})}},{key:"unfreeze",value:function(){l.default.style(this.freezeContainer,{display:"none"})}},{key:"fireEvent",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;o