123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /**
- * @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);
- var _formatter = column.formatter;
- column.formatter = function (value, row, index) {
- var result = _formatter ? _formatter(value, row, index) : value;
- $.each(column, processDataOptions);
- $.each(editableOptions, function (key, value) {
- editableDataMarkup.push(' ' + key + '="' + value + '"');
- });
- return ['<a href="javascript:void(0)"',
- ' data-name="' + column.field + '"',
- ' data-pk="' + row[that.options.idField] + '"',
- ' data-value="' + result + '"',
- editableDataMarkup.join(''),
- '>' + '</a>'
- ].join('');
- };
- });
- };
- 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.$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);
|