| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | /** * @author zhixin wen <wenzhixin2010@gmail.com> * extensions: https://github.com/vitalets/x-editable */(function($) {    'use strict';    $.extend($.fn.bootstrapTable.defaults, {        editable: true,        onEditableInit: function() {            return false;        },        onEditableSave: function(field, row, oldValue, $el) {            return false;        },        onEditableShown: function(field, row, $el, editable) {            return false;        },        onEditableHidden: function(field, row, $el, reason) {            return false;        }    });    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {        'editable-init.bs.table': 'onEditableInit',        'editable-save.bs.table': 'onEditableSave',        'editable-shown.bs.table': 'onEditableShown',        'editable-hidden.bs.table': 'onEditableHidden'    });    var BootstrapTable = $.fn.bootstrapTable.Constructor,        _initTable = BootstrapTable.prototype.initTable,        _initBody = BootstrapTable.prototype.initBody;    BootstrapTable.prototype.initTable = function() {        var that = this;        _initTable.apply(this, Array.prototype.slice.apply(arguments));        if (!this.options.editable) {            return;        }        $.each(this.columns, function(i, column) {            if (!column.editable) {                return;            }            var editableOptions = {},                editableDataMarkup = [],                editableDataPrefix = 'editable-';            var processDataOptions = function(key, value) {                // Replace camel case with dashes.                var dashKey = key.replace(/([A-Z])/g, function($1) {                    return "-" + $1.toLowerCase();                });                if (dashKey.slice(0, editableDataPrefix.length) == editableDataPrefix) {                    var dataKey = dashKey.replace(editableDataPrefix, 'data-');                    editableOptions[dataKey] = value;                }            };            $.each(that.options, processDataOptions);            column.formatter = column.formatter || function(value, row, index) {                return value;            };            column._formatter = column._formatter ? column._formatter : column.formatter;            column.formatter = function(value, row, index) {                var result = column._formatter ? column._formatter(value, row, index) : value;                $.each(column, processDataOptions);                $.each(editableOptions, function(key, value) {                    editableDataMarkup.push(' ' + key + '="' + value + '"');                });                var _dont_edit_formatter = false;                if (column.editable.hasOwnProperty('noeditFormatter')) {                    _dont_edit_formatter = column.editable.noeditFormatter(value, row, index);                }                if (_dont_edit_formatter === false) {                    return ['<a href="javascript:void(0)"',                        ' data-name="' + column.field + '"',                        ' data-pk="' + row[that.options.idField] + '"',                        ' data-value="' + result + '"',                        editableDataMarkup.join(''),                        '>' + '</a>'                    ].join('');                } else {                    return _dont_edit_formatter;                }            };        });    };    BootstrapTable.prototype.initBody = function() {        var that = this;        _initBody.apply(this, Array.prototype.slice.apply(arguments));        if (!this.options.editable) {            return;        }        $.each(this.columns, function(i, column) {            if (!column.editable) {                return;            }            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)                .off('save').on('save', function(e, params) {                    var data = that.getData(),                        index = $(this).parents('tr[data-index]').data('index'),                        row = data[index],                        oldValue = row[column.field];                    $(this).data('value', params.submitValue);                    row[column.field] = params.submitValue;                    that.trigger('editable-save', column.field, row, oldValue, $(this));                    that.resetFooter();                });            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)                .off('shown').on('shown', function(e, editable) {                    var data = that.getData(),                        index = $(this).parents('tr[data-index]').data('index'),                        row = data[index];                    that.trigger('editable-shown', column.field, row, $(this), editable);                });            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)                .off('hidden').on('hidden', function(e, reason) {                    var data = that.getData(),                        index = $(this).parents('tr[data-index]').data('index'),                        row = data[index];                    that.trigger('editable-hidden', column.field, row, $(this), reason);                });        });        this.trigger('editable-init');    };})(jQuery);
 |